A Repository Framework for Self-Growing Robot Software
maven distributionmanagement和repositories -回复

maven distributionmanagement和repositories -回复Maven Distribution Management和RepositoriesMaven是一个强大的项目管理和构建工具,被广泛用于Java项目的开发。
其中两个重要的概念是Distribution Management和Repositories。
这两个概念在Maven项目构建和部署中起着关键的作用。
Distribution ManagementDistribution Management是Maven中的一个配置元素,用于定义项目的分发和部署方式。
它指定了项目构建完成后生成的artifact(例如JAR 文件)的目标位置、上传到哪里以及使用何种方式进行部署。
这个元素可以定义在Maven项目的pom.xml文件中。
在Distribution Management中,我们可以定义以下内容:1. RepositoryRepository指定了artifact的目标存储位置。
它可以是本地的文件系统、远程的Maven仓库、FTP服务器、甚至是版本控制系统(例如Git)等。
Maven提供了一些内置的repository,例如central、snapshots和releases。
我们也可以自己定义一个repository。
2. Snapshot RepositorySnapshot Repository是一个用于保存项目快照版本的特殊repository。
快照版本是项目的开发版本,通常处于不稳定和频繁变更的阶段。
Maven 使用单独的Snapshot Repository来管理这些快照版本。
它可以是本地的或远程的。
3. SiteSite指定了生成和发布项目网站的相关配置。
Maven能够自动生成项目网站,并将其部署到指定的位置。
通常,网站包括项目的文档、报告、日志等。
我们可以定义一个目录作为网站的路径,并配置相关的布局和样式。
hcna(bigdata)-单选题

1.Spark是用以下那种编程语言实现的?A.CB.C++C.JAVAD.Scala2.FusionInsight Manager对服务的管理操作,下面说法错误的是?A.可对服务进行启停重启操作B.可以添加和卸载服务C.可以设置不常用的服务隐藏或显示D.可以查看服务的当前状态4.FusionInsight HD的Loader在创建作业时,Connector有什么作用?A.确定有哪些转换步骤B.提供优化参数,提高数据导入/导出性能C.配置作业如何与外部数据进行连接D.配置作业如何与内部数据进行连接5.下列哪个HDFS命令可用于检测数据块的完成性?A.hdfs fsckB.hdfs fsck /-deleteC.hdfs dfsadmin -reportD.hdfs balancer –threshold 16. YARN中设置队列QueueA的最大使用资源量,需要配置哪个参数?A.yarn_scheduler.capacity.root. er-limit-factorB.yarn_scheduler.capacity.root. QueueA.minimum-user-limit-factorC.yarn_scheduler.capacity.root. QueueA.stateD.yarn_scheduler.capacity.root. QueueA.maximum- capacity7.FusionInsight Manager 对服务的配置功能说法不正确的是A、服务级别的配置可对所有实例生效B、实例级别的配置只针对本实例生效C、实例级别的配置对其他实例也生效D、配置保存后需要重启服务才能生效8.关于fusioninsight HD安装流程,说法正确的是:A 安装manager>执行precheck>执行preinstall>LLD工具配置>安装集群>安装后检查>安装后配置B LLD工具配置>执行preinstall>执行precheck>安装manager>安装集群>安装后检查>安装后配置C安装manager> LLD工具配置>执行precheck>执行preinstall>安装集群>安装后检查>安装后配置D LLD工具配置>执行preinstall>执行precheck>安装集群>安装manager>安装后检查>安装后配置9.关于Kerberos部署,描述正确的是?A. Kerberos仅有一个角色B. Kerberos服务在同一个节点上有两个实例C. Kerberos服务采用主备模式部署D. Kerberos服务必须和LDAP服务部署在同一个节点10.某银行规划fusioninsight HD集群有90个节点,如果控制节点规划了3个,那集群中数据节点推荐规划多少最为合理?A.87B.85C.90D.8618.用户集群有 150 个节点,每个节点 12 块磁盘(不做 RAID,不包括 OS 盘),每块磁盘大小 1T,只安装 HDFS,根据建议,最大可存储多少数据?A、1764TBB、1800TBC、600TBD、588TB20.FusionInsight HD 节点不支持那种主机操作系统?A、Suse 11.1B、RedHat 6.5C、CentOS 6.4D、Ubuntu 11.0421.HBase shell命令中,哪个可以查看当前登陆的用户和权限组?e_permissionB.whoamiC.whoD.get_user23. Fusionsight HD manager界面Hive日志收集,哪个选项不正确?A、可指定实例进行日志收集,比如制定单独收集METASTORE的日志B、可指定时间段进行日志收集,比如只收集2016-1-1 到2016-1-10的日志C、可指定节点IP进行日志收集,例如仅下载某个IP的日志D、可指定特定用户进行日志收集,例如仅下载userA用户产生的日志27. FusionInsight HD 三层组网适合多少节点的集群规模?A、30 节点以下B、100 节点以下C、100-200 节点D、200 节点以上30.Hadoop系统中关于客户端向HDFS文件系统上传文件说法正确的是?A.客户端的文件数据经过NameNode传递给DataNodeB.客户端将文件划分为多个Block,根据DataNode的地址信息,按顺序写入每一个DataNode中C.客户端根据DataNode的地址信息,按顺序将整个文件写入每一个DataNode中,然后由将文件划分为多个BlockD.客户端只上传数据到一个DataNode,然后由NameNode负责Block复制31. FusionInsight HD 系统中,HBase的最小处理单元是region,user region和region server之间的路由信息是保存在哪?A.ZookeeperB.HDFSC.MasterD.Meta表34. 通过 FusionInsight Manager 不能完成以下哪个操作?A、安装部署B、性能监控C、权限管理D、虚拟机分配39. 关于 Hbase 的 Region 分裂流程 split 的描述不正确的是?A、Split 过程中并没有真正的将文件分开,仅仅是创建了引用文件B、Split 为了减少 region 中数据大小,从而将一个 region 分裂成两个 regionC、Split 过程中该表会暂停服务D、Split 过程中被分裂的 region 会暂停服务43. 关于FusionInsight Manager关键特性,说法正确的是?A.能够针对整个集群,某个服务器进行健康检查,不能够针对节点进行健康检查B.Manager引入角色的概念,采用RBAC的方式对系统进行权限管理C.整个系统使用Kerberos管理用户,使用Ldap进行认证,通过CAS实现单点登录D.对于健康检查结果,不能够导出检查报告,只能够在线查看44.查看kafka某topic的partition详细信息时,使用如下哪个命令?A. bin/kafka-topics.sh –createB. bin/kafka-topics.sh –listC. bin/kafka-topics.sh -describeD. bin/kafka-topics.sh -delete45. FusionInsight Hadoop 集群中,在某个节点上通过 df-hT 查询,看到的分区包含以下几个:/var/log Raid 1/srv/BigData Raid 1/srv/BigData/hadoop/data5 Non-Raid/Raid0/srv/BigData/solr/solrserver3Non-Raid/Raid0/srv/BigData/dbdata_om Raid 1这些分区所对应磁盘最佳 Raid 级别的规划组合是?A、Raid0、Raid1、Raid0、Non-Raid、Raid-1B、Raid1、Raid1、Non-Raid、Non-Raid、Raid1C、Raid0、Raid0、Raid0、Raid0D、Non-Raid、Non-Raid、Non-Raid、Non-Raid、Raid146. FusionInsigh HD 系统中 HDFS 默认 Block Size 是多少?A、32MB、64MD、256M47. FusionInsigh HD部署时,同一集群内的Flume server节点建议至少部署几个?A、1B、2C、3D、448. FusionInsight HD 系统设计日志不可以记录下面那些操作?A、手动清除告警B、启停服务实例C、删除服务实例D、查询历史监控50.Hadoop的HBase不适合哪些数据类型的应用场景?A.大文件应用场景B. 海量数据应用场景C. 高吞吐率应用场景D. 半结构化数据应用场景53. 安装 FusionInsight HD 的 Streaming 组件时,Nimbus 角色要求安装几个节点?A、1B、2C、3D、454. 关于FusionInsight HD 中Loader作业描述正确的是?A.Loader将作业提交到Yam执行后,如果Loader服务出现异常,则此作业执行失败B.Loader将作业提交到Yame执行后,如果某个Mapper执行失败,能够自动进行重试C.Loader作业执行失败,将会产生垃圾数据,需要用户手动清除D.Loader将作业提交到Yam执行后,在该作业执行完成前,不能再提交其他作业56. Hadoop 平台中,要查看 YARN 服务中一个 application 的信息,通常需要使用什么命令?A、containerB、applicationattemptC、jarD、application57.在FusionInsight集群规划部署时,建议管理节点最好部署()个,控制节点最少部署(),数据节点最少部署()A.1,2,2B.1,3,2C.2,3,1D.2,3,359. FusionInsight HD安装过程中,执行Preinstall操作不能完成哪项功能?A.修改OS,确保OS满足FusionInsight HD的安装要求B.安装MangerC.格式化分区D.安装OS缺失的RPM包60. SolrCloud 模式是集群模式,在此模式下 Solr 服务强依赖于一下哪个服务?B.HDFSC.ZooKeeperD.Yarn62. Hadoop 的 MapReduce 组件擅长处理哪些场景的计算任务?A、迭代计算B、离线计算C、实时交互计算D、流式计算67. 以下哪些数据不属于半结构化数据?A.HtmlB.XmlC.二维表D.Json68. 关于FusionInsight HD Streaming 客户端的Supervisor描述正确的是?A、Supervisor负责资源分配和资源调度B、Supervisor负责接管 Nimbus 分配的任务,启动和停止属于自己管理的worker进程C、Supervisor 是运行具体处理逻辑的进程D、Supervisor是一个Topology中接收数据然后执行处理的组件70.关于FusionInsight Manager,说法错误的是?A、NTP sever/client负责集群内各节点的时钟同步B、通过FusionInsight Manager,可以对HDFS进行启停控制、配置参数C、FusionInsight Manager所有维护操作只能够通过WebUI来完成,没有提供Shell维护命令D、通过FusionInsight Manager,可以向导式安装集群,缩短集群部署时间74. FusionInsight HD 系统中如果修改了服务的配置项,不进行服务重启,该服务的配置状态是什么状态?A、SYNCHRONIZEDB、EXPIREDC、CONFIGURINGD、UNKNOWN80. Spark应用在运行时, Stage划分的依据是哪个?A、taskB、taskSetC、actionD、shuffle84. 采用 Flume 传输数据过程中,为了防止因 Flume 进程重启而丢失数据,推荐使用以下哪种 channel 类型?A、Memory ChannelB、File ChannelC、JDBC ChannelD、HDFS Channel89. FusionInsight HD 的 Hbase 中一张表包含以下几个Region[10,20),[20,30),[30,+∞),分别编号为①,②,③,那么,11,20,222 分别属于哪个 Region?A、①①③B、①②③C、①②②D、①①②90. 关于Hive建表基本操作描述正确的是?A.创建外部表时需要指定external关键字B.一旦表创建好,不可再修改表名C.一旦表创建好,不可再修改列名D.一旦表创建好,不可再增加新列92. FusionInsight HD 系统中,如果 Solr 索引默认存放在HDFS上,以下理解正确的有?A.不需要考虑各solrserver实例上创建了多少shardB.为保证数据可靠性,创建索引时必须创建多RelicaC.通过HDFS读取索引时占用磁盘IO,因此不建议Solr实例与DataNode部署在同一节点上D.当Solr服务参数INDEX_STORED_ON_HDFS值为HDFS时,创建Collection的索引就默认存储在HDFS上。
单独编译framework

