![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
第十阶段、底层调优与算法深入
文章平均质量分 51
模块一、数据结构、算法
模块二、并发编程、JVM优化、Linux优化
坐在西半球上
努力努力。
展开
-
java虚拟机的内存管理
一、JVM整体架构二、JVM运行时内存2.1 PC 程序计数器2.2 虚拟机栈2.3 本地方法栈2.4 堆2.5 元空间2.6 方法区2.7 运行时常量池2.8 直接内存三、实战OutOfMemoryError异常原创 2021-04-28 11:36:21 · 1224 阅读 · 0 评论 -
JVM的回顾
JVM的回顾原创 2021-04-28 11:33:53 · 110 阅读 · 0 评论 -
10-2-2 JVM学习目录
10-2-2 JVM学习目录原创 2021-04-22 17:47:46 · 88 阅读 · 0 评论 -
Phaser
Phaser原创 2021-04-22 17:44:33 · 103 阅读 · 0 评论 -
Exchanger
Exchanger原创 2021-04-22 17:43:59 · 96 阅读 · 0 评论 -
CyclicBarrier
CyclicBarrier原创 2021-04-22 17:43:26 · 76 阅读 · 0 评论 -
StampedLock
StampedLock原创 2021-04-22 17:41:57 · 70 阅读 · 0 评论 -
ReentrantReadWriteLock
ReentrantReadWriteLock原创 2021-04-22 17:41:17 · 119 阅读 · 0 评论 -
ReentrantLock
ReentrantLock原创 2021-04-22 17:40:43 · 61 阅读 · 0 评论 -
Condition
Condition原创 2021-04-22 16:07:10 · 135 阅读 · 0 评论 -
HashMap经典20问
2、自定义线程池Java 创建线程池的方法有:1、 通过 ThreadPoolExcetor 或者 ScheduledThreadPoolExcutor 。2、通过Executors 的工具类创建四个java默认的线程池、但是阿里使用手册明确表示线程池不能使用Executors创建。因为 :1、默认的线程池名字是默认的不方便排查。2、底层使用的无限队列,会造成系统内存过大,或者系统假死。从图中可以看到 线程的名字生成规则、代码很简单,就是package com.lagou.threadp原创 2021-04-21 10:34:28 · 263 阅读 · 0 评论 -
ThreadLocal
ThreadLoad原创 2021-04-20 21:21:57 · 89 阅读 · 2 评论 -
线程池
线程学习:https://blog.csdn.net/qq_42082278/article/details/1074651021、线程池的实现原理下图所示为线程池的实现原理:调用方不断地向线程池中提交任务;线程池中有一组线程,不断从队列中取任务,这是一个典型的生产者-消费者模型...原创 2021-04-20 18:50:33 · 129 阅读 · 0 评论 -
CountDownLatch
CountDownLatch原创 2021-04-20 13:29:51 · 92 阅读 · 0 评论 -
AQS
AQSAQS的实现原理是什么java API中哪些类中使用了AQS原创 2021-04-20 09:27:57 · 97 阅读 · 0 评论 -
CAS详解
目录四、CAS存在三大问题4.1 ABA问题4.2 循环时间长开销大4.3 只能保证一个共享变量的原子操作CAS (Compare-And-Swap),即比较替换,是实现并发应用到的一种技术。操作包含三个操作数:内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。四、CAS存在三大问题4.1 ABA问题4.2 循环时间长开销大4.3 只能保证一个共享变量的原子操作...原创 2021-04-20 09:26:48 · 219 阅读 · 0 评论 -
Semaphore
Semaphore也就是信号量,提供了资源数量的并发访问控制,其使用代码很简单,如下所示:原创 2021-04-20 08:57:08 · 77 阅读 · 0 评论 -
BlockingDeque
BlockingDeque原创 2021-04-19 22:45:28 · 62 阅读 · 0 评论 -
BlockingQueue
目录在所有的并发容器中,BlockingQueue是最常见的一种。BlockingQueue是一个带阻塞功能的队列,当入队列时,若队列已满,则阻塞调用者;当出队列时,若队列为空,则阻塞调用者。在Concurrent包中,BlockingQueue是一个接口,有许多个不同的实现类,如图所示...原创 2021-04-19 22:43:52 · 123 阅读 · 0 评论 -
JMM内存模型
一、 JMM与happen-before1.1 为什么会存在“内存可见性”问题下图为x86架构下CPU缓存的布局,即在一个CPU 4核下,L1、L2、L3三级缓存与主内存的布局。每个核上面有L1、L2缓存,L3缓存为所有核共用。...原创 2021-04-19 18:02:08 · 252 阅读 · 0 评论 -
并发
一、并发核心概念1、 并发与并行2、同步3、不可变对象4、原子操作和原子变量5、共享内存与消息传递二、并发的问题原创 2021-04-19 18:00:41 · 458 阅读 · 0 评论 -
线程的优雅关闭
1、 stop与destory函数线程是“一段运行中的代码”,一个运行中的方法。运行到一半的线程能否强制杀死?不能。在Java中,有stop()、destory()等方法,但这些方法官方明确不建议使用。原因很简单,如果强制杀死线程,则线程中所使用的资源,例如文件描述符、网络连接等无法正常关闭。因此,一个线程一旦运行起来,不要强行关闭,合理的做法是让其运行完(也就是方法执行完毕),干净地释放掉所有资源,然后退出。如果是一个不断循环运行的线程,就需要用到线程间的通信机制,让主线程通知其退出。...原创 2021-04-19 17:55:47 · 83 阅读 · 0 评论 -
InterruptedException与interrupt()方法
Interrupted异常什么情况下会抛出Interrupted异常假设while循环中没有调用任何的阻塞函数,就是通常的算术运算,或者打印一行日志,如下所示2、 轻量级阻塞与重量级阻塞能够被中断的阻塞称为轻量级阻塞,对应的线程状态是WAITING或者TIMED_WAITING;而像synchronized 这种不能被中断的阻塞称为重量级阻塞,对应的状态是 BLOCKED。如图所示:调用不同的方法后,一个线程的状态迁移过程。初始线程处于NEW状态,调用start()开始执行后,进入RUNNING原创 2021-04-19 17:55:04 · 234 阅读 · 0 评论 -
wait与notify
这里写目录标题一、案例:生产者−消费者模型1.1 介绍1.2 如何阻塞1.3 如何双向通知1.4 为什么必须和synchronized一起使用1.5 为什么wait()的时候必须释放锁1.6 wait()与notify()的问题一、案例:生产者−消费者模型1.1 介绍生产者-消费者模型是一个常见的多线程编程模型,如下图所示:一个内存队列,多个生产者线程往内存队列中放数据;多个消费者线程从内存队列中取数据。要实现这样一个编程模型,需要做下面几件事情:内存队列本身要加锁,才能实现线程安全。阻塞。原创 2021-04-19 17:53:03 · 162 阅读 · 0 评论 -
synchronized 关键字
目录1、锁的对象2、锁的本质3、实现原理1、锁的对象synchronized关键字"给某个对象加锁",实例代码public Class MyClass { public void synchronized method1() { // ... }public static void synchronized method2() { // ... } }等价于:public class MyClass { public void method1() { synchroniz原创 2021-04-19 17:33:23 · 109 阅读 · 0 评论 -
Java中的线程
这里写目录标题原创 2021-04-19 15:15:38 · 68 阅读 · 0 评论 -
10-2-1 并发编程的学习目录
一、多线程回顾1.1 Thread和Runnable原创 2021-04-19 15:12:07 · 298 阅读 · 0 评论 -
10-1-2 数据结构与算法高级(下)
一、数据结构1.1 树树的概念有很多数据的逻辑关系并不是线性关系,在实际场景中,常常存在着一对多,甚至是多对多的情况。家谱:组织结构:书的目录:原创 2021-03-11 10:33:41 · 875 阅读 · 0 评论 -
10-1-1 数据结构与算法(上)
数据结构与算法概述原创 2021-03-07 17:50:52 · 339 阅读 · 0 评论 -
第十阶段、底层调优与算法深入(未学习,只有目录,内容后面学到补上
目录概述模块一、数据结构、算法模块二、并发编程、JVM优化、Linux优化概述底层调优和算法是架构师必备技能之一,有时项目性能瓶颈是要通过底层调优实现的,而一些高级的内核和引擎开发往往是需要一些精良算法才能完成的。模块一、数据结构、算法本模块会讲解算法高级内容,例如高级数据结构、排序、递归与回溯、深度与广度优先搜索、动态规划、二分搜索与贪婪算法等。模块二、并发编程、JVM优化、Linux优化本模块会深入讲解线程高级部分,例如线程状态机制分析与线程池实现原理、抽象队列化同步器AQS等,还会深入原创 2020-11-11 09:55:49 · 441 阅读 · 0 评论