- 博客(12)
- 收藏
- 关注
原创 Redis知识点整理
3、 如果此时客户端准备好接收返回结果了,那么 Redis 中的 Socket01 会产生一个AE_WRITABLE 事件,同样压入队列中,事件分派器找到相关联的命令回复处理器,由命令回复处理器对 Socket01 输入本次操作的一个结果,比如 ok ,之后解除 Socket01 的AE_WRITABLE 事件与命令回复处理器的关联。在 Redis 中,Lua 脚本得到了广泛的应用,可以通过执行 Lua 脚本来实现一些复杂的操作,例如原子性地执行多个命令、实现复杂的数据操作逻辑等。
2024-04-04 00:50:36
1498
1
原创 JVM基础知识整理
继承ClassLoader,重写其findClass方法。通过name构造文件绝对路径读取文件。创建文件字节输入流。创建字节数组输出流。读取输入流,将数据写入到输出流。将字节数组输出流装换成二进制字节数组。调用ClassLoader的defineClass()方法用字节数组构造clazz对象。@Override// 这里通过入参 name 构造出文件的绝对路径来获取file。try {// 创建文件字节输入流// 创建字节数组输出流int b;= 0) {
2024-02-20 22:44:25
2055
原创 LinkedHashMap源码解析
LinkedHashMap是基于HashMap衍生出来的一种数据结构,它通过额外维护一个双向链表来实现记录访问顺序或者插入顺序。既然LinkedHashMap是继承自HashMap,那么很多底层和HashMap一致,这里我们只了解LinkedHashMap独有的特性。
2024-02-08 23:36:40
474
原创 HashMap源码解析
HashMap插入元素的方法比较复杂,其中涉及到 扩容/初始化、树化、LRC算法以及大量的if-else判断。这个node对象为HashMap的结点,它有四个属性:hash、key、value、next。keySet()用于获取所有的key,values()用于获取所有的value。这里只在代码中做一些逻辑上的简单注释。为了方便,在代码中通过注释解释。
2024-01-29 18:20:23
367
原创 AbstractQueuedSynchronizer源码解析
AbstractQueuedSynchronizer从名字可以看到三个信息:抽象的、同步的队列。它提供了同步状态、阻塞与唤醒线程以及先进先出队列的基础框架。JDK中许多并发工具类的实现都基于AQS,如ReentrantLock。
2024-01-20 23:02:50
1688
原创 源码解析链接
源码链接1、ArrayList2、LinkedList3、HashMap4、TreeMap5、HashSet6、LinkedHashMap7、ConcurrentHashMap8、AbstractQueuedSynchronizer9、ReentrantLock10、ReentrantReadWriteLock
2024-01-15 20:09:27
390
原创 java基础之多线程篇
Lock锁是API级别的,提供了相应的接口和对应的实现类。这种方式实现锁会更加的灵活(区别于synchronized锁是JVM级别的)。synchronized锁是Java中的关键字,依靠JVM来进行识别,是虚拟机级别的(区别于Lock锁,Lock锁是API级别的)。让同一个时刻最多只有一个线程能持有对象锁,其他线程在想获取这个对象锁就会被阻塞,不用担心上下文切换的问题。Lock锁是显式锁,需要手动开启和关闭锁(别忘了最后一定要关闭锁);同步锁也叫对象锁,是锁在对象上的,不同的对象就是不同的锁。
2023-04-20 21:55:51
126
1
原创 java基础之集合篇
ArrayList是基于数组来实现动态扩容。size()为实际元素个数,elementData.length为容量。linkedList相对比较简单,有空手撕一份简易版代码。
2023-04-20 21:51:54
147
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人