之前和同事讨论过一个日期格式化的问题,程序比较简单,大体是这样: 同事并不喜欢这个代码。原因是每调用一次format方法都会创建一个SimpleDateFormat对象。虽然我一再强调SimpleDateFormat对象是方法内的,即生即灭
[阅读更多...]-
使用ThreadLocal
-
jar包中的jar
前两天在整理一个工程的时候突发奇想,能不能把需要的jar都打到一个类似于war包的jar包里面去,但是不解开原始jar包,而是将之统一放到外面jar包中的一个lib目录下。 按这个思路试了好几次,都遇到了NoClassDefFoundErr
[阅读更多...] -
从一段计时代码开始
下面这段代码估计是我们见过(或写过)最多的代码了: 要统计某些逻辑块的执行时间,这段代码可以说是非常简单且有效。不过如果要统计的方法很多时,为那些方法都填上这段代码就有些让人头疼了。主要有这样几个问题: 太多的重复工作; 计时内容散乱不好整
[阅读更多...] -
关于Zero Copy
概述 很多web应用都会有大量的静态文件。我们通常是从硬盘读取这些静态文件,并将完全相同的文件数据写到response socket。这样的操作需要较少的CPU,但是效率有些低,它需要经过如下的过程:kernel从硬盘读取数据,越过kern
[阅读更多...] -
SpringBoot集成Jersey的单元测试方案
使用SpringBoot集成Jersey做单元测试时遇到了application.xml找不到的提示。详情如下: 测试使用的代码大致如下: 原因是SpringBoot的Context和Jersey的Context是不同的。要修复这个问题可以
[阅读更多...] -
解决Gson 处理Map将整型处理为浮点型的问题
gson一直是我用着非常得心应手的json处理工具。但是最近遇到了一个坑,就是在处理java.util.Map型json字符串的时候会把整型转为浮点型。 示例程序如下: 执行结果如下: 原因在于json的语法中关于数值只有一个number类
[阅读更多...] -
Hello Akka
Akka是一个工具,用来在JVM上构建高并发、分布式、容错的事件驱动的应用。Akka支持java和scala两种语言。Akka最强大的一个特性是使用了并发Actor模型。 这一次本文会同时使用java和scala来进行说明。 示例代码 下面
[阅读更多...] -
需要class,interface或enum
引入github上的一个项目后在编译时收到了“需要class,interface或enum”这样的错误。就像下图: 图片是我随便找的,不过错误是一样的。 这样的错误通常是由编码问题导致的,只需要修改文件编码或项目编码就可以了,然而随之而来的
[阅读更多...] -
HttpClient多线程并发
说明:以下的代码基于httpclient4.5.2实现。 我们要使用java的HttpClient实现get请求抓取网页是一件比较容易实现的工作: 要多线程执行get请求时上面的方法也堪用。不过这种多线程请求是基于在每次调用get方法时创建
[阅读更多...] -
Java Fork/Join
Fork/Join框架是ExecutorService接口的一个实现,通过它我们可以实现多进程。Fork/Join可以用来将一个大任务递归的拆分为多个小任务,目标是充分利用所有的资源尽可能增强应用的性能。 和任何ExecutorServic
[阅读更多...]