ThreadPoolExecutor简单介绍

在项目中如果使用发短信这个功能,一般会把发短信这个动作变成异步的,因为大部分情况下,短信到底是发送成功或者失败,都不能影响主流程。当然像发送MQ消息等操作也是可以封装成异步操作的。使用基本的New Thread如果想一个操作变成异步的,可以直接new thread,然后在run方法中实现业务操作即可。例如: new Thread(new Runnable() { public voi...
阅读(497) 评论(0)

java垃圾回收算法之-引用计数器

引用计数器算法算是一种古老的java垃圾回收算法,目前很多版本的java已经废弃掉这种算法了。不过多了解历史解决方案也是很有好处的,通过总结它的优缺点,再与新算法比较,可以帮助更好的理解新算法。 引用计数器算法描述 定义:给每个对象分配一个计算器,当有引用指向这个对象时,计数器加1,当指向该对象的引用失效时,计数器减一。最后如果该对象的计算器为0时,java垃圾回收器会认为该对象是可回收的...
阅读(1877) 评论(0)

实时刷新缓存-处理mysql主从延迟的一些设计方案

在项目开发当中,经常有这样一种场景,对数据库进行添加、修改、删除操作的应用直接连接master库,只对数据库进行查询的应用,会先建立一个中央缓存,例如redis或者memcache,如果缓存没有命中,那么直接访问slave库。下文会介绍一下在刷新中央缓存时,如果发生主从延迟,应该如何处理。也即是,当应用System-A 把数据库写入master库的时候,System-B应用在读取slave库的时候,...
阅读(1544) 评论(0)

spring整合ehcache缓存

pom文件 net.sf.ehcache ehcache 2.10.2 ehcache.xml<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-...
阅读(419) 评论(0)

使用contiperf进行压测

contiperf是一个轻量级的压测工具,使用非常的广泛,并且可以生成report,帮助做性能分析。简单例子public class TestContiPerf { @Rule public ContiPerfRule i = new ContiPerfRule(); @Test @PerfTest(threads = 100,duration=15000) public...
阅读(452) 评论(0)

最近使用ut的一些体会

写有价值的ut必须保证自己写的ut是有价值的,只要全部跑过了,那么代码的质量就可以得到保证。更有自信的改代码了使用ut之后,如果发现了bug或者需要重构代码的时候,可以大胆的去做,因为有覆盖率极高的ut来保证和检查修改后的代码。只要bug,改完代码后,用ut覆盖当测试人员提交了一个bug,那么你改完代码后,必须用ut进行覆盖,防止以后修改代码时,由于不小心,导致原来的bug又出现。如果业务方法需要依...
阅读(513) 评论(0)

Spring Cacheable标签 内部调用失效问题

如果你只是想使用一个轻量级的缓存方案,那么可以尝试使用Spring cache方案。那么在使用spring @Cacheable注解的时候,要注意,如果类A的方法f()被标注了@Cacheable注解,那么当类A的其他方法,例如:f2(),去直接调用f()的时候,@Cacheable是不起作用的,原因是@Cacheable是基于spring aop代理类,f2()属于内部方法,直接调用f()时,是不...
阅读(2713) 评论(0)

HttpClient工具正确使用方式

虽然现在微服务非常的流行,但是公司内部的蛮多系统仍然对外提供http接口。在调用http接口工具类中,apache httpclient工具用的比较多。下面列举一些正确使用httpclient的一些要点。设置socketTimeout可以在RequestConfig 中设置socketTimeout,表示数据传输处理时间,如下: RequestConfig requestConfig = Reque...
阅读(7645) 评论(3)
    个人资料
    • 访问:381294次
    • 积分:3959
    • 等级:
    • 排名:第8806名
    • 原创:119篇
    • 转载:5篇
    • 译文:0篇
    • 评论:183条
    博客专栏