虽然项目中都夹杂了Hibernate的支持,但是团队开发中,很多人为了编写特殊查询的代码时都使用了JDBC进行查询。JDBC查询后返回的是一个List集合,List中组装的是Map,一个Map就是一个对应的对象。但是很麻烦,很多,很枯燥。为了解决这个问题,我列出一个解决方法,写一个方法,传入要赋值的对象和Map,然后根据列的属性名称从Map中获得响应的值,然后赋值给这个对象的属性。阅读全文>>
BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。阅读全文>>
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池。newFixedThreadPool 创建一个定长线程池。阅读全文>>
死锁在多线程的情况下,在竞争竞态条件与临界区(http://www.javacui.com/Theory/147.html)出现时,会出现数据不同步情况, 而为了避免这种情况,之前也说了:界区实现方法有两种,一种是用synchronized,一种是用Lock显式锁实现。我们不使用显示的去锁,我们用信号量(http://www.javacui.com/Theory/148.html)去控制。阅读全文>>
Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目。自从5.0开始,jdk在java.util.concurrent包里提供了Semaphore 的官方实现,因此大家不需要自己去实现Semaphore。虽然JDK已经提供了相关实现,但是还是很有必要去熟悉如何使用Semaphore及其背后的原理。阅读全文>>
当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。在临界区中使用适当的同步就可以避免竞态条件。界区实现方法有两种,一种是用synchronized,一种是用Lock显式锁实现。阅读全文>>
还记得刚进一家公司时让我改某个人的代码,我当时疯了,代码乱七八糟,我根本就不想看那些代码,怎么去改。人靠衣装,就算你再有钱再有学识,穿着不好我只能当你是要饭的。写代码也是一样,面对横七竖八乱乱糟糟的代码,反胃的心都有了,怎么去看你的代码。阅读全文>>
我们本地通过TCP协议传输SNMP包到设备取数据,因为设备使用的都是串口,我们之间通信使用了一个协议转换器。把串口和网口连接起来,但是发现一个问题就是我能给设备发数据,但是自己收不到数据。经过抓包发现,每次返回的内容多出6个字节,问谁都不知道为什么会有这么个东西。我尝试自己开一个端口让设备主动发送,发现自己一直收到6个字节一组的数据。阅读全文>>
做网络编程的人对setSoTimeout方法一定很熟悉,都知道是设置连接的超时时间!但是我在网上找资料时发现很多人把这个超时时间理解成了链路的超时时间!我看了一下JDK 关于这个方法的说明,其实根本不是链路的超时时间!阅读全文>>
对于线程安全,大家都知道使用synchronized控制访问的资源,有变量安全、方法安全、块安全。我这里有个需求是这样的,我这里作为服务端有很多客户端与我进行交互,服务端也会主动发消息给客户端,但是要求每次交互时只能有一个用户。也就是说发送一组信息、等待信息、处理信息返回时这个链路只能有一个人使用。阅读全文>>