驾照考取指南

今天刚刚通过科目三、科目四,并且顺利地拿到了驾照,乘着考试的东西还没有忘记,将其记录下来,供有需要的有缘人参考

注:我是在深圳考取的驾照,这里的内容不同的城市可能稍微有点不同,请结合具体城市的实际情况使用

阅读更多

Elasticsearch Bulk API学习笔记

ES Bulk API

在操作ES的过程中,有很多的情况下是需要同时往ES插入很多数据,这个时候有两种方式

第一种是通过ES的单个操作数据接口循环操作数据,这种操作方式会当请求次数多的时候,会有很明显的缺点,请求次数多,容易影响性能;单次插入数据的有效负载低(一个http请求的body携带的实际有效内容),因此在数据规模比较大的时候,更倾向于使用第二种方式

第二种是通过ES的bulk接口,顾名思义,这个接口是用于批量操作数据的,这个接口本身支持同时使用多种类型的action(插入、删除、更改等),然后一次提交批量的操作给ES,从而提高网络的有效负载,也一定程度上降低ES的请求数量

阅读更多

跳跃表学习笔记

跳跃表学习笔记

跳跃表(Skip List),是一种基于概率,提供了查找、插入、删除近似于O(logN)性能的数据结构。

这篇文章是学习跳跃表的一个记录,包含了跳跃表的原理以及其Java实现

阅读更多

Java容器之Map(JDK1.6)

Java容器之Map(JDK1.6)

Map是Java众多容器家族中一个重要的成员….

Map一个数据结构,对于数据结构而言,最重要的其实就是数据的组织形式,也就是数据在该结构中如何存放,其组织形式也最终决定了其功能、性能,其核心点在于初始化、增加元素、查找元素、删除元素等方面,因此,下面的内容都是围绕这些核心点进行展开

Map接口是Java容器框架重要的一员,其核心是将一个key映射为value,其中key必须是一个可序列化的类型,而value则没有限制,根据实现的不同,Map有几个重要的子类,如

  1. 基于Hash算法的HashMap,提供了接近O(1)的查找、修改、删除性能
  2. 同样基于Hash算法,并且提供插入顺序或者访问顺序获取的LinkedHashMap
  3. 同样基于Hash算法,并且具备并发性能的ConcurrentHashMap
  4. 基于红黑树,提供了基于key排序的TreeMap等

当然,此外还有很多基于其他算法的Map,不过最常用到的也就是上面的几种了,这篇文章大致分析了这几个实现的代码包括了结构特点,初始化、插入、查找、删除等

这篇文章基于JDK1.6,原因是1.6的代码比较直观,没有过多的为了性能优化而简化的逻辑,相对来说比较适合入门分析,之后会抽时间再分析1.7、1.8的实现

阅读更多

红黑树学习笔记

这篇文章是红黑树学习过程中的笔记,主要涉及到二叉搜索树、二叉平衡树、2-3树、红黑树,前面的每一种树都存在着各自的缺点,科学家们通过对这些缺点进行改进(现实世界不一定是按照这个顺序、过程来的,这里是我自己的理解,推导的过程),最终得到了红黑树这种数据结构

红黑树是一种高性能的二叉搜索树,提供了在极端情况下,插入、删除、查找都是O(Log(N))的性能,同时也是Java中TreeMap,以及JDK1.8中HashMap用于提高性能的重要实现依据

阅读更多

记一次神奇的RedisLockRegistry异常分析过程

一次神奇的RedisLockRegistry异常,程序运行过程中一直抛出java.nio.BufferOverflowException,百思不得其解,最后终于通过跟踪源代码,定位到问题,最终发现是低版本Spring-Redis的一个Bug

阅读更多

【SpringBoot】SpringBoot 自动装配原理

SpringBoot中很酷的一个功能是自动装配

装配的对象是依赖,也即Spring中的Bean,而所谓的自动装配,就是尽量不需要人工配置Bean信息,比如说在没有SpringBoot之前,我们装配一个Spring MVC,需要在配置文件中配置DispatcherServlet、视图解析器等等的依赖,而在SpringBoot中则不需要,只需要引入一个Starter就能做到

原理呢,就是通过某种形式来实现自动加载依赖,而不再通过程序员配置的形式来注入

这篇文章,就来详细分析SpringBoot中是自动装配的原理

阅读更多

浅谈SPI机制.md

文章主要分析的Java中的SPI机制,SPI机制是一个基于约定的形式来加载对应的信息,实现者只需要按照约定,将对应的信息保存在指定文件中,应用启动之后就会自行去读取、发现,通过这种方式了提高了应用的可扩展性

阅读更多

Paxos学习笔记

在理解Paxos的时候,一开始觉得很莫名其妙,看了挺多的资料的,但是一直没有理解到,最后还是回归到论文上,看了Leslie Lamport的论文:Paxos Made Simple之后,才恍然大悟

这篇文章主要记录的就是这个学习,思考的过程,根据论文,加上自己的理解总结而成

阅读更多

AQS之同步工具

在前面一篇文章中,详细分析了AQS的原理,但没有涉及到AQS的使用,对于AQS我们也只是知其所以然而不止其然,只知道AQS长什么样,有什么用,是怎么实现的,但却缺少了最核心的,AQS要怎么用

在这篇文章中,我们将详细分析众多基于AQS实现的同步工具,如ReentrantLockCountdownLatch等,通过这些工具的实现来了解AQS的使用,从而打通AQS使用、分析的整个过程

阅读更多