自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

livolador’s blog

越努力,越幸运

  • 博客(11)
  • 收藏
  • 关注

原创 认识Redis高性能背后的数据结构(二)

文章目录前言1.集合set1.1 set 的底层实现1.2 整数集合 Intset1.2 为什么要设计整数集合intset2. 有序集合zset2.1 zset的底层实现2.2 跳表 skiplist2.2.1 什么是跳表2.2.2 跳表与哈希表、二叉平衡树的比较2.2.3 Redis中skiplist的实现2.2.4 Redis中对于sorted set的底层实现3. redis数据存储分析3.1 Redis存储结构3.2 redisObject分析4. Redis数据查找源码分析最后前言前面一篇文章

2020-08-09 16:35:14 530 1

原创 认识Redis高性能背后的数据结构(一)

文章目录前言1. 动态字符串(SDS)2. 列表 list2.1 底层数据结构2.2 压缩链表 zipList 转 双向链表 linkedList2.3 双向链表 linedList2.4 压缩列表 zipList2.4.1 压缩列表的数据结构ziplist节点entry结构2.4.2 为什么zipList 可以做到数据压缩2.4.3 为什么zipList被舍弃了2.5 快速列表 quickList2.5.1 quicklist数据结构2.5.2 quicklistNode结构3. 字典 dict3.1 字

2020-06-27 14:59:04 712

原创 链表算法题目总结

文章目录前言1. 需要操作单链表中倒数某个指定节点1.1 解题思路及代码模板1.2 练习题目2. 回文链表 && 环形链表类型算法2.1 解题思路及代码模板3. 链表排序 && 合并链表3.1 解题思路4. 链表交换类型题目最后前言最近也是在刷算法题,从刷题刷的开始怀疑人生,觉得自己好’菜’,到后来慢慢的找到了写算法的感觉,然后再到对算法产生了极大的兴趣。其实算法题没有那么困难,因为我们不需要去创造算法,我们只需要掌握解题的思路和方法,然后加以刻意训练,也是可以很好的

2020-07-26 11:29:04 1138 1

原创 七、聊聊并发 -深入理解线程池的实现原理

文章目录1. 线程池介绍2. ThreadPoolExecutor核心实现2.1 重要字段2.2 构造方法2.3 源码分析2.3.1 execute方法2.3.2 addWorker方法2.3.3 Worker2.3.4 runWorker2.3.5 getTask2.3.6 processWorkerExit3. 动态线程池 & 线程池的监控3.1 线程池的监控指标3.2 线程池的监控4. 总结1. 线程池介绍在客户端-服务器的网络模式下,服务端为了提高系统的请求响应速度,

2020-05-24 15:20:12 395

原创 六、聊聊并发 - AQS共享模式给你整的明明白白

文章目录前言AQS的共享模式VS独占模式Example: CoutDownLatchCountDownLath的结构获取许可awaitdoAcquireSharedInterruptiblysetHeadAndPropagate释放许可countDowntryReleaseShareddoReleaseShared总结写在最后前言前面我们通过ReentranLock的源码分析了AQS的独占模式...

2020-05-05 14:48:46 649

原创 五、聊聊并发- 聊聊AQS独占锁

文章目录前言为什么有Synchronized还要设计AQS呢?AQS的设计思想AQS核心实现AQS核心要素状态(state)同步队列(FIFO)独占锁&共享锁Exclusive(独占模式): ReenTranLock exampleFairSync(公平锁)tryAcquireaddWaiterenqacquireQueuedshouldParkAfterFailedAcquirepark...

2020-04-20 19:53:51 768

原创 四、聊聊并发 - 看完你应该就明白synchronized是怎么回事了

文章目录一、前言二、synchronized关键字的用法1. 怎么用2. 可以解决什么问题三、synchronized的实现原理同步方法同步代码块MonitorenterMonitorexitsynchronized的实现对象内存结构总结对于Java开发者来说synchronized关键字肯定不陌生,对它的用法我们可能已经能信手扭来了,但是我们真的对它深入了解吗?虽然网上有很多文章都已经将syn...

2020-04-12 22:11:16 1067 1

原创 三、聊聊并发 - 聊聊我对Java内存模型的认识

文章目录前言什么是Java内存模型JMM对并发问题的解决方案Java内存模型分析DCL内存模型对于原子性的保证内存模型之Happens-befor内存模型之as-if-serial内存模型之volatileJMM对于volatile读写的规则定义:JMM对volatile变量重排序规则定义:JMM是如何实现volatile的语义规则可见性的实现有序性的实现内存模型之finalfinal域写重排序规...

2020-04-06 13:34:15 901 1

原创 二、聊聊并发 — 深刻理解并发三问题

文章目录前言指令重排序内存可见性原子性总结前言上篇文章我们已经聊了线程安全,大概了解了对线程安全产生影响的重要因素是什么,我们还聊到了多线程的消息传递方式和内存交互方式,正因为这种交互方式使得共享变量在多线程之前存在可见性问题,除此之外还有处理器为了指令优化导致的重排序以及原子操作问题,那这一篇我们就来细聊一下并发的这三个问题,让大家对并发程序中的重排序、内存可见性以及原子性有一定的了解指令...

2020-04-05 06:34:01 364 1

原创 一、聊聊并发 — 线程安全到底在说什么

文章目录前言线程安全性Java线程间消息传递方式Java多线程的内存交互并发带来的问题绝对的线程安全无状态对象不可变对象总结前言并发编程的目的是为了让程序运行得更快,提高程序的响应速度,虽然我们希望通过多线程执行任务让程序运行得更快,但是同时也会面临非常多的挑战,比如像线程安全问题、线程上下文切换的问题、硬件和软件资源限制等问题,这些都是并发编程给我们带来的难题。其中线程安全问题是我们最关心的...

2020-03-29 10:45:00 341

原创 JDK1.8中HashMap的骚操作

文章目录简介存储结构重要字段功能实现确定索引位置put方法get方法扩容机制(resize)总结简介HashMap是Java程序员使用频率最高的用于映射(键、值对)处理的数据类型,它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null,且HashMap不...

2020-03-25 06:32:42 466

空空如也

空空如也

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

TA关注的人

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