自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 API网关设计(叙)登陆逻辑流程

前言a few days ago, somebody asked me about distributed login logic.at that time i didn’t have time to explain in detail.better late than never.so,here we go .分布式系统登陆其实没多复杂点,主要还是细节的把控 重点细节token...

2019-03-17 13:48:47 1055 1

原创 API网关设计(一)之Token多平台身份认证方案

API网关设计(一)之Token多平台身份认证方案随着4g的发展现如今早已不是当年的web登陆单一模式,而不久5g的到来又会带来无人车等其他设备的接入。所以为了应对将来的时代的变化,一个好的多平台认证登陆方案是切实所需。概述今天咱们面对移动互联网的发展,系统一般是多个客户端对应一个服务端。客户端统一通过F5或者Nginx代理转发到API网关,最后发送到服务API。如下图架构图所示...

2019-03-17 13:46:18 6250 3

原创 SpringBoot2.动态@Value实现

title: SpringBoot2.动态@Value实现前言前面文章有详细描述过各个不同阶段对于bean的扩展接口所以今天就基于BeanPostProcessor实现Spring中的@Value注解值动态变化基于上面也可以实现一个配置中心,比如说Apollo具体的实现步骤分为如下几步1.通过BeanPostProcessor取得有使用@Value注解的bean,并存储到map中2...

2019-02-27 09:53:41 6858 4

原创 SpringBoot2.扩展接口

title: SpringBoot2.扩展接口Spring扩展描述判断一个框架或者程序的好坏直观的方法就是看其扩展性如何。毫无疑问Spring扩展性这方面做的不错。说到扩展主要还是在容器的refresh这块,也有listener(这一块先放放)实现原则严格按照开闭原则,内部修改关闭,对扩展开放咱们先看一张流程图如上图中主要的画出来了具体的执行流程,下面会具体说到每一个扩展接口的...

2019-02-27 09:53:17 662

原创 SpringBoot2自动装配

title: SpringBoot2.StartProcess.自动装配自动装配提纲自动装配BeanDefinetions自动配置这里的主要逻辑其实还是在SpringFrame里面实现并没有多少特殊的地方咱们继续进入到AbstarctApplicationContext的refresh方法中去看看SpringBoot的这一块具体加载BeanDefinetions主要在invok...

2019-02-27 09:52:56 1177

原创 SpringBoot2启动流程深入分析

title: SpringBoot2.StartProcess.depthStartProcess提纲启动监听器获取环境创建容器准备容器刷新容器刷新容器后扩展昨天了咱们把大的过程说了一下,今天咱们把细化的过程详细写写。之后再根据这几个细化过程,继续来一遍深入的源码解读。一点关于源码阅读的心得就是先看大架构布局,然后细看各个组成模块。明白各个模块用到的技术通过上面的方式...

2019-02-27 09:52:33 743

原创 SpringBoot2启动流程

title: SpringBoot2.StartProcessStartProcess提纲启动流程过程具体源码分析SpringBoot如果要说是SpringFrameWork的封装那么也不全是,个人认为从思想上来说是两个东西。SpringBoot主要具备如下特性1.自动装配2.内置tomcat等web容器3.与devops天然集成,这也可以认为是微服务的特点。启动流程过程...

2019-02-27 09:52:02 679

原创 MySql索引设计

title: MySql索引设计索引设计提纲索引概述索引类型高性能索引策略索引概述什么是索引索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能。索引对于良好的性能非常关键。尤其当数据量越来越大的时候,索引对于性能愈发重要。不恰当的索引会导致随着数据量增大,性能急剧下降。优点:1.提高检索速度;2.帮助服务器避免排序和临时表3.将随机IO变为顺序IO...

2019-02-27 09:49:14 113

原创 MySql对象设计

title: MySql对象设计对象设计提纲设计原则说明范式化与逆范式的选择表容量设计和数据切分表设计字段设计设计原则说明完整性1.数据库完整性是指数据库中数据的正确性和相容性2.数据库完整性是由完整性约束来保证的3.数据库完整性约束通过DBMS或者应用程序来实现4.博主内部系统全用程序来实现完整性,禁止使用外键和触发器。因为外键影响数据库的事务操作性能,触发器难以...

2019-02-27 09:48:44 287

原创 MySql体系结构和存储引擎

title: MySql体系结构和存储引擎关键字 关于mysql 体系结构 插件式存储引擎关于mysql1995年成立于瑞典并发布第一个版本2008年2月被Sun收购2010年1月被Oracle收购2010年12月发布5.5版本2012年2月发布7.22013念2月发布5.62015年10月发布5.72018年发布8.0体系结构1.连接池组件2.管理服务和工...

