
源码分析
无名同学
不到南山终不休
展开
-
ArrayBlockingQueue源码分析
ArrayBlockingQueue最核心的实现就是一把锁,两个条件。具体看源码如下: /** Main lock guarding all access */ final ReentrantLock lock; /** Condition for waiting takes */ private final Condition notEmpty; /** Condition for waiting puts */ private final Condit原创 2020-10-18 16:31:18 · 198 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁
ReentrantReadWriteLock是一把可重入读写锁,提高了读的性能。读写锁时如何实现了呢。其实读写锁还是通过一个compareAndSet实现的,只是里面的state的含义不一样了,原先是表示线程的重入次数,现在对该变量做了拆分。高16位表示读线程的重入次数,第16位表示写线程的重入次数。下面我们看几个变量和方法 static final int SHARED_SHIFT = 16; //1 0000 0000 0000 0000 用于读线程重入一次 .原创 2020-10-18 16:08:43 · 213 阅读 · 1 评论 -
AtomicInteger源码分析
AtomicInteger的实现主要是通过方法compareAndSet实现的,这个方法底层是调用了native的方法,下面看下这个方法。public final boolean compareAndSet(int expect, int update)这个方法第一个参数是expect,为原来的值。update为修改后的值。如果当前的值为expect,就修改为update的值,整个过程是一个原子操作。那这个类是如何保证自增不冲突的呢,我们看一下具体的实现。 public final int原创 2020-10-18 15:37:49 · 172 阅读 · 0 评论 -
B+树实现以及相关功能演示
简介下面是写的b+树的java版本的代码,BPlusTree为对外开放b+树,BPlusNode为非叶子节点数据结构,LeafNode为叶子节点数据数据结构,Node为叶子节点和非叶子节点公用部分。结合网上的图文教程然后来看这个代码会理解的比较快。图文教程地址代码的注释已经很全了,就不做说明了。源码package com.smart.leetcode.tree.mybplustree;import java.util.LinkedList;import java.util.List;/*原创 2020-10-11 11:57:53 · 782 阅读 · 0 评论 -
eureka服务端源码分析
服务端主要功能服务的注册服务的续约服务的下线给客户端提供服务信息这里不对每一点就讲解,就讲一下服务的注册。如果看过eureka客户端的代码,可以知道,eureka客户端是通过发送http请求向服务端注册信息的,这里来看一下入口代码: /** * Registers information about a particular instance for an ...原创 2020-03-08 17:10:56 · 362 阅读 · 0 评论 -
eureka客户端源码分析
eureka客户端可以完成的事情eureka客户端可以获取其他客户端的信息,用于向其他客户端发送请求。eureka客户端可以把自己注册到注册中心,这样其他客户端就可以发现本客户端,直接来调用本客户端。相关依赖首先要是springboot应用 <dependency> <groupId>org.springframework...原创 2020-03-07 22:29:13 · 326 阅读 · 0 评论 -
springboot手动封装一个starter
准备要封装的组件 <groupId>com.itpsc</groupId> <artifactId>com-itpsc-service</artifactId> <version>1.0</version>里面定义一个简单的类public class UserService { priva...原创 2020-01-21 09:43:28 · 433 阅读 · 0 评论 -
ThreadLocal阅读
ThreadLocal的实现是通过在线程内部保存了一个map结构,当前线程使用变量时,获取当前线程内部的map,达到了线程本地变量的目的,下面是对源码加了一些注释,有误请指正。package com.mr.study.threadlocal;import java.lang.ref.WeakReference;import java.util.Objects;import java.ut...原创 2019-08-04 13:38:51 · 181 阅读 · 0 评论 -
spring源码分析
spring在我们的java开发中使用很多,IOC作为spring最基础的组件,被大家所熟知,但是spring具体是怎么使用这个特性的呢?,本文主要讲解一下IOC的注册过程。从spring的启动开始,这里没有使用mvc的模块,主要是想单独分离出来讲IOC.预先学习这里是一个很简单的例子,但是对于理解spring的ioc很重要,一定要先读完哦,这个就是一个很简单的springioc过程。p...原创 2019-11-09 12:31:09 · 299 阅读 · 0 评论