单独编译framework单独编译frameworkFramework是iOS开发中常用的一种代码结构,可以将一些常用的功能或库代码封装成独立的模块,方便在不同项目中复用。
这些模块一般被编译成一个单独的库,成为framework。
在iOS应用开发中,我们经常会使用系统提供的一些framework库,比如UIKit、Foundation等。
同时,我们也可以自己编写framework,并供其他开发者使用。
编写一个framework的过程可以分为三个步骤:创建framework项目,添加需要封装的代码,最后将framework编译成库文件。
一般来说,我们将封装的代码放到一个专门的文件夹中,通过在Build Settings中配置Header Search Paths来告诉编译器头文件的位置,再在Build Phases > Compile Sources中添加要编译的源文件即可。
完成代码编写后,我们需要将framework编译成库文件。
一般情况下,我们可以通过选择Product > Archive来自动构建和打包framework。
如果需要手动打包,可以打开终端,将目录切换到framework文件所在的目录,执行如下命令:xcodebuild -configuration “Release” -target "xxx" -arch "xxx" -sdk iphoneos其中,xxx表示具体的framework名称、架构类型和SDK版本。
通过上述步骤,我们就可以生成一个可单独使用的framework库文件了。
在其他项目中使用这个库也很简单,只需要将.framework文件添加到项目中,然后在Build Phases > Link Binary With Libraries中添加即可。
总之,编写和使用framework可以提高代码的重用性和开发效率,值得开发者在实践中掌握。
《MyBatis数据持久化框架》笔试题库

