自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (1)
  • 收藏
  • 关注

原创 手写一个SpringBoot Starter组件

文章目录一、创建一个spring应用二、创建AutoConfiguration三、配置文件四、创建另外一个SpringBoot项目引用我们的starter pom坐标话不多说,直接上代码,基础的SpringBoot知识就不介绍了以Redis组件为例一、创建一个spring应用创建完成后pom文件添加一个SpringBoot坐标<dependency> <groupId>org.redisson</groupId> <artifa

2020-08-04 21:17:34 306

原创 JVM知识点大集合

文章目录一、前言1、基本概念2、运行过程3、线程二、JVM内存区域划分1、程序计数器(线程私有)2、虚拟机栈(线程私有)3、本地方法区(线程私有)4、堆(线程共享)5、方法区(线程共享)三、JVM运行时内存划分1、新生代1. Eden区2. ServivorFrom区3. ServivorTo4. MinorGC 的过程(复制->清空->互换)2、老年代3、永久代1. JAVA8中的永久代四、垃圾回收与算法1、如何确定垃圾?1. 引用计数法2. 可达性分析法2、标记-清除算法(Mark-Swee

2020-05-12 18:42:23 326

原创 MySQL的索引深入剖析

文章目录一. 索引是什么???1.官方解释2. 创建索引二、索引的数据结构历史演进1. 二分查找2. 二叉树(BST Binary Search Tree)3. 平衡二叉树(AVL Tree)1. 使用AVL作为索引数据结构存在的问题4. 多路平衡查找树( B Tree) ( 分裂、 合并)5. B+树( 加强版多路平衡查找树)6. 为什么不用红黑树?7. B+和Hash索引三、B+树的落地实现1. MyISAM2. InnoDB3. 什么叫做聚集索引(聚簇索引)?4. 为什么在辅助索引里面存储的是主键值而

2020-05-08 22:57:51 735

原创 MySQL的事务与锁解析

一.什么是事务1. 使用场景项目里面,比如有涉及到转账、操作订单之类的,我们需要让这些操作在一个事务里面完成,这些操作要么全部成功,要么全部失败,不可能再一个事务里面出现A操作成功,B操作失败的情况。2. 事务定义百科显示:事务是数据库操作系统执行过程中的一个逻辑单位,由一系列的数据库操作序列组成。有两个要点:第一它是数据库最小的工作单元,是不可再分的第二它包含了一系列的操作语句,比...

2020-04-27 22:27:25 1640 1

原创 基于Socket手写实现RPC远程通信

什么是RPCRPC(Remote Procedure Call)远程过程调用,简单来说是一个服务请求另一个服务提供的数据。它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。大概的流程图代码实现1. 新建rpc_server模块,在server模块下面创建server_api和server_providerapi提供一些公共的方法,provider主要是服务端的...

2020-04-25 11:55:54 348

原创 基于Zookeeper快速实现服务注册与发现

前言:在一个单体架构里面,方法之间的调用之间调用就可以了,但是在分布式系统就必须借助服务注册与发现来实现了。主要的服务注册与发现方案Eureka、Consul、Zookeeper、nacos区别:Zookeeper保证了CP(C:一致性,P:分区容错性)当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可...

2020-04-22 22:22:54 720

原创 SpringBoot之Starter组件手写和启动原理解析

定义:starter是一种服务(或者叫插件)——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,只需要导入相关maven坐标,由Spring Boot自动通过classpath路径下的类注入需要的Bean,并织入bean。简而言之:组件化开发思维,提高代码复用性,避免重复造轮子,开箱即用!!大概启动原理Spring Boot的启动类上有一个**@SpringBoo...

2020-04-21 22:55:04 553

原创 缓存穿透的原理及解决方案

缓存穿透一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,应该去后端系统查询(比如数据库)。如果key对应的value不存在,并且同时对key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透比如我在数据库插入了10万的数据,ID自增,name是随机字符串。然后再生成一个随机字符串,模拟调用1000个线程用这个字符串同时去查询数据库和Redis代码示例:...

2020-04-19 18:41:26 742 1

原创 软件开发的7个原则

软件开发的7个原则1. 开闭原则定义:开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽...

2020-04-19 10:50:49 2420

spring1.0.zip

闲来无事,手写Spring的mini版本 1.0, 目前只有几个核心功能, @Controller,@RequestMapping,@RequestParam,HandlerMapping,DispatchServlet等.但是从前端发起URL请求到后台可以处理结果并且返回, 实现了Spring的IOC, DI核心思想.后期还会加进去AOP,动态代理等等,把压缩包解压导入idea加入 Tomcat即可运行

2020-04-06

空空如也

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

TA关注的人

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