北鸟南游的博客 北鸟南游的博客
首页
  • 前端文章

    • JavaScript
    • Nextjs
  • 界面

    • html
    • css
  • 计算机基础
  • 后端语言
  • linux
  • mysql
  • 工具类
  • 面试相关
  • 图形学入门
  • 入门算法
  • 极客专栏
  • 慕课专栏
  • 电影资源
  • 儿童动漫
  • 英文
关于我
归档
GitHub (opens new window)
首页
  • 前端文章

    • JavaScript
    • Nextjs
  • 界面

    • html
    • css
  • 计算机基础
  • 后端语言
  • linux
  • mysql
  • 工具类
  • 面试相关
  • 图形学入门
  • 入门算法
  • 极客专栏
  • 慕课专栏
  • 电影资源
  • 儿童动漫
  • 英文
关于我
归档
GitHub (opens new window)
  • 面试
  • 算法入门
  • 图形学入门
  • 极客专栏
  • 慕课专栏
    • 001-NestJS入门到实战前端必学服务端新趋势
    • 002-ReactNative+Redux打造高质量上线App
    • 003-typescript+reactNative开发喜马拉雅APP
    • 004-flutter入门,实战携程网app开发
    • 005-Vue3+TS打造企业级组件库前端中高级开发者必修课
    • 006-Vue3+Vite+TS,二次封装element-plus业务组件
    • 007-基于Vue3打造前台+中台通用提效解决方案
    • 008-React17+ReactHook+TS4最佳实践仿Jira企业级项目
    • 009-TS+React18全流程开发UI组件库
    • 010-WebGL+Threejs入门与实战-系统学习Web3D技术
    • 011-TypeScript高手,成为抢手的前端开发人才
    • 012-2021最新版uni-app从入门到进阶系统完成项目实战
    • 013-vue+go高性能企业级微服务网关
    • 014-前端性能优化--6大角度综合型优化方案
    • 015-Docker环境下的前后端分离项目部署与运维
    • 016-JavaScriptES(6-10)全版本语法大全
    • 017-编程必备基础大话HTTP协议
    • 018-Jest前端测试入门到TDD+BDD双实战
    • 019-TypeScript系统入门到项目
    • 020-TypeScript重构axios
    • 021-React源码深度解析视频教程
    • 022-JavaScript设计模式与开发实践
    • 023-Java并发编程与高并发解决方案
      • 课程目标
      • 课程介绍
    • 024-Google资深工程师深度讲解Go语言
    • 025-WebRTC入门与实战
    • 026-Socket网络编程
    • 027-程序员的高等数学课
    • 028-go仿阿里系优酷网-企业级Go改造PHP项目
    • 029-大学计算机必修课新讲--编译原理+操作系统+图形学
    • 030-Docker环境下的前后端分离项目部署与运维
  • vue3+vite封装element组件库
  • 基于云开发模式开发微信小程序
  • 珠峰培训资料
  • theme
  • mooc
北鸟南游
2024-07-17
目录

023-Java并发编程与高并发解决方案

# Java并发编程与高并发解决方案

本课程将结合大量图示及代码演示,带你掌握多线程并发编程(线程安全,线程调度,线程封闭,同步容器等)与高并发处理思路与手段(扩容,缓存,队列,拆分等),构建完整的并发与高并发知识体系

# 课程目标

  • 线程安全性
    • 原子性、可见性、有序性;
    • atomic包、CAS算法、synchronized与Lock、olatile、happens-before
  • 安全发布对象
    • 安全发布方法、不可变对象
    • final关键字使用、不可变方法
    • 线程不安全类与写法
  • 线程安全手段
    • 堆栈封闭、ThreadLocal线程封闭
    • JDBC的线程封闭、同步容器
    • 并发容器、J.U.C
  • AQS等其他J.U.C组件
    • CountDownLatch、Semaphore
    • CyclicBarrier、ReentrantLock与锁
    • Condition、FutureTask
    • Fork/Join框架、BlockingQueue
  • 线程调度(线程池)
    • new Thread弊端、线程池的好处
    • ThreadPoolExecutor、Executor框架接口
  • 线程安全补充内容
    • 死锁的产生与预防、多线程并发最佳实践
    • Spring的线程安全、HashMap和ConcurrentHashMap深入讲解

