# Java

Tomcat Console日志引起应用挂起

问题背景

给客户新开发的同步服务,其实就是采用Quartz的写的定时任务,由运维部署到客户的服务器之后总是时不时出现应用卡住不动的问题。具体现象是在windows server下启动Tomcat,Tomcat弹出的Console一开始正常刷着日志,隔一段不固定的时间就有同事报告“Tomcat Console的日志莫名停住了,定时任务也卡住不执行,而且不报任何异常信息”。

Maven打包插件:自动添加css js版本号

jcv-maven-plugin、maven-replacer-plugin这两款maven打包插件均可以实现在打出的包自动添加js/css版本号。jcv-maven-plugin是专门为压缩js/css文件和添加js/css版本号设计的一款插件,使用的人很少,使用说明文档较为模糊。maven-replacer-plugin则可以在打包时匹配指定文件中的内容并替换,这里介绍用来自动添加js/css版本号。

Quartz+Spring Java配置

记录一下在Spring中整合Quartz的配置,当时遇到的问题有以下两个个方面:

  1. 能自动配置Job,新建Job无需手动修改配置。
  2. Job中的依赖需要Spring来装配

Java集合

总结了几张简单的图

Collection

List

图中的绿色的虚线代表实现,绿色实线代表接口之间的继承,蓝色实线代表类之间的继承。

Java后台验证组件

在项目中前端和后端的验证都必不可少,公司使用的框架是基于Spring MVC开发,但未对验证做相应的解决方案,在网上找到了Validation.FO的验证框架,顿时被其简洁的设计所吸引,经过对其自定义的拓展开发,集成到了项目中。

Validation.FO 框架说明

  1. 这是一个验证框架,并且是一个 独立的验证框架 ,不依赖与其他已有的框架;
  2. 可以自由的嵌入到其他框架,比如Spring、Struts等流行框架,但实质来说他是独立的,所以无所谓嵌入到哪里,如果需要在GUI桌面应用中,也是完美的;
  3. 配置简单,可自由扩展验证器,实际只要实现IValidator接口,以及在rules.fo.xml中添加相关的配置即可;
  4. 支持Spring接口
  5. 使用过程中,你会感觉好像只用了 IValidateService.validate() 一个方法,这会让人感觉良好

编程高手的进阶之路

对于外界,Coding是被神化的,似乎需要极高的智商和热情才能从事这个行业。

IT界聪明的人很多,但极具天赋真正的能称之为天才的人不多,一般人们口中所谓的天才,只不过是比平常人更快的掌握技能、完成工作罢了;只要你找到了正确的方向,并辅以足够的时间,你一样能够踏上成功彼岸。

工作中解决问题的途径有很多,你能最快想到的方法一部分取决于你的天赋另一部分是靠经验。事实上,大部分人由于平时的工作繁重,不会去思考寻找最优的解决方案,写的代码能刚好满足需求就算完事了。这样无法得到提示你甚至会无形中加重自己的工作量,因为随着年龄的增长,属于你自己的时间会越来越少,你的精力会被生活瓜分。

如何才能得到最优秀的方案呢?

首先,我们得知道什么才是最优秀的解决方案,最优解决方案需要你能够走在需求的前面,将当前需求里有的、没有直接提出来的、现在暂时没有但将来可能有的等等,及编程潜规则等各个方方面面都综合考虑,给出最优方案。以一招胜万招。

你不再被需求牵着走,而是你牵着需求走。注重细节,注意那些当前需求里没有明文给出的细节:代码性能的差异、运行平台(浏览器)的差异、需求的隐性扩展、代码的向后兼容等等。