2019-02-27 09:48:18 144

原创 ThreadLocal源码分析

title: ThreadLocal的那些事ThreadLocal提纲ThreadLocal简介ThreadLocal源码解析ThreadLocal与InheritableThreadLocal的坑最近不是不写博客了。而是想搞一个大事情,想体系的写JVM从内存模型到垃圾回收器以及一些我自己推理的阀值设定公式再到类加载。但是这部分内容其实水很深,怕没写好所以又在看书回顾。所以有点...

2019-02-26 09:53:40 135

原创 StampedLock源码分析

title: JUC.StampedLockStampedLock提纲StampedLock简介原理剖析StampedLock简介首先大方向看下StampedLock类图从图中可以看出这个锁貌似有点屌屌的有读锁写锁读写锁。这个锁看上去很厉害,其实这个锁不像其它锁那么安全使用,存在很高的风险性。听说该锁设计之初是为了作为工具类开发其它线程安全组件,用好了提升性能。没用好会发生死...

2019-02-26 09:53:06 377

原创 Semaphore源码分析

title: JUC.SemaphoreSemaphore提纲Semaphore简介Semaphore源码解析Semaphore简介一句话介绍Semaphore就是资源的控制访问许可控制。限流听说过吧,令牌桶算法听说过呗。所以Semaphore就是一个桶里面放入特定的令牌,当有需要访问资源的时候就去里面拿一个令牌。没了就阻塞住需要访问资源的线程。综上Semaphore想怎么用,...

2019-02-26 09:52:40 166

原创 ReentrantReadWriteLock源码分析

title: JUC.ReentrantReadWriteLockReentrantReadWriteLock提纲ReentrantReadWriteLock简介原理剖析ReentrantReadWriteLock简介ReentrantReadWriteLock适用于读多写少的场景,ReentrantReadWriteLock采用的是读写分离的方式。相比较上一章的StampedLo...

2019-02-26 09:52:15 118

原创 ReentrantLock源码分析

title: JUC.ReentrantLockReentrantLock提纲ReentrantLock简介获取与释放锁Condition讲解ReentrantLock简介ReentrantLock是可重入的独占锁,同时只允许一个线程获取该锁,其它被阻塞的锁会放入AQS队列里面。首先看下ReentrantLock的类图从类图可以看出来ReentrantLock使用AQS实现...

2019-02-26 09:51:43 101

原创 1.7及1.8 Hashmap与ConcurrentHashMap详解

title: JUC.ConcurrentHashMap与HashMap提纲1.7HashMap1.8HashMap1.7ConcurrentHashMap1.8ConcurrentHashMap这一章东西比较多分开来写可以写四篇,所以不是一个晚上可以写完。我决定尽快在这两天写完。这一章的内容推荐可以看看《码出高效》深入浅出,提高思维深入,摸着良心说。对于代码中涉及到的复杂数...

2019-02-26 09:51:15 728

原创 红黑树详解

title: 红黑树原理红黑树提纲2-3树介绍红黑树该博客都是读者具备二分树基础知识前提下写的(不清楚的不要看下面的内容了,看了也不会明白多少的…)下面都统一用RBTree表示红黑树。RBTree很多人都觉得难,其实我刚听到的时候也觉得难。因为大家都说难。。。哈哈~开个玩笑RBTree其实并没有说的那么难,RBTree是23Tree的变种版本。所以正常的学习流程应该是先从23T...

2019-02-26 09:50:05 6351 3

原创 CyclicBarrier源码分析

title: JUC.CyclicBarrierCyclicBarrier提纲CyclicBarrier简介CyclicBarrier源码解析CyclicBarrier简介如果说CountDownLatch让一个或者多个线程等待其它线程完成操作。那么CyclicBarrier就是多个线程之间互相等待。具体可以举一个例子来理解,比如说五个人组团打lol。得等到五个人都吃饱喝足了然...

2019-02-26 09:49:33 103

原创 CopyOnWriteArrayList源码分析

title: JUC.CopyOnWriteArrayListCopyOnWriteArrayList提纲CopyOnWriteArrayList简介CopyOnWriteArrayList源码解读CopyOnWriteArrayList简介CopyOnWriteArrayList是一个适用于都多写少的线程安全集合类,但是也需要明白的是读写分离的集合都会存在弱一致性。说人话就是会有...

2019-02-26 09:48:59 150

原创 CAS详解

title: JUC.CAS及原子类源码CAS提纲CAS简介暴力拆迁CAS我觉得网上很多写CAS和原子类源码的都是垃圾。我不是在针对他们个人,而是真心觉得他们写的垃圾。所以没办法被迫写一篇博客给程序员同胞做贡献。CAS简介CAS的全称Compare And Swap,即比较并交换。在JAVA的并发工具类当中无处不在。如果说AQS是爸爸一般存在。那么CAS简直就是爷爷级的存在。...

