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

原创 动态代理底层源码核心思想版

源码自取。

2024-03-23 23:18:31 79

原创 七大软件设计原则

依赖倒置原则:高层模块(越往调用端层次越高)不应该依赖低层模块,二者都应该依赖其抽象;代码实例(遵循依赖倒置原则):可以看出Tom只负责学习,学习的具体细节交给课程去管理。System.out.println("学习python课程");System.out.println("学习python课程");System.out.println("学习java课程");System.out.println("学习java课程");代码示例:这里也体现了里氏替换原则,即可以对父类方法进行扩展,但不要覆盖。

2024-03-13 15:45:41 236

原创 ReentrantLock的底层原理

当多个线程开始竞争锁时,首先进行锁的抢占,该动作发生在lock()方法里面,在lock()方法里面首先应用AQS抽象类检查锁的状态,AQS里面有个变量state,这个state是个互斥变量,它的值分为两种0和大于0,AQS里面还有一个exclusiveOwnerThread用来记录哪个线程获得了锁,如果当前是无锁状态,那么它会修改AQS里面的state的值,state的值从0变为1并且exclusiveOwnerThread的值变为当前获得锁的线程的名称,如果修改成功直接返回,此时说明已经有一个线程竞争锁成

2024-02-21 08:54:08 130 1

原创 Happens-Before模型

volatile变量规则:当第一个操作是普通读/写时,第二个操作只有是volatile写不会出现可见性问题。当第一个操作是volatile读时,第二个操作普通读/写,volatile读,volatile写都不会出现可见性问题,第一个操作是volatile写时,第二个操作是volatile读或volatile写不会出现可见性问题。监视器锁规则:如果线程1获得了锁,并且执行完成释放了锁,那么线程2在获取锁之后,它读取到的数据,一定是线程1更改之后的。

2024-02-20 14:35:58 172 1

原创 说说volitile关键字

此时如果一个变量的值同时被缓存在两个CPU即CPU0和CPU1的高速缓存中,当CPU0修改了这一共享变量的值并同步到主存中,CPU1需要从内存中获取最新的值但获取时机是不确定的,这就会导致缓存一致性问题,解决缓存一致性问题的方法是使用总线锁或缓存锁,缓存锁能够保证缓存一致性是因为其中使用的缓存一致性协议(MESI),MESI表示缓存的四中状态即修改,共享,独占,失效,该协议的核心是修改一个共享的数据时,需要先使其它处于共享状态的缓存失效。对齐填充主要是为了解决伪共享的问题。

2024-02-20 11:03:14 235

原创 阿里云oss对象存储遇到的问题

2023-05-12 20:14:27 86 1

动态代理底层源码核心思想版

动态代理底层源码核心思想版

2024-03-23

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

TA关注的人

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