AQS源码解析 AQS是什么? 全称是AbstractQueuedSynchronizer,位于java.util.concurrent.locks包下面。AbstractQueuedSynchronizer是一个抽象类,其常见的派生子类有,ReentrantLock.Sync内部类。 申请锁入口方 ...
分类:
其他好文 时间:
2020-07-18 16:12:02
阅读次数:
80
读写锁实现逻辑相对比较复杂,但是却是一个经常使用到的功能,希望将我对ReentrantReadWriteLock的源码的理解记录下来,可以对大家有帮助 前提条件 在理解ReentrantReadWriteLock时需要具备一些基本的知识 理解AQS的实现原理 之前有写过一篇《深入浅出AQS源码解析》 ...
分类:
其他好文 时间:
2020-07-17 19:28:35
阅读次数:
49
注:代码环境基于 JDK 1.8 一、SPI 是什么? SPI(Service Provider Interface):是一个可以被第三方扩展或实现的 API,它可以用来实现框架扩展和可替换的模块,优势是实现解耦。简单来说就是推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。若在代码里涉及具体 ...
分类:
编程语言 时间:
2020-07-17 13:53:39
阅读次数:
57
简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们django后台对json和python字典(dict)进行频繁的转化, 当然我们可以使用json模块 ...
分类:
其他好文 时间:
2020-07-16 00:25:06
阅读次数:
153
GeoServer源码解析和扩展 (一)基础篇 GeoServer源码解析和扩展 (二)注册服务 GeoServer源码解析和扩展 (三)结构篇 GeoServer源码解析和扩展 (四)文件系统 ...
分类:
其他好文 时间:
2020-07-15 23:17:45
阅读次数:
74
第1章 准备工作 1-2 准备工作 1-3 认识 Flow 1-5 Vue.js 源码目录设计 1-7 Vue.js 源码构建 1-9 从入口开始 第2章 数据驱动 2-2 数据驱动 2-4 new Vue 发生了什么 2-6 Vue 实例挂载的实现 2-8 render 2-10 Virtual ...
分类:
Web程序 时间:
2020-07-14 13:33:05
阅读次数:
84
配置文件 Redis最大的一个特点就是它的配置文件行数非常多,加上注释大概一千三四百行,里面有大量的配置可以供我们进行设置。其实关于Redis的配置我们之前也提到过,比如:开启多线程、设置线程数、数据结构内部存储元素的数量限制等等,那么下面我们就来介绍一下Redis配置文件中一些其它的常见配置项。 ...
分类:
其他好文 时间:
2020-07-14 00:17:55
阅读次数:
130
问题 (1)LinkedList只是一个List吗? (2)LinkedList还有其它什么特性吗? (3)LinkedList为啥经常拿出来跟ArrayList比较? (4)我为什么把LinkedList放在最后一章来讲? 简介 LinkedList是一个以双向链表实现的List,它除了作为Lis ...
分类:
其他好文 时间:
2020-07-13 18:05:58
阅读次数:
63
Ribbon总体的源码结构,如下图所示: 上图是Ribbon源码的总览图,每一个颜色,代表源码中的一部分内容,总体来看,Ribbon源码的实现,总共分为五个部分,从上而下依次为,Ribbon入口实现、IloadBalancer实现、ServerListUpdater实现、ServerListFilt ...
分类:
编程语言 时间:
2020-07-12 22:43:21
阅读次数:
91
在多线程的情况下,ThreadLocal提供了一个种为每个线程访问相同的变量,并且线程对变量的更新互不影响的机制。也是对象实现线程安全的一种方式。 ###ThreadLocal的实现机制 我们常用的方法有get、set和initialValue,这次将会围绕这几个方法的源码进行深入解析 get方法 ...
分类:
其他好文 时间:
2020-07-12 14:09:35
阅读次数:
50