《MyBatis数据持久化框架》笔试题库1. 在MyBatis中,开发Mybatis不需要下列哪些步骤添加Mybatis核心包配置mybatis配置文件mybatis-config.xml配置全局属性、数据源和实体包的别名实现静态列表html页面(正确答案)2. 在MyBatis中对JDBC访问数据库的代码进行封装,从而大大简化了数据访问层的重复性代码,它是针对三层架构中()的解决方案表现层业务逻辑层持久化层(正确答案)数据库系统3. 在MyBatis中,关于log4j日志级别不包含以下那种update(正确答案)ERRORTRACEDEBUG4. 在MyBatis中,操作数据库的核心类是()SqlSessionFactorySqlSession(正确答案)SessionSqlSessionFactoryBuilder5. 在MyBatis中,将以下划线命名的数据库列映射到Java对象的驼峰命名属性的配置是什么()sqlSessionFactorypropertymapUnderscoreToCamelCase(正确答案)jdbcType6. 在MyBatis中,查询列前缀属性为propertyjavaTypeColumnPrefix(正确答案)ColumnBefore7. Mybaits中的前身是()IBATIS(正确答案)BeginClintonApache8. 在MyBatis中对结果集的配置使用的标签是以下()<result><resultMap>(正确答案)<map><collection>9. 在MyBatis中,删除具有主从关系的主表记录时会出现删除异常,可以使用什么解决方式()【选两项】设置从表的删除时规则为“置为NULL”(正确答案)设置主表的删除时规则为“置为NULL”设置从表的删除时规则为“置为级联”(正确答案)设置主表的删除时规则为“置为级联”10. 在MyBatis中,执行以下代码生成结果变量result代表的含义是什么intresult=userMapper.deleteUserById(id);()删除消耗时间删除数据字段数量数据删除受影响的行数(正确答案)数据库剩余数据行数11. 在MyBatis数据库操作时,需要编写()和对应的xml文件,其中xml文件中编写的是对应Sql语句接口和抽象方法(正确答案)普通类和普通方法抽象类和抽象方法普通类和抽象方法12. 在MyBatis中,@SelectKey(statement="select last_insert_id()",keyProperty="id",resultType=Long.class, before=false)注解的作用是什么()返回值为最后一次插入数据的id值(正确答案)查询数据库中最大的id值查询当前数据库中id的数量查询数据库中是否存在相同id13. 在MyBatis中,以下哪项不属于xml映射文件标签resultMapparameter(正确答案)include14. 在MyBatis中用于表示返回结果类型的属性名称是resultType(正确答案)parameterTypecollectionreturnType15. 在MyBatis中用于表示输入类型的属性名称是resultTypeparameterType(正确答案)collectionreturnType16. 在 MyBatis 的配置文件中,通过()标签来设置实体类的别名propertiessettingstypeAliases(正确答案)dataSource17. 在MyBatis中,以下哪项不属于Mybatis全局配置文件中的标签propertiesdata(正确答案)typealiases18. 在MyBatis中,以下哪项不属于resultMap的自动映射级别NONEPARTIALFULLANY(正确答案)19. 在MyBatis中,以下说法错误的是Mapper接口方法名和mapper.xml中定义的每个sql的id可以不同(正确答案)Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType 的类型相同Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同Mapper.xml文件中的namespace即是mapper接口的类路径20. 在MyBatis中,用于取出由数据库内部生成主键的属性是()keyPropertyuseGeneratedKeys(正确答案)keyColumndataBaseid21. 在MyBatis中,更新数据的Mapper.xml的标签是什么InsertSelectUpdate(正确答案)Delete22. 在MyBatis中,使用jdbc方式返回主键自增的值需要设置<insert>标签的什么属性()idparameterTypekeyPropertyuseGeneratedKeys(正确答案)23. 在Mybatis中实现DML操作的标签有哪些()【选三项】<insert>(正确答案)<update>(正确答案)<delete>(正确答案)<provider>24. 在Mybatis中接口方法中只有一个参数时,在映射器XML可用的参数是什么(){param}{param0}{arg0}(正确答案){arg1}25. 在Mybatis中接口绑定的方式有哪两种【选两项】注解绑定(正确答案)直接绑定XML里面写SQL绑定(正确答案)XML里面写方法绑定26. 在mapper中如何传递多个参数【选两项】使用占位符的思想(正确答案)使用数组传递使用map集合作为参数来装载(正确答案)无法实现27. 在Mybatis中,设置自动生成主键后通过什么属性获取自动生成的(主)键值设置resultMap设置useGeneratedKeys设置keyProperty(正确答案)设置Property28. 在Mybatis的ORM映射中,表中的列名需要和()进行映射?类名类中的属性名(正确答案)类的包名id29. 在Mybatis中,Mapper接口的方法名需要和Mapper对应XML文件中的()对应标签名id(正确答案)参数名parameterType30. 在MyBatis中,以下关于MyBatis集合类型参数的处理,说法错误的是()当参数为Collection接口,转化为Map,Map的Key为collection当参数类型为List接口时,除了collection的值外,list作为key如果参数为数组,也会转化为Map,Map的key为array如果参数为数组,也会转化为Map,Map的key为list(正确答案)31. 在MyBatis中,以下哪项不属于MyBatis的API SqlSessionFactoryBuilderSqlSessionFactoryExecutor(正确答案)SqlSession32. 在使用MyBatis的select标签查询客户(customer)的电话信息时,如果客户实体中电话的属性名为mobile,而客户表所对应的字段名为phone,则正确的写法是()select phone from customerselect mobile from customerselect mobile as phone from customerselect phone as mobile from customer(正确答案)33. 在MyBatis中,<collection>标签支持的属性值以及属性的作用和<association>标签完全相同,分别有哪些()【选两项】resultTypecolumnPrefix(正确答案)property(正确答案)parameterType34. 在MyBatis中,子标签<association>配置已经有的结果集时使用哪个属性()propertyjavaTyperesultType(正确答案)columnPrefix35. 在MyBatis中,以下不属于<association>标签嵌套查询常用属性的是()show(正确答案)selectcolumnfetchType36. 在Mybatis中使用collection标签来解决一对多关联,哪项不属于其属性properties(正确答案)ofTypecolumnselect37. 在 MyBatis 中,配置结果映射时,使用()标签实现1对多的关联many-oneone-manyassociationcollection(正确答案)38. 在 MyBatis 中,配置结果映射时,使用()标签实现多对1的关联many-oneone-manyassociation(正确答案)collection39. 在MyBatis中,.映射一对一使用的标签是many-oneone-manyassociation(正确答案)collection40. 在mybatis中,映射一对多时使用的常用属性是实体对象ConnectionResultSetList(正确答案)41. 在Mybatis中,Mapper.xml中用于设置返回值类型和结果字段映射关系的是accociationselectresultMap(正确答案)constructor42. 在MyBatis中,mybatis指定配置文件的根元素使用的是什么<sqlMapConfig><configration>(正确答案)<setting><environments>43. 在MyBatis中,<foreach>标签可以实现对象遍历的用法,适用对象不包括下列哪一个()数组MapListMath(正确答案)44. 在MyBatis中,以下属于choose标签内部标签的是【选两项】when(正确答案)selectotherwise(正确答案)if45. 在MyBatis中,以下不属于Mybatis动态sql标签的是?trimforeachsetthan(正确答案)46. 在Myabtis的XML映射文件中,除了常见的增删改查标签之外,还有哪些标签【选两项】codeparametersinclude(正确答案)selectKey(正确答案)47. 在MyBatis中,以下哪个属性作用为:当trim元素包含内容时,会把内容中匹配的前缀字符串去掉prefixprefixOverrides(正确答案)suffixsuffixOverrides48. 在MyBatis中,以下哪项不属于Mybatis动态sql标签ifchoosewhenget(正确答案)49. 在MyBatis中,实现对象遍历标签是foreach(正确答案)ifchoosetrim50. 在MyBatis中,以下不属于MyBatis动态标签的是【选两项】forwhen(正确答案)set(正确答案)while51. 在 MyBatis 动态 SQL 中,没有使用下列()标签for(正确答案)ifchoosewhere52. 下列关于Mybatis的描述错误的是()mybatis可以实现全自动的数据库操作,大大简化了开发工作量(正确答案) mybatis虽然实现了ORM,但是需要自己编写SQL语句mybatis内部其实是封装了jdbc进行数据库操作mybatis不仅支持sql,还能支持存储过程53. 在MyBatis中,<foreach>标签不包含以下哪些属性()【选两项】indexofitem(正确答案)index(正确答案)trim54. 在Mybatis中的foreach使用时,用于对应循环数据的别名属性是()closeitem(正确答案)collectionend55. 在MyBatis中,主要用于更新时的mybatis动态sql标签是Choose(when/otherwise)Set(正确答案)WhereForeach56. 在Mybatis中,想实现批量删除的动态sql的标记可选择choose(when/otherwise)setwhereforeach(正确答案)57. 在MyBatis中,动态SQL标签<choose>标签中最少可以有几个<when>标签()1(正确答案)23以上都不对58. 在MyBatis中,动态SQL标签<choose>标签中关于<otherwise>标签描述正确的是()<otherwise>标签可以有0个(正确答案)<otherwise>标签只能有1个<otherwise>标签可以有2个以上都不对59. 在MyBatis中,以下不属于Mybatis的动态标签的是()<if><while>(正确答案)<choose><where>60. 在MyBatis中,动态SQL标签<if>判断String类型的字段是否为空字符串的正确用法是()<if test="userName != null and userName != '' "></if>(正确答案)<if test="userName != null userName != '' "></if><if test="userName != null or userName != '' "></if><if test="userName != null || userName != '' "></if>61. 在MyBatis中,为实现批量输入和动态更新可以使用以下哪个动态SQL标签()<foreach>(正确答案)<if><choose><set>62. 在Mybatis中,当接口功能方法有多个参数时,可使用如下哪个注解为参数进行指定名称@set@Map@Param(正确答案)@value63. 在MyBatis中,二级缓存的默认效果有哪些()【选两项】二级缓存默认是关闭的(正确答案)映射语句文件中所有的insert语句、update语句和delete语句会刷新缓存(正确答案)缓存永远不会被回收如果没有设置刷新时间间隔,缓存会随时刷新64. 在以下场景中,不推荐使用二级缓存的是()以更新数据为主的应用中,查询业务较少(正确答案)以查询为主的应用中,尽可能少的更新操作查询业务绝大多数都是对单表进行操作的应用可以按业务划分对表进行分组时,关联表非常少65. 在MyBatis中,关于mybatis缓存的描述错误的是()一般提到Mybatis缓存的时候,都是指二级缓存一级缓存默认会启用一级缓存不能控制二级缓存不能控制(正确答案)66. 在MyBatis中,一般提到Mybatis缓存的时候指的是()二级缓存(正确答案)一级缓存本地缓存三级缓存67. 在MyBatis中,配置Mybatis Generator时,要求不会生成Examp相关的方法,需要设置targetRuntime为什么()Mybatis3Simple(正确答案)Mybatis3Mybatis3x以上都不对68. 在MyBatis中,使用MyBatis Generator自动工具生成的文件不包含()Entity(正确答案)DAO类SqlMap.xmlMapper XML69. 在MyBatis中,配置Mybatis Generator时,<table>标签可以配置几个()0个1个或多个(正确答案)仅能设置1个必须设置多个70. 在MyBatis中,MyBatis注解中怎么给参数一个名字()@Param("C11")(正确答案)@SelectOptions@Results71. 在MyBatis中,配置Mybatis Generator时,要生成数据库内所有表<table>标签中的tableName应该设置成什么()!#%(正确答案)$72. 在MyBatis中,以下Mybatis核心接口中用于设置入参设置是哪一个()ParameterHandler(正确答案)ResultSetHandlerExecutorStatementHandler73. 在MyBatis中,创建日志插件时应该通过拦截哪一个接口来完成ParameterHandlerResultSetHandlerStatementHandlerExecutor(正确答案)74. 在MyBatis中,Mybatis允许使用插件来拦截的核心接口有哪些()【选三项】Executor(正确答案)ParameterHandler(正确答案)ResultSetHandler(正确答案)ResultSet75. 在MyBatis中,以下哪项是可能造成JavaBean中字段与数据库列无法映射的原因【选两项】字段与数据库列名不一致(正确答案)没有对应的getter/setter方法(正确答案)未导入jar包项目搭建出错76. 下列关于Mybatis说法正确的是()【选两项】mybatis不能处理多表关联查询mybatis可以实现批量数据操作(正确答案)mybatis的一级缓存默认开启的(正确答案)mybatis不能针对视图进行操作77. 在MyBatis中,SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder ().build(resourceAsStream);这行代码代码主要做了哪些事呢,以下说法错误的是主要就涉及到了三个类SqlSessionFactoryBuilder、XMLConfigBuilder、XPathParser Build方法首先都是用XML配置文件构建一个XMLConfigBuilder类,XMLConfigBuilder通过parse方法返回一个Configuration配置类Configuration设置到SqlSessionFactory默认实现DefaultSqlSessionFactory的configuration属性并返回创建SqlSessionFactory对象是通过SqlSessionFactoryBuilder的build方法,他会返回它的默认实现类SqlSessionFactory(正确答案)78. 在MyBatis中,使用select映射查询含有部门详细信息的员工信息,下列关于返回类型的说法,正确的是()只能是resultType只能是resultMap(正确答案)可以是resultType或resultMap以上说法都不正确79. 在MyBatis中,以下不属于Mybatis优秀特性的是()支持自定义SQL查询支持存储过程支持高级映射支持XML注解(正确答案)80. 在MyBatis中,JDBC编程有哪些不足之处,Mybatis是如何解决这些问题的,描述正确的是()【选两项】mybatis替代了jdbc实现数据库操作将SQL语句配置在mapper.xml文件中与java代码分离(正确答案)mybatis避免了和数据库的直接连接Mbatis自动将SQL执行结果映射到java对象(正确答案)81. 在数据库操作中,事务的特性不包括下列原子性一致性高效性(正确答案)持久性82. 在MyBatis中,以下双方属于多对多关系的是权限-角色(正确答案)用户-银行卡用户-手机号学生-语文成绩83. 在MyBatis中,在使用MyBatis的时候,除了可以使用@Param注解来实现多参数不同类型入参,还可以用()传递多个参数值用Map对象可以实现传递多参数值(正确答案)用List对象可以实现传递多参数值用数组的方式传递用Set集合的方式传递84. 在MyBatis中,不属于MyBatis二级缓存默认效果有哪些映射语句文件中的所有select语句会被缓存映射语句文件中的所有insert、update、delete语句会刷新缓存缓存会使用LRU算法收回未设置缓存时间间隔,缓存会以任意时间顺序刷新(正确答案)85. 在MyBatis中,关于MyBatis映射器,说法错误的是()映射器定义了数据访问接口映射器是接口映射器中的方法是抽象方法,需要实现(正确答案)映射器类似于DAO接口,但仅需声明其中的方法,编程人员无须编码实现86. 在MyBatis中,以下哪项不属于MyBatis框架的优点易于上手和掌握解除sql与程序代码的耦合不支持级联更新(正确答案)提供xml标签,支持编写动态sql87. 在MyBatis中,以下属于MyBatis缓存级别的是【选两项】一级缓存(正确答案)二级缓存(正确答案)三级缓存无缓存88. 在MyBatis中,Mybatis的表关联的映射描述错误的是()一对多时可以使用collection标签进行关联映射多对一时可以使用association标签进行关联映射一对一时可以使用association标签进行关联映射mybatis不能处理多对多关联(正确答案)89. 在MyBatis中,mapper.xml的SQL语句中的占位符${}和#{}描述错误的是()一般会采用#{},#{}在mybatis中,最后会被解析为?,其实就是Jdbc的PreparedStatement中的?占位符,它有预编译的过程,可以防止SQL注入#{}中的变量名可以任意,如果入参类型是pojo,比如是Student类那么#{name}表示取入参对象Student中的name属性${}取对象的属性使用的是OGNL(Object Graph Navigation Language)表达式${}不会做类型解析,但不存在SQL注入的风险(正确答案)90. 在MyBatis中,MyBatis是那一层的框架业务逻辑层表示层持久层(正确答案)数据库层91. 在MyBatis中,关于MyBatis中传递多参数的情况,如果参数封装成Java Bean,应该怎么获取属性值通过#{参数名.属性名}通过#{arg0}来获得通过#{arg1}来获得通过#{成员属性}来获得(正确答案)92. 在MyBatis中,关于MyBatis中传递多参数的情况,如果参数封装成了Student 类,那么在Mapper.xml中获取数据,应该怎么操作条件获取数据可以通过#{属性名}来获得(正确答案)条件获取数据可以通过#{arg0}来获得条件获取数据可以通过#{arg1}来获得条件获取数据可以通过#{属性名}或者#{arg0}来获得93. 在MyBatis中,以下对MyBatis主配置文件描述错误的是()它主要提供数据库连接信息引用sql映射文件在其中定义具体的sql映射信息(正确答案)在其中定义了影响MyBatis行为的设置及其相关的属性信息94. 在MyBatis中,什么是DAO模式数据库访问对象(正确答案)关系对象对象持久化业务逻辑处理95. 在MyBatis中,持久层设计要考虑的范畴有哪些【选两项】数据存储逻辑分离(正确答案)数据访问底层实现的分离(正确答案)界面操作的易用性UI设计和数据库搭配96. 在MyBatis中,MyBatis如何执行批处理使用BatchExecutor完成批处理(正确答案)使用SimpleExecutor完成批处理任一executor均可实现无法进行批处理97. 在MyBatis中,不同的XML映射文件,id是否可以重复任何情况都不能重复不管陪不配置namespace,id均不可以重复如果配置namespace,id可以重复(正确答案)以上均不对98. 在MyBatis 中,映射器是中最重要、最复杂的组件,它由一个接口和对应的XML 文件(或注解)组成。
编程选择题40道:Java数据库连接:JDBC与数据库交互.Tex

