自定义博客皮肤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)
  • 收藏
  • 关注

原创 [MySQL优化] explain性能分析:id, select_type, type, keys, extras

[MySQL优化] explain性能分析:id, select_type, type, keys, extras性能分析:explainMySQL Query OptimizerExplain 介绍Explain 作用Explain 输出idselect_typetypepossible_keyskeyskey_lenrefrowsExtrasUsing filesort:排序索引失效Using temporary:临时表Using Index:索引被使用覆盖索引Using where:使用WhereUs

2021-02-16 22:43:51 466

原创 [Java并发] [6] 单例模式下双重锁定(DCL)的问题和解决方案

[Java并发] 单例模式下双重锁定 问题和解决方案双重检查锁定 DCL 与延迟初始化解决方案1:基于Volatile解决方案2:基于类初始化的懒加载来自阅读Java并发编程的艺术读书笔记,按照自己思路写了一些整理,综合了网上的一些博文和资料本篇来源于Java并发编程的艺术 Ch3.8 内容同样是一段总结:DCL-Double Check Lock进行初始化动作,可能因重排序(构造-赋值到实例引用)造成线程不安全问题通过Volatile-instance禁止重排序(Volatile用Bar

2021-01-27 20:27:20 277 1

原创 [Java并发] [5] 锁与final在内存中的表现与原理

[Java并发] 锁与final在内存中的表现与原理锁的内存语义上锁与解锁:Volatile读与写锁内存语义的实现:Volatile操作或lock前缀concurrent 包的实现final 域的内存语义final 域的重排序规则final 域为引用类型来自阅读Java并发编程的艺术读书笔记,按照自己思路写了一些整理,综合了网上的一些博文和资料本篇来源于Java并发编程的艺术 Ch3.5 3.6 内容参考资料:Java 并发编程的艺术锁的内存语义上锁与解锁:Volatile读与写大家都知

2021-01-27 18:01:37 235

原创 [Java并发] [4] Volatile 内存操作语义与原理

[Java并发] Volatile 内存操作语义与原理Volatile 内存语义volatile 读/写的内存语义:主内存操作volatile 内存语义的实现:内存屏障历史博文来自阅读Java并发编程的艺术读书笔记,按照自己思路写了一些整理,综合了网上的一些博文和资料本篇来源于Java并发编程的艺术 Ch3.4 内容Volatile 内存语义先上总结:Volatile变量具有以下特性可见性:一个Volatile的写,对后序其他线程一定可见单操作原子性:任意单读/写都是原子的,即使Vol

2021-01-27 17:56:15 98

原创 [Java并发] [3] JMM内存模型 happens-before 顺序一致性

[Java并发] JMM内存模型 happens-before 顺序一致性Java 内存模型的基础并发模型的两个关键问题Java 内存模型的抽象结构重排序与happens-before从源代码到指令序列的重排序happens-beforeas-if-serial顺序一致性JMM同步程序:“顺序一致性”效果JMM未同步程序:最小安全性历史博文来自阅读Java并发编程的艺术读书笔记,按照自己思路写了一些整理,综合了网上的一些博文和资料本篇来源于Java并发编程的艺术 Ch3.1 3.2 3.3 内容参

2021-01-27 17:43:07 219 2

原创 [Java并发] [2] Java-原子操作 CAS方法

[Java并发] Java-原子操作 CAS方法原子操作CPU 实现原子操作基本内存操作原子性复杂内存操作原子性总线锁缓存锁Java - CAS 实现原子操作Java - CAS 问题ABA 问题循环时间长 - 开销大只能保证一个共享变量原子操作CAS 原子操作示例Java 使用锁机制实现原子操作来自阅读Java并发编程的艺术读书笔记,按照自己思路写了一些整理,综合了网上的一些博文和资料本篇来源于Java并发编程的艺术 Ch2.3 内容参考资料:Java 并发编程的艺术浅谈偏向锁、轻量级锁、重

2021-01-25 19:39:21 114

原创 [Java并发] [1] synchronized 锁升级 偏向锁 轻量级锁 自旋锁笔记

[Java并发] synchronize 锁升级 偏向锁 轻量级锁 自旋锁笔记synchronized 实现原理与应用Java 对象头 - synchronized 锁锁的升级:自旋锁、自适应自旋锁、轻量级锁与偏向锁自旋锁自适应自旋锁轻量级锁偏向锁锁对比锁不可降级锁粗化锁消除来自阅读Java并发编程的艺术读书笔记,按照自己思路写了一些整理,综合了网上的一些博文和资料本篇来源于Java并发编程的艺术 Ch2.2 内容synchronized 实现原理与应用首先理清synchronized与重量级

2021-01-25 19:28:55 332

原创 Java多线程核心技术5 - Timer 定时任务、schedule 与 scheduleAtFixedRate

Java多线程核心技术5 - Timer 定时任务、schedule 与 scheduleAtFixedRate5. Timer 定时器5.1 定时器Timer计划时间早于当前时间多个TimerTask任务与延时5.2 schedule vs. scheduleAtFixedRate比较 schedule 与 scheduleAtFixedRate来自阅读Java多线程编程核心技术的读书笔记,按照自己思路写了一些整理越读越感觉这本书是一本“口水书”,有堆砌代码案例的嫌疑,看上去感觉更像是一本“博文集”

2021-01-24 17:22:20 1052

原创 Java多线程核心技术4 - ReentrantLock 和 ReentrantReadWriteLock 的使用

Java多线程核心技术4 - ReentrantLock 和 ReentrantReadWriteLock 的使用4. ReentrantLock 和 ReentrantReadWriteLock 的使用4.1 ReentrantLock 可重入锁文档浏览ReentrantLock 使用案例Condition 实现等待/通知Condition 实现生产者-消费者公平锁和非公平锁三个getCount方法三个has()方法两个isHeld/Locked方法lockInterruptibly / awaitUni

2021-01-24 16:27:55 145

原创 Java多线程核心技术3 - 线程间通信

3. 线程间通信线程之间的通信是实现同步处理的重要方式,若不用等待/通知机制实现线程间通信,则可以让一个线程轮询等待/检测某个条件。但是这样做的缺点有:浪费CPU执行资源;如果轮询的时间间隔小,则更浪费CPU资源如果轮询的间隔时间长,则可能取不到想要的数据3.1 wait/notify 机制wait() / notify()方法均要求调用前,线程获得对象级别的锁,即进入synchronized代码块/同步方法如果执行wait/notify之前没有获得对象级锁,则抛出Illegal

2021-01-23 23:19:37 131

原创 Java多线程核心技术2 - 对象和变量的并发访问

Java多线程核心技术2 - 对象和变量的并发访问2. 对象和变量的并发访问2.1 为什么产生线程安全问题2.2 synchronized 同步方法synchronized 可重入、继承可重入异常自动释放同步不具有继承性2.3 synchronized 同步语句块对象监视器静态同步 synchronized 方法 & synchronized(class) 方法块String 常量池特性与synchronized2.4 volatile 关键字保证变量可见性非原子性特征volatile vs syn

2021-01-23 14:54:54 125

原创 Java多线程核心技术1 - 多线程技能

Java多线程核心技术1-多线程技能Java多线程技能1.1 使用多线程继承Thread类实现Runnable接口线程安全问题1.2 Thread相关方法currentThread()isAlive()sleep()getId()yield()1.3 停止线程stop() 方法停止状态利用 interrupt 优雅停止非睡眠状态:利用异常停止睡眠状态:利用异常停止非睡眠状态:利用return停止1.4 暂停线程suspend 与 resume独占不同步1.5 线程优先级1.6 守护线程来自阅读Java多

2021-01-22 23:01:50 97

原创 [线段树] 线段树 II

[线段树] 线段树进阶问题区间覆盖问题问题:x轴被一些线段覆盖,每根线段的起点、终点均不同,考虑x轴被覆盖住的总长度若仅仅用一般的线段树方法,对于每一根线段都需要深到其最深处的那个单个长度节点,以此做标记。更好的方法是对线段树的每一个节点都添加一个cover标记,当cover=1时,证明此节点及其下属节点均被覆盖。所以下虑过程就可以停止了。插入线段[6, 10],即覆盖了6、7-8...

2020-03-04 15:27:27 120

原创 [4-树] P1937 Barn Allocation G - 线段树+贪心

题目描述农夫约翰最近开了一个新的牲口棚屋,并且现在接受来自奶牛的分配畜栏请求因为其中的一些畜栏有更好风景。畜栏包括N个畜栏(1 ≤ N ≤ 100,000),方便起见,我们把它们编号为1…N,畜栏i能容纳Ci只牛(1 ≤ Ci ≤ 100,000),第i只牛需要连续编号畜栏(从Ai到Bi)来漫步其中,(1 ≤ Ai ≤ N; Ai ≤ Bi ≤ N),换言之,这只牛想要在编号范围为Ai...

2020-03-04 00:29:31 163

原创 [4-树] 最大树 - 线段树

最大树 - 线段树题目描述现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。(L>0)2、 插入操作。语法:A n功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末...

2020-03-03 23:32:11 178

空空如也

空空如也

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

TA关注的人

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