Java和Flex整合报错(三)
1、错误描述
信息: Initializing Spring FrameworkServlet 'mvc'
11-13 23:43:42 INFO [localhost-startStop-1] org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:455) - FrameworkServlet 'mvc': initialization started
11-13 23:43:42 INFO [localhost-startStop-1] org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:510) - Refreshing WebApplicationContext for namespace 'mvc-servlet': startup date [Thu Nov 13 23:43:42 CST 2014]; root of context hierarchy
11-13 23:43:43 INFO [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:315) - Loading XML bean definitions from ServletContext resource [/WEB-INF/mvc-servlet.xml]
11-13 23:43:44 INFO [localhost-startStop-1] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:596) - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@141e00a: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,cacheServer,myBatisTest,commonQueryDAOImpl,sysFrameSVImpl,beanFactory,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,mvcContentNegotiationManager,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,_messageBrokerHandlerAdapter,_messageBrokerDefaultHandlerMapping,_jsonConfigMapEditorConfigurer,_messageBrokerMessagingProcessor,_flexRemotingAnnotationPostProcessor,_messageBrokerRemotingProcessor,org.springframework.flex.core.ExceptionTranslationAdvice#0,org.springframework.flex.core.EndpointServiceMessagePointcutAdvisor#0,org.springframework.flex.core.MessageInterceptionAdvice#0,org.springframework.flex.core.EndpointServiceMessagePointcutAdvisor#1,_messageBrokerEndpointProcessor,_messageBroker,dataSource,transactionManager,sqlSessionFactory,org.mybatis.spring.mapper.MapperScannerConfigurer#0,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,deptMapper,usersMapper,org.springframework.flex.remoting.RemotingDestinationExporter#0]; root of factory hierarchy
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:98) - Configuring ehcache from URL: jar:file:/D:/MyEclipse/apache-tomcat-7.0.32/webapps/HBMB/WEB-INF/lib/buganalysis-0.0.1-SNAPSHOT.jar!/conf/ehcache.xml
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(ConfigurationFactory.java:150) - Configuring ehcache from InputStream
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationFactory.translateSystemProperties(ConfigurationFactory.java:208) - Did not find a system property for the ${multicastGroupPort} token specified in the configuration.Replacing with ""
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationFactory.translateSystemProperties(ConfigurationFactory.java:208) - Did not find a system property for the ${serverAndPort} token specified in the configuration.Replacing with ""
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationFactory.translateSystemProperties(ConfigurationFactory.java:215) - Found system property value of C:\Users\Administrator for the ${user.home} token specified in the configuration.
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationFactory.translateSystemProperties(ConfigurationFactory.java:208) - Did not find a system property for the ${token} token specified in the configuration.Replacing with ""
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.BeanHandler.setAttribute(BeanHandler.java:271) - Ignoring ehcache attribute xmlns:xsi
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.BeanHandler.setAttribute(BeanHandler.java:271) - Ignoring ehcache attribute xsi:noNamespaceSchemaLocation
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.DiskStoreConfiguration.translatePath(DiskStoreConfiguration.java:141) - Disk Store Path: D:\MyEclipse\apache-tomcat-7.0.32\temp/ehcache
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.util.PropertyUtil.parseProperties(PropertyUtil.java:87) - propertiesString is null.
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationHelper.createCacheManagerEventListener(ConfigurationHelper.java:189) - No CacheManagerEventListenerFactory class specified. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.Cache.createBootstrapCacheLoader(Cache.java:1030) - No BootstrapCacheLoaderFactory class specified. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.Cache.createCacheWriter(Cache.java:1003) - CacheWriter factory not configured. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationHelper.createCacheExceptionHandler(ConfigurationHelper.java:100) - No CacheExceptionHandlerFactory class specified. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.Cache.createBootstrapCacheLoader(Cache.java:1030) - No BootstrapCacheLoaderFactory class specified. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.Cache.createCacheWriter(Cache.java:1003) - CacheWriter factory not configured. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationHelper.createCacheExceptionHandler(ConfigurationHelper.java:100) - No CacheExceptionHandlerFactory class specified. Skipping...
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.DiskStorePathManager.resolveAndLockIfNeeded(DiskStorePathManager.java:169) - Using diskstore path D:\MyEclipse\apache-tomcat-7.0.32\temp\ehcache
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.DiskStorePathManager.resolveAndLockIfNeeded(DiskStorePathManager.java:170) - Holding exclusive lock on D:\MyEclipse\apache-tomcat-7.0.32\temp\ehcache\.ehcache-diskstore.lock
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.store.disk.DiskStorageFactory.deleteFile(DiskStorageFactory.java:838) - Failed to delete file sample%0043ache.index
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.store.disk.DiskStorageFactory.<init>(DiskStorageFactory.java:170) - Matching data file missing (or empty) for index file. Deleting index file D:\MyEclipse\apache-tomcat-7.0.32\temp\ehcache\sample%0043ache.index
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.store.disk.DiskStorageFactory.deleteFile(DiskStorageFactory.java:838) - Failed to delete file sample%0043ache.index
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardPassThruStatistics(ExtendedStatisticsImpl.java:224) - Mocking Pass-Through Statistic: LOCAL_OFFHEAP_SIZE
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardPassThruStatistics(ExtendedStatisticsImpl.java:224) - Mocking Pass-Through Statistic: LOCAL_OFFHEAP_SIZE_BYTES
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardPassThruStatistics(ExtendedStatisticsImpl.java:224) - Mocking Pass-Through Statistic: WRITER_QUEUE_LENGTH
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardPassThruStatistics(ExtendedStatisticsImpl.java:224) - Mocking Pass-Through Statistic: REMOTE_SIZE
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardPassThruStatistics(ExtendedStatisticsImpl.java:224) - Mocking Pass-Through Statistic: LAST_REJOIN_TIMESTAMP
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: OFFHEAP_GET
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: OFFHEAP_PUT
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: OFFHEAP_REMOVE
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: XA_COMMIT
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: XA_ROLLBACK
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: XA_RECOVERY
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: CLUSTER_EVENT
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.statistics.extended.ExtendedStatisticsImpl.findStandardOperationStatistics(ExtendedStatisticsImpl.java:206) - Mocking Operation Statistic: NONSTOP
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.Cache.initialise(Cache.java:1234) - Initialised cache: sampleCache
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationHelper.createCacheDecorators(ConfigurationHelper.java:334) - CacheDecoratorFactory not configured. Skipping for 'sampleCache'.
11-13 23:43:44 DEBUG [localhost-startStop-1] net.sf.ehcache.config.ConfigurationHelper.createDefaultCacheDecorators(ConfigurationHelper.java:364) - CacheDecoratorFactory not configured for defaultCache. Skipping for 'sampleCache'.
11-13 23:43:46 INFO [localhost-startStop-1] com.romeo.backbone.untils.Configuration.loadClasspathProperties(Configuration.java:41) - 加载classpath*:conf/bug_*.properties配置文件
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[/],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public com.romeo.backbone.entity.Dept com.romeo.backbone.controllers.MyBatisTest.main()
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//login],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.login(java.lang.String,java.lang.String)
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//fuck],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.main1()
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//xxoo],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.main2(java.lang.String)
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//shit],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.main3(java.lang.String)
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//shit2],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.main4()
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//insertDept],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.insertDept(com.romeo.backbone.entity.Dept)
11-13 23:43:46 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:178) - Mapped "{[//deleteDept],methods=[POST || GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object com.romeo.backbone.controllers.MyBatisTest.deleteDept(com.romeo.backbone.entity.Dept)
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.config.FlexConfigurationManager$ResourceResolverAdapter.getConfigurationFile(FlexConfigurationManager.java:184) - Loading Flex services configuration from: ServletContext resource [/WEB-INF/flex/services-config.xml]
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.config.FlexConfigurationManager$ResourceResolverAdapter.getIncludedFile(FlexConfigurationManager.java:199) - Including Flex services configuration from: ServletContext resource [/WEB-INF/flex/remoting-config.xml]
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.config.FlexConfigurationManager$ResourceResolverAdapter.getIncludedFile(FlexConfigurationManager.java:199) - Including Flex services configuration from: ServletContext resource [/WEB-INF/flex/proxy-config.xml]
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.config.FlexConfigurationManager$ResourceResolverAdapter.getIncludedFile(FlexConfigurationManager.java:199) - Including Flex services configuration from: ServletContext resource [/WEB-INF/flex/messaging-config.xml]
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:144) - BlazeDS - Community Edition: 3.2.0.3978
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:154) - MessageBroker with id '_messageBroker' is starting.
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.core.MessageBrokerFactoryBean.afterPropertiesSet(MessageBrokerFactoryBean.java:173) - MessageBroker with id '_messageBroker' is ready (startup time: '231' ms)
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:308) - Default mapping to handler '_messageBroker'
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.remoting.RemotingDestinationExporter.createDestination(RemotingDestinationExporter.java:162) - Created remoting destination with id 'sysFrameSVImpl'
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.flex.remoting.RemotingDestinationExporter.initializeDestination(RemotingDestinationExporter.java:211) - Remoting destination 'sysFrameSVImpl' has been started started successfully.
11-13 23:43:47 INFO [localhost-startStop-1] org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:474) - FrameworkServlet 'mvc': initialization completed in 5039 ms
2014-11-13 23:43:47 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory D:\MyEclipse\apache-tomcat-7.0.32\webapps\host-manager
2014-11-13 23:43:47 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory D:\MyEclipse\apache-tomcat-7.0.32\webapps\manager
2014-11-13 23:43:48 org.apache.catalina.startup.HostConfig deployDirectory
2、错误描述
3、解决办法
Java和Flex整合报错(三)的更多相关文章
- Java和Flex整合报错(五)
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- Java和Flex整合报错(四)
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- Java和Flex整合报错(二)
1.错误原因 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- Java和Flex整合报错(一)
1.错误描述 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(Def ...
- Java Web项目(Extjs)报错三
1. Java Web项目(Extjs)报错三 具体报错如下: at org.jbpm.pvm.internal.processengine.SpringHelper.createProcessEng ...
- spring和mybatis整合报错:org.springframework.beans.MethodInvocationException: Property 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError
Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyExceptio ...
- 用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.
用java运行Hadoop例程报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.所写代码如下: package ...
- java连接数据库时的报错
//java连接数据库时的报错 1 package Java数据库编程; import java.sql.DriverManager; import java.sql.SQLException; im ...
- java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server
java项目连接jdbc报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not creat ...
随机推荐
- BZOJ CF388D. Fox and Perfect Sets [线性基 数位DP]
CF388D. Fox and Perfect Sets 题意:求最大元素\(le n\)的线性空间的个数 给神题跪了 orz 容易想到 每个线性基对应唯一的线性空间,我们可以统计满足条件的对应空间不 ...
- BZOJ 1434: [ZJOI2009]染色游戏
一开始想这不$SG$裸题...然后发现100组数据...然后发现连通块是任意的求$SG$貌似要暴力枚举.... 然后想了一下1维,手动打表,每次就是队当前所有异或后缀和求$mex$,好像就是$lowb ...
- 用js脚本一键下载网页所有图片
年前这两天稍微闲一点了,琢磨了一点js脚本,功能是把当前网页页面上的所有图片一次性保存到本地,免得每次都要对图片右键保存. 测试环境:Chrome开发者模式下(启动Chrome,按F12即可) 测试网 ...
- Vue中结合Flask与Node.JS的异步加载功能实现文章的分页效果
你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:http://blog.pushy.site/posts/15 ...
- Pycharm 出现Unresolved reference '' 错误的解决方法
在用Pycharm做Pygame游戏小实战的时候碰到一个很无语的问题 如下 什么鬼?????? 我明明有写settings模块啊 而且还是放在同一个目录下 然后Pycharm给我来了一个错误 而且在 ...
- CENTOS6.6下zabbix2.4.7搭建
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 安装依赖 安装Perl .apr / apr-util yum -y ...
- 2017年StackOverflow上最好的20个Python问题
1.Python的 .. (点号 点号) 是什么语法? 答案地址:https://stackoverflow.com/questions/43487811/what-is-python-dot-dot ...
- Oracle批量操作数据库
1:批量插入 <insert id="insertBatch" parameterType="Java.util.List" > insert in ...
- iOS isa指针
在Objective-C中,任何类的定义都是对象.类和类的实例没有任何本质上的区别.任何对象都有isa指针. isa:是一个Class 类型的指针. 每个实例对象有个isa的指针,它指向对象的类,而C ...
- Egret学习笔记 (Egret打飞机-6.实现敌机飞起来)
有了子弹,总得有敌人来打吧,不然游戏有啥意思呢?今天我们来实现敌机从屏幕上边往下飞 参考微信打飞机游戏里面,敌机分为3种 1是特小飞机,2是小飞机,还有一种就是大飞机 面向对象编程提倡抽象,实现代码复 ...