自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日有寸进

世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。

原创 Spring5 源码阅读笔记 (1.4)知识点汇总:解决循环依赖

什么是循环依赖? 如下两段代码所示,Spring 在将 CircularRefA 实例化的时候需要注入 CircularRefB,因此会先实例化 CircularRefB。但实例化 CircularRefB 的时候又会发现需要先实例化 CircularRefA。实例化 CircularRefA 又...

2020-02-23 20:47:17 92 0

原创 详解MySQL中的事务(四种隔离级别、间隙锁等),看完还不懂你来打我

MySQL中的事务为什么需要事务什么存储引擎支持事务事务特性原子性一致性隔离性四种隔离级别Read Uncommitted(读取未提交内容)Read Committed(读取提交内容)Repeatable Read(可重复读)Serializable(可串行化)间隙锁(gap锁)持久性 前置文章...

2019-09-20 11:52:26 1173 0

原创 JVM的类加载机制

JVM的类加载机制概述初始化 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(U...

2019-09-16 11:17:46 81 0

原创 一文彻底搞清楚之JVM里最重要的垃圾回收算法与垃圾回收器

垃圾回收算法与垃圾回收器学习垃圾回收的意义如何判断对象的存活引用计数算法(JVM中没有使用)可达性分析算法(JVM中使用)关于finalize()四种引用(Reference)强引用(Strong Reference)软引用(Soft Reference)弱引用(Weak Reference)虚引...

2019-09-05 20:58:06 163 2

原创 深入理解显式锁(Lock)和AQS(AbstractQueuedSynchronizer)(超详细)

显式锁和AQS显式锁Lock特性使用范式APIReentrantLock(可重入锁)锁的可重入锁的公平和非公平APICondition使用范式APILockSupportCLH(队列锁) 显式锁 Lock 接口,实现类:ReentrantLock , ReentrantReadWriteLo...

2019-08-04 12:18:34 1459 2

原创 走进Java里的线程世界

线程基础、线程之间的共享和协作基础概念什么是进程和线程CPU时间片轮转机制澄清并行和并发高并发编程的意义、好处和注意事项认识Java里的线程 基础概念 什么是进程和线程 进程是程序运行资源分配的最小单位 进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘IO等,...

2019-07-28 17:14:40 483 3

原创 ArrayList 面试题

1,初始容量大小?最大容量? A:10。Integer.MAX_VALUE。 2,触发扩容机制? A:当调用 add 时,计算当前 size + 1,如果大于数组长度,扩容 3,add 过程 如果当前数组为空,创建容量为10的数组;如果size + 1 > length,扩容。赋值。 pub...

2020-08-17 17:07:37 44 0

原创 MySQL 索引笔记

目录B TreeB+ Tree五种索引聚簇索引联合索引辅助索引覆盖索引用不到索引 B Tree AVL Tree 的进化,一个 Node 上可以储存多个值,充分利用一个 Page 的内存大小(默认16 KB)。 B+ Tree B Tree 的进化,增强了扫表能力,IO性能更好(非叶子节点没有放...

2020-08-14 14:53:59 43 0

原创 拓扑排序

目录适用场景前提思路代码 适用场景 将图里的定点按照相连的性质进行排序 排序结果应为:1 2 4 3 5 前提 必须是有向无环图 思路 不断找一个入度为 0 的点,放入结果集,再删除节点(更新入度表)。 代码 public class TopologicalSort { public s...

2020-08-12 15:47:37 54 0

原创 为什么要重写 hashCode() 和 equals()

目录Object 的 hashCode() 与 equals()hashCodeequals重写 equals() 的场景String 的 equals()重写 hashCode() 的场景 Object 的 hashCode() 与 equals() hashCode public native...

2020-07-19 17:47:06 88 0

原创 关于 String、StringBuffer、StringBuilder 的常见面试题
原力计划

目录String创建方式一方式二方式三最大长度拼接方式一方式二StringBuilderappendtoStringStringBuffertoString String 类不可变(final),内部维护的 char[] value 数组不可变(final)。 创建 方式一 String str ...

2020-07-19 16:45:15 147 0

原创 Docker 面试题

目录DockerDocker镜像Docker容器Docker仓库Docker与虚拟机有何不同Docker的工作原理Docker容器的几种状态 Docker Docker是一个容器化平台,它以容器的形式将应用程序及其所有依赖项打包在一起,以确保应用程序在任何环境中运行。 Docker镜像 Docke...

2020-07-19 11:48:09 401 0

原创 Eureka 的多级缓存设计

目录三种缓存 三种缓存 Eureka Server 存在三个变量:registry、readWriteCacheMap、readOnlyCacheMap 保存服务注 册信息。 类 AbstractInstanceRegistry private final ConcurrentHashMap&l...

2020-07-18 18:17:55 181 0

原创 SpringBoot 整合 Mybatis 源码阅读(2.3.1.RELEASE)

目录从 spring.factories 开始MybatisAutoConfiguration@MapperScanMapperScannerRegistrarrefreshinvokeBeanFactoryPostProcessorsConfigurationClassPostProcessor...

2020-07-14 10:02:41 95 0

原创 EurekaClient 服务注册流程

服务注册的入口 这篇文章最后一段代码 @Override public void start() { // only set the port if the nonSecurePort or securePort is 0 and this.port != 0 if (this.port.ge...

2020-07-12 16:54:01 241 0

原创 服务注册的入口

目录接口服务注册的触发路径 接口 SpringCloud 是一个生态,它提供了一套标准,这套标准可以通过不同的组件来实现,其中就包含服务注册/发现、熔断、负载均衡等,在 spring-cloud-commons 这个包中, org. springframework. cloud. client. ...

2020-07-12 14:34:17 93 0

原创 Spring5 源码阅读笔记(1.5)finishRefresh() 完成刷新

protected void finishRefresh() { //清空上下文级别的资源缓存 clearResourceCaches(); //初始化上下文的LifecycleProcessor 见1.5.1 initLifecycleProcessor(); //调用所有Life...

2020-07-12 11:26:54 79 0

原创 Eureka 自我保护机制
原力计划

什么是自我机制? 自我保护机制是一种应对网络异常的安全保护措施。它的架构哲学是宁可保留不健康的微服务,也不轻易注销健康的微服务。 Eureka在运行期间会统计全部服务总体的心跳失败的比例,在15分钟内是否低于85%。如果低于,则认为是网络异常问题,应该保护,Eureka Server会将当前的实例...

2020-07-11 20:54:30 92 0

原创 push 和 pull 的优缺点

push 和 pull 的优缺点push优点缺点适用场景优化pull优点缺点优化方案适用场景 push 优点 生产者主动推送给消费者,及时性很高 缺点 当消费者消费能力远低于生产者生产能力,那么一旦生产者推送大量消息到消费者时,就会导致消费者消息堆积,处理缓慢,甚至服务崩溃。(那么如何解决...

2020-07-09 16:44:50 561 0

原创 Netty 源码阅读笔记(4) ServerBootStrap

目录类关系图4 bind4.1 initAndRegister4.1.1 newChannel4.1.2 init4.1.2.1 ServerBootstrapAcceptor 类关系图 4 bind 类 AbstractBootstrap public ChannelFuture bind()...

2020-07-05 17:34:28 74 0

原创 Netty 源码阅读笔记(5) NioServerSocketChannel

目录类关系图5.1 构造方法 类关系图 5.1 构造方法 public NioServerSocketChannel() { this(newSocket(DEFAULT_SELECTOR_PROVIDER)); } public NioServerSocketChannel(Serv...

2020-07-04 21:03:56 56 0

原创 Netty 源码阅读笔记(6) DefaultChannelPipeline

目录类关系图6.1 构造方法6.1.1 TailContext6.1.2 HeadContext 类关系图 6.1 构造方法 protected DefaultChannelPipeline(Channel channel) { this.channel = ObjectUtil.che...

2020-07-04 21:01:34 68 0

原创 Netty 源码阅读笔记(1) NioEventLoopGroup

目录类结构图1.1 构造方法1.1.1 newChild 类结构图 1.1 构造方法 public NioEventLoopGroup() { this(0); } public NioEventLoopGroup(int nThreads) { this(nThreads, ...

2020-07-04 19:39:18 56 0

原创 Netty 源码阅读笔记(3) NioEventLoop

目录类关系图3.1 构造方法3.2 run3.2.1 select3.2.2 processSelectedKeys 类关系图 3.1 构造方法 NioEventLoop(NioEventLoopGroup parent, Executor executor, SelectorProvider ...

2020-07-04 19:33:51 68 0

原创 Netty 源码阅读笔记(2)ThreadPerTaskExecutor

public final class ThreadPerTaskExecutor implements Executor { private final ThreadFactory threadFactory; public ThreadPerTaskExecutor(Threa...

2020-07-04 15:32:46 59 0

原创 基于 SpringBoot 手写 RPC 框架
原力计划

目录文件目录Messageconsumer@EnableRpcConsumer@ReferenceReferenceInvokeProxyRpcHandlerprovider@EnableRpcProvider@ServiceBeanMethodInitialMediatorMediatorSer...

2020-06-20 11:46:48 106 0

原创 序列化相关面试题

1.如果一个子类实现了序列化,父类没有实现,那么父类中的成员变量能否被序列化? 不会。 2.transient是干嘛的?有什么方法能够绕过transient的机制?这个实现机制的原理是什么? transient是干嘛的? transient 关键字的作用是控制变量的序列化,在变量声明前加上该关键字...

2020-06-16 16:05:47 156 0

原创 如何选择线程池最优线程数

目录任务分类公式公式一公式二对比联想CPU密集型IO密集型 任务分类 我们一般用一个线程池做同一种类型的任务,而不是把各种类型的任务都丢进同一个线程池执行。 而任务可以分成2种类型:CPU 密集型、IO密集型。 公式 先来看看2个公式,这两个公式适用任何一种类型。 公式一 Nthreads = N...

2020-06-12 16:51:22 227 0

原创 什么是 RESTful ?

目录约束Representational State TransferResourcesRepresentationalState Transfer 约束 前后端分离出现后,后端提供给前端的 API 应该如何设计成则便于理解、容易使用的,成了一个问题。而所谓的 RESTful 就是用来规范后端提供...

2020-06-10 10:13:17 75 0

原创 面试题:NIO/Netty 中的零拷贝体现在哪里?
原力计划

目录DirectByteBuffer 与 HeapByteBuffer 的关系面试题:NIO 的零拷贝体现在哪里? 关于 Java 里的 IO 这一块,相关代码大量调用了 JNI(Java Native Interface),JNI 是由 c/c++ 写的。而这些底层语言关于 IO 这一块,调用的...

2020-06-06 08:54:39 144 0

原创 门面模式

门面模式( Facade Pattern) 又叫外观模式,提供了一个统一的接口,用来访问子系统中的一群接口 特征:门面模式定义了一个高层接口,让子系统更容易使用 属于结构型模式 与代理模式的区别 从实现上看,其实就是一种静态代理。 但是它的重点在于封装与对外展示。 而静态代理,重点在于增强。 学...

2020-06-04 16:48:12 56 0

原创 Redis Cluster 集群原理
原力计划

简介 Redis Cluster 是 Redis3.0 版本后推出的分布式解决方案,当遇到单机内存、并发等瓶颈时,可使用此方案来解决。 和 主从模式 和 哨兵模式 不同的是: 主从模式和哨兵模式只能保证高可用,每一台机器存储的内容是相同的。 Cluster 能够让 Redis 存储更多的内容,集...

2020-06-03 08:42:29 53 0

原创 System.exit(0) 与 System.exit(1) 在运行上有何区别

疑问 看到很多博客上说,System.exit(status) ,status 为 0 就是正常退出,status 为 1 是非正常退出。 真的是这样吗? 代码测试 public class Test { public static void main(String[] args) { ...

2020-06-01 09:16:45 176 0

原创 常见面试题:交换 Integer
原力计划

目录代码知识点值传递与引用传递Integer 的 value 和 IntegerCachevalueIntegerCache反射图解 代码 import java.lang.reflect.Field; public class Test { public static void mai...

2020-05-29 21:53:40 70 0

原创 MySQL 主从复制架构
原力计划

目录主从复制结构Replication 机制配置MySQL 的 Docker 安装分别配置 my.conf主从登录 MySQL主赋权限查看日志文件位置和位置从设置主机启动 IO 进程和 SQL 进程查看进程信息主从验证 主从复制结构 在实际应用场景中,MySQL 复制 90% 以上都是一个 Mas...

2020-05-29 12:49:18 99 0

原创 CentOS7 下 Docker 安装

卸载 yum list installed | grep docker 查询到相关的,通通用以下方式卸载 yum -y remove docker-engine.x86_64 cd /etc/yum.repos.d/ 删除 docker.repo 等与 docker 有关的 安装 cd /e...

2020-05-24 14:15:54 120 0

原创 分布式事务之 LCN 框架实现方案的原理、配置与使用
原力计划

目录LCN 原理背景框架定位事务控制原理原理图配置依赖配置启动类配置使用服务提供方服务发现方TCC 原理思想原理图使用服务提供方 LCN 原理 背景 LCN 名称是由早期版本的 LCN 框架命名,在设计框架之初的1.0~2.0的版本时框架设计的步骤是如下,各取其首字母得来的 LCN 命名。 锁定...

2020-05-20 13:17:04 173 0

原创 开发必备:MD5 加密工具、非空判断工具

目录MD5 加密工具非空判断工具 MD5 加密工具 public class MD5Util { public static String encrypt(String source) { return encodeMd5(source.getBytes()); ...

2020-05-10 15:38:52 43 0

原创 开发必备:响应封装、异常封装、异常捕获

目录整合 fastjson响应封装异常封装Service 层业务异常数据异常Controller 层参数验证异常异常捕获 整合 fastjson 让返回的 json 更漂亮 SpringBoot 整合 fastjson 响应封装 @Data public final class BaseRespo...

2020-05-10 13:25:07 97 0

原创 SpringBoot 整合 fastjson

依赖配置 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.56<...

2020-05-10 12:43:25 113 0

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