- 浏览: 9223 次
- 性别:
- 来自: 杭州
最新评论
文章列表
springboot项目项目路径问题
转载自:https://blog.csdn.net/m0_37692230/article/details/79127415
springboot学习指南:https://www.jianshu.com/p/1a9fd8936bd8
iteye如何在博客中插入图片
转载自:https://blog.csdn.net/hbiao68/article/details/17113181
ThreadLocal
源码解析转载自:https://www.cnblogs.com/micrari/p/6790229.html
阻塞队列BlockingQueue
转载自:https://www.jianshu.com/p/f2791bbaf348
阻塞队列(BlockingQueue)的概念:
当队列中为空时,从队列中获取元素的操作将被阻塞,当队列满时,向队列中添加元素的操作将被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其它的线程往队列中插入新的元素。同样,试图往满的队列中添加新元素的线程也会被阻塞,直到有其他的线程使队列重新变的空闲起来。(类似于生产者和消费者模式)
注:主要针对多线程并发时存在。
java.util.concurrent包下BlockingQueue的实现类:
1: ...
HashMap
源码解析+常见HashMap问题转载自:https://blog.csdn.net/richard_jason/article/details/53887222
强子HashMap存储结构博客:https://blog.51cloud.win/2017/05/14/HashMap/#more
HashMap解析:https://blog.51cloud.win/2018/03/05/浅析JavaHashMap源码/#more
总结:
什么是 ...
TreeMap
源码解析:https://blog.csdn.net/qq_23211905/article/details/76691961
TreeMap底层是基于红黑树进行处理的。查询,插入,删除的时间复杂度为O(logN),插入和删除会牵扯到红黑树的左旋,右旋和着色。
TreeMap不是线程安全的类。
TreeSet:
private transient NavigableMap<E,Object> m;
TreeSet(NavigableMap<E,Object> m) {
this.m ...
树
树的遍历:都是依据根节点遍历的顺序来的,分为先序,中序,后序,然后先左节点,后右节点。
1:中序遍历:左根右(从左节点开始遍历,然后是根节点,然后是右节点,下同)
2:先序遍历:根左右
3:后序遍历:左右根
1:普通二叉树:每个节点最多有2颗子树。
a.满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。
b.完全二叉树:只有最下面的两层结点度能够小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。
2:二叉查找树:对于树中的每个节点X,它的左子树中所有项的值小于X中的值,而它的右子树中所有项的值大于X中的值。(左值<根值<右值)。
时间复杂度 ...
Stack
Stack源码解析转载自:https://www.jianshu.com/p/62a989e7448c
Stack是Vector的子类,遵循先进后出原则。是线程安全的类。
多线程面试题
Java线程面试题Top 50转载自:http://www.cnblogs.com/dolphin0520/p/3958019.html
40个Java多线程问题总结转载自:http://www.cnblogs.com/xrq730/p/5060921.html
volatile
volatile详解转载自:http://www.cnblogs.com/dolphin0520/p/3920373.html
共享数据安全的三个特性:原子性,可见性,有序性。
当保证了以上三个特性时,多线程并发并不会对数据造成影响。
volatile能保证可见性和有序性,但是不能保 ...
select,poll,epoll
详解转载自:https://www.cnblogs.com/Anker/p/3265058.html
jdk1.4中nio中引入了select,poll模式,jdk1.5中sun对其进行了优化,引入了epoll。
select缺点:
1:每次调用select都需要把fd从用户态拷贝到内核态,开销比较大。
2:每次都需要在内核遍历传入的fd。
3:支持文件数量比较小,默认是102
poll缺点:
poll的实现和select非常相似,只是描述fd集合的方式不同,poll使用pollfd结构而不是select的fd_set结构,其他的都差不多。
epo ...
CopyOnWriteArrayList
源码解析转载自:https://www.cnblogs.com/leesf456/p/5547853.html
总结:
1:线程安全,读操作时无锁,相当于的ArrayList。
2:底层数据结构是一个Object[],初始容量为0,之后每增加一个元素,容量+1,数组复制一遍。
3:增 ...
LinkedList
LinkedList源码解析转载自:https://www.cnblogs.com/CherishFX/p/4734490.html
线性表介绍转载自:https://www.jianshu.com/p/02f8696bf4cf
总结:LinkedList是基于双向链表实现的。其中的元素不存在下标索引,因此不适合于查找,但适合于添加(add)和删除(remove)。LinkedList进行插入和删除时,只需修改相邻元素的next和previous的引用即可,即重新指向next和previous的引用。
数据结构:prev | data | next 。(LinkedL ...
Buffer源码解析
Buffer的demo请看转载自:https://www.cnblogs.com/tankaixiong/p/3949421.html
/**
* 一个特定基元类型数据的容器。
* 缓冲器是一个特定的线性、有限的元素序列的原始类型。除了内容之外,。
* 缓冲区的基本属性是其容量(capacity)、限制(limit)和位置(position)。
*
* capacity:缓冲区的容量是它包含的元素的数量。缓冲区的容量从不为负,也从不改变。
* limit:缓冲区的limit是应该的第一个元素的索引。也从不为负,小于其capacity。
* p ...
SelectionKey源码解析
转载自:http://blog.csdn.net/robinjwong/article/details/41792623
SelectionKey表示监听的事件。将channel注册到selector上时,需要声明SelectionKey,以此声明监听事件。(这样Selector才知道需要记录什么数据)
注:
句柄:可以认为 ...