- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 Java枚举使用以及枚举实现单例模式
JDK 1.5 之前需要自定义枚举类JDK 1.5 新增的enum关键字用于定义枚举类若枚举只有一个成员,则可以作为一种单例模式的实现方式。枚举类型是指由一组固定的常量组成合法值的类型,枚举提供了编译时的类型安全,枚举类型还允许添加任意的方法和域,并实现任意的接口。Java枚举类型背后的基本想法非常简单:她们就是通过共有的静态final域为每个枚举常量导出实际的类。因为没有可以访问...
2016-08-22 00:24:12 16365 1
转载 ArrayList源码分析
ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新
2016-08-19 18:23:34 5604 1
原创 ArrayBlockingQueue源码分析及使用
BlockingQueue介绍与常用方法BlockingQueue是一个阻塞队列。在高并发场景是用得非常多的,在线程池中。如果运行线程数目大于核心线程数目时,也会尝试把新加入的线程放到一个BlockingQueue中去。队列的特性就是先进先出很容易理解,在java里头它的实现类主要有下图的几种,其中最常用到的是ArrayBlockingQueue、LinkedBlockingQueue
2016-08-15 22:14:15 15746
转载 回调函数透彻理解Java
回调函数,第一次见是在Java编程思想中,以及后来的观察者模式也应用了回调函数的思想。但是一直都没有重视,终于在一次面试的时候吃亏了,越来越理解为什么很多人说Java编程思想这本书要一遍遍的看,吃透! 首先在网络上搜索很多文章介绍什么是回调函数,看的云里雾里的。后来自己一步步分解终于理解了,记录如下。 从维基百科上面摘抄定义:(看完本篇文章再来理解这个定
2016-08-14 20:09:44 824
转载 Java中的CopyOnWrite容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。
2016-08-14 14:37:09 437
原创 深入理解ThreadLocal
ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。线程局部变量(ThreadLocal)的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的...
2016-08-13 19:45:13 6765
转载 Java HashMap的死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loo
2016-08-13 18:09:45 747
转载 ConcurrentHashMap、synchronized与线程安全
最近做的项目中遇到一个问题:明明用了ConcurrentHashMap,可是始终线程不安全除去项目中的业务逻辑,简化后的代码如下:[java] view plain copypublic class Test40 { public static void main(String[] args) throws In
2016-08-13 18:05:42 840
原创 深入分析ConcurrentHashMap
ConcurrentHashMap的目的多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。虽然已经有一个线程安全的HashTable,但是HashTable容器使用synchronized(他的get和put方法的实现代码如下)来保证线程安全,在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线
2016-08-13 18:02:02 5892
原创 java类里的成员变量是自身的对象问题
今晚看单例模式饿汉时想到一个问题:假如java类里的成员变量是自身的对象,则新建该类对象时内存中怎么分配空间,我感觉似乎死循环了。举个例子:package day810;class B { private String b = "Hello"; private B a = new B();}public class A { public static void main(S
2016-08-10 23:10:07 12838 4
原创 java List删除元素问题及解决办法
先看一个例子:删除List中值为2的元素:List list = new ArrayList(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); System.out.println("----------list大小1:--"+list.size()); for (int i
2016-08-02 21:49:48 16422 4
转载 java比较器Comparable接口和Comaprator接口
java的比较器有两类,分别是Comparable接口和Comparator接口。一、其实很简单,单从字面理解就基本明白1. Comparable:“可比较的”,(欲参与比较的对象对应的元素类需实现Comparable接口)使用这种策略来比较时,两个对象(这里两个对象是指一个类的两个不同实例)本身必须是“可比较的”,比较的标准由对象所在的类来定义,这种可比较的能力是对象本身固有的,
2016-08-01 14:11:33 882
原创 HashMap源码分析以及四种遍历方法
package day05;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;/* *...
2016-08-01 11:20:34 7355
图解HTTP(彩色高清带目录).zip
2019-06-24
elasticsearch权威指南高清中文pdf
2019-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人