自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis分布式锁和Zk分布式锁

基于Redis分布式锁思路大概是这样的:在redis中设置一个值表示加了锁,然后释放锁的时候就把这个key删除。具体代码如下: // 获取锁 // NX是指如果key不存在就成功,key存在返回false,PX可以指定过期时间 SET anyLock unique_value NX PX 30000 // 释放锁:通过执行一段lua脚本 // 释放锁涉及到两条指令,这两条指令不是原子性的 // 需要用到redis的lua脚本支持特性,redis执行lua脚本是原子性的 if redis.

2020-07-06 17:08:00 225

原创 线程池学习笔记

最大线程数只有在队列满了以后才开始工作。任务最大容量=最大数量+等待队列最大数量,超过则拒绝执行,会需要自己写拒绝策略,不然会抛出异常。如下图:如果将核心线程池数量设置成0,最大线程数量为int最大值,则适用场景为不可控的无法预估到底有多少任务同时提交,不过不建议设置成int最大值,会造成不稳定,设置成1000以下。如下图:定时任务的执行方式,线程数量的控制,如果任务大多数是同时被执行,那么需要更多的线程数,注意那个5,定时任务的本质是延时队列。线程池原理流程图如下:..

2020-07-06 15:38:05 392

原创 NIO学习笔记

1.NIO的三个核心组件,Buffer缓冲器,Channel通道,Selector选择器。Buffer缓冲器缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再次读取。此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用内存块。 相比较直接对数组的操作,BufferAPI更加容易操作和管理。 使用Buffer进行数据写入与读取,需要进行如下四个步骤:将数据写入缓冲区。调用buffer.flip(),转换为读取模式缓冲区读取数据调用buffer.clear(

2020-07-05 19:59:24 140

空空如也

空空如也

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

TA关注的人

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