想要加悲观锁可是数据行还不存在怎么办?

两个并发事务想要对同一个KEY的数据进行更新,但是如果这个KEY的数据行还不存在的话,那么select .. for update当然不能锁住这行记录,想当然的想到,可不可以先insert一下,然后在悲观锁呢? 那么引入了一个新的问题,如果两个并发事务同时insert的话,就会插入重复的数据,如果insert的unique key重复的话,第二个线程会报错的,有没有更优雅的方法? 答案是MySQL … 继续阅读想要加悲观锁可是数据行还不存在怎么办?

Java堆溢出OutOfMemoryError之代码实例和原因分析

本文演示了编写代码使得出现”java.lang.OutOfMemoryError: Java heap space”异常,分析GC日志得出OOM的原因,同时对堆转储文件进行分析,以查看把Heap塞满的罪魁祸首; 实例代码 这段代码来自《深入理解Java虚拟机-JVM高级特性与最佳实践》一书:

在eclipse … 继续阅读Java堆溢出OutOfMemoryError之代码实例和原因分析

使用javap命令或者eclipse的Bytecode visualizer插件阅读java字节码文件

阅读java的class文件,最常用的方法是jdk自带的javap命令,但是在eclipse有Bytecode visualizer插件,也可以很好地实现阅读; 直接阅读class文件,能够了解一下代码如何执行的内幕,以下面这个代码为例

test()方法很多人都知道返回true,但是为什么会这样呢?很多人可能说不清楚。我们分别用两种 … 继续阅读使用javap命令或者eclipse的Bytecode visualizer插件阅读java字节码文件

Java怎样单测void类型的方法?

Java的Sevice层会有很多void类型的方法,比如save*、update*,这类方法只是做一些更新,不会有返回值,其单测不能根据方法的返回值来编写,只能采用特殊方法; 本方法环境:Mockito、testng 被测试的方法:

测试的方法:

如注释所示,如果加了 … 继续阅读Java怎样单测void类型的方法?

读书破万卷,代码如有神

IT技术领域的书籍普遍非常的厚,一本《JAVA编程思想》竟然多达800页,拿在手里很沉,只能在办公桌子上看。然而现在的工作普遍非常忙,白天忙着开发、开会,晚上回家累的想看电影、玩游戏,根本没有一整块的时间可以拿出来啃这种大部头书籍。能用来看书的时间只有地铁上、公交上、厕所里,碎片时间较多,可是书这么厚的话,地铁上、公交上、厕所里拿着太累了,不可行。有人说可以看电子书,我试了手机上看、Kindle上 … 继续阅读读书破万卷,代码如有神

Java怎样创建两个KEY(key-pair)的MAP

就像在XY坐标系中,一个X刻度、一个Y刻度,会对应图上的一个点,即pair(x, y) – > point,那么就有创建一个点,或者根据(x, y)来寻求一个点的需求,如果用Python的语法表达,是这个样子:

然而在JAVA中却变得不容易,骨钩了一下,有这么一些方法: 使用嵌套MAP [crayon-5d58c3 … 继续阅读Java怎样创建两个KEY(key-pair)的MAP

Java枚举类型代码的二逼写法和艺术写法

最近遇到一种需求场景:使用一个类封装Java服务端返回的(返回状态码,返回信息字符串)信息,比如(0,操作成功)、(1,新增失败)、(2,查询失败)等状态。作为一枚Java屌丝,我想到这种常量信息最好写到一个单独的类里面,并且用public static final的形式修饰,为了将返回码code和返回信息msg两者绑定起来可以提供一个公用方法。我做了以下两个努力,一是将两个返回码和返回信息的变量 … 继续阅读Java枚举类型代码的二逼写法和艺术写法

将普通Maven Spring项目转换成Web项目的方法

最近在按照李刚的《疯狂J2EE》一书学习Spring,其中第7章的一些代码是ant编译的,而公司用的是Maven,所以想要将其部署并转换成Maven Spring Web项目来执行一下。 本文用的是《疯狂j2ee》第7章的request_scope代码; 1、建立普通的maven project; 2、转换成web项目,这里选2.5版本,注意有的WEB项目的webcontent目录会有所不同,可以 … 继续阅读将普通Maven Spring项目转换成Web项目的方法

Rational Rose根据Java代码自动生成类图(教程和错误解决)

Rational Rose有个很方便的功能,将项目中的JAVA代码自动转换成UML类图。 根据Java代码自动生成UML图 1、新建一个ROSE工程,选择J2EE模板 2、如图进行操作 3、在出现的界面中,CLASSPATH中加入源代码的目录,加入支持的包,点’ADD RECURSIVE’点 ‘SELECT ALL‘,‘ 点REVERSE ‘,完成后没任何提示,点&#821 … 继续阅读Rational Rose根据Java代码自动生成类图(教程和错误解决)