2019-02-26 09:48:17 299 1

原创 AQS详解

title: JUC.AQSAQS提纲AQS简介依赖工具类LockSupport获取与释放锁ConditionObjectAQS简介AbstractQueuedSynchronizer抽象同步简称AQS,它是实现同步器的基础组件,并发包中的锁底层就是通过AQS实现。下面看下AQS类的UML类图由该图可以看出来AQS是一个FIFO的双向队列,其内部通过Node节点head和...

2019-02-25 20:48:02 344

原创 AQS实现非可重入锁

title: JUC.自定义非可重入独占锁UnableReentrantLock提纲可重入锁非可重入锁实现测试死锁## UnableReentrantLock简介可重入锁,也叫做递归锁,指的是在同一线程内,外层函数获得锁之后,内层递归函数仍然可以获取到该锁。换一种说法:同一个线程再次进入同步代码时,可以使用自己已获取到的锁。防止在同一线程中多次获取锁而导致死锁发生。非可重入...

2019-02-25 20:47:41 357

原创 微服务与OSGI

title: 微服务与模块化这不是一篇技术博客,而是一篇思考博客。模块化,service mesh ,微服务由于微服务的坑所以出现了service mesh但是又开始有模块化架构方式,类似与OSGI。比如说蚂蚁SOFABoot难道是合久必分,分久必合?我觉得首先得想明白三个问题1.为什么用微服务2.为什么用模块化3.为什么需要service mesh然后再思考三个问题1.微...

2019-02-25 20:47:16 3554 1

原创 JMM详解

title: JMM详解JMM提纲JMM组成JMM组成问到JMM一般的认知情况下会出现下面两种情况1.没错内存模型就是堆栈2.知道堆栈 方法区 计数器由上可以知道堆栈其实比较重要也比较深入人心,下面继续说内存模型按大方向可以分为两种1.堆2.非堆看下面一张图再细分一下就是下面五种1.栈2.本地方法栈3.方法区4.计数器5.堆前面四种属于非堆内存,明白这...

2019-02-25 20:46:46 537 1

原创 JMM内存模型

title: Java.Memory.ModelJMM提纲JMM简介JMM随便瞎说JMM简介在Java存储器模型指定的Java虚拟机的计算机的存储器(RAM)。Java虚拟机是计算机模型,这个模型当然包含内存模型-JMM。理解JMM模型非常重要(如果你想正确行为的并发程序设计。在Java存储器模型指定如何和何时不同的线程可能会看到值写入变量的其他线程共享以及如何共享变量。原始J...

2019-02-25 20:46:20 156

原创 JAVA垃圾回收器

title: Java.Garbage.CollectionJava.Garbage.Collection提纲垃圾回收算法垃圾回收器Garbage.Collection简介首先咱们必须名明白为什么需要学习以及深入研究垃圾回收。其次咱们得学会合理使用各种垃圾回收器。第一个问题为什么要学习,有如下几个原因1.解决各种生产故障2.写出高性能代码(和写代码没联系?您别搞笑!明白每个...

2019-02-25 20:45:49 1176

原创 Spring Boot2.0深入理解SpringApplication第二章

这一章主要写创建并准备Enviroment,依然是进入到SpringApplication类下面的run方法中。咱们看一下代码//args参数不用解释了ApplicationArguments applicationArguments = new DefaultApplicationArguments(args);//准备系统参数,主要看prepareEnviroment干了些啥。Co...

2018-10-06 05:57:35 2729

原创 Spring Boot2.0深入理解SpringApplication第一章

在上一篇中已经大致描述了Spring Boot的启动流程,这篇将根据源代码详细讲解SpringApplication类中的各种实现原理。通过run方法咱们首先会通过构造函数新建一个SpringApplication对象。咱们看下面代码看它具体做了什么。 @SuppressWarnings({ "unchecked", "rawtypes" }) public SpringApplicati...

2018-10-05 21:41:08 217

原创 Spring Boot 应用启动流程

 基于Spring Boot2.0版本,本文主要大致描述启动流程。后面详细介绍流程中各个步骤的具体实现源码。首先我想给大家附上一张启动流程图,后续的文章都会根据图中各个节点展开。目录1.SpringApplication的run方法2.创建应用上下文初始化类3.加载刷新上下文4.启动应用1.SpringApplication的run方法run方法包含着所有Spring ...

2018-10-04 02:29:52 276

空空如也

空空如也

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

TA关注的人

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