<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BaiHang111的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BaiHang111</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BaiHang111]]></copyright><item><title><![CDATA[JUC(8):AQS重点总结]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686198</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686198</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:22:20 +0800</pubDate><description><![CDATA[AQS其实就是一个由volatile+CAS机制实现的==构建锁的框架==同步器。==同步器的设计是基于模板方法模式的==

### AQS结构：

- volatile 修饰的 int ==State属性==（共享资源）：
  - 因为 state 是使用 volatile 修饰，所以在多线程之间可见，访问 state 的方式有 3 种，getState()、setState()和 compareAndSetState()。
  - State有3种状态：0-没人占用，1-被占用了，大于1-可重入锁。
-]]></description><category></category></item><item><title><![CDATA[JUC(7): ThreadLocal重点总结]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686186</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686186</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:20:57 +0800</pubDate><description><![CDATA[ThreadLocal重点总结：### 概念：

- 每个线程都有本地私有的`独立变量副本`。	==很多人抢一个公共电话  ---->   每个人都有自己的手机！==

- ThreadLocal的作用主要是做**数据隔离**，==填充的数据只属于当前线程==，变量的数据对别的线程而言是相对隔离的，在多线程环境下，如何防止自己的变量被其它线程篡改。...]]></description><category></category></item><item><title><![CDATA[JUC(6): Future异步任务重点总结]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686169</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686169</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:19:28 +0800</pubDate><description><![CDATA[## Future异步任务

Future 接口表示异步任务，是还没有完成的任务给出的未来结果。

### **1、FutureTask**

- **作为线程：**实现了Runnable接口
- **异步处理：**实现了Future接口
- **有返回值：**构造器注入Callable...]]></description><category></category></item><item><title><![CDATA[JUC(5): 各种锁重点汇总]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686134</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686134</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:18:08 +0800</pubDate><description><![CDATA[各种锁重点汇总：公平锁、自旋锁、死锁、乐观悲观锁、锁升级、锁粗化、读写锁、锁降级、邮戳锁]]></description><category></category></item><item><title><![CDATA[JUC(4): 深入理解CAS]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686097</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686097</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:15:25 +0800</pubDate><description><![CDATA[CAS ： 比较当前工作内存中的值和主内存中的值，如果这个值是期望的旧值，那么则执行操作！如果不是就一直循环！（==自旋锁==）

- **CAS是一种**系统原语，**也就是说CAS是一条CPU的原子指令，不会造成所谓的数据不一致问题。**...]]></description><category></category></item><item><title><![CDATA[JUC（3）：详解Volatile（轻量级同步机制）+JMM（内存模型）]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686034</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686034</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:10:01 +0800</pubDate><description><![CDATA[详解Volatile（轻量级同步机制）+JMM（内存模型）]]></description><category></category></item><item><title><![CDATA[JUC(2): 阻塞队列+线程池（重点）+新时代程序员必会]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125686005</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125686005</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:08:10 +0800</pubDate><description><![CDATA[阻塞队列+线程池（重点）+新时代程序员必会（- lambda表达式
- 链式编程
- 函数式Function接口：只有一个方法的接口,（Consumer接口,Predicate接口,Supplier接口）
- Stream流式计算）]]></description><category></category></item><item><title><![CDATA[JUC(1): LockSupport工具类]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125685979</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125685979</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:06:19 +0800</pubDate><description><![CDATA[LockSupport工具类(底层调用了 Unsafe 类)：**

- `LockSupport`类可以阻塞当前线程以及唤醒指定被阻塞的线程
  - Lock Support是一个线程阻塞工具类，有静态方法，LockSupport调用的==Unsafe中的native代码。==
  - Lock Support提供`park()` 和`unpark() `方法实现**在随意位置阻塞线程** 和 **解除线程阻塞**的过程（不必在同步代码块中）......]]></description><category></category></item><item><title><![CDATA[JUC（0）: 常见*Notes：]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125685913</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125685913</guid><author>BaiHang111</author><pubDate>Fri, 08 Jul 2022 21:04:18 +0800</pubDate><description><![CDATA[LockSupport工具类，阻塞线程的方法，对象内存布局，AtomicLong 原子类与**LongAdder**，**线程中断**：（线程自己中断自己，自己决定自己的命运！），ConcurrentModificationException 集合类并发修改异常，CountDownLatch，
CyclicBarrier，Semaphore......]]></description><category></category></item><item><title><![CDATA[JVM(5) 并发内存模型JMM]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125529359</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125529359</guid><author>BaiHang111</author><pubDate>Wed, 29 Jun 2022 20:53:26 +0800</pubDate><description><![CDATA[JMM 即 Java Memory Model，它定义了**主存（共享内存）、工作内存（线程私有）**抽象概念

- **原子性** - 保证指令不会受到线程上下文切换的影响
- **可见性** - 保证指令不会受 cpu 缓存的影响
- **有序性** - 保证指令不会受 cpu 指令并行优化的影响...]]></description><category></category></item><item><title><![CDATA[JVM（4） 字节码技术+运行期优化]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125520430</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125520430</guid><author>BaiHang111</author><pubDate>Wed, 29 Jun 2022 13:43:44 +0800</pubDate><description><![CDATA[类文件结构 、字节码指令、语法糖
即时编译、逃逸分析（Escape Analysis）、方法内联]]></description><category></category></item><item><title><![CDATA[JVM（3） 类加载]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125520410</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125520410</guid><author>BaiHang111</author><pubDate>Wed, 29 Jun 2022 13:41:22 +0800</pubDate><description><![CDATA[1、类加载阶段
1） 加载
将类的字节码载入方法区（元空间jdk1.8），内部采用C++
有父类先加载父类
反射是通过对象头class地址找到元空间中Class类对象，从中获取_fields, _methods等信息！]]></description><category></category></item><item><title><![CDATA[JVM(2) 垃圾回收]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125520297</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125520297</guid><author>BaiHang111</author><pubDate>Wed, 29 Jun 2022 13:38:01 +0800</pubDate><description><![CDATA[JVM 垃圾回收]]></description><category></category></item><item><title><![CDATA[JVM(1) Java内存结构]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/125520087</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/125520087</guid><author>BaiHang111</author><pubDate>Wed, 29 Jun 2022 13:35:29 +0800</pubDate><description><![CDATA[程序计数器虚拟机栈本地方法栈方法区堆
Java内存结构
程序计数器
虚拟机栈
本地方法栈
方法区]]></description><category></category></item><item><title><![CDATA[Java集合List常用方法]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/123466509</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/123466509</guid><author>BaiHang111</author><pubDate>Sun, 13 Mar 2022 21:20:34 +0800</pubDate><description><![CDATA[A:添加功能
boolean add(E e):向集合中添加一个元素
void add(int index, E element):在指定位置添加元素
boolean addAll(Collection&lt;? extends E&gt; c)：向集合中添加一个集合的元素。

B:删除功能
void clear()：删除集合中的所有元素
E remove(int index)：根据指定索引删除元素，并把删除的元素返回
boolean remove(Object o)：从集合中删除指定的元素
boolean]]></description><category></category></item><item><title><![CDATA[MySQL的MVCC机制实现READ COMMITTED和 REPEATABLE READ隔离级别]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/123402681</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/123402681</guid><author>BaiHang111</author><pubDate>Thu, 10 Mar 2022 15:51:17 +0800</pubDate><description><![CDATA[MVCC实现依赖于 —— undo日志、隐藏字段、ReadView

MVCC，多版本的并发控制，Multi-Version Concurrency Control


undo日志：

例子：表中本来有记录（1，张三，一班）

事务10更新记录：（1，李四，一班）后又更新（1，王五，一班）

事务20更新记录：（1，钱七，一班）又更新（1，宋八，一班）

此时记录修改了四次，undo日志形成版本链：







隐藏字段：

每行记录后面保存两个隐藏的列：一个保存了行的事务ID（TRX_ID），一...]]></description><category></category></item><item><title><![CDATA[MySQL锁机制]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/123387733</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/123387733</guid><author>BaiHang111</author><pubDate>Wed, 09 Mar 2022 22:00:09 +0800</pubDate><description><![CDATA[支持行锁：读锁（S锁）、写锁（X锁）



间隙锁：（为了解决 可重复读（repeatable read）隔离级别中存在的幻读问题）

A gap lock is a lock on a gap between index records, or a lock on the gap before the first or after the last index record。

间隙锁在本质上是不区分共享间隙锁或互斥间隙锁
	间隙锁本质上是用于阻止其他事务在该间隙内插入新记录，而自身事务是允许在该间隙..]]></description><category></category></item><item><title><![CDATA[数据库优化及淘宝主键设计]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/123373771</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/123373771</guid><author>BaiHang111</author><pubDate>Wed, 09 Mar 2022 11:46:29 +0800</pubDate><description><![CDATA[主键设计原则：全局唯一、单调递增！










]]></description><category></category></item><item><title><![CDATA[MySQL索引失效的场景总结]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/123339210</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/123339210</guid><author>BaiHang111</author><pubDate>Mon, 07 Mar 2022 20:47:37 +0800</pubDate><description><![CDATA[1、左模糊查询：select * from student where name like '%abc'

2、使用函数

3、不满足最左前缀原则

4、&lt;&gt;、!=、is not null、

5、范围条件右边的索引列失效

6、类型转换







]]></description><category></category></item><item><title><![CDATA[使用反射动态实现对不同表的通用多条查询及JDBC总结]]></title><link>https://blog.youkuaiyun.com/BaiHang111/article/details/123291343</link><guid>https://blog.youkuaiyun.com/BaiHang111/article/details/123291343</guid><author>BaiHang111</author><pubDate>Sat, 05 Mar 2022 10:57:53 +0800</pubDate><description><![CDATA[/**
 * 使用反射动态的实现对不同表的通用多个查询
 * @author bh
 * @create 2022-03-04 17:43
 */
public class CommonMultiQuery {
    @Test
    public void test() {
        String sql = "select id stuId, name stuName from student where id &gt; ?;";
        List&lt;Student&gt; mu.]]></description><category></category></item></channel></rss>