自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实用&收藏

https://www.jetbrains.com/zh-cn/idea/download/other.htmlhttp://www.codebaoku.com/jdk/jdk-index.html

2023-10-08 10:18:04 219

原创 Spring IOC三级缓存解决Bean循环依赖

循环依赖场景如下,Bean A 依赖了 Bean B,Bean B 又依赖了 Bean A,流程图。

2024-03-12 16:11:16 377 1

原创 设计模式之命令行模式

将封装成对象,以便使用不同的请求。

2023-12-24 23:00:59 17

原创 并发编程之死锁

接上一篇文章转账操作死锁问题:https://blog.csdn.net/weixin_39707461/article/details/133893488?回忆:线程1(A给B转账):1)锁住 账户A,2)锁住 账户B;线程2(B给C转账):1)锁住 账户B,2)锁住 账户A;线程1 与 线程2 互斥,因为不可能都同时获取到账户A和账户B的锁,所以不可以发生在同一时刻。总结:该方法可以保证并发安全。

2023-10-18 23:39:00 33

原创 并发编程之互斥锁

声明账户类:Account,该类有一个成员变量余额:balance,还有一个用于转账的方法:transfer()。假设有三个账户:账户A、账户B、账户C,三个账户里面的余额都是200。同一时刻,账户A 向 账户B 转账100,账户B 向 账户C 转账100,正确结果应该是 账户A 余额为100,账户B 余额为200, 账户C 余额为 300。然后怎么保证转账操作 transfer() 没有并发问题呢?

2023-10-17 20:29:19 35

原创 并发编程之可见性、有序性、原子性

1:导致可见性问题的原因:CPU缓存;所以最直接的办法:禁用缓存。2:导致有序性问题的原因:编译器优化;所以最直接的办法:禁用编译优化。3:导致原子性问题的原因:线程切换;操作系统线程切换是依赖CPU中断的,所以最直接的办法:禁止CPU发生中断。

2023-10-10 20:36:58 36

原创 并发编程之源头

我们都知道,CPU速度 >> 内存速度 >> I/O设备速度,但是大部分程序都是需要内存,有的还需要访问I/O,根据木桶理论(一只水桶能装多少水取决于它最短的那块木板),程序整体的性能取决于最慢的操作——读写 I/O 设备,也就是说单方面提高 CPU 性能是无效的。为了提高对CPU的利用率,计算机大佬们做了些优化:1:CPU 增加了缓存,以均衡与内存的速度差异;2:操作系统增加了进程、线程,以分时复用 CPU,进而均衡 CPU 与 I/O 设备的速度差异;

2023-09-28 16:03:46 22

原创 设计模式之工厂方法模式

定义一个创建对象的接口,但让实现这个接口的类里决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。

2023-09-24 10:09:15 24

原创 设计模式之代理模式

为其它对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用。

2023-09-19 23:04:57 28

原创 设计模式之单例模式

保证一个类仅有一个实例,并提供一个全局访问点。

2023-09-17 10:54:46 37

原创 设计模式之责任链模式

为请求创建一个接收此次请求对象的链。

2023-09-17 09:48:12 14

原创 redis中的数据结构-学习记录

1.3:什么时候会触发rehash。3.2:会有连锁更新的问题,压缩列表的节点大小会受前一个节点的大小的影响,所以有可能一个节点的更新会导致所有后续节点的内存空间重新分配,1:为了弥补链表查找慢而且占用内存较多而且内存不连续导致不能很好的利用cpu缓存,于是创建了拥有连续内存的压缩列表。redis解决hash冲突是通过链式地址法的,就是两个节点冲突了就连成一个链表。3.3:redis在后面的版本中淘汰了压缩列表,使用listpack结构来替换了。3.1:只能存少量的节点,因为节点数太多查找性能会变慢。

2023-05-14 23:05:58 31 1

原创 强引用 软引用 弱引用-学习记录

将对象用SoftRefence包装起来,那么栈桢里面的强引用就只会指向SoftRefence,SoftRefence 的软引用指向 对象。这样的对象在内存不足时就会被回收。将对象用WeekRefence包装起来,弱引用只要JVM出现full gc就会回收,哪怕空间足够,手动调用了一下 System.gc,也会被回收。JVM运行中,当前线程的栈桢没有退出,则栈桢里面的引用会一直存在,即使 内存溢出 也不能被回收;1: 显示把引用置为 null,并给gc预留一点时间。2: 当前方法执行完毕,栈桢不在栈中了。

2023-04-08 16:54:57 42 1

原创 BIO NIO AIO-学习记录

第三种方案(在网卡升级了的环境下改进的 sendFile):使用sendFile系统调用来代替 read + write 操作,此时在内核中数据不需要从 pageCache 中通过cpu缓存到 Socket缓冲区中,直接通过SG-DMA拷贝技术从 pageCache 中拷贝到网卡。第一种方案(mmap + write):通过mmap建立用户态和内核态的内存地址映射,这样就可以减少两次内核态和用户态之间的cpu拷贝了,但是会增加一次从pageCache到Socket缓冲区的cpu拷贝。

2023-04-08 16:48:27 163 1

空空如也

空空如也

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

TA关注的人

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