关于聚合和多线程的处理套路

2020-08-03
阅读 6 分钟
2.9k
无差别地请求多个外部接口并聚合所有请求结果,应该有属于它自己的套路,应该将所有多线程的操作屏蔽之,我们只关心参数和结果。因此,应该抛弃Callable/FutureTask/Future等这些手工模式,这些代码应该交给框架来实现。

ConcurrentLinkedQueue vs BlockingQueue比较

2019-10-20
阅读 4 分钟
2.5k
结果////////////=============///blocking version cost ms:22052lock free cost ms:22

在XMLSignature中使用BouncyCastle做RSA

2018-09-07
阅读 10 分钟
2.5k
There is an article shows demo code for making XMLSignature by using Java XML Digital Signature API, where it actually uses org.jcp.xml.dsig.internal.dom.XMLDSigRI to do DOM formation, and the first provider in the java.security lookup order that will support SHA1 digestion, SHA1withRSA signing t...

使用Mockito修改Bean的依赖

2018-08-15
阅读 7 分钟
4.6k
在使用单元测试时经常会遇到某些dependency依赖了外部资源,或者想主动绕过真正的方法执行mock返回结果而快速得到单元测试最终的期望结果,可能有以下两种场景,对于TestCase A,设单元测试的方法是Service A的execute1方法和execute2方法,在执行execute1和execute2方法时都会调用ServiceB的不同方法,即ServiceA依赖了...

Java 8 HashMap中的TreeNode.putTreeVal方法分析

2018-06-26
阅读 7 分钟
5.8k
然后就是调用putMapEntries方法,第二个参数其实可以看作细节,个人认为它和HashMap的子类LinkedHashMap有关,evict是逐出的意思,如果基于LinkedHashMap实现LRU缓存的话,这个evict参数正好就用上了。

学习Java Collection Framework的Iterator实现

2018-06-18
阅读 12 分钟
1.9k
继续研读JDK的源码,在比较HashMap和ConcurrentHashMap的不同之处发现了一个细节——关于Iterator的实现的不同,其实HashMap和ConcurrentHashMap还有更多不同的地方,这也是面试经常问到的问题,有一篇文章我觉得讲的很好了,Java进阶(六)从ConcurrentHashMap的演进看Java多线程核心技术。Iterator是一种设计模式,在Jav...

根据xml配置校验bean

2018-04-18
阅读 4 分钟
2k
例子参考自官方文档,[链接]官方文档的xml配置有点过期了,一两个属性不合法。 {代码...} Userbean类, {代码...} OvalAppTest测试类, {代码...} xml配置,src/resources/oval-config.xml {代码...} 输出结果, {代码...}

一些我认为有用有趣的JDK方法

2018-04-10
阅读 6 分钟
3.9k
在学习JDK的源码过程中我遇到了一些有趣有用的方法,在此之前如果要使用这些工具方法,我首先会想到的是commons-lang和guava这样的语言扩展包,但现在如果是写一些demo,使用原生即可达到目的。当然我们也不能否认它们的作用,在平时的工作项目中几乎都会引入这些语言扩展包,直接使用他们也使得编程风格统一,而且还能...

说一说java.util.Arrays$ArrayList

2018-04-03
阅读 4 分钟
4.6k
java.util.Arrays$ArrayList(下文:Arrays$ArrayList)是java.util.Arrays的私有静态内部类,他实现的接口,继承的父类几乎和java.util.ArrayList(下文:ArrayList)相同,既然是私有的,那么平常应该是我们少关注的地方。本文尝试对比一两个他们之间的不同点。

强类型与弱类型语言关于存取对象(数据)的问题

2018-03-02
阅读 4 分钟
2.5k
在旧的业务流程加入一个“拦截”,原来从前端表单提交到后台的处理逻辑延后处理,本质上是一个异步化的处理过程。此时将表单参数存储到数据库,在适当的时刻“拦截”结束通过时调用原来的处理逻辑。F代表表单参数,A代表控制器参数,

并发数据结构与线程(ArrayBlockingQueue)

2017-12-29
阅读 7 分钟
3.1k
今天在QQ群上抛出来一个问题,如下 我以Java自带的数据结构为例,用源码的形式说明,如何阻塞线程、通知线程的。 一、Lock & ConditionArrayBlockingQueue以可重入锁和两个Condition对象来控制并发。 {代码...} 构造函数中初始化了notEmpty和notFull. {代码...} 二、线程阻塞当ArrayBlockingQueue存储的元素是0个的...

从Timer中学习优先队列的实现

2017-04-30
阅读 3 分钟
2.3k
Timer是Java定时器的实现,用来调度定时执行的任务和执行一次的任务,就像JavaScript的setInterval和setTimeout的意思,它也可以作为后台程序(Daemon)运行。

解析XML和JSON内容的一点技巧

2016-11-26
阅读 5 分钟
4.7k
在没有统一标准的情况下,一个系统对接多个外部系统往往会遇到请求接口响应数据异构的情况,有可能返回的是XML,也有可能返回JSON。除了返回类型不同,内容结构也不尽相同。以XML类型为例,接口1返回内容

封装一个FTP工具类

2016-11-12
阅读 5 分钟
9.5k
前人的代码中把FTP操作和业务逻辑实现耦合在一起,据说经过多次的修改,在性能表现方面已经非常靠谱。在原来的代码中可以看到使用了commons-net进行FTP操作,使用commons-pool对象池方式管理FTP连接,完成了多线程下载和上传的功能,本次的修改只是把耦合的地方剥离开来。

LinkedHashSet内部是如何工作的(翻译)

2016-03-05
阅读 3 分钟
3.5k
LinkedHashSet是HashSet的一个“扩展版本”,HashSet并不管什么顺序,不同的是LinkedHashSet会维护“插入顺序”。HashSet内部使用HashMap对象来存储它的元素,而LinkedHashSet内部使用LinkedHashMap对象来存储和处理它的元素。这篇文章,我们将会看到LinkedHashSet内部是如何运作的及如何维护插入顺序的。

[Java]使用Apache Commons Execs调用脚本

2016-01-17
阅读 10 分钟
5.9k
问题中提到的Apache Commons Execs这个库,相比我们原来使用原生的Runtime和Process有不少优点。对比我之前写过的代码,总结一下:

jFinal路由解析源码分析

2015-12-13
阅读 18 分钟
8.4k
jFinal的路由解析是在JFinalFilter中做的,这个Filter也需要在web.xml中配置。JFinalFilter实现了javax.servlet.Filter接口,从这里也可以看出jFinal是基于Servlet的。JFinalFilter在初始化时负责初始化jFinal项目的配置(com.jfinal.core.Config)、路由表(Route)、映射表(ActionMapping)等;路由解析是在JFinalFilter的d...

我工作中遇到的正则表达式(一)

2015-05-25
阅读 1 分钟
1.9k
直接看下代码,大概就能明白我要完成的需求了。 我这里需要将|号分割的最后一组替换成它对应的中文表示(当然这里是有对应的key-value字典的)。 {代码...} 那么在Java应该怎么实现呢? {代码...}