- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 手写一个延迟队列
延迟队列延迟队列一般应用于周期执行或延迟执行的线程池中,在写延迟队列之前,先写一个一般线程池中应用的阻塞队列,阻塞队列有个特点,当尝试去获取元素时,如果队列为空,则阻塞当前线程,直到有元素进入再次唤醒。/** * @author siiirius * @since 2020-10-30 10:14 */public interface Queue<E> { /** * take an element from the queue and delete *
2020-11-02 11:29:00
321
原创 Redis底层数据结构
SDS 简单动态字符串C语言字符串:以空字符’\0’结尾SDS结构:struct sdshdr { int len;// 记录buf中已使用的字节数量,等于SDS字符串的长度 int free; // 记录buf中未使用的字节数量 char buf[]; // 字节数组,遵循用空字符结尾}与C字符串的区别1. 获取字符串长度常数复杂度2. 杜绝缓存区溢出,如果C字符串使用超过了分配的空间,则溢出3. 减少字符串修改带来的内存重新分配次数(空间预分配——需要扩展空间时,小于1M,预分配
2020-09-22 14:55:26
129
原创 从架构设计看线程池,无源码分析
线程池参数 /** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the pool, even * if they are idle, unless {@code allowCoreThreadTimeOut} is
2020-07-24 23:17:32
120
原创 基于Spring 写监听者模式 Listener
背景为了代码解耦,一些与主业务无关的内容最好和主业务分开,我这里写了一个基于事件监听的模型,记录一下。代码结构** EventBroadcaster** 是事件发布器,ModelEvent继承自java.util.EventObject代表一个具体的事件EventListener是监听器的接口ModelEventListener和ModelEventListener2为监听ModelEvent的2个监听器,监听器之间的顺序可以使用spring的@Order注解或者java的@javax.ann
2020-07-06 21:24:40
337
原创 VMware Workstation + LINUX虚拟机安装【超详细】
下载安装激活VMware Workstation下载地址安装完,选择输入许可证,然后上面的下载地址也提供了一些秘钥,按版本号选择输入。创建新的虚拟机点击创建虚拟机选择自定义硬件兼容性,默认下一步虚拟机操作系统,选择稍后安装操作系统选择操作系统,我这里安装的centos 6 64位命名虚拟机,我这里将它命名为node01,位置选择磁盘空间充足的磁盘上的位置处理器配置,我这里选择默认的1个处理器,1个核心虚拟机内存选择1024M,也就是1个G,建议内存不要小于768,不然安装操作
2020-07-04 14:40:53
559
原创 new Object() 和 new byte[0]占多少字节
使用的工具 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version> </dependency>代码public class Test {
2020-07-03 16:41:18
1340
原创 很隐蔽的一个线程池死锁问题 CompletableFuture + ThreadPoolExecutor
package deadlock;import java.util.ArrayList;import java.util.List;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadPoolCompletableDeadLock { pub
2020-07-03 11:56:40
3977
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人