高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被ADC暴击了一样,那伤害你懂得(如果你看懂了,这个说法说明是正在奔向人生巅峰的屌丝。
高并发会来带的后果
-
服务端:
导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:出现重复的数据记录,多次添加了用户积分等。 -
用户角度:
尼玛,这么卡,老子来参加活动的,刷新了还是这样,垃圾网站,再也不来了。 -
我的经历:
在做公司产品网站的过程中,经常会有这样的需求,比如什么搞个活动专题,抽奖,签到,搞个积分竞拍等等,如果没有考虑到高并发下的数据处理,那就Game Over了,很容易导致抽奖被多抽走,签到会发现一个用户有多条记录,签到一次获得了获得了多积分,等等,各种超出正常逻辑的现象,这就是做产品网站必须考虑的问题,因为这些都是面向大量用户的,而不是像做ERP管理系统,OA系统那样,只是面向员工。
下面我分享这份阿里P8大佬手写的高并发笔记,简单粗暴,动态分析,纯属大佬本人经验分享,一起留言讨论,大家一起成长。
Java高并发笔记(阿里手写版)
第一篇:必须知道的几个概念
-
同步( Synchr onous)和异步(Asynchr onous)
-
并发( Concurrency)和并行(raralleli sm)
-
临界区
-
阻塞( Blocking)和非阻塞(Hon-Blocking)
-
死锁( Deadlock)、饥饿( St arvation)和活锁(Livelock)
-
死锁的例子饥饿死锁的例子
第二篇:并发级别
-
阻塞
-
无饥饿(St arvation-Free)
-
无障碍(Obstruction-Free)
-
无锁Lock -Free)无等待
第3篇:有关并行的两个重要定律
-
mdahl阿姆达尔)定律
-
Gustafson定律
第4篇:JMM相关的一些概念
-
原子性
-
可见性
-
有序性
第5篇:深入理解进程和线程
-
进程
-
线程
-
进程与线程的一个简单解释
第6篇:线程的基本操作
-
新建线程
-
终止线程线程中断
-
等待(wait)和通知(notify)
-
挂起(suspend)和继续执行(resume)线程
-
等待线程结束(join)和谦让(yeild)
-
总结
第7篇:volatile与Java内存模型
第8篇:线程组
-
线程组
-
创建线程关联线程组
-
为线程组指定父线程组
-
根线程组
-
批里停止线程
第9篇:用户线程和守护线程
-
程序只有守护线程时,系统会自动退出
-
设置守护线程:需要在start0方法之前进行
-
线程daemon自的默认值
-
总结
第10篇:线程安全和synchronized
-
什么是线程安全?
-
synchronized主要有3种使用方式
-
ynchr oni zed作用于实例对象
-
synchr onized作用于静态方法
-
synchroni zed同步代码块
第11篇:中断线程的几种方式
-
通过一个变里控制线程中断
-
通过线程自带的中断标志控制
-
线程阻塞状态中如何中断总结
第12篇:JC中ReentrantLock
-
synchronized的局限性
-
ReentrantLock
-
ReentrantLock基本使用
-
ReentrantLock是可重入锁
-
ReentrantLock实现公平锁
-
EeentrantLock获取锁的过程是可中断的
-
ReentrantLock锁申请等待限时
-
tryLock无参方法tryLock有参方法
-
ReentrantLock其他常用的方法
-
获取锁的4种方法对比
-
总结
第13篇:Jc中的Condition本文目标
-
synchronized中等待和唤醒线程示例
-
condition使用简介Condition常用方法
-
ondi ti on. await (过程中被打断
-
awai t (1long time,TimeUni t uni t)超时之后自动返回
-
await (long time,Timelnit unit)超时之前被唤醒
-
long awaitHanos(ong nanosTimeout)超时返回
-
waitHanos (long nanosTimeout)超时之前被唤醒
-
同一个锁支持创建多个Condition
-
0bject的监视器方法与Condition接口的对比
-
总结
第14篇:J中的LockSupport工具类,必备技能
-
使用0bject类中的方法实现线程等待和唤醒
-
使用Condition实现线程的等待和唤醒
-
bject和Condition的局限性
-
LockSupport类介绍
-
线程等待和唤醒的3种方式做个对比
第15篇:膊中的Semaphore i信号量)
第16篇:J心中等待多线程完成的工具类CountDownLat ch
第17篇:JC中的循环栅栏cyclicBarri er
第18篇: java中的线程池
第19篇:JUC中的Execut or框架详解1
第20篇:JUC中的Extecut or框架详解2
第21篇: java中的CAS
第22篇: java中的UnSafe类
第23篇:JUC中的原子操作类
第24篇: java中的ThreadLocai1、Inheri tableThreadLocal
第25篇:JUC中的阻塞队列第26篇:J吧中一些常见的集合
第26篇:JUC中一些常见的集合
第27篇:实战:你的接口太慢了需要优化
第28篇:实战:构建日志系统
l第29篇:实战:—起来搞懂限流
第30篇:JUC中的CompletableFuture
第31篇:等待线程完成的方式你知道几种?
第32篇:原子操作增强类LongAdder 、 LongAccumulator
第33篇:怎么演示平锁和非公平锁
第34篇:谷歌提供的一些好用的并发工具类
由于篇幅原因,相关面试资料仅展示部分截图,图片上传被压缩可能导致看不清,在此致歉,另外,资料全部真实有效,并且已全部打包成PDF文档,有需要的朋友可以点击下方的名片自取!