当前位置: 首页 > news >正文

网站 为何要 备案游戏加盟

网站 为何要 备案,游戏加盟,如何搭建一个局域网,中国能源建设集团有限公司子公司在调试spring应用时#xff0c;动辄几十秒#xff0c;甚至有的应用上分钟的启动速度#xff0c;会让整个调试速度慢下来了。等待时间让人抓狂。不知道大家是如何加速spring应用调试速度的#xff0c;在此分享下我的一次加速过程。欢迎补充指正。 环境 配置#xff1a; t…在调试spring应用时动辄几十秒甚至有的应用上分钟的启动速度会让整个调试速度慢下来了。等待时间让人抓狂。不知道大家是如何加速spring应用调试速度的在此分享下我的一次加速过程。欢迎补充指正。 环境 配置 thinkpad t410 内存4G内存 CPUIntel P8700 双核2.53GHZ 系统WIN XP 开发工具Intellij IDEA 12.0.4 Maven spring3.2.3 hibernate4.2.2Spring data jpa 1.3.1 未优化前spring容器启动速度 16890毫秒 14609毫秒ContextLoaderListener加载的2281毫秒Springmvc加载的 优化后spring容器启动速度 7797毫秒 6563毫秒ContextLoaderListener加载的1234毫秒Springmvc加载的 速度提升了一半多而且以后在调试阶段大部分就停留在这个时间左右。 注意此处只是spring容器启动速度不包括服务器启动时的速度。因为我的系统好久没清理了否则可能速度会更快。 加速Spring 1、扫描注解Bean 写比较精确的扫描路径如扫描Service和Repository Xml代码   context:component-scan base-packagecom.sishuok.es.**.repository,com.sishuok.es.**.service,com.sishuok.es.**.extra   context:component-scan base-packagecom.sishuok.es.**.repository,com.sishuok.es.**.service,com.sishuok.es.**.extra 这样写比直接写com.sishuok.es速度要快很多因为这样扫描的class会很少。 还有如springmvc 扫描 Xml代码   context:component-scan base-packagecom.sishuok.es.**.web.controller use-default-filtersfalse   context:component-scan base-packagecom.sishuok.es.**.web.controller use-default-filtersfalse 此处只扫描项目的web.controller包这样扫描的class也很少。 还有如事务的扫描 Xml代码   execution(* com.sishuok.es..service..*.*(..)   execution(* com.sishuok.es..service..*.*(..) 还有如使用spring data jpa时也是这样 Xml代码   jpa:repositories              base-packagecom.sishuok.es.**.repository   jpa:repositories base-packagecom.sishuok.es.**.repository 这里需要大家有良好的分包否则无法优化。 2、延迟加载你的bean 常见的方式是在配置文件中在beans上加 Xml代码   default-lazy-inittrue   default-lazy-inittrue 2.1、这种方式只对xml声明的bean有效 2.2、注解扫描的bean无效如Service需要使用Lazy指定但这样太麻烦需要一个一个的配置 2.3、还有就是如果你使用springmvclazy-init几乎没啥用因为springmvc容器在启动时会通过DefaultAnnotationHandlerMapping查找相关的带有RequestMapping的bean并注册请求映射所以相关的如Service/Repository也级联非lazy-init 因此我写了个工具SpeedUpSpringProcessor其作用是lazy-init所有bean包括注解的bean对于【2.3】后续介绍解决方案具体配置请参考最后。 3、移除调试阶段不相干的bean 有些bean在调试阶段我们并不需要如我们在测试用户模块时可能不需要测试权限模块此时我们可以把不相干的bean移除掉具体配置请参考最后。 这样的话可以考虑如把Controller的bean移除这样的话如Service/Repository就可以lazy-init了。 常见的可以移除的如 任务调度器quartz、AOP相关等等 此处需要合理的分包否则无法应用或应用困难。 4、删除无用属性 如在测试shiro时可能不需要remember的功能此时可以把属性移除/禁用即将值设置为false具体配置请参考最后。 5、替换正式机数据源为最快的数据源 如此处我把DruidDataSource数据源直接替换为org.springframework.jdbc.datasource.DriverManagerDataSource这个速度最快 6、替换jackson为fastjson 此处测试了下jackson速度比fastjson慢许多的。支持国产。 7、项目分模块开发  如果项目模块比较多可以考虑放弃注解而使用xml配置方式约定。 因为实际做项目时可能把配置分到多个配置文件此时我尝试了下合并到一个几乎没啥速度提升所以还是分开存好。 到此spring容器启动速度算是比较快了不知道大家还有没有好的策略。欢迎指点。 加速Hibernate/JPA 此处以org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean为例。 1、 精确化packagesToScan 和之前的spring一样写比较精确的实体扫描路径 Xml代码   property namepackagesToScan valuecom.sishuok.es.**.entity/   property namepackagesToScan valuecom.sishuok.es.**.entity/ 2、generateDdlfalse 禁用掉 没必要每次都生成ddl 3、 禁用JSR-303验证 默认情况下是AUTO会根据classpath下是否有jsr-303实现来自动注册 Xml代码   !-- 使用自定义的validator进行jsr303验证 --  entry keyjavax.persistence.validation.factory value-refvalidator/  !-- jsr303验证模式 因为其要么验证 要么不验证 不能按照规则走 所以此处禁用 --  !-- #http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/configuration.html --  entry keyjavax.persistence.validation.mode valueNONE/   !-- 使用自定义的validator进行jsr303验证 -- entry keyjavax.persistence.validation.factory value-refvalidator/ !-- jsr303验证模式 因为其要么验证 要么不验证 不能按照规则走 所以此处禁用 -- !-- #http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/configuration.html -- entry keyjavax.persistence.validation.mode valueNONE/ 此处validator 直接引用我们项目中定义的而不是让hibernate再去new一个。而且也不推荐在这验证具体为什么请参考我的《我是这样认识注解和XML的》。 4、如果你的项目都是注解此时就没必要扫描hbm了禁用掉 Xml代码   entry keyhibernate.archive.autodetection valueclass/   entry keyhibernate.archive.autodetection valueclass/ 5、如果你不使用NamedQuery禁用掉 Xml代码   entry keyhibernate.query.startup_check valuefalse/   entry keyhibernate.query.startup_check valuefalse/ 6、在调试阶段禁用掉二级缓存 通过如上手段我的spring容器启动速度提升了一半多。大家还有好的优化策略吗如果有欢迎补充。具体配置请参考最后。 之前提到的SpeedUpSpringProcessor配置 Xml代码   !-- 优化spring启动 通过移除bean定义 和 lazy init 实现 --  bean classcom.sishuok.es.common.spring.SpeedUpSpringProcessor      !-- 需要从bean定义中移除的bean的名字 --      property nameremovedBeanNames          list              !-- spring-config-quartz.xml --              valuescheduler/value              valueautoClearDeletedRelationTrigger/value              valueautoClearExpiredOrDeletedmMessageTrigger/value              valueautoClearDeletedRelationJob/value              valueautoClearExpiredOrDeletedmMessageJob/value                !-- spring-config-shiro.xml --              valuerememberMeCookie/value              valuerememberMeManager/value              valueshiroCacheManager/value              valuesessionValidationScheduler/value              valuesessionValidationScheduler/value              !-- spring-mvc.xml --              valuemultipartResolver/value                !-- spring-config-monitor.xml --              valuedruidStatInterceptor/value              valuedruidAdvisor/value          /list      /property      !-- 需要从bean定义中移除的bean的属性 --      !--替换掉的属性值 see removedBeanProperties 只支持简单属性--      property nameremoveOrReplaceBeanProperties          list              !-- spring-config-shiro.xml --              valuesessionManager#cacheManager/value              valuesessionManager#cacheManager/value              valuesessionManager#sessionValidationScheduler/value              valuesecurityManager#rememberMeManager/value                !-- spring-config.xml --              valueentityManagerFactory#jpaPropertyMap#hibernate.default_batch_fetch_size/value              valueentityManagerFactory#jpaPropertyMap#hibernate.max_fetch_depth/value              valueentityManagerFactory#jpaPropertyMap#hibernate.generate_statistics/value              valueentityManagerFactory#jpaPropertyMap#hibernate.bytecode.use_reflection_optimizer/value              valueentityManagerFactory#jpaPropertyMap#hibernate.cache.use_second_level_cachefalse/value              valueentityManagerFactory#jpaPropertyMap#hibernate.cache.use_query_cache/value              valueentityManagerFactory#jpaPropertyMap#hibernate.cache.region.factory_class/value              valueentityManagerFactory#jpaPropertyMap#hibernate.cache.use_structured_entries/value              valueentityManagerFactory#jpaPropertyMap#net.sf.ehcache.configurationResourceName/value          /list      /property        !-- 需要从bean定义中移除指定的类类型 正则表达式--      property nameremovedClassPatterns          list               valuecom\.sishuok\.es\.showcase.*/value               valuecom\.sishuok\.es\.monitor.*/value               valuecom\.sishuok\.es\.extra\.aop.*/value               valuecom\.sishuok\.es\.extra\.quartz.*/value               valuecom\.sishuok\.es\.conf.*/value               !--valuecom\.sishuok\.es\.personal.*\.web\.controller.*/value--               !--valuecom\.sishuok\.es\.sys.*\.web\.controller.*/value--          /list      /property        !-- 指定非延迟加载的bean--      property namenoneLazyBeanNames          list              valuedomainClassConverter/value          /list      /property  /bean   !-- 优化spring启动 通过移除bean定义 和 lazy init 实现 -- bean classcom.sishuok.es.common.spring.SpeedUpSpringProcessor !-- 需要从bean定义中移除的bean的名字 -- property nameremovedBeanNames list !-- spring-config-quartz.xml -- valuescheduler/value valueautoClearDeletedRelationTrigger/value valueautoClearExpiredOrDeletedmMessageTrigger/value valueautoClearDeletedRelationJob/value valueautoClearExpiredOrDeletedmMessageJob/value !-- spring-config-shiro.xml -- valuerememberMeCookie/value valuerememberMeManager/value valueshiroCacheManager/value valuesessionValidationScheduler/value valuesessionValidationScheduler/value !-- spring-mvc.xml -- valuemultipartResolver/value !-- spring-config-monitor.xml -- valuedruidStatInterceptor/value valuedruidAdvisor/value /list /property !-- 需要从bean定义中移除的bean的属性 -- !--替换掉的属性值 see removedBeanProperties 只支持简单属性-- property nameremoveOrReplaceBeanProperties list !-- spring-config-shiro.xml -- valuesessionManager#cacheManager/value valuesessionManager#cacheManager/value valuesessionManager#sessionValidationScheduler/value valuesecurityManager#rememberMeManager/value !-- spring-config.xml -- valueentityManagerFactory#jpaPropertyMap#hibernate.default_batch_fetch_size/value valueentityManagerFactory#jpaPropertyMap#hibernate.max_fetch_depth/value valueentityManagerFactory#jpaPropertyMap#hibernate.generate_statistics/value valueentityManagerFactory#jpaPropertyMap#hibernate.bytecode.use_reflection_optimizer/value valueentityManagerFactory#jpaPropertyMap#hibernate.cache.use_second_level_cachefalse/value valueentityManagerFactory#jpaPropertyMap#hibernate.cache.use_query_cache/value valueentityManagerFactory#jpaPropertyMap#hibernate.cache.region.factory_class/value valueentityManagerFactory#jpaPropertyMap#hibernate.cache.use_structured_entries/value valueentityManagerFactory#jpaPropertyMap#net.sf.ehcache.configurationResourceName/value /list /property !-- 需要从bean定义中移除指定的类类型 正则表达式-- property nameremovedClassPatterns list valuecom\.sishuok\.es\.showcase.*/value valuecom\.sishuok\.es\.monitor.*/value valuecom\.sishuok\.es\.extra\.aop.*/value valuecom\.sishuok\.es\.extra\.quartz.*/value valuecom\.sishuok\.es\.conf.*/value !--valuecom\.sishuok\.es\.personal.*\.web\.controller.*/value-- !--valuecom\.sishuok\.es\.sys.*\.web\.controller.*/value-- /list /property !-- 指定非延迟加载的bean-- property namenoneLazyBeanNames list valuedomainClassConverter/value /list /property /bean 1、默认所有bean lazy-init 2、removedClassPatterns正则表达式即可以移除的bean的class路径模式bean class匹配该模式的将移除此处需要良好的分包否则不好应用 3、removedBeanNames即在调试期间可以移除的bean 4、removeOrReplaceBeanProperties调试期间可以删除/替换掉的bean属性 如移除shiro的sessionManager的cacheManager 如禁用hibernate二级缓存entityManagerFactory#jpaPropertyMap#hibernate.cache.use_second_level_cachefalse 5、noneLazyBeanNames有些bean不能lazy-init排除掉。 具体实现请参考 可以直接下载使用。 SpeedUpSpringProcessor https://github.com/zhangkaitao/es/blob/master/common/src/main/java/com/sishuok/es/common/spring/SpeedUpSpringProcessor.java spring-speed-up.xml https://github.com/zhangkaitao/es/blob/master/web/src/main/resources/spring-speed-up.xml 其他提到的配置文件都在 https://github.com/zhangkaitao/es/tree/master/web/src/main/resources 开启/关闭  此处我使用了spring的profile Java代码   beans profiledevelopment    beans profiledevelopment 即只有当System.getProperties中有spring.profiles.activedevelopement才执行调试模式所以如果没有该配置还是走的正常流程对系统没有影响所以此处大家可以使用 1、jetty内嵌执行时设置该属性 Xml代码   plugin      groupIdorg.mortbay.jetty/groupId      artifactIdjetty-maven-plugin/artifactId      version${jetty.version}/version      configuration          ---省略           !-- spring profile  --          systemProperties              systemProperty                  namespring.profiles.active/name                  valuedevelopment/value              /systemProperty          /systemProperties      /configuration  /plugin   plugin groupIdorg.mortbay.jetty/groupId artifactIdjetty-maven-plugin/artifactId version${jetty.version}/version configuration ---省略 !-- spring profile -- systemProperties systemProperty namespring.profiles.active/name valuedevelopment/value /systemProperty /systemProperties /configuration /plugin
http://www.w-s-a.com/news/851415/