# 课程介绍

  • 第1章 课程介绍(了解本课程必看)
    • 课程目标:Java并发编程入门,适合没有并发编程经验的同学,本章首先从课程重点、特点、适合人群及学习收获几个方面对课程进行整体的介绍,然后会从一个实际的计数场景实现开始,给大家展示多线程并发时的线程不安全问题,让大家能够初体验到并发编程,之后会讲解并发和高并发的概念,并通过对比让大家明白到底什么是并发
  • 第2章 准备工作
    • 本章主要是为课程里代码演示做必要的准备。首先会基于SpringBoot快速搭建一个方便演示的Java项目,然后简单介绍一下码云及代码的管理。项目搭建好,我会使用简单的例子演示一下并发的模拟验证,主要包括对工具Postman、JMeter、Apache Bench(AB)的使用,以及使用并发的代码来验证并发处理的正确性。
  • 第3章 线程安全性讲解
    • 本章讲解线程安全性,主要从原子性、可见性、有序性三个方面进行讲解。原子性部分,会详细讲解atomic包下相关类、CAS原理、Unsafe类、synchronized关键字等的使用及注意事项。可见性部分,主要介绍的是volatile关键字的规则和使用,及synchronized关键字的可见性。有序性部分,则重点讲解了happens-before原则。
  • 第4章 安全发布对象讲解
    • 本章主要讲解安全发布对象的一些核心方法,主要通过单例类的多种实现方式,让大家在实现过程中去体会这些方法的具体含义。这一章也是对线程安全性的巩固,也是把线程安全性涉及的一些关键字和类再一次放到实际场景中使用,加深大家对他们的印象和认识。
  • 第5章 线程安全策略讲解
    • 本章主要讲解线程安全策略,包括定义不可变对象、线程封闭、同步容器、并发容器等,引出并发里的关键知识J.U.C。同时还额外介绍了开发中常见的一些线程不安全类和写法,并给出他们各自对应的替代方案。这一章涉及的内容在日常开发和面试中都会涉及很多。
  • 第6章 J.U.C之AQS讲解
    • AQS是J.U.C的重要组件,也是面试的重要考点。这一章里将重点讲解AQS模型设计及相关同步组件的原理和使用,都非常实用,具体包括:CountDownLatch、Semaphore、CyclicBarrier、ReentrantLock与锁、Condition等。这些组件需要大家能熟练明白他们的用途及差异,不但会使用,而且还要明确知道不同方法调用后的不同效果。
  • 第9章 多线程并发拓展讲解
    • 本章会对并发编程做些补充,但都贴近当前的面试,主要讲解死锁产生的条件及预防、多线程并发编程的最佳实践、Spring与线程安全、以及面试都特别喜欢问的HashMap和ConcurrentMap源码细节。当然,面试喜欢问的问题,对实际项目开发也是特别重要的。
  • 第10章 高并发之扩容思路
    • 高并发部分:主讲思路,侧重面试,本章主要讲扩容思路,首先介绍垂直扩容和水平扩容的区别,之后介绍数据库读操作扩展和写操作扩展思路。
  • 第11章 高并发之缓存思路
    • 高并发部分:主讲思路,本章讲解高并发中缓存方案。包含对缓存特征(命中率、最大元素、清空策略)、影响缓存命中率因素、缓存分类和应用场景(本地缓存、分布式缓存)、高并发场景下缓存常见问题(缓存一致性、缓存并发、缓存穿透、雪崩)等的具体介绍。此外,针对大家常用的缓存组件Guava Cache、Memcache、Redis
  • 第12章 高并发之消息队列思路
    • 高并发部分:主讲思路,本章介绍了消息队列的特性(业务无关、FIFO、容灾、性能)、为什么需要消息队列以及消息队列的好处(业务解耦、最终一致性、广播、错峰与流控),最后对当前比较流行的消息队列组件kafka和rabbitmq做了架构分析和特性介绍
  • 第13章 高并发之应用拆分思路
    • 本章直接从实际项目拆分步骤讲起,让大家可以实际感受到应用拆分的好处和解决的问题,之后引出对应用拆分原则(业务优先、循序渐进、兼顾技术、可靠测试)和应用拆分时思考的内容(应用之间通信、应用之间数据库设计、避免事务跨应用),并引出对服务化Dubbo和微服务Spring Cloud的框架介绍。
  • 第14章 高并发之应用限流思路
    • 高并发部分:主讲思路,本章从实际项目保存百万数据的限流场景开始讲起,让大家感受一下某些高并发场景下使用限流和不使用限流的区别,明确限流的重要作用。之后详细介绍了限流常用的四种算法:计数法、滑动窗口、漏桶算法和令牌桶算法,并对他们做了简单的对比。
  • 第15章 服务降级与服务熔断思路
    • 主讲思路,本章首先通过举例让大家明白什么是服务降级和服务熔断,之后介绍了服务降级的分类:自动降级(超时、失败次数、故障、限流)和人工降级(开关),总结了服务降级和服务熔断的共性(目的、最终表现、粒度、自治)和区别(出发原因、管理目标层次、实现方式)以及服务降级要考虑的问题。
  • 第15章 服务降级与服务熔断思路
    • 主讲思路,本章首先通过举例让大家明白什么是服务降级和服务熔断,之后介绍了服务降级的分类:自动降级(超时、失败次数、故障、限流)和人工降级(开关),总结了服务降级和服务熔断的共性(目的、最终表现、粒度、自治)和区别(出发原因、管理目标层次、实现方式)以及服务降级要考虑的问题。
  • 第16章 数据库分库分表与高可用手段
    • 高并发部分:主讲思路,本章从数据库瓶颈开始讲起,引出对数据库切库分库分表的介绍。数据库切库里重点介绍了读写分离的设计,对比支持多数据源和分库的区别;最后介绍了什么时候该考虑分表、横向分表与纵向分表,以及通过mybatis的分页插件shardbatis2.0实现数据库分表。之后介绍了高可用的三个常用手段:
  • 第17章 课程总结
    • 本章首先对本课程的知识进行总结回顾,然后针对面试中的并发问题与高并发问题进行提问,希望大家都能有所收获,并期待与大家共同探讨并发与高并发的话题。

课程原地址 (opens new window)

资源下载 (opens new window)提取码: http://dt3.8tupian.net/2/29369a309b200.pg1

编辑 (opens new window)
上次更新: 2025/04/19, 14:22:11
022-JavaScript设计模式与开发实践
024-Google资深工程师深度讲解Go语言

← 022-JavaScript设计模式与开发实践 024-Google资深工程师深度讲解Go语言→

最近更新
01
色戒2007
04-19
02
真实real
04-19
03
Home
更多文章>
Theme by Vdoing | Copyright © 2018-2025 北鸟南游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式