自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ

AMQP, 即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年, AMQP 规范发布。类比HTTP。

2023-07-31 18:04:33 61 1

原创 什么是反射

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。**序列化:**将 Java 对象转换成字节流的过程。**反序列化:**将字节流转换成 Java 对象的过程。

2023-07-31 17:55:43 53 1

原创 MYSQL

redo log就被引入来解决这个问题(宕机导致BP中的数据没有刷新磁盘,造成数据丢失),当数据被修改时,除了修改BP中的数据,还会在redo log中记录这次操作,当事务提交时,会调用fsync接口对 redo log进行刷盘,如果MySQL宕机,重启时可以读取redo log中的数据,对数据库进行恢复,redo log采用的是WAL(Write-ahead logging,预写式日志), 所有修改先写入日志,在更新到BP,保证了数据不会因为MySQL宕机而丢失,从而满足了持久性的要求。

2023-07-28 10:33:08 117 1

原创 CAS原理

这些原子类封装了对多个变量的原子操作,可以保证多个变量之间的原子性,从而避免了使用锁机制时的竞争和上下文切换的开销。如果内存位置的值已经被其他线程修改过了,CAS 操作就会失败,返回当前的内存位置的值。例如,一个线程先将内存位置的值从 A 修改为 B,然后又将其从 B 修改为 A,此时另一个线程也修改了内存位置的值从 A 修改为 C,然后又将其从 C 修改为 A。CAS 操作的实现原理是在读取内存位置的值和预期原值后,比较它们的一致性,如果一致就将内存位置的值修改为新值,否则就返回当前内存位置的值。

2023-05-28 19:43:30 125

原创 Synchronize和ReentrantLock

释放锁:当一个线程调用 ReentrantLock 的 unlock() 方法来释放锁时,ReentrantLock 首先会将 state 的值减 1,如果 state 的值为 0,则表示该线程已经释放了锁,并将锁的占用者设置为 null;当一个线程释放锁时,ReentrantLock 会从等待队列中选择一个线程来唤醒,并尝试将锁的占用者设置为该线程。当一个线程进入 Synchronized 代码块时,会检查该对象头中的锁状态,如果锁未被占用,则将锁状态设置为占用,并将当前线程设置为持有锁的线程;

2023-05-28 19:16:08 146 1

原创 多线程练习

假设有100张火车票,现在有100个人要同时购买这100张火车票,每个人只能购买一张火车票。使用多线程编写程序模拟这个过程,要求输出每个人所购买的火车票的编号和剩余的火车票的数量。

2023-05-28 16:50:40 59

空空如也

空空如也

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

TA关注的人

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