- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 生产者消费者之双缓冲区--legend050709
(1)背景 (1.1)减少锁的冲突 在生产者-消费者模式中,我们常常会使用到队列,这个队列在多个线程共享访问时存在互斥和竞争操作, 意味着每次访问都要加锁。用一个缓冲区,生产者和消费者需要先获取到缓冲区的锁才能进行put和get操作,每一次put和get都需要获取一次锁,这需要大量的同步与互斥操作,十分损耗性能。 如果采用双缓冲区的话,一个缓冲区bufferA用于生产者执行put操作,一个缓...
2019-12-24 20:00:54 1516 1
原创 linux多线程协作--legend050709
(1)三个线程协作打印ABCABCABC (2)两个线程协作打印奇数偶数 -------------------------------- (1)三个线程协作打印ABCABCABC (1.1)思路 并发编程核心是三大块:分工、互斥和同步。 1)互斥 这道题并不涉及共享变量,所以不需要考虑互斥,首先排除。 2)同步 一眼就能看出这道题考的就是同步,那怎么同步呢?很容易想到的方法,就...
2019-12-23 22:54:25 133
原创 hashMap & linkedHashMap & concurrentHashMap 原理----legend050709
(1)hashMap (2)linkedHashMap ---------------- (1)hashMap (1.1)hash Hash 就是把任意长度的输入(又叫做预映射, pre-image),通过哈希算法,变换成固定长度的输出(通常是整型),该输出就是哈希值。这种转换是一种 压缩映射 ,也就是说,散列值的空间通常远小于输入的空间。不同的输入可能会散列成相同的输出,从而不可能...
2019-12-21 15:45:08 333
原创 链表的分类--legend050709
链表的分类如下 (1) 单向链表 (2)单向循环链表 (3)双向链表 (4)双向循环链表 ------ (1) 单向链表 (1.1)特点 每个节点只包含一个指针,即后继指针。 单链表有两个特殊的节点,即首节点和尾节点。用首节点地址表示整条链表,尾节点的后继指针指向空地址null。 性能特点:插入和删除节点的时间复杂度为O(1),查找的时间复杂度为O(n)。 (2)单向循环链...
2019-12-20 14:09:01 997
原创 缓存淘汰机制实现-LRU-LFU——legend050709
(1)缓存是什么 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。 (2)为什么需要缓存 CPU在从内存读取数据的时候,会先把读取到的数据加载到CPU的缓存中。而CPU每次从内存读取数据并不是只读取那个特定要访问的地址,而是读取一个数据块(cacheline)并保存到CPU缓存中,然后下次访问内存数据的时候就会先从...
2019-12-19 18:07:01 328
java对于Json文件的解析范例
2014-06-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人