自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5大IO模型

阻塞IO 在进程空间中调用recvfrom,其系统调用直到数据包到达内核缓冲区,且把数据从内核缓冲区拷贝到应用进程缓冲区或者发生错误时才返回,进程从调用recefrom开始到它返回的整个时间段都是被阻塞的,因此被称为阻塞IO 非阻塞IO 在进程空间中调用recvfrom,如果内核缓存区没有数据的话,就直接返回一个EWOULDBLOCK错误,也就是说非阻塞IO不会阻塞在数据的准备阶段,一般非阻塞IO模型都是会进行轮询检查这个状态,看内核是不是有数据的到来,如果数据准备好了,在拷贝用户进程缓存去,数据的拷贝过程

2021-10-14 20:04:41 61

原创 JUC-阻塞队列

阻塞队列 顾名思义:他是一个队列,都实现了BlockingQueue这个接口,且都继承了AbstractQueue这个抽象类。这里使用了模板设计模式。 第一个ArrayBlockingQueue:是一个先进先出的实现,容量的上限,即数组的大小,内部无自动扩容,必须new的时候就要指定,无默认值。使用的一个ReentrantLock与两个Condition,一个Condition的作用是数组满了,还往里面放,当前线程就会阻塞。另一个Condition的作用是数组没有东东了,还去拿的话,当前线程就会阻塞。 第

2021-10-12 10:31:56 155

原创 Redis实现分布式锁的思路

Redis实现分布式锁的思路 关键点setnx命令 加锁成功的线程,在释放锁之前gg了,嘿嘿,不好意思我key还在那,another threads在去setnx,always-false。 怎么解决? 对key进行expire 处理,不过呢,setnx-expire保证是一个原子操作,否则的话又回退到了key还在那,怎么办的的问题。 不好意思,又来了一个问题,我还没执行完,锁就无了。又是一个脑瓜疼的问题。 怎么办呢?很简单,续命呗,那怎么个续命法,不就是开辟一个线程,执行定时任务对key reset ex

2021-10-12 10:22:40 62

原创 Spring-bean的生命周期

先纠正一下,绝大部分网上说的bean生命周期,说对也对,说错也错。 Why? 其实我看到spring-bean的生命周期,有四种。而这种bean走的生命周期是不一样的。 第一种 第二种 第三种 第四种

2021-09-14 12:48:38 81

原创 concurrenthashmap

1.8的concurrenthashmap部分讲解,本人22届,如果有错还请谅解 1.7与1.8的区别 1.7与1.8都使用分段锁的思想,提高了写的并行度,读都没去加锁,读写不互斥,但写之间可能互斥,也可能不互斥。不过1.7使用的是ReentrantLock进行同步,1.8使用的synchronized进行同步,1.8进行数组的初始化过程使用了dcl单例的思想,就是双重检查+cas锁,就避免了多次创建数组,即多次进行数组初始化的动作,1.7的segment[idx]的初始化过程没有采用dcl单例的思想,多个

2021-09-12 09:51:40 97

空空如也

空空如也

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

TA关注的人

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