- 博客(23)
- 收藏
- 关注
原创 IllegalThreadStateException 产生原因
1、对一个线程调用2次以上的start()方法会报错。ChildThread t1 = new ChildThread("thread1"); t1.start(); t1.start(); 2、对于已经启动的线程,调用setDaemon会报错 class ChildThread extends Thread { @Override public voi...
2013-11-21 13:46:35
1097
java实现有向图和判断是否存在循环
最新在看xwork的源代码,XmlConfigurationProvider这个类,用来实现解析xwork.xml配置文件。该类使用了有向图这种数据结构,来判断是否存在<include>元素的循环包含。 有向图的实现如下:import java.util.Collections;import java.util.HashMap;import java.util.H...
2013-09-06 22:00:43
875
原创 JSON-LIB 中的null,引发的问题
java中的null对象和"null"字符串,JSonObject会默认对这些数据进行处理。考虑到这样一种场景:发送方和接收方通过json格式数据进行交互 // key = null,这种键值对会直接被json-lib忽略 // key = "null",这种值会被json-lib转换null public static String sendJmsString()...
2013-09-05 20:58:11
1030
原创 java支持ORACLE的in不能超过1000
Oracle的in语句,不能超过1000个值,否则会报sql出错。public String splitInCondition(List<String> dataList, String columnName, String type) { String relation = null; if ("in".equalsIgnore...
2013-08-29 20:46:22
309
原创 JDK的ThreadLocal理解(二.2)原理篇
上一遍博客http://aty.iteye.com/blog/1913734 写道JDK的ThreadLocal理解(一)使用和测试 ,对TheadLocal的测试和使用进行了介绍,这一步将介绍一下ThreadLocal的实现原理。现在附上JDK的ThreadLocal的set方法源码 public void set(T value) { ...
2013-08-11 17:09:22
170
原创 JDK的ThreadLocal理解(三)优雅的使用ThreadLoca
ThreadLocal的使用可以参考struts2的ActionContext,个人觉得这种使用方式是比较优雅的:1、ThreadLocal是业务无关的对象,对于开发代码来说,越少使用越好。 这样能够尽可能的减少技术细节分散开发者对业务逻辑的关注 public class ActionContext implements Serializable { sta...
2013-08-11 17:05:58
264
原创 JDK的ThreadLocal理解(二)jdk源码的心得
阅读了JDK的Thread、ThreadLocal源代码之后,有几点设计心得: Thread类,有一个ThreadLocal.ThreadLocalMap类型的成员变量 /* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal c...
2013-08-11 16:48:09
175
原创 java并发包(一)Callable接口
刚开始使用java线程的时候,使用都是Thread或Runnable接口。最近发现java并发包下,提供了一个与Runnable接口类似的Callable接口。Callable提供了比Runnable更灵活和宽松的call()。Callable类似于Runnable接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务Callable经常和java线程池...
2013-08-09 16:47:09
227
原创 InheritableThreadLocal使用(二)只在子线程创建的时候,继承一次
package thread.local;public class Test{ // 线程局部变量:初始值默认是null private final static InheritableThreadLocal<String> basicholder = new InheritableThreadLocal<String>(); ...
2013-08-05 20:12:51
314
原创 InheritableThreadLocal的使用
JDK提供了InheritableThreadLocal类,用来让子线程继承父线程的值。在创建子线程的时候,子线程会接收此刻父线程线程局部变量的初始值。package thread.local;public class Test{ // 线程局部变量:初始值默认是null private final static InheritableThreadLoc...
2013-08-05 19:43:04
162
原创 aop的基础知识
阅读《Spring 3.x企业应用开发实战》中的aop章节内容: AOP alliance (AOP联盟) :众多开源AOP项目的联合组织,目的是为了制定一套标准规范来描述AOP,定义标准AOP的接口,以方便各种遵守该标准的具体aop实现可以相互调用,也为了方便使用aop的项目能够平滑从一个aop实现迁移到另一个aop实现上。官方网站http://sourceforge.net/p...
2013-08-04 15:55:41
146
原创 java线程异常处理类UncaughtExceptionHandler
java提了一个线程异常处理类,当线程执行的时候如果出现异常,可以调用该函数,进行一些善后工作,比如释放资源、清理数据等工作。通过这种方式,线程不需要关注因为异常导致资源不能释放等问题。package thread.exception;/* * 1、Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止...
2013-08-04 14:41:38
203
JDK的ThreadLocal理解(一)使用和测试
ThreadLocal是java中轻量级的线程同步解决方法,为了达到线程安全的目的,采用的是空间隔离的方法。使用方式如下: 1、定义2个会被多线程共享的bean,一个使用ThreadLocal,一个不使用任何线程同步措施package bean;public interface IShareBean { public void get(); ...
2013-07-25 23:12:10
185
JDK动态代理的代码组织与AOP
最近在看jdk的动态代理和aop的一些概念,发现jdk的动态代理,网上大多写的都很简单,基本都是基于Object类型使用的,导致难以理解, 使用容易出错。按照个人的理解,组织了下jdk动态代理的结构。 util包 : 放置供客户端使用的apiaspect:包放系统中需要的切面实现 经常写JDK动态代理的就可以发现,创建代理对象的过程存在...
2013-07-24 23:21:55
124
原创 深入掌握JMS系列资料
优快云上的十篇将JMS的博客很好,浅显易懂,适合初学者了解jms。资料地址是:http://blog.youkuaiyun.com/iamfafa/article/category/799158
2013-07-08 20:45:35
174
原创 JSON-lib学习(三)循环引用
如果A对象持有B的引用,B对象持有A的引用,这样就形成了循环引用,如果直接使用json-lib转换,会报错:net.sf.json.JSONException: There is a cycle in the hierarchy!import java.util.HashSet;import java.util.Set;public class Aclass{ ...
2013-07-08 20:22:22
203
原创 JSON-lib学习(二)json-lib做json转换的原理
在java对象和json之间做转换的时候,json-lib组件,使用的是对象的getter/setter方法,即调用这些方法,不管这些getter/setter方法有没有对应的属性。因此,在做java对象与json之间的转换时候,除了属性的getter/setter方法,其他方法最好不要以get/set开头。package cycle;public class ComplexData...
2013-07-04 21:38:15
198
原创 JMS传输模式DeliveryMode
ActiveMQ支持两种消息传送模式:PERSISTENT (持久消息)和 NON_PERSISTENT(非持久消息)1、PERSISTENT 持久消息是activemq默认的传送方式,此方式下的消息在配合activemq.xml中配置的消息存储方式,会被存储在特定的地方,直到有消费者将消息消费或者消息过期进入DLQ队列,消息生命周期才会结束。此模式下可以保证消息只会被成功传送一...
2013-06-13 20:38:53
232
原创 Session.CLIENT_ACKNOWLEDGE
使用客户端确认模式,必须要创建无事务session Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); CLIENT_ACKNOWLEDGE:客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用,...
2013-06-13 20:03:44
879
原创 Session.AUTO_ACKNOWLEDGE
使用自动确认模式,必须要创建无事务sessionSession session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); AUTO_ACKNOWLEDGE:自动确认模式,一旦接收方应用程序的消息处理回调函数返回,会话对象就会确认消息的接收。 一般接收方的做法是调用consumer.setMessag...
2013-06-13 19:58:36
2595
原创 JMS中的事务Session
Session session = conn.createQueueSession(true, Session.AUTO_ACKNOWLEDGE); 第一个参数代表该session是否支持事务,true 表示这个会话是事务性的,需要显式的commit 或者rollback (). 如果没有显示的提交session.commit(),接收端是不能够收到发送方的消息的。 ...
2013-06-13 16:35:53
484
原创 Arrays.binarySearch()
最近做1个OJ题目,其中有一步这样的操作:给定一个排序好的数组,随意给定一个数据,寻找数组中第一个大于或等于该值的数据在数组中的索引。如{1,4,5,10}, 给定4,应该返回的索引是1;给定6应该返回的索引是3 刚开始我用的是直接从前到后扫描一遍这种最原始的方法,跑junit用例的时候,发现此处存在性能瓶颈。最后使用了jdk中自带的二分搜索,满足了性能要求。呵呵...
2013-05-26 18:17:22
108
java实现二叉排序树
最近终于静下心来,自己实现了个二叉排序树,还是很有成就感的。 package tree; public class TreeNode<T> { //结点存放的数据public T data; //当前结点的父结点public TreeNode<T> parent; //当前结点的左孩子public TreeNode&l...
2013-05-19 15:05:36
184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人