自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 domain代码生成修改工具,批量生成swagger、javax.validation注解,减少重复工作

在这个微服务化为主流的阶段,domain的重要性不言而喻,他即体现了一个服务的业务能力,又是服务间通信的契约,市面上已经有一些很成熟的domain代码生成工具,比如Mybatis-Generator, 但是基本没看到可以支撑domain进行二次代码修改的自动化工具.这在很多场景下增加了额外的开发工作量例如前后端分离,很多小伙伴会选择swagger作为api文档生成工具,但这也意味着我们需要对...

2019-06-16 19:10:43 968 5

原创 谈谈JDK和Netty 堆外内存的申请和释放

JDK的堆外内存申请ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024)跟踪源码这里的ByteBuffer的实现类实际上是DirectByteBuffer DirectByteBuffer(int cap) { // package-private super(-1, 0, cap, cap); boolean pa = VM.isDirectMemoryPageAlign

2021-08-04 23:12:33 821

原创 用java实现quickList

最近研究了下redis关于quickList的数据结构,大致如下图这就类似于java的LinkedList和ArrayList的组合,于是尝试用java去实现类似的数据结构项目地址:https://github.com/zhaojun123/quicklist/blob/master/src/main/java/com/zj/QuickList.java测试用例:https://github.com/zhaojun123/quicklist/blob/master/src/test/java/c

2021-02-14 02:08:04 284

原创 一个复杂业务树的构造工具类

因公司业务需求,需要构造各种类型组织关系树。有同种模型的关系树,例如 单位、子单位关系树也有不同模型的关系树,例如 单位、子单位、部门、子部门关系树那么基于这种复杂的关系树,我们需要将树的基本结构关系以及业务代码做分离首先构造一个树的基类/** * 树的抽象 */public abstract class Tree{ private List<Tree> ch...

2020-03-05 21:40:23 492 3

原创 springboot 创建自定义filter 非常规写法

先来一个很普通的例子, springBoot创建自定义filterpublic class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public vo...

2019-11-02 02:03:03 274

原创 springCloud feign 源码解析

基于NetFlix Feign实现,整合了SpringCloud Ribbon 和 SpringCloud hystrix, 同时封装了Http调用流程,更适合面向接口化的编程习惯该图片摘自https://www.jianshu.com/p/8c7b92b4396c以下解析源自版本springBoot 2.1.3.RELEASEspringCloud Greenwich.RELEAS...

2019-05-09 00:50:13 461

原创 springCloud Ribbon源码浅析

springboot 版本2.1.3.RELEASEspringCloud版本Greenwich.RELEASELoadBalancerAutoConfiguration截取重要部分@Configuration@ConditionalOnClass(RestTemplate.class)@ConditionalOnBean(LoadBalancerClient.class)@Enab...

2019-03-18 19:41:17 178

原创 SpringBoot自动装载机制

springBoot是建立在spring的基础上,所以我们先来看下spring中类似的bean装载功能一、ImportSelector,DeferredImportSelectorImportSelector接口只定义了一个selectImports(),用于指定需要注册为bean的Class名称。当在@Configuration标注的Class上使用@Import引入了一个ImportSel...

2019-03-13 19:57:07 5045 1

原创 spring AOP 浅析

说到spring的Transactional,必须先了解spring AOP的原理,先看个简单的例子//一个普通的类public class CyclicA { public void printlnMethod(){ System.out.println(&quot;i am method&quot;); }}/** * 切面,包含了一个Pointcut和多个Ad...

2018-12-23 00:46:47 123

原创 spring-bean 全生命周期时序图

先来一段简单的代码//获取资源ClassPathResource resource = new ClassPathResource(&amp;amp;amp;amp;amp;amp;quot;spring-core.xml&amp;amp;amp;amp;amp;amp;quot;);//获取 BeanFactory DefaultListableBeanFactory factory = new DefaultListableBeanFactory();//根据新建的 BeanF

2018-12-07 23:48:50 2140 2

原创 CyclicBarrier 1.8 解析

前置基础,强烈建议先阅读AbstractQueuedSynchronizer解析、condition实现解析CyclicBarrier的描述:“让一组线程到达一个屏障时被阻塞,直到所有的线程都到达屏障时,屏障才会打开,所有被屏障拦截的线程才继续执行”, 而且这个屏障是可以反复利用,所以CyclicBarrier被称为循环栅栏、循环屏障等先看个小例子:士兵集合执行任务public class ...

2018-11-11 12:36:44 175

原创 CountDownLatch 1.8 解析

CountDownLatch 的描述是“允许一个或者多个线程等待其他线程完成操作”下面先看一个简单的例子“出门三部曲” public static void checkGoOut() throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(3); n...

2018-11-07 13:30:49 230

原创 ReentrantLock 1.8解析

ReentrantLock , 可重入锁, 和 synchronized 有着相同的内存语义接下来会比较下 这俩者之间的相同以及区别相同点:俩者有着相同的内存语义,1、当线程获取锁时,JMM会把线程对应的本地内存置为无效,然后临界区的代码从主存中读入共享变量到工作内存。2、 当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中。区别在于,ReentrantLoc...

2018-11-01 12:25:35 232

原创 condition实现解析 1.8

任意一个java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wait(longtimeOut)、notify()、notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式.condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这俩者在使用方法以及功能特性...

2018-10-24 11:41:46 168

原创 AbstractQueuedSynchronizer解析 1.8

AbstractQueuedSynchronizer简称AQS,即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JUC并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。它是JUC并发包中的核心基础组件下面先简单的介绍下AQS中比较重要的方法//同步状态,使用者可以对这...

2018-10-17 19:28:17 266 1

转载 OAuth2.0 4种授权模式

学习了杨波老师的《微服务安全架构和实践》关于Oauth2.0的知识,做了下简单的总结,具体内容在https://github.com/geektime-geekbang/oauth2lab最安全的授权方式,适用于开放平台,客户端为不受信的第三方应用,最终客户端获取了token,用户是不知情的1、用户 ——》客户端(第三方不受信应用)2、客户端——〉授权服务器 请求授权(携带clien...

2018-10-13 21:36:25 4081

原创 ConcurrentHashMap1.8解析

ConcurrentHashMap的结构和HashMap基本相同,由 数组+链表+红黑树 组成,只是在并发上面做了很多处理.先了解下重要的变量和内部类static final int MOVED = -1; // hash for forwarding nodes//数组,这里的Node有三类,链表头节点、树的根节点、ForwardingNode节点transient volati...

2018-10-05 17:55:00 1164

原创 HashMap解析(1.8版)

Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。了解下一些重要的成员变量 //tab默认容量 16 static final int DEFAULT_INITIAL_CAPACITY = 1 &lt;&lt; 4; //tab最大容量 static final int MAXIMUM_CAPACITY =...

2018-10-01 00:55:53 122

原创 java8 函数式编程读书笔记

1.2 什么是函数式编程每个人对函数式编程的理解不尽相同。但其核心是:在思考问题时,使用不可变值和函 数,函数对一个值进行处理,映射成另一个值。第二章 Lambda表达式2.2 辨别Lambda表达式Runnable noArguments = () -&amp;amp;gt; System.out.println(&amp;quot;Hello World”); ActionListener oneArgument ...

2018-09-29 00:03:02 1008

转载 @sun.misc.Contended 解决伪共享问题

先来看下什么叫做伪共享,转载自并发编程网 – ifeve.com 链接地址: 伪共享(False Sharing)缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中...

2018-09-16 15:37:36 2411

原创 DelayQueue 出入队源码分析(摘自java 并发编程的艺术6.3)

DalayQueue 是一个支持延时获取元素的无界阻塞队列,队列使用PriorityQueue来实现,队列中的元素必须实现Delayed接口运用场景: 缓存系统的设计,可以保存缓存元素的有效期,一旦能从DelayQueue中获取元素,表示缓存有效期到了 定时任务调度,使用DelayQueue保存当天将会执行的任务和执行时间,一旦从DelayQueue中获取到任务就开始执行 ...

2018-09-13 22:44:43 152

原创 ConcurrentLinkedQueue 出入队源码分析(java 并发编程的艺术6.2章)

6.2 ConcurrentLinkedQueue 一个基于链接节点的无界线程安全队列 6.2.2 入队列 1、入队列的过程1、添加元素1,队列更新head节点的next节点为元素1节点,tail节点默认情况下等于head节点2、添加元素2,队列首先设置元素1节点的next节点为元素2节点,然后更新tail节点指向元素2节点3、添加元素3,设置tail节...

2018-09-12 21:52:39 141

原创 Effective Java 读书笔记

第二章  创建与销毁对象1、考虑用静态工厂方法代替构造器优点:    1、有名称    2、不必在每次调用他们的时候都创建一个新的对象    3、他们可以返回原返回类型的任何子类型对象    4、使代码更简洁缺点:    1、类如果不含公有的或者受保护的构造器,就不能被子类化    2、与其他的静态方法实际上没有任何区别,不能一眼就看出来        可以...

2018-09-12 15:10:59 174

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除