并发 - 并发问题的解决与事件驱动

并发 - 并发问题的解决与事件驱动

并发的原语看完, 套路总结一下, 基本有如下三种基本类型: 各个线程读写同一个共享变量, 此时需要使用锁. 各个线程就像是汇聚到一个点的各种线一样. 线程需要互相协作, 在某些点上完成之后再进入到下一个阶段. 有点像本来各个线程是平行线, 然后在会在一个固定的地方交汇, 然后再到下一阶段, 再在固定

并发 - 信号量

并发 - 信号量

信号量在CSAPP中已经看过了,本质就是一个整数变量, 只要操作这个整数变量, 就必须要使用P操作和V操作. 信号量 信号量作为锁 信号量作为条件变量 信号量与锁配合使用实现生产者-消费者模型 读者与写者锁 如何实现信号量 信号量 信号量由Dijkstra及其同事发明, 综合了条件变量和锁的特性,

女儿摇号摇中啦!!!

女儿摇号摇中啦!!!

今天一天的心情都很焦躁, 因为要等待幼升小摇奖的结果, 既想早点知道又不想知道. 到了下午4点, 宝山区还没公布, 然后到了4点15分的时候, 老婆突然发来两个字: 中了 哈, 真的非常开心, 立刻就原地跳了起来, 女儿就要成为一个世外的小学生啦. 虽然无数次在脑子里幻想会摇中, 但这一刻真正到来的

并发 - 条件变量

并发 - 条件变量

有10天没有更新博客了, 主要是因为博主最近忙于工作内部调动的事情. 到新公司按照博主我的要求, 电脑是肯定要好好重新折腾一番的. 写这篇博客的时候, 还有两天就摇号了, 相比内部调动, 还是女儿摇号的事情大. 在之前知道了操作系统的互斥锁的实现. 不过使用这些锁的线程, 行为目的都一样, 就是为了

并发 - 锁的原理与操作系统的实现

并发 - 锁的原理与操作系统的实现

最前边的这段话其实是我看完整个章节回来写的, 锁的本质就是一个变量, 操作系统通过硬件提供的各种原子指令, 构建出一些原子的操作. 然后将这些原子操作组合就来, 就达成了构建锁的功能. 一旦有了原子操作, 就不用担心了, 只需要最先执行原子操作的线程更改一个状态, 其他线程就都被堵在这个改变的状态上

并发 - 多线程API

并发 - 多线程API

在之前的算法中写出了Dijkstra算法, 后来发现这个人是并发领域的先驱, 很多专有名词都是这个人搞出来的. 又把数据结构过了一遍的今天, 我leetcode也刷了30多题了, 感觉后边一个要好好的看看并发, 一个要好好的看一下网络编程. 之前试着看了一下经典的 Java并发编程实战, 发现还是有

Java 数据结构 图 - 图算法

Java 数据结构 图 - 图算法

第二次来图算法了, 这次比原来的理解程度又要深一些了, 当然还有一些连通图问题可能用数组等其他方式来解决也可以. 这次是简单一点的图算法, 但是为了掌握, 都是自己对着算法写出来的, 想用那些高级算法,还是得先把基础算法的原理掌握透彻. 图算法类的接口 图算法 - 广度优先遍历 图算法 - 深度优先

Java 数据结构 图 - 图类

Java 数据结构 图 - 图类

写了半天顶点, 最后终于要组成一个图了. 其实图很容易, 由于无向图是特殊的一种有向图, 无权图是权重为0的有权图, 所以只需要实现一个一般的有权有向图就可以了, 无向图和有权有向图只不过是在准备图数据的阶段需要进行的操作不同而已. 图类的接口 图的实现 - 添加顶点和边 图的实现 - 其他方法 图