0%

基于优先队列插入、删除延迟任务的时间复杂为O(logn);

基于时间轮算法插入、删除延迟任务的时间复杂度是 O(1) 。

阅读全文 »

Java 包含四种引用类型(引用强度从上到下依次逐渐减弱):

  • 强引用(StrongReference):只要对象存在强引用,就不会被GC。
  • 软引用(SoftReference):垃圾回收器会在内存不足时回收弱引用指向的对象。
  • 弱引用(WeakReference):垃圾回收器在GC时会回收此对象
  • 虚引用(PhantomReference):对象是否有虚引用的存在都不会对生存时间都构成影响,也无法通过虚引用来获取对一个对象的真实引用。唯一的用处:能在对象被GC时收到系统通知。
阅读全文 »

RLock是Redisson中一种可重入的分布式锁,RLock是一个接口,同时继承了java.util.concurrent.locks.Lock接口。

RedissonLock是RLock接口的默认实现,是一种非公平的可重入的分布式锁。并且内部实现了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期,防止业务执行较长导致锁被自动释放。默认情况下,看门狗的检查锁的超时时间是30秒钟,也可以通过修改Config.lockWatchdogTimeout来另行指定。

阅读全文 »

零拷贝是网络编程的关键,很多性能优化都离不开它。

  • 零拷贝可以减少用户态与内核态的上下文切换
  • 零拷贝可以减少内存拷贝的次数
阅读全文 »