介绍InheritableThreadLocal之前,假设对 ThreadLocal 已经有了一定的理解,比如基本概念,原理,如果没有,可以参考:ThreadLocal源码分析解密.在讲解之前我们先列举有关ThreadL…
深入理解java虚拟机(八):java内存分析工具-MAT和OQL
以下内容翻译自MAT帮助文档。 MAT下载地址 http://www.eclipse.org/mat/ 一、Class Histogram Class Histogram shows the cla…
深入理解java虚拟机之一window下编译OpenJDK环境搭建
最近在看java JVM的编译原理,才来研究这些。在window下搭建编译OpenJDK的环境,真的很蛋疼,不信的人可以试试。 环境构建需要的工具 1.cygwin 工具。这个工具的主要用处是为了在window平台上模拟…
juc - Semaphore源码解读
Semaphore,翻译叫做信号灯,是用来做资源访问限制的,他维持了一个准许指令的集合,如果当前没有可以指令的话,调用一次acquire就会将当前的线程阻塞,没调用一次release就会将当前线程持有的指令还回指令集合。…
JUC CountDownLatch 分析
简介 JUC提供的并发组件CountDownLatch可以实现类似Thread.join的效果,实现等待多个线程执行结束以后才执行接下来逻辑的功能(一个线程阻塞等待其他多个并发任务线程执行完任务之后才解除阻塞) eg: …
数据结构与算法-----冒泡排序
冒泡排序 1)算法 A.比较相邻的元素,如果第一个比第二个大就交换它们; B.对每一对相邻的元素都做同样的工作,从开始的第一对到结尾的最后一对。经过这一步,最后的元素是最大值; C.针对所有的元素重复以上步骤,除了最后一…
字符串查找算法:bm算法
今天有空,认真的对比了一下经典的字符串查找算法BM算法和C库查找函数 strstr 的区别,两者各有优缺点,总结一下: bm算法的应用场合:适合海量数据搜索,比如数据库,磁盘文件等,总之是数据量越大,性能越高; strs…
C语言--查找算法
简单查找(顺序查找) 从序列起始位置开始,逐个将序列中的元素与所要查找的数据进行比较,有则查找成功,如果查找到序列最后一个元素也没有匹配,则查找失败 int orderSearch(int a[], int n, int…
Java中Map相关的快速查找算法与唯一性
在对《Set和hashCode()》的一篇原创文章写完后,由于对自己的一些论断产生了模糊和怀疑,因此又对Set进行了一些研究,形成本篇。 在Set的使用场景中,我们不外乎看中了她存储数据的唯一性,即不能存储…
数据结构与算法之10(AVL自平衡二叉树与RB红黑树)
本节继续总结二叉树的变种,上节里的哈夫曼树是一种独特的二叉树,用于编解码会比较有效。这里的两种树都是BST二叉搜索树的加强版。 》BST二叉搜索树的弱点 我们之前也提到了,当插入序列是有序的时候,二叉搜索树几乎一边倒,像…
图的邻接矩阵的建立以及遍历操作
#include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #define&nb…
图的深度遍历和广度遍历(Java实现)
图的深度遍历和广度遍历(Java实现) 在下初涉Java, 为了体验一下Java的IO, 写了这段代码… 关于图的遍历大家一定很熟悉了,图的遍历体现了两种思想: 1.广度遍历: 队列的思想 2.深度遍历: 栈的思想 节点…