- 博客(10)
- 收藏
- 关注
原创 代码简洁之破窗效应
好久没写博客了、一直也没有写点东西的习惯。近一年多经历了公司两轮服务化进程,对分布式、服务化等相关技术有了更多的心得,望以后慢慢整理 鼓励自己。也是受抢月饼阿里小伙伴的激励、感觉自己还远远不足,加油加油。 对于写出干净简洁的代码,还是有几分把握的,毕竟熟读clean code、面向对象以及设计模式也还都了解,而且平时码代码还是比较注意的。但是最近发现工程中自己的代...
2016-09-19 21:35:43
476
原创 java.util.concurrent(二) Lock
在多线程编程中常常需要进行同步而锁定某个对象,通常采用synchronized来实现,部分情况下采用Java.util.concurrent.lock更加合适。ReentrantLock实现了Lock接口、是常用的实现类。 Lock和synchronized有个明显的区别在于----lock必须在finally里面释放,如...
2015-01-04 17:09:08
130
原创 分页查询
1、oracle select * from (select t.*, rownum rn from (select * from t1 order by t1.cid desc) t where rownum < 100000) where rn > 99900; t1为表名 cid为表的关键字段 2、MySQL select * ...
2015-01-04 17:00:06
131
原创 单实例实践
1、内部类 public class Singleton { private static class SingletonHolder { public static Singleton singleton = new Singleton(); } public Singleton getResource() {...
2014-10-23 10:28:09
121
原创 Java内存模型-相关概念
1、Happens-before JMM使用happens-before的概念阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。两个操作可以是一个线程内、也可以是不同线程之间。Happens-before规则如下: 程序顺序规则:一个线程中的每个操作,h...
2014-09-19 11:02:55
105
原创 java.util.concurrent(一) 并发集合类
1、LinkedBlockingQueue 阻塞队列、线程安全,可在构造方法参数中指定容量、默认容量为Integer.MAX_VALUE,实现了BlockingQueue接口以及Collection和Iterator接口的所有方法,不接受null元素。常用方法有put和take,put方法在队列满的时候会阻塞直到有成员被消费,take方法在队列空的时候会阻塞,直到有成员...
2014-08-11 22:08:38
384
原创 Spring AOP与动态代理
刚接触动态代理模式的时候,感觉着东西确实有意思,但仔细想想貌似平常很少情况下会被使用。后来知道了Spring AOP的底层是采用动态代理实现的。 项目中采用spring声明式的事务控制、确实能够感受到AOP的存在,也能隐约明白AOP的底层实现和动态代码有莫大的关系。JDK的动态代理主要涉及到java.lang.reflect包中...
2014-08-03 11:33:01
167
原创 notify与notifyAll的区别
最近在多线程编程中用到了wait(),随之即面临notify与notifyAll的选择、本人代码中使用两者皆可,查看两者的定义后、发现两者的选择还是很讲究的。 所有处于wait状态的线程,需要使用notify或者notifyAll才能被唤醒、重新被唤醒进入锁的争夺队列。notify即随机唤醒等待中的一条线程;notifyAll即唤醒全部处于等待中的线程...
2014-07-29 22:09:18
183
原创 synchronized 与 static synchronized的区别
面试过程中被问到了这个问题,当时虽然答对了、但是仍然属于一知半解状态,网上有详细的说明、以此为基础增加了自己的理解和测试。 一个日本作者-结成浩的《java多线程设计模式》有这样的一个列子: pulbic class Something(){ public synchronized void isSyncA(){} pub...
2014-07-29 12:39:13
165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人