pursue wind pursue wind
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
  • 技术面试题篇

  • 面试准备篇

  • 技术面试题自测篇

  • 练级攻略篇

  • 工作篇

  • 面经篇

  • 笑傲Java面试

    • 2-1 导学-Java编程技巧部分
    • 2-2 IDEA Java配置补充
    • 2-4 Java8 Stream 接口:流和并发计算实例
    • 2-5 和面试官聊聊实现管道和流计算的基石:函数式的Monad
    • 2-6 Buffer的原理和使用场景+面试题解读
    • 2-7 补充提问:同步和阻塞、异步和非阻塞等不等价?
    • 2-8 阿里面试题:中文乱码处理和大文件计算词频
    • 2-9 实战场景Coding训练:解读反射+代理+AOP 并结合业务逻辑实现
    • 2-10 注解部分答案
    • 2-11 反射-元编程面试题目合集
    • 2-12 面试必备:Java8-11的新特性和理解的误区
    • 2-13 白板篇-Java编程总结(以及面试题)
    • 3-1 算法和数据结构导学
    • 3-2 教你面试时不会忘记的5种手写排序
    • 3-3 手写链表算法
    • 3-4 手写栈和队列面试专项
    • 3-5 课后习题+面试题:用栈和队列实现表达式解析
    • 3-6 迷宫伪代码和8皇后问题源代码
    • 3-7 3-7 树部分源代码
    • 3-8 8皇后问题
    • 3-10 动态规划的课前题目
    • 3-11 总结和课后习题:白板篇-数据结构和算法
    • 4-1 解读:并发编程知识体系
      • [](#知识体系结构)知识体系结构
      • [](#并发编程的知识图谱)并发编程的知识图谱
    • 4-2 看看你的基础:Java线程状态之间如何转换?
    • 4-3 CAS和原子操作
    • 4-4 同步器(上篇)——面试官问synchronized本质是什么?
    • 4-5 同步器(中)——AbstractQueuedSynchronizer
    • 4-6 面试官:说6个Java的同步器?
    • 4-7 面试官出难题:并发环境下单例怎么写性能最高
    • 4-8 面试官:LinkedBlockingDeque和SynchronousQueue工作原理一样吗?
    • 4-9 面试要点:volatile的简短补充
    • 4-10 给面试官讲讲无锁编程(Lock-Free Programming)
    • 4-11 高阶并发编程Coding训练:N种优化哲学家就餐问题的方法
    • 4-12 并发基础篇:总结和思考题
    • 4-13 并发部分的通关Boss: 生成、发放大量红包并控制资金流速
  • LeetCode

  • 面试
  • 笑傲Java面试
pursuewind
2021-12-13
目录

4-1 解读:并发编程知识体系

# 解读:并发编程知识体系

这节课我给大家解读下并发编程的知识体系。

# 知识体系结构

image-20201118233605750

如图:这块知识可以分成4个维度去看,最上面的维度是解决方案。就是哪些场景可以用到并发编程,具体用什么手段去处理?比如说发红包怎么处理、抢购怎么处理、内存索引怎么处理、大量数据统计怎么处理?

下面一层是工具:想要出具解决方案,除了要了解自己遇到的问题,还需要学解决方案之下的一个个工具。Java提供了多种锁、同步器、并发数据结构,以及基于ExecutorService的轻量级计算框架。

再往下是Java底层能力:在解决问题的时候,我们要知道应该用那种工具,用那种能力?为了弄清,不同的场景需要用什么能力,我们就要深入这些工具的原理。深入原理,就免不了再往下了解这些工具具体是怎么实现的。这样就需要学习CAS/AQS/Lock/Condition这些——这些底层能力我们通常不会直接用到,而是去用Java提供的数据结构,比如BlockingQueu,TaskForkPool等。

在下面是真正的**底层,**可以和操作系统知识对应上,比如:context-switch什么时候发生,atomic如何实现,死锁和饥饿何时发生。

# 并发编程的知识图谱

大家经常会问我:

  • 并发编程学到什么程度?
  • 如果没处理过高并发能不能进大厂?

我觉得对于一名优秀的程序员,并发领域你应该是没有知识死角到。做到这一点,即便你没有做过高并发的场景,当你面对面试官,聊起并发的场景,依然可以和面试官说的头头是道。这样面试官就不用太纠结于你是否有实际的高并发经验,一样可以因为你对知识本身的了解程度录用你。 这也是我教学的目标。

根据上面的4层,我帮助大家整理了一份知识图谱。

image-20201118234403705

这是我根据我多年经验和咨询了一些专家,整理的一份知识图谱。这里面我用不同颜色区分开知识的内容,把并发编程部分分成下面几个部分:

  • (红色部分的)解决方案层面知识,也是对并发编程的整体认知
  • (紫色部分的)JVM底层知识
  • (橘黄色部分的)操作系统部分的底层知识
  • (绿色和蓝色部分的)工具、框架、应用类知识

大家加油!~

珍惜时间!

Last Updated: 2023/02/14, 18:02:00
3-11 总结和课后习题:白板篇-数据结构和算法
4-2 看看你的基础:Java线程状态之间如何转换?

← 3-11 总结和课后习题:白板篇-数据结构和算法 4-2 看看你的基础:Java线程状态之间如何转换?→

Theme by Vdoing | Copyright © 2019-2023 pursue-wind | 粤ICP备2022093130号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜
  • 网络DJ