Guava 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
摘要:任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法。Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法。这是Guava最流行和成熟的部分之一。 我们用相对直观的方式把工具类与特定集合接口的对应关系归纳如下: 在找类似转化、过滤的方
阅读全文
posted @
2012-10-31 11:03
duanxz
阅读(499)
推荐(0) 编辑
Guava 1.5-Throwables:简化异常和错误的传播与检查
摘要:异常传播 有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在Error或RuntimeException被捕获的时候,你没想捕获它们,但是声明捕获Throwable和Exception的时候,也包括了了Error或RuntimeException。Guava提供了若干方法,来判断异常类型并且重
阅读全文
posted @
2012-10-30 17:14
duanxz
阅读(812)
推荐(0) 编辑
常用 Java 静态代码分析工具的分析与比较
摘要:简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应
阅读全文
posted @
2012-10-30 17:05
duanxz
阅读(5866)
推荐(0) 编辑
Guava学习笔记:Google Guava 类库简介
摘要:Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O,
阅读全文
posted @
2012-10-30 17:04
duanxz
阅读(492)
推荐(0) 编辑
Guava 2.4-集合扩展工具类
摘要:简介 有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集。Guava为你,也为我们自己提供了若干工具方法,以便让类似的工作变得更简单。(毕竟,我们自己也要用这些工具扩展集合框架。) Forwarding
阅读全文
posted @
2012-10-29 17:29
duanxz
阅读(716)
推荐(0) 编辑
1.1-使用和避免null
摘要:Doug Lea 说,“Null 真糟糕。” 当Sir C. A. R. Hoare 使用了null引用后说,”使用它导致了十亿美金的错误。” 轻率地使用null可能会导致很多令人惊愕的问题。通过学习Google底层代码库,我们发现95%的集合类不接受null值作为元素。我们认为, 相比默默地接受n
阅读全文
posted @
2012-10-29 15:23
duanxz
阅读(448)
推荐(0) 编辑
1.2-前置条件
摘要:前置条件:让方法调用的前置条件判断更简单。 Guava在Preconditions类中提供了若干前置条件判断的实用方法,我们强烈建议在Eclipse中静态导入这些方法。每个方法都有三个变种: 没有额外参数:抛出的异常中没有错误消息; 有一个Object对象作为额外参数:抛出的异常使用Object.t
阅读全文
posted @
2012-10-29 10:37
duanxz
阅读(588)
推荐(0) 编辑
1.3-常见Object方法
摘要:equals 当一个对象中的字段可以为null时,实现Object.equals方法会很痛苦,因为不得不分别对它们进行null检查。使用Objects.equal帮助你执行null敏感的equals判断,从而避免抛出NullPointerException。例如: 注意:JDK7引入的Objects
阅读全文
posted @
2012-10-29 10:07
duanxz
阅读(554)
推荐(0) 编辑
CSS实例:用fieldset、legend实现文字写在边线上的效果
摘要:这是一个非常不错的效果,在实际制作中也比较常用,我们看下面的图片: 或许你想到可以用图片来实现这样的效果,但图片除了体积稍大,语义上也很欠缺。这样的效果如何用xhtml+css实现呢?首先我们通过 fieldset设置一个方框(也译作域),然后通过特定的标签legend域标题,设置一个标题,并对它们进行相应的样式定义即可实现这样效果。我们首 先来了解一下fieldset方框、legend域标题这两个标签的知识。HTML元素fieldset方框 Drawsaboxaroundthetextandotherelementsthatthefieldsetcontains. 在字段集包含的文本和...
阅读全文
posted @
2012-10-26 14:10
duanxz
阅读(6604)
推荐(0) 编辑
精选30道Java笔试题解答
摘要:都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~~~当复习期末考吧。花了不少时间整理,在整理
阅读全文
posted @
2012-10-26 09:42
duanxz
阅读(651)
推荐(0) 编辑
远程监控JVM之二、 八、jdk工具之JvisualVM之三--可视化监控及LINUX服务器与客户端配置方法)、 远程监控Tomcat、Jstatd
摘要:如何配置visualvm监控 我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具,相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具。这个工具就在JAVA_HOME\bin\目录下的j
阅读全文
posted @
2012-10-26 09:19
duanxz
阅读(5505)
推荐(0) 编辑
ArrayList的实现原理
摘要:ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小
阅读全文
posted @
2012-10-25 20:03
duanxz
阅读(359)
推荐(0) 编辑
LinkedList的实现原理
摘要:List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。 此类实现 Dequ
阅读全文
posted @
2012-10-25 19:46
duanxz
阅读(653)
推荐(0) 编辑
WeakHashMap的实现原理
摘要:目录: 《对象的强、软、弱和虚引用》 《WeakHashMap的实现原理》 一、WeakHashMap简介 WeakHashMap 继承于AbstractMap,实现了Map接口。 和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键
阅读全文
posted @
2012-10-25 19:38
duanxz
阅读(784)
推荐(0) 编辑
Collections.synchronizedMap()
摘要:Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap()实现原理是Collections定义了一个SynchronizedMap的内部类,这个类实现了Map接口,在调用方法时使用synchronized来保证线
阅读全文
posted @
2012-10-25 19:35
duanxz
阅读(6610)
推荐(0) 编辑
SynchronizedMap
摘要:在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的——Hashtable的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。Has
阅读全文
posted @
2012-10-25 19:30
duanxz
阅读(1240)
推荐(0) 编辑
八、jdk工具之JvisualVM之四--VisualVM 进行性能分析及调优
摘要:背景知识 性能分析的主要方式 监视:监视是一种用来查看应用程序运行时行为的一般方法。通常会有多个视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在。 转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分
阅读全文
posted @
2012-10-25 16:40
duanxz
阅读(918)
推荐(0) 编辑
统计JVM进程中线程数两种方式小记
摘要:I. 统计进程中的线程数 相关系列博文推荐: 180711-JVM定位分析CPU性能消耗 180704-JDK常用监控参数 jvm调优的工具介绍 1. proc查询 /proc 目录以可读文本文件形式输出,提供现有进程和系统硬件相关的信息如 CPU、中断、内存、磁盘等等 查看状态命令 cat /pr
阅读全文
posted @
2012-10-25 15:14
duanxz
阅读(2074)
推荐(0) 编辑
mat之三--PermGen Metaspace永久代内存分析
摘要:一、jdk1.6上的perm gen 我们在上2篇文章中知道,perm gen是个异类,里面存储了类和方法数据(与class loader有关)以及interned strings(字符串驻留)。在heap dump中没有包含太多的perm gen信息。那么我们就用这些少量的信息来解决问题吧。 看下
阅读全文
posted @
2012-10-25 15:05
duanxz
阅读(2386)
推荐(0) 编辑
远程监控JVM之一--命令行(通过jstatd采集,jstat远程获取jvm运行数据)
摘要:在被监测的服务器(远程机器)上需要启动一个daemon:jstatd1、远程机器启动jstatd1.1、首先需要准备一个java.policy文件,保存到如/home/admin/jstatd.java.policygrant codebase "file:${java.home}/../lib/t
阅读全文
posted @
2012-10-25 14:48
duanxz
阅读(1373)
推荐(0) 编辑
nginx实现跨域访问
摘要:跨域概念 简单来说:两个url只要协议、域名、端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题。 案例 例如:在开发前后端完全分离的系统中,服务端代码属于一个工程,前端代码属于另一个工程,前端开发人员在进行接口对接时,可能会在webstorm等工具进行编码,并用webstorm的内置服
阅读全文
posted @
2012-10-25 13:40
duanxz
阅读(1061)
推荐(0) 编辑
Servlet3.0之五:servlet3.0下的web.xml
摘要:Servlet3.0随J2EE6一起发布,web.xml配置文件中包含: 默认页配置、session超时配置和错误提示页配置。 上面三篇文章都是在spring boot环境中的,如果不在呢,则用下面的web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <
阅读全文
posted @
2012-10-25 13:20
duanxz
阅读(2588)
推荐(0) 编辑
Guava 6-字符串处理:分割,连接,填充
摘要:连接器[Joiner] 用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦。如果字符串序列中含有null,那连接操作会更难。Fluent风格的Joiner让连接字符串更简单。 上述代码返回”Harry; Ron; Hermione”。另外,useForNull(String)方法可以给定某个字符串
阅读全文
posted @
2012-10-25 11:31
duanxz
阅读(877)
推荐(0) 编辑
Servlet3.0之六:@WebServlet Servlet注解
摘要:在spring boot中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(Filter和Listener也是如此)。 Servlet3.0作为J2EE 6规范一部分,并随J2EE6一起发布,WeFilter是过滤器注解,@WebServlet是Servlet注解,是Serv
阅读全文
posted @
2012-10-25 09:14
duanxz
阅读(2537)
推荐(0) 编辑
Guava 7-原生类型
摘要:概述 Java的原生类型就是指基本类型:byte、short、int、long、float、double、char和boolean。 在从Guava查找原生类型方法之前,可以先查查Arrays类,或者对应的基础类型包装类,如Integer。 原生类型不能当作对象或泛型的类型参数使用,这意味着许多通用
阅读全文
posted @
2012-10-24 19:08
duanxz
阅读(555)
推荐(0) 编辑
RESTLET开发实例(二)使用Component、Application的REST服务
摘要:http://www.lifeba.org/arch/restlet_develop_application_component_2.html 上一篇文章,我们介绍了基于JAX-RS的REST服务,本篇文章我们介绍不基于JAX-RS的模式。JAX-RS其实就是一个简单的 Application服务。
阅读全文
posted @
2012-10-23 22:00
duanxz
阅读(780)
推荐(0) 编辑
并发容器之ConcurrentLinkedDeque
摘要:在Java中,最常用的数据结构可能是列表。有数目不详的元素列表,你可以添加、阅读、或删除任何位置的元素。此外,并发列表允许不同的线程列表中添加或删除元素时不产生任何数据不一致。非阻塞列表提供如下操作,如果操作不能立即完成,列出抛出异常或者返回一个null值。Java 7中引入了ConcurrentL
阅读全文
posted @
2012-10-23 15:31
duanxz
阅读(911)
推荐(0) 编辑
web.xml 中的listener、 filter、servlet 加载顺序及其详解
摘要:首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向
阅读全文
posted @
2012-10-23 10:48
duanxz
阅读(427)
推荐(0) 编辑
为什么选择MongoDB
摘要:爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库中抽象的数据架构。然而,在信息技术爆炸式发展的今天,大数据已经成为了继云计算,物联网后新的
阅读全文
posted @
2012-10-23 09:31
duanxz
阅读(1225)
推荐(0) 编辑
findbugs 错误分析
摘要:findbugs 出错类型及对应解释1、Dead store to local variable 本地变量存储了闲置不用的对象举例:List accountCoList = new ArrayList();我们为accountCoList新建了一个对象,但是程序的后面并没有使用这个这个新建对象。建议
阅读全文
posted @
2012-10-22 16:45
duanxz
阅读(987)
推荐(0) 编辑
阻塞队列之八:PriorityBlockingQueue优先队列
摘要:一、PriorityBlockingQueue简介 PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式存放最小堆节点的都知道,直接遍历队列元素是无序的。 PriorityBlockingQueue类似于ArrayB
阅读全文
posted @
2012-10-22 15:05
duanxz
阅读(4981)
推荐(0) 编辑
树遍历算法概述
摘要:树的遍历 遍历定义——指按某条搜索路线遍访每个结点且不重复(又称周游) 遍历用途——它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心 遍历方法——牢记一种约定,对每个结点的查看都是“先左后右” 树的遍历有两个基本的方法:深度优先遍历 和 广度优先遍历 。 深度优先遍历又
阅读全文
posted @
2012-10-22 13:55
duanxz
阅读(564)
推荐(0) 编辑
CPU-bound(计算密集型) 和I/O bound(I/O密集型)
摘要:I/O密集型 (CPU-bound) I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CPU Loading 不高。CPU bound 指的是系统的 硬盘/内存 效能 相对 CPU 的效能
阅读全文
posted @
2012-10-22 10:56
duanxz
阅读(833)
推荐(0) 编辑
Google赛马问题
摘要:据说,这是Google的面试题。面试题目如下: 一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问,最少得比多少场才能知道跑得最快的5匹马?(不能使用撞大运的算法) 很明显这是一个算法题,网上有很多贴
阅读全文
posted @
2012-10-22 09:38
duanxz
阅读(924)
推荐(0) 编辑
一、单一职责原则
摘要:《一、单一职责原则》《二、里氏替换原则》《三、依赖倒置原则》《四、接口隔离原则》《五、迪米特法则》《六、开闭原则》 1、单一职责原则描述 单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。是指不要存在多于一个导致类改变的原因。 假设我们有一个类负责
阅读全文
posted @
2012-10-18 19:33
duanxz
阅读(775)
推荐(0) 编辑
JAVA迭代器与迭代模式
摘要:一、介绍 在jdk中,与迭代器相关的接口有两个:Iterator 与 IterableIterator:迭代器,Iterator及其子类通常是迭代器本身的结构与方法;迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这
阅读全文
posted @
2012-10-18 18:10
duanxz
阅读(1438)
推荐(0) 编辑
二、里氏替换原则
摘要:《一、单一职责原则》《二、里氏替换原则》《三、依赖倒置原则》《四、接口隔离原则》《五、迪米特法则》《六、开闭原则》 爱恨纠葛的父子关系 在面向对象的语言中, 继承是必不可少的、非常优秀的语言机制,它有如下优点: 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性; 提高代码的重用性; 子类
阅读全文
posted @
2012-10-18 11:03
duanxz
阅读(1685)
推荐(0) 编辑
三、依赖倒置原则
摘要:3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low lev
阅读全文
posted @
2012-10-18 09:43
duanxz
阅读(328)
推荐(0) 编辑
四、接口隔离原则
摘要:《一、单一职责原则》《二、里氏替换原则》《三、依赖倒置原则》《四、接口隔离原则》《五、迪米特法则》《六、开闭原则》 4.1、接口隔离原则的定义 在讲接口隔离原则之前,我们先明确一下我们的主角,什么是接口,接口分为两种: 一种是实例接口 (Object Interface),在 Java 中声明一个类
阅读全文
posted @
2012-10-17 16:26
duanxz
阅读(457)
推荐(0) 编辑
五、迪米特法则
摘要:《一、单一职责原则》《二、里氏替换原则》《三、依赖倒置原则》《四、接口隔离原则》《五、迪米特法则》《六、开闭原则》 迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least KnowledgePrinciple,LKP),虽然名字不同,但描述的是同一个规则:一个对象应该对其他
阅读全文
posted @
2012-10-16 15:33
duanxz
阅读(828)
推荐(0) 编辑
六、开闭原则
摘要:开闭原则是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统,先来看开闭原则的定义: Software entities like classes,modules and functions should be open for extension but closed for
阅读全文
posted @
2012-10-16 08:55
duanxz
阅读(1067)
推荐(0) 编辑
创建部署规划
摘要:部署规划是 XML 文档,它提供如何将 Java 资产中的资源与服务器中配置的资源绑定在一起的详细部署信息。部署规划模式使用部署规划模板Plan Creator(仅适用于 WAR)部署规划模式如果您使用验证 XML 编辑器来制定部署规划,那么该编辑器需要访问部署规划模式,以提供验证和标记编码方面的帮助。请参阅Apache Geronimo XML Schema,以获取有关使用因特网访问该模式的更多信息。安装服务器时,XML 模式文件将安装于:<WASCE_HOME>\schema<WASCE_HOME>/schema其中<WASCE_HOME>是服务器的安装
阅读全文
posted @
2012-10-12 17:02
duanxz
阅读(361)
推荐(0) 编辑
将 JAR 添加至 CE 存储库
摘要:该服务器通过使用Apache Maven项目所提示的相同目录结构和命名约定来在存储库中保存公共的 Java 库。如果 Java EE 资产所依赖的库在存储库中尚不存在,那么可从管理控制台或通过使用install-library 命令将存储库更新为包括新库,并在 Java EE 资产的部署规划中定义依赖性。同时,服务器会将该库转换为 OSGi 捆绑软件。此主题介绍如何通过使用管理控制台来将 Java 库添加至 CE 存储库。用新库来更新存储库在部署规划中定义依赖性用新库来更新存储库为了将归档或 JAR 添加至存储库,可通过在左侧的Console Navigation菜单上选择Server >
阅读全文
posted @
2012-10-12 14:31
duanxz
阅读(231)
推荐(0) 编辑
并发队列对比之一:ConcurrentLinkedQueue、LinkedBlockingQueue对比分析
摘要:关于ConcurrentLinkedQueue和LinkedBlockingQueue: 1.LinkedBlockingQueue是使用锁机制,ConcurrentLinkedQueue是使用CAS算法,虽然LinkedBlockingQueue的底层获取锁也是使用的CAS算法 2.关于取元素,C
阅读全文
posted @
2012-10-12 14:18
duanxz
阅读(2445)
推荐(0) 编辑
并发队列对比之二:LinkedBlockingQueue和ArrayBlockingQueue性能对比
摘要:回顾下,LinkedBlockingQueue和ArrayBlockingQueue在实现上不同点有: 1、ArrayBlockingQueue使用数组存储数据,LinkedBlockingQueue使用单向链表存储数据; 2、ArrayBlockingQueue使用一个可重入锁和这个锁生成的两个条
阅读全文
posted @
2012-10-11 15:57
duanxz
阅读(1800)
推荐(0) 编辑
Copy-On-Write容器之二:CopyOnWriteArraySet
摘要:一、CopyOnWriteArraySet简介 1. CopyOnWriteArraySet继承于AbstractSet,这就意味着它是一个集合。 2. CopyOnWriteArraySet包含CopyOnWriteArrayList对象,它是通过CopyOnWriteArrayList实现的。而
阅读全文
posted @
2012-10-10 15:53
duanxz
阅读(754)
推荐(0) 编辑
Copy-On-Write容器之一:CopyOnWriteArrayList
摘要:一、CopyOnWriteArrayList简介 为了维护对象的一致性快照,要依靠不可变性(immutability)来消除在协调读取不同的但是相关的属性时需要的同步。对于集合,这意味着如果有大量的读(即get() ) 和迭代,不必同步操作以照顾偶尔的写(即 add() )调用。对于新的 CopyO
阅读全文
posted @
2012-10-10 11:36
duanxz
阅读(784)
推荐(0) 编辑
一文理解Druid原理架构(时序数据库,不是ali的数据库连接池)
摘要:Druid.io(以下简称Druid)是2013年底开源出来的, 主要解决的是对实时数据以及较近时间的历史数据的多维查询提供高并发(多用户),低延时,高可靠性的问题。 Druid简介: Druid是一个为在大数据集之上做实时统计分析而设计的开源数据存储。这个系统集合了一个面向列存储的层,一个分布式、
阅读全文
posted @
2012-10-10 09:08
duanxz
阅读(1370)
推荐(0) 编辑
时序数据库介绍和使用
摘要:1.基础 1.1 时序数据的定义 什么是时间序列数据(Time Series Data,TSD,以下简称时序)从定义上来说,就是一串按时间维度索引的数据。用描述性的语言来解释什么是时序数据,简单的说,就是这类数据描述了某个被测量的主体在一个时间范围内的每个时间点上的测量值。它普遍存在于IT基础设施、
阅读全文
posted @
2012-10-09 09:59
duanxz
阅读(3724)
推荐(0) 编辑
并发容器Map之一:ConcurrentHashMap原理(jdk1.7)
摘要:一、ConcurrentHashMap简介 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有
阅读全文
posted @
2012-10-09 09:57
duanxz
阅读(511)
推荐(1) 编辑
并发容器Map之一:ConcurrentHashMap原理(jdk1.8)
摘要:一、ConcurrentHashMap简介 二、ConcurrentHashMap源码分析 2.1、类图结构 2.2、数据结构 1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现,结构如下: 只有在执行第一次put方法时才
阅读全文
posted @
2012-10-08 11:11
duanxz
阅读(1588)
推荐(0) 编辑
并发容器Map之一:(jdk1.8) ConcurrentHashMap的红黑树实现分析
摘要:红黑树 红黑树是一种特殊的二叉树,主要用它存储有序的数据,提供高效的数据检索,时间复杂度为O(lgn),每个节点都有一个标识位表示颜色,红色或黑色,有如下5种特性:1、每个节点要么红色,要么是黑色;2、根节点一定是黑色的;3、每个空叶子节点必须是黑色的;4、如果一个节点是红色的,那么它的子节点必须是
阅读全文
posted @
2012-10-08 10:41
duanxz
阅读(1088)
推荐(0) 编辑