源码
文章平均质量分 87
逐渐呆滞
黑奴
展开
-
Redis通信协议、过期回收策略
try {// 1.建立连接 String host = "服务器IP";// 2.获取输出流、输入流 writer = new PrintWriter(new OutputStreamWriter(s . getOutputStream() , StandardCharsets . UTF_8));// 3.发出请求 // 3.1.获取授权 auth 123321 sendRequest("用户名" , "密码");原创 2023-06-03 20:45:11 · 2562 阅读 · 2 评论 -
Redis五大基本数据结构(原理)
对⼀个内部表示成long型的string执行append, setbit, getrange这些命令,针对的仍然是string的值(即⼗进制表示的字符串),而不是针对内部表⽰的long型进⾏操作。因此,在这些命令的实现中,会把long型先转成字符串再进行相应的操作。String的内部存储结构⼀般是sds(Simple Dynamic String,可以动态扩展内存),但是如果⼀个String类型的value的值是数字,那么Redis内部会把它转成long类型来存储,从⽽减少内存的使用。原创 2023-05-28 09:01:00 · 1709 阅读 · 0 评论 -
LinkedBlockingQueue原理
主要列举 LinkedBlockingQueue 与 ArrayBlockingQueue 的性能比较。Dummy 节点用来占位,item 为 null。高明之处在于用了两把锁和 dummy 节点。原创 2023-04-23 16:48:36 · 650 阅读 · 0 评论 -
Java8 ConcurrentHashMap源码解析
可以看到实现了懒惰初始化,在构造方法中仅仅计算了 table 的大小,以后在第一次使用时才会真正创建。原创 2023-04-15 20:15:05 · 446 阅读 · 0 评论 -
线程安全的使用ArrayList和HashMap
如果你看过源码,那么你肯定知道ArrayList和HashMap是线程不安全的,它们二者都采用了fast-fail机制。但之前小组考核的时候,学长问了我如何线程安全的使用HashMap,那时候确实直接呆滞了,话不多说,那么如何线程安全的实现二者呢?原创 2022-11-05 21:32:25 · 401 阅读 · 0 评论 -
ArrayList扩容机制
继Springsecurity后,框架的学习暂时告一段落,现在回过头来学习Java的一些源码有些许感悟。从学习编程语言开始,我们都是先学习了数组,之后才是集合。众所周知,数组在定义的时候,一般都需要定义数组的空间大小,而ArrayList集合却并不需要。之前也浑然不在意,直到后来听别人问我,为什么集合在引用的时候可以不去传入空间大小?我无言以对,那时候才知道了ArrayList的自动扩充这个概念。原创 2022-10-09 10:50:17 · 1330 阅读 · 1 评论