zxiaofan.com

Life is all about choices!生命不息,学习不止。By : zxiaofan.com

LinkedBlockingQueue源码分析(JDK8)

本文分析LinkedBlockingQueue的源码,学习其底层实现。LinkedBlockingQueue特性及使用场景:1、基于链表实现,线程安全的阻塞队列。2、“two lock queue”算法变体,双锁(ReentrantLock):takeLock、putLock,允许读写并行,rem...

2017-06-10 23:41:03

阅读数 9019

评论数 3

阻塞队列BlockingQueue(JDK8)

BlockingQueue(阻塞队列)是JDK5新增的线程安全的高效队列类,基于生产者-消费者模式。队列为空时,获取元素的操作等待队列变为非空;队列已满时插入操作等待队列空间可用。 BlockingQueue不接受null元素,会throw NullPointerException,null用于...

2017-04-16 14:06:36

阅读数 6232

评论数 0

java反射必知必会

java反射在学习工作中时常使用,自己也利用反射做了一些工具(比如《利用反射打造自定义注解,自动校验或处理数据》),但一直对反射缺乏较为系统的了解。以下内容是慕课网教程《反射——Java高级开发必须懂的》的学习笔记,相关代码见github工程github.com/zxiaofan/JDK-Stud...

2017-02-26 19:36:36

阅读数 4436

评论数 0

Redis安装、后台启动、卸载

Redis官网:https://redis.io/ Redis中文官方网站:http://www.redis.cn/ Redis_GitHub:https://github.com/antirez/redis Redis互动教程:http://try.redis.io/ Redis 是...

2017-02-11 19:03:28

阅读数 12941

评论数 0

java学习资料免费下载(持续更新ing)

持续更新java相关学习资料,供大家免费下载。主要是相关书籍,资料大部分来源于网络,本人仅收集整理,如有侵权,请联系我删除。 By zxiaofan.com 资料目录:http://blog.csdn.net/u010887744/article/details/54730763Java核...

2017-01-25 19:41:41

阅读数 13677

评论数 8

ThreadLocal源码分析(JDK8)

ThreadLocal特性及使用场景: 1、方便同一个线程使用某一对象,避免不必要的参数传递; 2、线程间数据隔离(每个线程在自己线程里使用自己的局部变量,各线程间的ThreadLocal对象互不影响); 3、获取数据库连接、Session、关联ID(比如日志的uniqueID,方便串起多个日志)...

2017-01-25 18:13:54

阅读数 11297

评论数 5

利用反射打造自定义注解,自动校验或处理数据

开发过程中,难免会对数据进行校验或处理,难道每次都对不同的实体类的属性挨个判断是否符合规范或者对其进行特殊处理,程序员不应该这么做。在这个时候,自定义注解就派上大用场了。比如自定义一个 @Email 注解,将其标注在只能存放email格式的属性(private String guestEmail)...

2016-10-29 17:46:46

阅读数 9477

评论数 0

Boolean.getBoolean()那些坑

今天使用自定义注解时,用到了Boolean.getBoolean(),原以为Boolean.getBoolean("true"),会返回true,结果是false。   细看源码发现: /** * Returns {@code true} if and only if t...

2016-09-02 08:45:37

阅读数 6954

评论数 0

Gson将json转Map的那些坑

        利用Gson将一串json数据转为Map格式,再get数据,相比很多人都做过。今天遇到一个“坑”,mark一下。首先明确一点:Gson是可以将json转为Map的,并且Map的key是允许为Integer的。 public void test() { <...

2016-07-22 18:46:18

阅读数 23093

评论数 3

Java集合大整理

HashSet 允许,just 1个 no HashMap 同HashMap 【add】:调用HashMap的put方法,put的value传入伪值static final Object PRESENT = new Object(),仅仅为了保持映射关系;(所有value都是同一个对象) 【rem...

2016-03-28 23:48:09

阅读数 13034

评论数 0

Java的string类常量池及不可变性

1、String常量池     当使用new String(“hello”)时,JVM会先使用常量池来管理“hello”直接量,再调用String类的构造器来创建一个新的String对象,新创建的对象被保存在堆内存中。即new String(“hello”)一共产生了两个字符串对象。 【常量池co...

2016-03-10 10:48:49

阅读数 9172

评论数 0

EnumMap源码分析

自Java8以来,HashMap是高效的。应用HashMap完成枚举类型到值的映射也是我们常用的方式,但是EnumMap将更加高效。EnumMap顾名思义,是为枚举类服务的。 key必须为枚举类(Enum),且创建EnumMap时必须指定key的类型。key不能为null,NullPoi...

2016-03-10 08:39:39

阅读数 12459

评论数 0

HashMap迭代时Remove不抛出ConcurrentModificationException的特例

众所周知,HashMap在迭代时remove会抛出异常,ConcurrentModificationException,但事实真的是这样的吗?的确会抛异常,但也有特例。废话少说,上代码: public class ConcurrentModificationException { publ...

2016-03-09 22:22:18

阅读数 12689

评论数 0

EnumSet源码分析

核心:long(long数组) 和 位运算             其存储结构elements并未直接存枚举本身,而是位标识,枚举存于elementType中的enumConstants中. 1、内部元素为枚举; 2、内部表示为位向量,使用“位标志”的替换形式。(类似0x1000000,按bi...

2016-03-09 13:48:12

阅读数 12508

评论数 0

ConcurrentHashMap源码分析--Java8

如果还停留在锁分离、Segment,那已经out了。 Segment虽保留,但已经简化属性,仅仅是为了兼容旧版本。 CAS算法;unsafe.compareAndSwapInt(this, valueOffset, expect, update); CAS(Compare And Swap),...

2016-02-05 09:42:30

阅读数 16555

评论数 10

史上最全Java集合关系图

说是史上最全,或许有点吸引眼球的嫌疑了,但我在网上确实也没有找到更全的,这图也是我对照Java源码挨个分析,画出了较为常见的关系图,及其重要特性。 图中部分集合的使用事例可以参见我的github(点击访问),部分集合的源码分析可以参见我的CSDN的其他文章。如果需要下图的vsdx原图,请点击此处下...

2016-01-24 22:46:51

阅读数 16489

评论数 4

javac不是内部或外部命令,但是java、java-version指令正常

javac不是内部或外部命令,但是java、java-version指令正常 今天遇到这个问题,云笔记博客同时Mark一下。 解决方案: CLASSPATH:.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;【注意前面的点】 JAV...

2016-01-03 14:21:57

阅读数 10082

评论数 0

HashMap源码分析(jdk1.8)

HashMap源码前前后后看了好几次,也和同事分享过好几次,每次都有新的收获。 分享也是一种提高! 本文首写于个人云笔记(点击访问),经多次修改,短期内不会有重大修改了,现发于此,有任何问题欢迎交流指正。 JDK1.8中采用的是位桶+链表/红黑树的方式,也是非线程安全的。当某个位桶的链表的长度达到...

2015-12-17 20:24:26

阅读数 12136

评论数 1

volatile关键字

个人相关源码:https://github.com/zengfanjun/JDK-Study/blob/master/src/keyWord/KW_volatile.java http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166....

2015-12-12 16:05:06

阅读数 4645

评论数 0

原子操作

定义:一个操作是原子的(atomic),如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构。      1、原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序是不可以被打乱,或者切割掉只执行部分。  视作整体式原子性的核心。         2、在多进程(线程)访问资源时,能...

2015-12-12 15:57:37

阅读数 4781

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