一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题? HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。 javadoc中关于hashmap的一段描述如下: 此实现不是同步的。如果多个线程同时访

一、grep、egrep、fgrep命令   本文中主要介绍了linux系统下grep egrep fgrep命令和正则表达式的基本参数和使用格式、方法。(注释:文中fg代表例子,) 1.1、基本定义:         grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用

一、注解方面的改进 spring4对注解API和ApplicationContext获取注解Bean做了一点改进。 获取注解的注解,如@Service是被@Compent注解的注解,可以通过如下方式获取@Componet注解实例: Java代码   Annotation service = AnnotationUtils.findAnnotation(ABService.class, org.sp

* java8 新增的@Repeatable注解,其实只是语法糖而已.    * java8 注解的 {@link RepeatAnn} 类与 {@link Annotations}是等价的.    * 新注解讲语法糖转化为注解值为数组形式.   package com.github.jdk8.ebook.java8_recipes2nd_edition; imp

   ​    ​首先讲一下开关的由来,例如东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A、B、C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似店庆之类的大促环节,系统已经满负荷了,这时候其实完全可以不去调用C接口,怎么实现这个呢?改代码?no,no,no,这样太不敏捷

GIT reset命令,似乎让人很迷惑,以至于误解,误用。但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么。 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交 Index index也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commit Working Copy working

转自:http://www.cnblogs.com/melon-h/archive/2012/09/20/2694941.html 我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下。 但我一直不明白这是怎么算出来的,因此通过阅读《算法导论-第2版》的2.2节,使用对插入排序最佳时间复杂度推算的方法,来计算冒泡排序的复杂度。 1. 《算法导论》2.2中对插入排序最

/** * */ /** * @ClassName: PageInfo * @Description: TODO(这里用一句话描述这个类的作用) * @author zhoushun * @date 2012-3-11 下午12:45:13 * */ /** * 该类描述了分页记录集中的关于页的信息 */ public class PageInfo { /**

先把问题说清楚: WeakHashMap是主要通过expungeStaleEntries这个函数的来实现移除其内部不用的条目从而达到的自动释放内存的目的的.基本上只要对WeakHashMap的内容进行访问就会调用这个函数,从而达到清除其内部不在为外部引用的条目。但是如果预先生成了WeakHashMap,而在GC以前又不曾访问该WeakHashMap,那不是就不能释放内存了吗? 对应的两个测试案例:

转:http://liujiacai.net/blog/2015/09/27/java-weakhashmap/ 前面把基于特定数据结构的Map介绍完了,它们分别利用了相应数据结构的特点来实现特殊的目的,像HashMap利用哈希表的快速插入、查找实现O(1)的增删改查,TreeMap则利用了红黑树来保证key的有序性的同时,使得增删改查的时间复杂度为O(log(n))。 今天要介绍的WeakHas

4 5 6 7 8 9 10 11 12