自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 JVM——类加载机制

这里写目录标题类加载过程加载验证准备解析初始化双亲委派机制类加载过程加载1)通过一个类的全限定名来获取定义此类的二进制字节流2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口哦。验证确保Class文件的字节流中包含的信息符合《Java虚拟机规范》的全部约束要求,保证这些信息被当做代码正确运行后不会危害虚拟机自身的安全。准备为类中定义的变量,也就是被static修饰过的静

2020-06-17 15:18:50 171 1

原创 JVM——GC详解

这里写目录标题理论模型需要回收的对象的判断引用计数法可达性分析特例 finalize() 方法。通用理论模型标记-清除算法标记-整理算法标记-复制算法实际垃圾收集器年轻代垃圾收集器老年代垃圾收集器G1垃圾收集器(老年代与年轻代都可以使用)低延迟垃圾收集器ZGC理论模型需要回收的对象的判断引用计数法在对象中添加引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效是,计数器值减一。任何时刻,计数器为0,说明该对象不再被使用。如果出现循环引用的问题,引用计数法很难解决。可达性分析通过一系

2020-06-16 16:23:32 380

原创 Java并发编程——AQS之共享式同步状态的获取与释放

这里写目录标题共享式获取void acquireShared(int arg)void doAcquireShared(int arg)全图共享式释放boolean releaseShared(int arg)共享式获取void acquireShared(int arg)//同步器调用tryAcquireShared获取同步状态,当返回值大于0 时,表示能够获取同步状态。public final void acquireShared(int arg) { if (tryAcquir

2020-06-11 00:25:39 303

原创 JVM——Java内存区域

这里写目录标题运行时数据区程序计数器栈逃逸分析栈帧局部变量表操作数栈动态链接方法出口本地方法栈堆方法区运行时常量池直接内存HotSpot虚拟机对象探秘对象创建对象内存布局对象头MarkWork类型指针数组长度——数组类型独有实例数据对其填充对象的访问定位句柄直接指针对比运行时数据区程序计数器线程私有;唯一不产生OOM的情况;指定当前执行的字节码行号。栈线程私有;StackOverflowError:栈深度不够(比如递归调用);OutOfMemoryError:扩展无法申请到足够内存。注意

2020-06-10 17:04:31 262

原创 Java并发编程——AQS之独占式同步状态的获取与释放

这里写目录标题独占式获取acquirevoid acquire(int arg)独占式释放release二级目录三级目录独占式获取acquirevoid acquire(int arg)/***这里的acquire方法目的就是在获取失败时,能够自旋*这里的if判断就实现了这一功能*如果想要产生自旋,那么就要同时满足if的两个条件*1.tryAcquire(arg)失败,就是说此时尝试获取当前节点失败*2.同时,acquireQueued成功,就是。**/public final voi

2020-06-09 17:07:33 175

原创 Java源码——AQS源码分析

这里写目录标题packageimport类内部类codeNode内部类变量方法构造函数AQS变量AQS方法队列工具二级目录三级目录packagepackage java.util.concurrent.locks;importimport java.util.concurrent.TimeUnit;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import sun.misc.Unsa

2020-06-08 01:29:14 132

原创 Java并发编程——线程池与Executor

这里写目录标题线程池核心参数corePoolSizemaximumPoolSizekeepAliveTime 与 unitrunnableTaskQueuethreadFactoryRejectedExecutionHandler(饱和策略)线程池的处理流程Executor框架成员ThreadPoolExecutorSingleThreadExecutorFixedThreadPoolCachedThreadPoolScheduledThreadPoolExecutorDelayedWorkQueueSch

2020-06-04 23:16:24 144

原创 Java并发编程——工具类