1.在JDBC中,用于连接数据库的接口是什么?o A. PreparedStatemento B. DriverManagero C. ResultSeto D. Connection答案:D解析:在JDBC中,Connection接口用于表示与数据库的连接。
2.下列哪个类用于处理SQL语句的执行结果?o A. Statemento B. ResultSeto C. Connectiono D. Driver答案:B解析:ResultSet类用于处理执行SQL语句的结果集。
3.JDBC中,用于执行SQL语句的类是?o A. Connectiono B. PreparedStatemento C. ResultSeto D. DriverManager答案:B解析:PreparedStatement类用于执行预编译的SQL语句,Statement类则用于执行简单的SQL语句。
4.要使用JDBC连接数据库,哪个方法用于加载JDBC驱动?o A. Connection.getConnection()o B. DriverManager.getDriver()o C. Class.forName()o D. PreparedStatement.prepareStatement()答案:C解析:Class.forName()用于加载JDBC驱动,这是在连接数据库前必须要执行的步骤。
5.下面哪个选项不是PreparedStatement相对于Statement的优点?o A. 预编译SQL语句提高执行效率o B. 处理结果集更灵活o C. 防止SQL注入o D. 设置参数更方便答案:B解析:PreparedStatement在性能、安全性和参数设置上优于Statement,但两者处理结果集的能力基本相同。
6.JDBC中的DriverManager类的哪个方法用于建立数据库连接?o A. getConnection()o B. getDriver()o C. registerDriver()o D. setLoginTimeout()答案:A解析:getConnection()方法用于根据给定的数据库URL、用户名和密码建立数据库连接。
repository submissions -回复

