软件开发
cpzhong
程序员,对系统架构、敏捷项目管理、前端开发有着浓厚的兴趣。
展开
-
动态代理:JDK动态代理和CGLIB代理的区别
AOP包括切面(aspect)、通知(advice)、连接点(joinpoint),实现方式就是通过对目标对象的代理在连接点前后加入通知,完成统一的切面操作。1.JDK动态代理当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象),这时可以应用代理模式在这两者之间构建一个桥梁--代理对象,此代理对象和目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,可以在调用目标对象相应方法前后加上其他业务处理逻辑。代理模式在实际使用时需要指定具体的目标对象,如果为每个类都添加一个代理类的话原创 2011-05-16 00:14:00 · 27534 阅读 · 4 评论 -
Httpclient的会话保持引起的线程安全问题
这两天线上出现一个问题,通过httpclient来抓取页面,服务端在页面渲染的时候出现了串号现象。首先看下代码,controller中代码如下:request.getSession().setAttribute("sid", id);vm页面再通过$!request.session.getAttribute("sid")获取参数值,这代码很常见,看起来单线程和多线程并发都不会有问题,因原创 2012-04-01 18:51:04 · 6653 阅读 · 0 评论 -
maven编译插件maven-compiler-plugin误将WARNING当ERROR
【问题描述】经常碰到这样的问题,在eclipse中编译是正常的,但是在maven编译时不通过,错误信息如下:E:\workspace\*.java:[760,31] 警告:sun.misc.BASE64Encoder 是 Sun 的专用 API,可能会在未来版本中删除原创 2011-09-08 21:02:29 · 9915 阅读 · 2 评论 -
开发自测到底如何做?
开发自测到底要不要做? 有些同学会觉得开发职责是编码,如果还做自测,那测试做什么,难道要失业。其实我觉得不是这样,开发自测和测试的侧重点是不一样的,开发自测不是为了替代测试的工作。我们都知道bug越早发现,解决的成本越低,风险也越小。测试发现的bug要确认,提原创 2011-08-09 21:36:44 · 11251 阅读 · 1 评论 -
今天maven install时碰到的两个问题(堆溢出和编译错误)
问题1.maven install时出现,日志如下:系统资源不足。有关详细信息,请参阅以下堆栈追踪。java.lang.OutOfMemoryError: Java heap space at com.sun.tools.javac.util.List.prepen原创 2011-07-20 19:59:06 · 14493 阅读 · 1 评论 -
maven仓库repository地址最佳声明方式
maven中的仓库repository地址可以在以下几个地方声明:%M2_HOME%\conf\settings.xml,这是机器级的,会影响到所有使用此工具的构建\.m2\settings.xml,这是用户级的,会影响到当前用户的构建定义在pom.xml里,这是项目级的,会影响原创 2011-07-20 18:51:28 · 2170 阅读 · 0 评论 -
对HashMap排序
<br /> 在项目中有个业务场景,需要对访问我店铺轨迹按访问次数排序,访问我店铺轨迹保存在HashMap中,key为访问次数。不知道大家会怎样实现对HashMap的排序,排序之后保存为一个List。HashMap是无序的,如果需要使用有序的Map,可以使用TreeMap。<br /> <br /> HashMap和TreeMap有如下区别:<br />特性HashMapTreeMap排序无序有序数据结构Hash表平衡树实现的接口(抽象类)AbstractMap抽象类Sorte原创 2011-05-16 20:30:00 · 905 阅读 · 0 评论 -
解决mysql连接异常—-com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception
<br /> 前两天机房搬迁,DNS域名切换,导致出现如下异常。经查原因发现,是连接池中的连接在应用端空闲,但该连接的vip(服务器集群地址)已经超时(超时时间是60s,而应用端的连接回收时间是180s),所以当再次使用该连接时会出现连接失效的异常。解决办法是将vip的超时时间调大,改成300s,这样就能保证连接池中的等待连接不会因为vip的超时而失效。<br />异常如下:<br />org.springframework.dao.DataAccessResourceFailureExcepti原创 2011-05-16 20:25:00 · 11741 阅读 · 0 评论 -
SecureCRT乱码问题解决方法
<br />网上有很多达人给出了SecureCRT登录linux,中文乱码问题的解决办法,我这里总结一下解决思路,原因还是SecureCRT客户端字体/字符集的原因,主要分以下两种情况解决:一 后台刷日志时(tail –f logs/jboss_stdout.log)<br />首先,确保Linux下的文件(比如日志)在Windows下打开没有乱码,显示正常就表明linux的字符集设置没有问题,不用去修改;<br />其次,修改SecureCRT中的Session Options参数配置,如图中的红框:<b原创 2011-05-16 19:56:00 · 42262 阅读 · 1 评论 -
ThreadPoolExecutor线程池参数说明
之前做的一个项目,由于消息量太大,为缓解消息发送服务器的压力,将接收消息由之前的同步处理改成了异步处理,即收到一条消息交给一个线程处理,马上返回接收成功给服务器。这样就涉及到多线程和线程池,在做压力测试时总感觉这个线程池的状态不对,当前线程数总上不去,原来忽略了一个逻辑,就是当前线程数到达核心线程数时,后面的请求就会加到任务队列里,任务队列满了之后才会去创建新的线程,一直达到允许的最大线程数为止。在测试过程中,主要监控了线程池(java.util.concurrent.ThreadPoolExecutor)原创 2011-05-16 20:15:00 · 5172 阅读 · 0 评论 -
java对象初始化顺序
<br />java对象初始化遵循以下原则:<br /> <br />1.先父类后子类,依据2-7原则,交替初始化;<br />2.先分配静态成员空间,并初始化静态成员;<br />3.执行静态代码块;<br />4.为对象分配内存空间,执行默认初始化,即所有变量初始化为默认值;<br />5.显示初始化,即对成员进行赋值;<br />6.执行非静态代码块;<br />7.调用构造函数执行;原创 2011-05-16 20:24:00 · 868 阅读 · 0 评论 -
Shell中的grep、awk和sed的常用命令和语法
Grep的常用命令语法1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来。例如:”m y s t r i n g”。这样做有两个原因,一是以防被误解为 s h e l l命令,二是可以用来查找多个单词组成的字符串,例如:”jet plane”,如果不用双引号将其括起来,那么单词 p l a n e将被误认为是一个文件,查询结果将返回”文件不存在”的错转载 2012-05-21 22:57:29 · 1189 阅读 · 0 评论