一江溪水
MySQL如何保证ACID MySQL如何保证ACID
ACID 原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行 一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。 隔离性:同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。 持久性:事务
2021-10-01
AQS原理 AQS原理
概念AQS是AbstarctQueuedSynchronizer 的简称 ,是一个用于构建锁和同步容器的框架。 juc并发 包内许多类都是基于 AQS 构建的 ReentrantLock ReentrantReadWriteLock Fu
2021-09-22
比较交换CAS 比较交换CAS
概念CAS 是比较交换 CompareAndSwap 的简称,是一种用于在多线程环境下实现同步功能的机制。 顾名思义就是比较并交换。简单来说,从某一内存上取值 V,和预期值 A 进行比较 如果内存值 V 和预期值 A 的结果相等,那么我们
2021-09-21
如何保证消息的可靠性传输 如何保证消息的可靠性传输
在生产环境中,因为机器以及网络设备的不可靠,保证消息的可靠是待解决的问题。在特定场景下消息可能存在丢失风险 消息发送流程我们可以将 RabbitMQ 消息处理的过程分为三个步骤: 生产阶段:生产者生产消息并且发送到消息队列; 储存阶段:消
2021-09-20
volatile 关键字 volatile 关键字
volatile 关键字 volatile 关键字解决内存可见性问题,是一种弱形式的同步。 该关键字可以确保当一个线程更新共享变量时,更新操作对其他线程马上可见。 当一个变量被声明为 volatile 时,线程在写入变量时不会把值缓存在寄存
2021-09-19
JDK的锁优化策略 JDK的锁优化策略
锁的优化策略 JDK6对synchronized做了很多优化,引入了自适应自旋、锁消除、锁粗化、偏向锁和轻量级锁等优化策略,提高锁的效率; 锁一共有4个状态,级别从低到高依次是:无锁、偏向锁、轻量级锁和重量级锁,状态会随竞争情况升级。 锁可
2021-09-19
synchronized关键字 synchronized关键字
概念synchronized 同步块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。 内置锁 也叫排它锁,也就是当一个线程获取这
2021-09-17
扩展线程池捕获线程异常 扩展线程池捕获线程异常
如何捕获线程池中的线程异常简单案例我们先看一个案例,实现Runnable接口,计算两个数的商创建一个线程池,参数如下提交任务到线程池,查看执行结果执行结果 我们发现,我们代码中,提交了5个线程,但最终只打印了4个结果, 而且没有报何错误,
2021-09-15
ThreadLocal的使用 ThreadLocal的使用
概述ThreadLocal 为解决多线程程序的并发问题提供了一种新的思路,使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal 很容易让人望文生义,想当然地认为是一个 “本地线程”。其实,ThreadLocal 并不
2021-09-15
HashMap的扩容 HashMap的扩容
HashMap初始化在JDK1.8中,定义了HashMap的初始化过程,我们看看他的源码是如果定义这个初始化过程可以看到,它的构造方法中传入了两个参数,一个是初始化容量,一个是加载因子,默认是0.75f HashMap(int initia
2021-09-12
MySQL索引(二) MySQL索引(二)
MySQL索引(二)自适应哈希索引 自适应哈希索引是InnoDB引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于B-Tree索引之上再创键一个哈希索引,这样就让B-Tree索引也具有哈希索引的一些优点,比如快速哈希
2021-09-05
TCP三次握手和四次挥手 TCP三次握手和四次挥手
概念SYN-(Synchronize Sequence Numbers) 同步序列编号。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立TCP连接时,首先会发送的一个信号。客户端在接受到SYN消息时,就会在自己的段内生成一个
6 / 10