repository submissions -回复所谓“repository submissions”是指向代码库或存储库提交代码或文件的过程。
在软件开发和版本控制中,这个过程极其重要,它涉及描述、注册、编辑、备份和提交代码的一系列操作。
本文将逐步回答有关“repository submissions”主题的问题。
第一步:什么是代码库或存储库?代码库或存储库是用于管理和存储代码和文件的集合。
它们通常是在一种特定的源代码管理工具(如Git、Subversion或Mercurial)中创建的。
代码库提供了一个集中管理代码文件和版本的平台,多个开发者可以共同使用和协同开发。
第二步:为什么需要向代码库提交?为了更好地管理代码,保持版本控制的完整性和追踪代码的修改历史,需要将代码或文件提交到代码库中。
通过提交,可以将当前的代码更改保存在代码库中,并存储有关作者、提交时间和描述的元数据。
这使得开发者可以随时查看和比较不同版本的代码,并可以回滚到早期的代码状态。
第三步:如何描述提交的代码或文件?在提交代码或文件之前,需要提供一种详细的描述来说明提交的目的和所做的更改。
通常,这个描述应该包括以下信息:1. 提交类型:指明提交是修复错误、添加新功能、重构代码还是其他类型的更改。
2. 问题或任务ID:如果提交是为了解决特定的问题或任务,应该提供相关的ID或引用。
3. 摘要:简明扼要地描述所做的更改,例如“修复了登录页面的错误消息显示问题”或“添加了用户个人资料页面”。
4. 详细描述:提供更详细的说明,包括更改的原因、解决方案或实现的思路等。
这对于其他开发者或团队成员了解提交的目标和影响非常有帮助。
5. 关联问题:如果提交解决了某个已知的问题或相关的问题,最好在描述中提供相关的链接或引用。
6. 作者:标识作者的信息,通常使用用户名或全名。
第四步:如何编辑和备份提交的代码?在提交之前,通常需要对代码进行编辑和备份。
这包括确保代码符合编码规范,没有语法错误,并完成必要的测试。
self-contained用法

self-contained用法"Self-contained"(自包含)是一个广泛用于软件开发领域的术语,它表示一个系统或组件具有足够的资源和依赖性,以便在独立环境中运行,而不需要依赖于外部组件或资源。
这个概念在不同的上下文中有不同的用法。
以下是一些常见的使用方式:1. 应用程序的自包含性:-独立执行文件:一个自包含的应用程序可能是一个独立的可执行文件,它包含了所有运行所需的库、依赖和资源。
用户可以直接运行这个可执行文件而不需要安装其他组件。
-依赖包含:应用程序可能包含了所有所需的依赖项,而不需要在用户的计算机上预先安装这些依赖项。
2. 数据库的自包含性:-独立数据库文件:一个自包含的数据库系统可以存储在单个文件中,用户可以轻松地将整个数据库复制或传输给其他地方,而不需要独立安装数据库管理系统。
3. 容器化技术中的自包含性:- Docker容器:Docker 容器是一个自包含的应用程序环境,它包含了应用程序及其所有依赖项、配置和运行时。
这使得应用程序在不同的环境中可以以相同的方式运行。
4. 程序包的自包含性:- NuGet、npm、pip等包:在软件开发中,一些包管理工具允许开发者创建自包含的程序包,其中包含了所需的代码、库和配置,使得其他开发者可以轻松地引用和使用这些包。
示例:Python虚拟环境在Python 中,使用虚拟环境可以创建一个自包含的开发环境。
以下是使用`venv` 模块创建和激活虚拟环境的简单例子:```bash# 创建虚拟环境python -m venv myenv# 激活虚拟环境# 在Windows 上:myenv\Scripts\activate# 在Linux/Mac 上:source myenv/bin/activate```在这个虚拟环境中,你可以安装和运行你的Python 应用程序,而不会影响系统级的Python 环境。
这就是一个自包含的开发环境的例子。
ef readrepository -回复

