- 博客(21)
- 收藏
- 关注
原创 java多线程(并发)夯实之路-线程池深入浅出
Thread Pool:线程池,存放可以重复使用的线程(消费者)Blocking Queue:阻塞队列,存放等待执行的任务(生产者)
2024-01-13 00:00:53
692
原创 java多线程(并发)夯实之路-CAS原理与应用深入浅出
CompareAndSet,简称CAS(也有Compare And Swap的说法),它是原子的.它会将pre即之前的值和最新值进行比较,如果相同,修改为next,不同则修改失败
2024-01-11 18:54:57
869
1
原创 java多线程(并发)夯实之路-synchronized锁升级深入浅出
线程为对象加上轻量级锁后,有竞争,这时会进行锁膨胀,轻量级锁变为重量级锁。竞争重量级锁时,可以用自旋来优化,线程自旋过程中如果持锁线程退出同步块,释放了锁,线程就自旋成功,线程就避免了阻塞。偏向锁有其他线程访问会变为轻量级锁,有竞争(多线程同时访问)会锁膨胀变为重量级锁可以加。
2024-01-11 18:42:23
976
1
原创 java多线程(并发)夯实之路-volatile深入浅出
volatile(易变关键字)可以用来修饰成员变量和静态成员变量,线程只能从主存中获取它的值,线程操作volatile变量都是直接操作主存。与synchronzied区别:synchronzied需要创建Monitor,属于重量级的操作,volatile更轻量(推荐)
2024-01-11 17:01:48
1141
1
原创 java多线程(并发)夯实之路- ReentrantLock深入浅出(解决哲学家问题)
但是顺序加锁容易导致饥饿问题,如哲学家就餐问题会有死锁产生,用顺序加锁解决死锁问题后,会出现饥饿问题(一些哲学家总是优先抢到锁,一直进餐,导致其他哲学家一直不能进餐)如果一个线程需要同时获得多把锁,就容易发生死锁 t1线程获得了A对象的锁,接下来想获得B对象的锁 t2线程获得了B对象的锁,接下来想获得A对象的锁。方法前需要先获得锁,方法执行之后会释放锁,进入condtionObject等待,被唤醒(打断,超时)重新竞争锁,成功获得锁后继续执行。()方法尝试获取锁,获取到了返回真,否则返回假(不会等待)。
2024-01-11 15:47:13
940
1
原创 java多线程(并发)夯实之路-线程安全分析深入浅出
多个线程对共享资源进行写操作时,会发生上下文切换,造成线程安全问题一段代码块中如果存在对共享资源的多线程读写操作,则称这段代码区为临界区多个线程在临界区内执行,代码执行序列不同导致结果无法预测,称为发生了竞态条件
2024-01-11 13:42:24
462
1
原创 java多线程(并发)夯实之路-synchronized深入浅出
synchronized:俗称对象锁,它采用互斥的方式,使得同一时刻最多只能有一个线程持有对象锁,其他对象想要获取对象锁就只能进入阻塞状态(注意必须使用相同的锁)。在加了锁的线程中,只有获取了锁的线程能够运行
2024-01-10 22:32:44
547
1
原创 java多线程(并发)夯实之路-线程的状态深入浅出
初始状态:仅在语言层面创建了线程对象,还没有与操作系统相关联(new出来Thread对象,但没调用它的start方法)可运行状态(就绪状态):线程被创建(与操作系统相关联),可以由CPU调度执行运行状态:获取了CPU时间片,正在运行的状态
2024-01-10 21:51:56
448
1
原创 java多线程(并发)夯实之路-进程与线程深入浅出
进程:程序由指令和数据组成,程序工作时,就会将指令加载至CPU,数据加载至内存,进程就是用来加载指令,管理内存,管理IO的。当程序运行,磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程可以视为程序的一个实例,大部分程序能同时运行多个实例进程(记事本,浏览器),也有程序只能启动一个实例进程(网易云音乐)。
2024-01-10 20:38:36
951
1
原创 MySQL夯实之路-查询性能优化深入浅出
MySQL调优分析:explain;show status查看服务器状态信息。优化:减少子任务,减少子任务执行次数,减少子任务执行时间(优,少,快)
2024-01-10 18:48:51
1169
1
原创 计算机网络夯实之路-HTTP详解
根据 Web浏览器地址栏中指定的 URL,Web浏览器从Web服务器端获取文件资源(resource)等信息,从而显示出 Web 页面。通过发送请求获取服务器资源的 Web 浏览器等,都可称为客户端(client)。Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范完成从客户端到服务器端等一系列运作流程。HTTP的诞生。
2024-01-09 21:04:03
1191
原创 MySQL夯实之路-索引深入浅出
从数据结构的角度来说,分为B-Tree索引、hash索引(memory引擎支持)、R-Tree索引(空间数据索引,MyISAM支持,用作地理数据存储)、FULLTEXT(全文)索引(MyISAM、InnoDB支持)
2024-01-09 20:48:45
583
原创 MySQL夯实之路-存储引擎深入浅出
Mysql5.5版本时将innoDB作为默认的存储引擎,优先选择innoDB。尽量不要混合使用存储引擎。innoDB采用mvcc来支持高并发,实现了四个标准的隔离级别,默认为可重复读,并且通过间隙锁(next-key locking)策略防止幻读(查询的行中的间隙也会锁定)。
2024-01-08 21:47:43
1066
原创 MySQL夯实之路-MVCC机制深入浅出
MVCC用更加灵活的方式处理并发,实现了读不加锁,读写不冲突。保证了事务的隔离性(可重复读),避免了不可重复读问题。Mvcc只在可重复读和提交读的隔离级别下生效,因为为提交读总是读取最新数据行,可串行化对所有读取的行加锁。
2024-01-08 20:11:06
530
原创 MySQL夯实之路-事务详解
事务需要通过严格的acid测试。Acid表示原子性,一致性,隔离性,持久性。原子性(atomicity):事务是不可分割的最小单元,对于整个事务的操作,要么全部提交成功,要么全部失败回滚。
2024-01-08 19:40:15
1162
原创 redis夯实之路-键过期与发布订阅详解
过期键删除策略:定时删除,惰性删除,定期删除。Redis使用的是惰性删除,定期删除两种策略:获取键时检查是否过期,周期性检查。
2024-01-08 17:24:46
782
原创 redis夯实之路-集群详解
Redis有单机模式和集群模式。集群是 Redis 提供的分布式数据库方案,集群通过分片( sharding )来实现数据共享,并提供复制和故障转移。集群模式可以有多个 master 。使用集群模式可以进一步提升 Redis 性能,分布式部署实现高可用性,更加的稳定。一般较大的项目都会使用redis集群。
2024-01-07 23:13:05
450
1
原创 redis夯实之路-哨兵(Sentinel)机制详解
Sentinel(哨兵)保证了redis的高可用性,一个Sentinel或多个Sentinel组成的系统监视多个主从服务器,当主服务器下线时,自动将一个从服务器升级为主服务器。
2024-01-07 22:55:34
581
1
原创 redis夯实之路-主从复制详解
总结:主从复制分为同步和命令传播两步操作。reids2.8版本后psync代替了sync,相比于sync是全量同步模式,psync具备了数据全量重同步和部分重同步模式。
2024-01-07 19:01:48
1142
1
原创 redis夯实之路-持久化之RDB与AOF详解
redis使用RDB文件或AOF文件可以还原数据库状态。Rdb通过保存数据库中键值对来记录数据库状态。Aof通过保存resdis所执行的写命令来记录数据库状态。
2024-01-06 19:41:09
975
1
原创 redis夯实之路-数据结构与对象详解
在当今互联网时代,数据的快速存储和高效检索是任何成功的应用程序的关键。Redis(Remote Dictionary Server)作为一款高性能、开源的键值存储系统,以其快速的读写速度和丰富的数据结构而备受开发者青睐。本文将深入探讨Redis的数据结构,揭示其背后的原理。
2024-01-06 19:14:22
963
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人