这里写目录标题Semaphore(信号量)CountDownLatch(倒计时器)CyclicBarrier (循环栅栏)Semaphore(信号量)资源访问,服务限流无论是synchronized或者是ReentrantLock,一次都只允许一个线程访问一个资源,Semaphore可以指定多个线程,同时访问一个资源。必须指定Semaphore的准入数,即同时可以申请多少个许可。public Semaphore(int permits)public Semaphore(int permits,

2020-06-03 23:11:15 109

原创 Java并发编程——线程间通信:Synchronized与Monitor

这里写目录标题volatile总线风暴synchronized与Monitorsynchronized等待通知机制Thread.join()ThreadLocal 与内存泄漏volatile关键字volatile可以修饰字段,就是告知程序任何对该变量的访问都需要先从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。但是过多的使用,会降低程序执行的效率。总线风暴由volatile关键字修饰的变量在工作内存和主内存产生大量交互(无效交互),会产生大量无效工作内存变

2020-06-03 01:31:42 225

原创 深入理解Mysql——锁与事务隔离级别

这里写目录标题锁分类表锁行锁间隙锁事务隔离级别MVCC机制锁分类从性能上分类:乐观锁和悲观锁从数据库操作类型分类:读锁和写锁从数据操作粒度分类:表锁和行锁表锁每次加锁锁住整张表,开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲 突的概率最高,并发度最低;对于不同的数据库引擎,有不同的设定MyISAM中只有表锁,没有行锁。MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行增删改 操作前,会自动给涉及的表加写锁。对MyISAM表的读操作(加读锁) ,不会阻寒

2020-05-29 16:10:35 125

原创 Java并发编程——同步机制(volatile,synchronized,(AQS)Lock)

这里写目录标题volatilevolatile内存语义的实现synchronized作用synchronized是JVM内置锁synchronized用法加锁原理锁升级优化对象数据结构(对象头,32位)不可中断可重入非公平原子性有序性可见性Lock接口附录二级目录三级目录volatile修饰变量volatile是Java虚拟机提供的轻量级的同步机制。volatile关键字有如下两个作用- 保证被volatile修饰的共享变量对所有线程总数可见的- 禁止指令重排序优化。volatile保证了可见性

2020-05-23 23:30:42 270

原创 深入理解Mysql——索引底层数据结构与算法

这里写目录标题索引数据结构二叉搜索树红黑树Hash表B-TreeB+Tree索引是怎么支撑千万级表的快速查找存储引擎MyISAM(非聚集)InnoDB(聚集)联合索引底层数据结构索引数据结构二叉搜索树对于二叉搜索树来说,他的左子树的所有节点都要小于根节点,他的右子树的所有节点都要大于根节点。但是如果输入的数据顺序本身就是有序的(比如数据节点是从小到大排序好的,就会出现下图的问题)。从时间复杂度分析:之所以采用二叉树的形式存储数据,就是为了将链表的时间复杂度O(n),降低为O(logn),如果出现下图

2020-05-21 20:56:24 140

原创 Java并发编程——JMM

这里写目录标题为什么用并发JMM模型二级目录三级目录为什么用并发JMM模型二级目录三级目录

2020-05-19 23:09:43 179

原创 Java并发编程—— 底层基础概念

目录《组成原理》——硬件计算机五大核心组件:与JMM相关的硬件结构缓存行加锁缓存一致性问题缓存一致性协议: MESI指令重排与指令流水《操作系统》——线程基础什么是线程线程分类用户级线程(User-Level Thread)内核线线程(Kernel-Level Thread)Java线程与系统内核的关系Java线程的生命状态《组成原理》——硬件计算机五大核心组件:控制器(Control)运算器(Datapath)存储器(Memory)输入(Input System)输出(Output Sys

2020-05-18 20:36:53 244

原创 IntelliJ 快捷键

复制网页上的代码,每一行都有数字行标,要去除:control+R(打开替换工具栏)--> 勾选右侧 Regex --> 左侧输入框中输入 ^\s*\d+ (注意:下部的输入框要空着)--> Replace all实现 parallel run下一步,勾选Allow parallel runcontrol+alt+u,打开方法的接口和父类图。...

2019-12-16 14:51:36 116 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除