channel的基本介绍 channel的本质是一个数据结构队列 数据是先进先出 FIFO 线程安全,多goroutine访问时,不需要加锁,就是说channel本身是线程安全的 channel是由类型的,一个string的channel只能存放string类型数据 无缓冲的channel关闭后,再... ...
分类:
其他好文 时间:
2019-12-19 20:59:18
阅读次数:
261
AbstractQueuedSynchronizer简称为AQS,AQS是ReentrantLock、CountdownLatch、CycliBarrier等并发工具的原理/基础,所以了解AQS的原理对学习J.U.C包很重要。 基本原理: 1.AQS中包含两种队列(FIFO),同步队列+条件队列,底 ...
分类:
编程语言 时间:
2019-12-19 19:27:05
阅读次数:
69
从JDK1.5开始,引入了并发包java.util.concurrent(J.U.C),并发容器里的同步容器AQS(AbstractQueuedSynchronizer)是J.U.C的核心,AQS底层使用双向列表,基于模版方法设计 1、AQS使用Node实现FIFO队列,可以用于构建锁或者其他同步装 ...
分类:
其他好文 时间:
2019-12-16 20:52:09
阅读次数:
105
个人理解 BFS是一种最简便的图搜索算法,通过遍历整张图直到找到目标节点; 从算法的角度看,所有因为展开节点而得到的字节点会被存储到一个FIFO的数据结构中,被遍历过的节点存储在一个容器中(一般是一个set),防止重复搜索 图解 如图所示,我们想要获取从S到E节点的最短路径,运用BFS,如何处理?? ...
分类:
编程语言 时间:
2019-12-15 10:44:56
阅读次数:
108
最久未使用算法和最少次数算法 参考 "LRU算法 缓存淘汰策略" "缓存算法(FIFO 、LRU、LFU三种算法的区别)" LRU算法(最久未使用算法) 当数据满时,淘汰最久未使用的数据。该算法需要获取所有缓存数据中最久未使用的数据。 链表实现 1. 创建一个固定大小的链表,数据首次被访问,插入到链 ...
分类:
编程语言 时间:
2019-12-13 19:46:39
阅读次数:
119
以前一直知道深搜是一个递归栈,广搜是队列,FIFO先进先出LILO后进后出啥的。DFS是以深度作为第一关键词,即当碰到岔道口时总是先选择其中的一条岔路前进,而不管其他岔路,直到碰到死胡同时才返回岔道口并选择其他岔路。接下来将介绍的广度优先搜索(Breadth First Search, BFS)则是 ...
分类:
其他好文 时间:
2019-12-11 21:30:37
阅读次数:
109
ConcurrentLinkedQueue是非阻塞无界的,基于FIFO原则,线程安全的队列,新节点的插入都是在队列的尾部插入的(tail节点),该队列适合于多个线程共享同一个集合时使用。 结构: 构造函数 offer插入 add插入 poll出队列 peek出队列 size操作 remove操作 c ...
分类:
其他好文 时间:
2019-12-10 18:34:33
阅读次数:
109
僵尸进程与孤儿进程 守护进程, from Multiprocessing import Process 在 suboprocess.start( ) 的上一行,增加 subprocess.deamon( ),创建守护进程。当主进程执行完成时,subprocess也会被强制结束。 进程之间是相互独立的 ...
分类:
编程语言 时间:
2019-12-07 21:01:23
阅读次数:
99
网络中进程之间如何通信 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、FIFO、消息队列) 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是 ...
分类:
编程语言 时间:
2019-12-07 14:19:00
阅读次数:
77
简介: AQS全称 AbstractQueuedSynchronizer,提供了一个基于FIFO(先进先出)队列,可以用于构建锁或者其他相关同步装置的基础框架。 ReentrantLock、Semaphore、CountDownLatch、FutrueTask,这些都是基于AQS构建的。 而AQS是 ...
分类:
编程语言 时间:
2019-12-04 23:40:01
阅读次数:
126