11 2020 档案
摘要:文章目录 一.同步容器 二.并发容器 2.1 List 2.2 Map 2.3 Set 2.4 Queue 一.同步容器 Java中的容器主要可以分为四大类,分别是List、Map、Set和Queue,但并不是所有的Java容器都是线程安全的,例如:我们常用的ArrayList、HashMap就不是
阅读全文
摘要:文章目录 一.Scala REPL 二.Spark REPL 三.总结 一.Scala REPL scala repl(“Read-Evaluate-Print-Loop”) 是一个交互式命令行解释器,它提供了一个测试scala代码的环境。ILoop和IMain是其核心实现。 属性 有用的REPL功
阅读全文
摘要:文章目录 一.简介 二.读写锁 三.示例-缓存 一.简介 读多写少场景,实际工作中,为了优化性能,我们经常会使用缓存,例如缓存元数据、缓存基础数据等,这就是一种典型的读多写少应用场景,缓存之所以能提升性能,一个重要的条件就是缓存的数据一定是读多写少的,例如元数据和基础数据基本上不会发生变化(写少),
阅读全文
摘要:文章目录 一.信号量 二.信号量模型 三.使用信号量 3.1 示例-累加器 3.2 示例-限流器 一.信号量 Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。 二.
阅读全文
摘要:文章目录 一.简介 二.原理 2.1 管程 2.2 可见性 2.3 可重入锁 2.4 公平锁与非公平锁 2.5 用锁的最佳实践 2.6 示例 一.简介 Java SDK并发包通过Lock和Condition两个接口来实现管程,其中Lock用于解决互斥问题,Condition 用于解决同步问题。 二.
阅读全文
摘要:文章目录 一.简介 二.预防死锁 2.1 破坏占用且等待条件 2.2 破坏不可抢占条件 2.3 破坏循环等待条件 2.4 小结 一.简介 根据上一篇文章互斥锁 死锁实验,死锁定义:一组互相互相竞争资源的线程因互相等待,导致“永久”阻塞的现象。 class Account { private int
阅读全文
摘要:文章目录 一.Google论文与开源二.Google论文简介2.1 起源2.2 基础设施2.3 计算分析系统2.4 存储&数据库2.5 AI 三.总结 一.Google论文与开源 自1998年成立,至今Google已走过20个年头。在这20年里,Google不断地发表一些对于自己来说已经过时甚至不再
阅读全文