自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NowOrNever

Power Cloaked in Simplicity

  • 博客(9)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java多线程 -- Map容器性能比较

单线程环境下可以使用HashMap和TreeMap。如果不是遍历时需要按照Key的排序来返回结果,应该采用HashMap。多线程环境下可以使用以下四种Map容器。1)Collections.synchronizedMap(new HashMap());2)ConcurrentHashMap3)Collections.synchronizedSortedMap(new TreeMap())4)ConcurrentSkipListMap如果不需要遍历时需要按照Key的排序来返回结果,首选Concur

2015-01-30 17:35:33 9844

转载 Java多线程 -- ConcurrentHashMap

HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程都必须竞争同一把锁,那假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个

2015-01-30 16:04:43 6510 2

转载 SkipList 跳表

链表结构能够做到并发无锁的增加新节点,但不能很容易的访问到中值(因为链表只能从头部遍历或尾部遍历)。平衡有序二叉树则相反,虽然很容易可以访问到全部数据的中值,但无法做到并发无锁的增加新节点。在90年代之前,人们一直以“这就是生活” 来安慰自己,认为鱼与熊掌不可兼得。但在90年代,William Pugh 在他的论文中提出了一种新的数据结构skiplist,很巧妙的解决了这个矛盾

2015-01-16 19:06:41 2903 1

转载 平衡二叉有序树

一谈到二叉树,相信很多人一定会有一个疑问: 这玩意儿有什么用? (当然这么多人里面肯定包括大学时候的我- -)其实,我个人觉得这并不怪我们,是教科书写的有点问题,开始的时候没有给到大家明确的学习意义,开始就去讲如何遍历,如何从树变森林,如何做树的前序中序后序遍历。但这样的学习会让整个过程很无聊,太容易让人放弃了。所以在今天,请允许我用另外的方式来重新讲解一下吧~

2015-01-16 19:05:38 2968

转载 Java多线程 -- Copy-On-Write容器

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。

2015-01-15 15:02:34 1423

原创 Java多线程 -- 单例模式的Double-checked Locking (DCL)问题

Double-checked Locking (DCL)用来在lazy initialisation 的单例模式中避免同步开销的一个方法。下面是这么做的一个例子。[java] view plaincopypublic class MyFactory {    private static MyFactory instance;

2015-01-15 15:01:12 8077

转载 Java多线程 -- 深入理解JMM(Java内存模型) -- happens-before俗解

学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多个线程同时访问,如读锁)访问临界区,但他们的第二个功能 —— 保证变量的可见性 —— 常被遗忘。

2015-01-15 14:55:54 8576 1

原创 Oracle ROWNUM用法和分页查询总结

分页查询格式1在查询的最外层控制分页的最小值和最大值。查询语句如下:SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A )WHERE RN BETWEEN 21 AND 40分页查询格式2SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40)WHERE RN >=

2015-01-15 13:56:12 137339 9

转载 ORACLE的临时表(CREATE GLOBAL TEMPORARY TABLE)以及和SQLServer的不同点

1简介ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中。In addition to permanent tables, Orac

2015-01-15 13:43:49 5589 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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