ef readrepository -回复如何读取代码仓库。
第一步:选择代码托管平台首先,我们需要选择一个合适的代码托管平台来存储我们的代码仓库。
目前,比较流行的代码托管平台包括GitHub、GitLab和Bitbucket等。
根据项目的需求和个人偏好,我们可以选择其中之一来创建自己的代码仓库。
第二步:创建代码仓库在选择好代码托管平台后,我们需要创建一个新的代码仓库。
具体的步骤可能会有些差异,但一般来说,我们需要提供一些基本信息,例如仓库名称、描述、可见性和访问权限等。
在创建代码仓库时,我们还可以选择初始化一个README文件,这样可以方便地添加项目介绍和文档。
第三步:克隆代码仓库一旦代码仓库创建成功,我们就可以将其克隆到本地环境中进行操作。
克隆操作将会在本地创建一个与远程代码仓库完全相同的副本,我们可以通过这个副本来进行代码的修改和管理。
要克隆代码仓库,我们首先需要获取仓库的克隆地址。
这个地址通常会以https或者git的形式提供。
然后,在本地打开终端或命令行界面,使用git clone命令并提供克隆地址即可完成仓库的克隆。
第四步:拉取最新代码一旦成功克隆代码仓库到本地,我们可以开始进行代码的阅读和修改工作。
但在开始之前,我们应该先拉取最新的代码,以确保我们工作的基础是最新的版本。
在本地仓库目录中打开终端或命令行界面,使用git pull命令即可拉取最新的代码。
如果有冲突或其他问题,我们需要解决它们后才能继续进行。
第五步:浏览代码文件一旦代码仓库成功克隆并拉取最新代码,我们可以打开代码编辑器来浏览代码文件。
代码编辑器可以帮助我们更好地阅读和理解代码,同时还提供了许多方便的功能,例如代码高亮、代码折叠和查找替换等。
我们可以逐个文件地浏览代码,了解代码的结构和逻辑。
第六步:查看版本历史一个代码仓库通常会有多个版本,我们可以通过查看版本历史来了解每个版本的变化和修改。
在终端或命令行界面中,使用git log命令可以列出所有的提交历史记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A Repository Framework for Self-Growing Robot SoftwareHyung-Min Koo, In-Young KoInformation and Communications University (ICU)119 Munjiro, Yuseong-gu, Daejeon, 305-732, Korea{hyungminkoo, iko}@icu.ac.krAbstractSelf-growing software is a software system that grows its functionalities and configurations by itself based on dynamically monitored situations. Self-growing software is especially necessary for intelligent service robots, which monitor their surrounding environments and provide appropriate behaviors for human users. Intelligent service robots often face problems that cannot be resolved with the conventional software technology.To support self-growing software for intelligent service robots, the SemBots project at ICU is developing a repository framework that allows robot software to dynamically acquire software components that are necessary to resolvea dynamic situation. In this paper, we describe the requirements and architecture of the repository system for self-growing software. We also presenta prototype implementation of the repository system.Keywords : Self-growing Software, Self-adaptive Software Intelligent Service Robots, Component Repositories1. IntroductionAs the complexity and dynamism of computing grow rapidly, people seek for self-adaptive software systems that change their behaviors dynamically based on changing environments and requirements [1]. Self-growing software is a kindof self-adaptive software. Self-growing is an action of improving the software system through self-evolution and self-expansion, without human intervention. A similar concept is discussed in the autonomic computing that defines self-configuration, self-optimization, self-healing, and self-protection as the essential functions of self-managed software [2]. In [2], self-optimization is defined as “an autonomic system that continually seeks ways to improve its operation, identifying and seizing opportunities to make itself more efficient in aspect of performance or cost” [2]. Therefore, self-growing is tightly related to the self-optimization issue in autonomic computing.Self-growing software is especially necessary for intelligent service robots, which monitor their surrounding environments and provide appropriate behaviors for human users. Intelligent service robots often face problems that cannot be resolved with the conventional software technology.To support self-growing software for intelligent service robots, the SemBots project at ICU is developing a repository framework that allows robot software to dynamically acquire software components that are necessary to resolve a dynamic situation. In this paper, we describe the requirements and architecture of the repository system for self-growing software. We also presenta prototype implementation of the repository system.In section 2, we explain what self-growing software is, and the differences between self-growing software and typical software systems. We also describe what processes are needed to support self-growing software. In Section 3, we briefly introduce the SemBots project that is currently developing self-growing software technologies. In Section 4, we explain requirements of the repository system for self-growing software. In Sections 5 and 6, we explain our approaches and the prototype implementationof the repository system respectively. We evaluate our repository system in Section 7, and discuss about the related work in Section 8. Finally, we conclude the paper in Section 9.2. Self-Growing SoftwareSelf-growing software is a software system that grows its functionalities and configurations by itself based on dynamically monitored situations. A self-growing software system proactively searches for external modules (objects, components, and services) when it faces a situation in which the current software cannot support functionalities that are necessary to cope with a problem. By using self-growing software, we can improve the efficiency of software system dramatically, especially for the software systems that require working in a dynamically changing environment.2.1 Self-Growing Software vs. Typical SoftwareIn a typical software system, to make software have a new set of functionalities, we need to shut down the system and reconfigure the software with a new set of software components. As depicted in Fig.1, during the system development (or redesign) time, users’ requirements need to be explicitly considered by a system administrator to select a new set of components that are necessaryto reconfigure the software system.Fig. 1 A Typical Software SystemIn contrast to the typical software system, in a self-growing software system, the software can ‘grow’ at runtime. As illustrated in Fig. 2, developers develop components and register them into an external environment. Self-growing software acquires these components dynamically during runtime if a problem situation is detected or user requirements are changed.2.2 The Process of Self-GrowingTo accomplish ‘self-growing’, three steps are necessary: collecting, learning and growing.i) Collecting : Contacting external componentrepositories to acquire new components that are needed to enhance the functionality of the software system to cope with unexpected changes.Fig. 2 A Self-Growing Software Systemii) Learning : Considering the history of selecting components for a certain situation to select the most appropriate components among the collected componentsiii) Growing : Storing the selected components into the internal repositoryAs shown in Fig. 3, these three steps are repeated continually, and software growsgradually.Fig. 3 The Process of Self-GrowingIn this paper, we focus on the repository structure for intelligent service robot software. Especially, the rest of the paper focuses on explaining about the overall system architecture, and detail mechanism to realize the collecting and growing steps.3. The SemBots ProjectThe SemBots project at ICU is developing a software framework to support self-growing software. This software framework allows robots to deal with unexpected situations by improving the mechanism of solving problems and by supporting a high level software configuration mechanism. As Fig. 4 explains, whenenvironmental changes, user requirements changes or exceptional situations are encountered, the robot software grows itself by gathering relevant components from external software component repositories, and by reconfiguring the software system to utilize the new components.Fig. 4 Self-Growing SoftwareIn the SemBots project, we are also developing a component broker for intelligent service robots. The component broker provides facilities that allow a robot to choose the most appropriate and effective components for a situation. An ontology-based semantic representation model [3] and a semantic gauging mechanism are the essential elements of the component broker.4. Requirements of the Repository System for Self-Growing Software4.1 AccuracyTo support the self-growing capability, component repositories must maintain accurate metadata about the software components that they manage. The repository system must also provide a mechanism to use the metadata in searching components that are appropriate to solve a problematic situation encountered.4.2 ScalabilityThe repository system must be scalable to seamlessly utilize various software componentst that are scattered across external network resources. The efforts of incorporating additional external resources must be minimized.4.3 DynamismRuntime software reconfiguration is one of the key elements of self-growing software. Therefore, the component repository system must support functions for dynamically collecting and storing software components. These activities also have to be done quickly enough so that the system’s performance is not degraded significantly by the actions.4.4 AccessibilityThe repository system must provide a way to transparently access information about software components that are distributed across internal and external component repositories.4.5 ChangeabilityThe capacity of an internal repository is limited. Therefore, it is necessary have criteria for changing information stored in internal repositories. These criteria are used to decide what information has to be retired from an internal repository, and what information has to be added to an internal repository.5. The Repository ArchitectureIn this section, we describe our approaches for the repository framework for self-growing robot software. We also explain the main architecture of the repository framework.5.1 Approaches· Semantic Matching: To collect components accurately, we use an ontology-based semantic matching mechanism. When a robot contacts an external repository to search for a component, it firstly collects ontologies of candidate components from external ontology repositories. Based on the ontologies collected, the component broker identifies the most appropriate component for a situation.· Ontology Repositories: An ontology repository stores ontology-based descriptions of software components. In an ontology repository, component ontologies are stored in the form of a graph that represents functionality, input/output semantics, and other conditions of components and relationships among ontologies. The component broker uses the ontology repository to search for appropriate components.· Component Repositories: The component repository stores component URIs (Uniform Resource Identifiers) and physical component files. A component instance description in an ontology repository points to a physicalcomponent file in a component repository.· A Component Acquisition Engine: A component acquisition engine provides functions to collect component ontologies and component files from external ontology and component repositories. Based on a query sent by the component broker, the component acquisition engine checks if the required component is available in an internal repository. If there is no component matched in an internal repository, the component acquisition engine identifies and locates an appropriate external repository to access. As explained earlier, ontologies of candidate components are firstly collected from external ontology repositories, and then the component broker decides a specific component instance to use. Only the component selected by the component broker is physically accessed from an external repository and stored into an internal repository. This is an important factor to enable high-performance component acquisition.· Component Retirement Plan: The self-growing behavior can not be performed infinitely because internal resources are limited. Therefore, a special plan for retiring and alternating components is essential for internal repositories. In our repository framework, each component description includes an access counter and has a field to record the acquisition date. When a robot faces resource limitation, it searches the most unused components and retires them from internal repositories. Older ones among the most unused component are retired first. Critical components that are essential for robot behaviors are not considered as retirement candidates.5.2 The Overall Repository Architecture Fig. 5 describes the overall repository architecture. When an unexpected situation is occurred, the component broker firstly searches the internal ontology repository. If the component broker cannot find any component ontologies that are appropriate for the situation, it requests the component acquisition engine to contact an external component repository. The component acquisition engine searches for proper external component ontologies, and uploads them into the internal ontology repository. After loading the component descriptions, based on the decision made by the component broker, the component acquisition engine retrieves a specific component file from an external component repository and store it into the internal component repository.Fig. 5 The Repository Architecture5.3 Accessing Internal RepositoriesBy accessing internal repositories, the component broker searches for the components that provide functionalities to handle a situation detected. It extracts a set of component candidates by using a semantically-based interoperability measurement [20], and sends them to a learning engine. The leaning engine chooses the most appropriate component based on the history of utilizing components for a certain set of situations. Fig. 6 explains the interactions among repository elements in accessing internal repositories.Fig. 6 Accessing Internal Repositories5.4 Accessing External RepositoriesIf there is no available or suitable component in the internal repository, the component broker sends a request to the component acquisition engine (see Fig. 7). The component acquisition engine then collects component ontologies from various external ontology repositories, and the component broker measures the semantic interoperability of them with the existing components in the software system. After thelearning engine decides the candidate components to use, the component acquisition engine uploads a set of ontology-based descriptions of the components into the internal ontology repository and acquires the physical component files from external component repositories. All the acquired components are stored into the internalcomponent repository.Fig. 7 Accessing External Repositories5.5 Accessing Web ServicesRobots sometimes need functionalities that are not supported as software components. For instance, if a robot’s behavior depends on weather, the robot needs to access weather information from the Web to accomplish its task. To access weather information, the robot can access a Web service that provides weather-related services.If there is no available service in the local service registry, the robot accesses Web service repositories, UDDI (Universal Description, Discovery and Integration) registries to find appropriate Web services and sends requests to the services (see Fig. 8). The robot stores the retrieved service information into the local component registry so that the local registry cangrow with a new set of available services.Fig. 8 Accessing Web Services6. A PrototypeIn this section, we describe a prototype implementation of the repository system. Fig. 9 shows the conceptual architecture of the prototype system. This architecture is being developed in our project.The monitor infers robot’s situation based on data received from sensors (Laser sensors, infra-red sensors, and vision sensors are available in the current robot platform). The component broker finds a strategy to solve the inferred situation, and searches for candidate components that are necessary to perform the strategy.This set of candidates is then transferred to the learning engine to decide the most appropriate components based on past experiences. Finally, the selected component is used for reconfiguring the robot software.If there is no available component for solving the situation, the component broker requests the component acquisition engine for external components. The acquisition engine collects ontologies from external ontology repositories, updates them into internal ontology repositories, and responses to the component broker. The component broker decides an external component to use with the help of the learning engine.. The acquisition engine retrieves the actual component file from an external component repository and stores it into the internal component repository. The acquired component is then used for reconfiguraing the robot software.Fig. 9 The Conceptual Architecture of the Prototype SystemWe are currently implementing the repository system for self-growing robot software on the Microsoft Windows XP operating system. We use the JA V A programming language for implementing the system. For implementing the repositories, we use the Protégé tool, Jena2 library, My-SQL, JDBC, RMI, and FTP. We use Protégéto make RDF and RDFS files [4]. These files contain ontologies information in the form of XML files. Fig. 10 shows ontologies for intelligent service robots [21].Fig. 10 Ontologies for Intelligent Service Robots (Edited with Protégé)Jena2 provides a set of methods for querying ontologies from RDF and RDFS files. The Jena2 library provides two ways of handling ontology models: memory models, and database models. It provides the “modelRDB” class to store ontology models into a database. By using the “modelRDB” class, we can store ontology hierarchy into a database in forms of tables [5]. Fig. 11 depicts the process of creating the initial ontology repository, making RDF and RDFS files with Protégé, integrating the file data with Jena2, and storing them into a database.Fig. 11 The Process of Creating an Ontology RepositoryWe used My-SQL to build databases for ontology and component repositories. An ontology repository includes a RDF triple model [5] of ontologies, and a component repository contains URIs of components and locations of component files. To connect Jena with the database, we used a JDBC driver. RMI is used for accessing external repositories for collecting external ontologies. The component acquisition engine makes a remote procedure call to the remote method that is running on an external repository server. After accessing component ontologies by using RMI, the component acquisition engine uses FTP to actually download external components.Fig. 12 shows an implemented architecture of the repository system. The RMI handler calls a remote method with a component schema for collecting external ontologies from external ontology repository. This RMI handler supportsthe scalability and accessibility requirements.The external ontology manager searches for proper component ontologies in external ontology repositories and measures semantic interoperability among them. It then returns candidates components to the component acquisition engine in the internal system. This manager satisfies accuracy requirement.By searching proper locations of the candidate components, the ontology updater uploads the component instance descriptions into the internal ontology repository. Based on the feedback fromthe learning engine, the most appropriate component is selected.Finally, the component receiver accesses the FTP server of the external component repository, retrieves the component file by referring to the component’s location, and uploads the componentfile into the internal component repository. The activities of updating ontologies by the ontology updater, and uploading component files by the component receiver are performed during run time. This satisfies the dynamism requirement.When internal repositories meet their capacity limitations, the retirement planner searches for the most unused and/or oldest components to be retired. After the decision, the retirement planner retires them from internal repositories. This planner supports the changeability requirement.Fig. 12 The Implemented Architecture7. Evaluation· Accuracy: We use the semantic matching mechanism. We develop ontology-based component repositories, and this makes the component broker collect enough and accurate information about components. Therefore, our framework provides a mechanism for supporting ‘accuracy’.· Scalability: We divide the repositories into internal and external repositories. Based on this repository structure, a robot can utilize many external repositories and external computing resources. By making the internal repositories small and efficient, and by making it extensible by accessing external repositories, we achieve the scalability and extensibility requirements.· Dynamism: The self-growing process is done during runtime, and components can be collected and utilized dynamically. In addition, the updatesof ontologies and components are performed during runtime.· Accessibility: In addition to the storage space, external repositories provide the functions to process queries and to compare between components. Robots can collect external ontologies by calling the remote method in external repositories. This repository architecture makes robots access various external repositories easily and efficiently.· Changeability: When a robot meets the limitation of resources, it actuates the component retirement process. We use two kinds of retirement plan as explained earlier. This retirement plan satisfies the changeability requirement.8. Related WorkThere have been several researches about component repositories and self-growing software. Most of the repositories use keyword-based matching, indexing and browsing mechanisms [13].· Ontology-based Repositories: There are some researches of ontology-based repositories. Semantic Web languages such as RDF and OWL can represent metadata of information, and can deal with ontologies and their repository [8,18].To access distributed ontology repositories, APIs such as OKBC [19] are also available.· Component Repositories: There are many researches about component repositories to provide component retrieval: CRPS [9], universal repository [14], some commercial repositories [17], knowledge-based repository [12], repositories to support reusability [6, 7, 16], and active and effective repositories [10, 11, 15]. However, they mostly focus on description, reusability, publication, and reliability of components, and do not consider mechanisms for self-growing.· Self-Growing Software: In the viewpoint of autonomic computing [2], self-growing can be characterized as a high performance and low cost optimization method.9. Conclusions and Future WorkSelf-growing software is important to support self-adaptiveness and autonomic computing. To realize self-growing software, the repository technology does an important role. We describeda repository framework for self-growing robot software. To support self-growing, we provide the semantically-based component brokering mechanism, ontology repositories, component repositories, component acquisition engine, and component retirement plan. Our framework meetsthe requirements of accuracy, scalability, dynamism, accessibility, and changeability that are essential properties of software for intelligent service robots.We are currently working on optimizing theprocess of acquiring external software components and improving the overall performance of the repository system. In addition, we are currently applying our framework to a silver-mate robot platform. We are also working on utilizing Web services in composing and reconfiguring robot software.10. AcknowledgementThis research was performed for the Intelligent Robotics Development Program, one of the 21st Century Frontier R&D Programs funded by the Ministry of Commerce, Industry and Energy of Korea.The authors also would like to thank Hyun-il Shin, Yu-sik Park, Beom-jun Jeon, and Ki-hyeon Kim for their comments and insights. References[1] Peyman Oreizy and et al., “An Architecture-Based Approach to Self-Adaptive Software”, IEEE Intelligent System, 1999.[2] Jeffrey O. Kephart and et al., “Vision of Autonomic Computing”, IEEE Computer Society, 2003.[3] Vijayan S. and et al., “A Semantic-Based Approach to Component Retrieval”, ACM, SIGMIS Database, Vol. 34. No. 3, 2003.[4] What is Protégé?./overview[5] Shelly Powers, “Practical RDF”, P.16-P.22, O’Reilly publication, July, 2003.[6] Yunwen Ye et al., “An Active and Adaptive Reuse Repository System”, IEEE, 2001.[7] Jose Luis Barros Justo et al., “A Repository to support Specifications Reuse”, IEEE, 1996.[8] Regina M. M. Braga et al., “The Use of Mediation and Ontology Technologies for Software Component Information Retrieval”, ACM, 2001.[9] Jung-eun Cha et al., “Design and Implementation of Component Repository for Supporting Component Based Development Process” Software Engineering Department of ETRI, IEEE, 2001.[10] Heinrich Jasper, “Active Databases forActive Repositories”, IEEE, 1994.[11] Scott Henninger, “Supporting the Construction and Evolution of Component Repositories”, Proceedings of ICSE, IEEE, 1996. [12] Padmal Vitharana et al., “Knowledge-Based Repository Scheme for Storing and Retrieving Business Components: A Theoretical Design andan Empirical Analysis”, IEEE transactions on Software Engineering, V ol. 29, NO. 7, July 2003. [13] Luqi and Jiang Guo, “Toward Automated Retrieval for Software Component Repository”, Dept. of computer science, Naval Postgraduate School.[14] Sridhar Iyengar, “A Universal Repository Architecture using the OMG UML and MOF”, IEEE, 1998.[15] Kurt Schneider et al., “Effective Experience Repositories for Software Engineering”, Proceeding of the 25th ICSE’ 03, IEEE, 2003. [16] Jihyungg Lee et al., “Facilitating Reuse of Software Component using Repository Technology”, Proceeding of the Tenth Asia-Pacific Software Engineering Conference, IEEE, 2003.[17] Luqi and Jiang Guo, “A Survey of Software Reuse Repository”, Research Associate US national Research Council.[18] Natalya F. Noy and et al., “Making Biomedical Ontologies and Ontology Repositories Work”, IEEE Intelligent Systems, 2004.[19] Richard Fikes and et al., “Distributed Repositories of High Expressive Reusable Ontologies”, IEEE Intelligent Systems, 1999.[20] In-Young Ko, Robert Neches, and Ke-Thia Yao, “A Semantic Model and Composition Mechanism for Active Document Collection Templates in Web-based Information Management Systems”, Electronic Transactionson Artificial Intelligence (ETAI), Vol. 5, SectionD, pp.55-77, 2001.[21] Hwayoun Lee, Ho-Jin Choi, In-Young Ko. “A Semantically-Based Software Component Selection Mechanism for Intelligent Service Robots”, To appear in Proceedings of 4th Mexican International Conference on Artificial Intelligence (MICAI2005), Monterrey, Mexico, November 2005.。