相关文章:

  • 做网站推销的如何谈客户wordpress怎么做商城
  • 摄影素材库网站服装页面设计的网站
  • 如何用国外网站做头条做个游戏app的费用大概多少
  • 网站 形象入口页福州网站建设网络公司排名
  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app
  • 物理组简介 网站建设高师院校语言类课程体系改革与建设 教学成果奖申报网站
  • 爱网站无法登录怎么回事手表网
  • 网站建设公司现在还挣钱吗山西手动网站建设推荐平台
  • 重庆建设工程交易信息网站网站制作公司起名
  • 东莞寮步做网站的有吗企业宣传册制作
  • 做网站的软件是哪个上蔡做网站
  • 前后端分离实现网站开发紧急通知网页升级
  • 河北专业网站建设公司推荐佛山小程序开发平台
  • 网站开发强制开启浏览器极速模式建设网站有什么风险
  • 360全景网站建设常州专业网站建设公司咨询
  • 重庆大渡口网站建设网站增加一体化建设功能的好处
  • 网站开发完整视频网站上传 404
  • 自适应网站做推广北京建设工程招标网
  • 外贸网站设计注意事项网上商城官网入口
  • 正规的营销型网站建设公司微官网是网站吗
  • 南京行业门户网站无锡阿里巴巴做网站
  • 河北省和城乡住房建设厅网站wamp wordpress打不开
  • 在哪个平台做网站比较好自动app优化
  • 有没有能帮人快速网站备案的机构个人学做网站
  • 凌云县 城市建设 网站西安市建网站
  • 织梦xml网站地图公众号公众平台
  • 长春省妇幼网站做四维学校网站系统破解版
  • 安阳免费搭建自己的网站个人网站做商城会怎样
  • 网站建设专家公司排行网站举报有奖平台