BY Blog

海阔天空,随风飘扬。

如何揭开字节码的神秘面纱?

基于案例进行解读字节码

Hey Bytecode I am a slow walker,but I never walk backwards.– 我走得很慢,但是我从来不会后退. 在今天的Blog开始之前首先给大家演示个案例. 爱码如下; public class TestThrowException { public static void main(String[] args) { ...

如何"锁"以及jdk1.7中成员内部类访问成员变量时为什么对成员变量加上final关键字?

基于Lock实现模拟List集合

Hey Lock All things come to those who wait.–苍天不负有心人. 最近做项目时,有个需求就是实现线程安全的List集合,那么什么是线程安全的呢? 无非就是 保证其在增删改的操作中保持原子性罢了. 举个案例实现并发执行List的 add方法 public class TestList { // 实现多线程并发执行 添加操作 ...

在高并发中如何获得线程安全的集合呢?

List Set Map

Hey Collections While there is life there is hope.–一息若存,希望不灭. 在高并发场景中,我们首先考虑的就是线程安全问题,那么如何对数据进行安全的处理呢? 如何获得线程安全的集合呢? 一 List * ArrayList 基于数组的集合 查询快,有序,有下标,但是线程不安全 * LinkedArrayList 基于链表的形式,...

你真的了解ThreadLocal吗

根据ThreadLocal进行源码追溯

Hey ThreadLocal One today is worth two tomorrows.–一个今天胜似两个明天. 最近做项目的时候,有个业务需求,就是有个业务本身可以被多个线程共享使用,而且又可以达到线程安全的目的,且绝对线程安全.然后就想过了许多实现方法,经过最终考虑,我们决定使用了ThreadLocal,那么为什么选择ThreadLocal呢 接下来先看一个测试类 ...

如何"锁",使读写效率更高?

基于读写锁ReentrantReadWriteLock实现并发访问

Hey ReadAndWrite Victory won’t come to me unless I go to it.–胜利是不会向我们走来的,我必须自己走向胜利. 有个需求,多线程并发访问某一临界资源,规定每次读1秒,写1秒,两个线程对其进行写操作,八个线程对其读操作,那么为了保证原子性,肯定会对其进行加锁,那么有多少种方式呢? 第一种 通过 重入锁 Lock 互斥锁 进行...

你了解几种创建线程的方式呢?

基于4种创建线程的方式,完成一个小案例

Hey Create Thread The secret of success is constancy to purpose.–成功的秘诀在于对目标的忠实. 在开发中,多线程一直是大家讨论的话题,因此它的重要性我在此就不多说了,想要深入了解它,那么我们先从简单创建线程开始,创建线程的方式究竟有几种呢? 准确来说 有四种方式实现线程的创建 继承 jdk 1.0...

如何使类的可变性最小化?

实现将类变为不可变性

Hey 不变类 The secret of success is constancy to purpose. – 成功的秘诀在于对目标的忠实. 读 Effective Java 之 不可变类. 不可变类只是其实例不能被修改的类,每个实例中包含的信息都必须在创建该实例的时候就提供,并在对象的整个生命周期内固定不变. 为什么使用不可变类呢? 不可变类比可变类更易于设计,实现和使用...

何时使用Builder构建器?

基于Builder实现可选参数创建对象

Hey Builder Wealth is the test of a man’s character.–财富是对一个人品格的试金石. 大家都知道,静态工厂和构造器有个共同的局限性,就是它们不能很好地扩展到大量的可选参数,因此有什么办法实现呢? 那就是Builder模式,它既能保证像重叠构造器模式那样的安全性,也能像JavaBean那样有着良好的可读性,它的使用,就是不直接产生...

什么时候使用静态工厂方法?

通过静态工厂方法替代构造器

Hey static factory Do one thing at a time, and do well.–一次只做一件事,做到最好! 最近在看一本必修书籍Effective java ,收获颇丰,里面有个静态工厂的使用,今天就总结一下吧. 对于类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器.还有一种方法,就是提供一个公有的静态的工厂方法,它...

如何对数据量大的数组进行顺序排序?

选择排序与shell排序的对比

Hey Sort The shortest way to do many things is to only one thing at a time. –   做许多事情的捷径就是一次只做一件事. 最近有同学问我,什么算法排序比较高效,比较实用,我呢只能说,每个排序都有其优点,都有其劣势,比如:当数据量n小的时候,可以采用插入排序或选择排序,当数据量n大的时候,则应采用时间复杂度...