自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我就是我的博客

温故而知新

  • 博客(204)
  • 收藏
  • 关注

原创 zk的watch机制使用及原理分析

Zookeeper引入了wacther机制来实现分布式数据的发布/订阅功能。可以让多个订阅者同时监听某一个主题对象,当主题对象自身状态发生改变时就会通知所有订阅者。以上就是watch注册与实现监听的整个过程了。其实 主体逻辑不复杂,只是夹杂着网络通信以及大量的异步化流程 加大了阅读代码的难度。...

2022-08-05 15:29:31 2432 1

原创 Zookeeper中leader选举原理分析

一文阐述 在zk集群启动时 leader选举的过程

2022-08-03 14:28:44 487

原创 基于zk的分布式锁使用及原理分析

此篇文章结合zk客户端类库curator来演示分布式锁的使用及对加锁、释放锁等原理进行分析

2022-08-03 14:12:22 334

原创 Spring Bean生命周期:Bean的初始化阶段

【Spring Bean 生命周期系列】传送门1、Spring Bean生命周期: Bean元信息的配置与解析阶段2、Spring Bean生命周期: Bean的注册3、Spring Bean生命周期: BeanDefinition的合并过程4、Spring Bean生命周期: Bean的实例化5、Spring Bean生命周期:属性赋值阶段写在前面注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE前言接着上

2022-03-04 15:35:09 1109

原创 Spring Bean生命周期:属性赋值阶段

【Spring Bean 生命周期系列】传送门1、Spring Bean生命周期: Bean元信息的配置与解析阶段2、Spring Bean生命周期: Bean的注册3、Spring Bean生命周期: BeanDefinition的合并过程4、Spring Bean生命周期: Bean的实例化前言上节在谈论Bean的实例化过程时,在说明实例化后阶段时只是粗略地看了一下populateBean,并未展开分析。本节接着populateBean开始分析对象赋值阶段的事情。populateBean其

2022-03-04 12:01:33 1389

原创 Spring Bean生命周期: Bean的实例化

【Spring Bean 生命周期系列】传送门1、Spring Bean生命周期: Bean元信息的配置与解析阶段2、Spring Bean生命周期: Bean的注册3、Spring Bean生命周期: BeanDefinition的合并过程写在前面注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE前言上一节说到了BeanDefinition的合并过程,这节该说Bean的实例化过程了。根据AbstractAuto

2022-03-03 17:18:47 852

原创 BeanPostProcessor浅析

文章目录前言BeanPostProcessor接口定义BeanPostProcessor注册与源码分析常见BeanPostProcessor及用途InstantiationAwareBeanPostProcessor调用时机BeanPostProcessor的简单使用写在前面注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE前言BeanPostProcessor 提供 Spring Bean 初始化前和初始化后的 生命

2022-03-02 18:55:55 488

原创 Spring Bean生命周期: BeanDefinition的合并过程

【Spring Bean 生命周期系列】传送门1、Spring Bean生命周期: Bean元信息的配置与解析阶段2、Spring Bean生命周期: Bean的注册写在前面注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE前言书接上文,BeanDefinition注册到IoC容器后,紧接着就是要使用Bean了,要使用必须先要获取Bean,这里我们就以DefaultListableBeanFactory#getBe

2022-03-02 14:30:08 485

原创 BeanDefinition的概述及使用

文章目录前言BeanDefinition类的属性释义BeanDefinition的分类BeanDefinition的使用写在前面注:本文章使用的 SpringBoot 版本为 2.2.4.RELEASE,其 Spring 版本为 5.2.3.RELEASE前言BeanDefinition是Spring中非常重要的概念,可以说 它是IoC容器中我们定义的各种Bean的"真身"。它主要用来描述Bean,内部拥有很多属性及方法。我们通过注解操作Bean或在Bean上设置的一些属性均能在BeanDefi

2022-03-02 13:28:07 1609

原创 Spring Bean生命周期: Bean的注册

文章目录前言BeanFactory的继承体系Bean的注册alias别名的注册总结前言上篇文章介绍了Bean元信息的配置与解析过程,限于篇幅Bean注册过程就没展开。这里主要围绕BeanDefinitionReaderUtils#registerBeanDefinition展开分析下Bean注册过程public static void registerBeanDefinition( BeanDefinitionHolder definitionHolder, BeanDefinitionReg

2022-03-01 23:35:42 568

原创 Spring Bean生命周期:Bean元信息的配置与解析阶段

文章目录BeanDefinitionReader体系元信息配置与解析方式XmlBeanDefinitionReader元信息解析 源码分析AnnotatedBeanDefinitionReader元信息解析 源码分析趁着有时间 把最近阅读Spring源码的一些理解 给记录下。虽然Bean的创建可以采用BeanDefinition API 也可以直接采用注解方式,但从学习角度出发这里主要以API形式创建Bean。下面以一段Bean创建的示例来引出讨论的议题。public class XmlBeanM

2022-03-01 19:13:52 691

原创 Java 平铺列表转为树形结构

在业务中往往有一些数据是有层级结构的,比如数据表中原始数据如下形式idnameparentId11null21-1131-1-1241-11想要将平铺的数据变成有层次的树形结构,这里分享一个非递归列表转为树形结构的思路方法。基本的数据结构@Datapublic class Result implements Serializable { private List<Result> children; //父id

2022-02-09 10:40:25 2114

原创 缓存雪崩 缓存击穿 缓存雪崩出现原因及解决方案

文章目录缓存雪崩出现原因一解决方案方案一 差异化设置过期时间方案二 服务降级方案三 不设置过期时间出现原因二解决方案方案一 服务熔断方案二 请求限流方案三 Redis构建高可靠集群缓存击穿解决方案方案一 分布式锁方案二 热点数据不设置过期时间缓存穿透出现原因解决方案方案一 设置缺省值方案二 使用布隆过滤器过滤数据缓存雪崩大量的应用请求无法在Redis缓存中进行处理,紧接着应用将大量请求发送到数据库层,导致数据库层的压力激增缓存雪崩一般有两个原因导致,解决方案也有所不同出现原因一缓存中有大量

2022-02-08 18:39:03 2399

原创 Redis如何保证缓存和数据库数据一致?

文章目录缓存的类型只读缓存读写缓存同步直写异步写回问题缓存和数据库的数据一致性读写缓存的数据一致性只读缓存的数据一致性先删缓存再更新数据库先更新数据库再删缓存重试机制问题缓存的类型按照Redis是否接收写请求,可以将缓存分为读写缓存和只读缓存只读缓存​ 当Redis作为只读缓存时,应用程序要读取数据时,会去Redis中查找。而应用程序的写请求则会发往后端的数据库,在数据库中完成增删改操作。对于删除、修改动作,如果Redis中已经缓存了这些数据量,那么应用程序需要把这些缓存数据给删除掉。//

2022-02-08 15:05:33 2029 1

原创 ByteBuffer常用方法分析

文章目录引例flip方法mark && reset方法clear方法compact方法总结引例以一个例子 结合图形说明下 ByteBuffer中这几个方法的使用区别public class ByteBufferDemo { public static void main(String[] args) { ByteBuffer buffer = ByteBuffer.allocate(10); //这里存放Double 需要8个字节 如果ByteB

2022-02-07 13:08:09 1243

原创 知其所以然之Nacos配置中心源码浅析

文章目录引例NacosConfigService的初始化ServerHttpAgent的构造函数解析ServerListManager的构造函数解析ConfigFilterChainManager的构造函数解析ClientWorker的构造函数解析NacosConfigService#getConfig方法浅析LocalConfigInfoProcessor.getFailover 代码分析worker.getServerConfig 代码分析配置更新添加监听器addCacheDataIfAbsent引例

2022-01-27 18:16:52 1108

原创 小试牛刀之Nacos如何使用

文章目录基于Nacos SDK演示微服务中使用演示基于Nacos SDK演示这里使用的Nacos服务端是1.1.14版本引入Nacos-client类库 <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version&g

2022-01-27 18:10:59 2455

原创 工欲善其事之Nacos环境搭建

文章目录Nacos中的几个名词配置集 Data ID配置分组(Group)命名空间(Namespace)Nacos的安装Nacos单机环境Nacos集群搭建持久化nacos配置数据安装中遇到的问题Nacos中的几个名词Nacos 是Dynamic Naming and Configuration Service的缩写。一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心。对于Nacos配置管理,通过Namespace、Group、Data ID 能够定位到一个配置集配置集 Data ID

2022-01-27 17:40:12 1496

原创 Spring Scope作用域及源码解析

文章目录作用域范围说明singleton & prototype 举例说明prototype Bean销毁示例request & session & applicationScope源码分析@RequestScope & @SessionScopeScope扩展写在前面,这里使用的spring-context版本 5.1.3.RELEASE;SpringBoot版本2.2.4.RELEASE作用域范围说明来源说明singleton默认Sprin

2022-01-26 18:40:58 1303 1

原创 Java虚拟机之类加载子系统

文章目录类加载机制类加载器双亲委派模型破坏双亲委派模型类加载过程加载连接验证准备解析初始化打破双亲委派机制类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制这一步骤,对应于上图中黄色标注的类加载子系统。它就是负责将Class文件从外部加载进来,加载进来的类信息被存放在方法区而类加载子系统是通过类加载器 去完成这一操作的类加载器从Java虚拟机的角度来看,只存在两种不同的类加载器:一种

2022-01-24 17:30:11 894

原创 JDK8 线程池核心代码解析

文章目录线程池中的一些重要属性常见方法解析runStateOfworkerCountOfcltOf线程池状态比较ThreadPoolExecutor构造函数线程池工作单元Worker类解析常用属性常用方法解析executeaddWorkerrunWorker()processWorkerExitgetTaskshutdowninterruptIdleWorkerstryTerminateshutdownNowawaitTermination线程池中的一些重要属性//32-3=29private sta

2022-01-24 17:22:06 493

原创 JDK8 ThreadLocal源码分析

文章目录ThreadLcoal内部结构变化ThreadLocalMap属性介绍ThreadLocal#setThread#GETThreadLocal#remove关于ThreadLocal的基本使用与介绍,请参见这篇文章ThreadLcoal内部结构变化早期版本的ThreadLocal可以理解为一个Map。当工作线程Thread实例向本地变量保持某个值时,会议"key-value"形式保存在ThreadLocal内部的Map中,其中Key为线程Thread实例,Value为待保存的值。当工作线程Th

2022-01-24 17:19:18 325

原创 JDK8 ConcurrentHashMap源码解析

文章目录常见属性释义常用小方法解析spread方法tableSizeFortabAt、casTabAt、setAtConcurrentHashMap(int initialCapacity)构造方法initTableForwardingNode构造函数put操作helpTransferaddCount()get操作常见属性释义 //散列表数据最大容量 private static final int MAXIMUM_CAPACITY = 1 << 30; //散列表容量

2022-01-24 17:08:37 660

原创 普通索引与唯一索引的对比

文章目录唯一索引与普通索引在查询过程中的差异唯一索引与普通索引在更新过程中的差异普通索引和唯一索引应该怎么选择?change buffer 和 redo log唯一索引与普通索引在查询过程中的差异假设,执行查询的语句是 select id fromTwhere k=5。这个查询语句在索引树上查找的过程,先 是通过B+树从树根开始,按层搜索到叶子节点,也就是图中右下角的这个数据页,然后可以认 为数据页内部通过二分法来定位记录。对于普通索引来说,查找到满足条件的第一个记录(5,500)后,需要查找下

2021-08-03 13:33:17 175

原创 MyBatis-Plus 是如何接管MyBatis的?

需要注意MybatisPlusAutoConfiguration这个类我们知道 MyBatis有一系列的插件、handler,MyBatis能正常运行需要SqlSessionFactory、SqlSession实例,类比以前,我们都是使用手动注入SqlSessionFactoryBean来实现注入SqlSessionFactory和SqlSession的。MyBatis-Plus则是借助其配置文件MybatisPlusProperties,将需要的插件、handler等以配置的方式传入,其构造SqlSe

2021-08-02 22:34:50 140

原创 SpringBoot关于数据源的一些事

文章目录SpringBoot 默认的数据源是什么?DruidDataSource 是如何被加载的?Failed to configure a DataSource 这个错见过吗?SpringBoot 默认的数据源是什么?先把目光聚焦在DataSourceAutoConfiragution(spring-boot-autoconfigure),根据SpringBoot自动装配的特性可知,@Configuration @Conditional(PooledDataSourceCondition.clas

2021-08-02 22:32:44 199

原创 Spring整合MyBatis原理分析

文章目录前言SqlSessionFactory是怎么被创建的?SqlSessionFactoryBean谁替代了SqlSession?我可以直接使用Mapper接口吗?还有更简便地方式使用Mapper接口吗?前言原生MyBatis的调用流程如下 @Test public void TestExample() throws IOException { String resource = "mybatis-config.xml"; InputStream in

2021-05-06 18:41:20 227

原创 图文详解Java对象内存布局

文章目录对象内存布局对象头(Header)Mark WordClass Pointer(类型指针)数组长度实例数据(Instance Data)对齐填充(Padding)JOL工具包分析对象内存布局问题: 如果一个空对象,内存大小是多少呢?先抛出一个问题:一个空对象内存大小是多少?看完这篇文章或许会有收获对象内存布局对象头(Header)对象头包含Mark Word、类型指针和数组长度。Mark WordMark Word:用于存储程序运行时的标志位,如锁状态、GC分代年龄和哈希码等。在6

2020-12-17 22:26:04 384 1

原创 Maven依赖的传递性及使用规则

依赖引入依赖当 项目A 用到了 某jarB包中的某些类时,A 就对 B 产生了依赖。那么如何在项目 中以依赖的方式引入一个我们需要的 jar 包呢?比如项目A依赖了junit,则可以按如下方式引入依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.3-SNAPSHOT</version&gt

2020-12-06 11:42:58 627

原创 Maven的继承与聚合

继承由于非 compile 范围的依赖信息是不能在“依赖链”中传递的,所以有需要的工程只能单独配置,很容易造成版本不一致。比如项目A 依赖Junit4.1版本,项目B依赖Junit4.3版本,现在需要统一为4.9版本,手动到各个项目中改动固然可以,但可以使用继承机制借助父工程进行统一管理版本。步骤建立父工程 (打包方式要设置为pom)<parent> <groupId>com.wojiushiwo.test</groupId> <artif

2020-12-06 11:36:40 111

原创 Maven的生命周期

Maven的生命周期Maven 生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven 就可以自动化的执行构建命令了。Maven 有三套相互独立的生命周期,分别是:Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Default Lifecycle 构建的核心部分,编译,测试,打包,安装,部署等等。Site Lifecycle 生成项目报告,站点,发布站点。它们是相互独立的,你可以仅仅调用 clean 来清理工作目录,仅仅调用 site 来生成站点。当然你也可

2020-12-06 11:27:52 233

原创 Redis数据结构常见使用场景

文章目录string1、借助setnx 实现分布式锁2、计数器3、分布式全局IDlist基于时间的消息hashset1、朋友圈、微博的点赞和与之类似的喜欢、关注等功能2、基于无序性实现抽奖功能3、实现基于社交软件的关注模型4、电商商品筛选zset热搜榜string基本操作命令SET key value //存入字符串键值对MSET key value [key value ...] //批量存储字符串键值对SETNX key value //存入一个不存在的字符串键值对G

2020-11-28 15:33:00 158

原创 xxl-job简单任务和分片任务

文章目录简单任务分片任务简单任务@Componentpublic class SimpleJobHandler { @XxlJob(value ="simpleJobHandler" ) public ReturnT<String> execute(String param) throws InterruptedException { IntStream.rangeClosed(1,20).forEach(index->{

2020-11-27 15:39:20 7179 8

原创 xxl-job任务详解

文章目录任务管理新增任务页面字段释义1.1、路由策略1.2、运行模式BEAN模式GLUE模式1.3、阻塞处理策略1.4、子任务ID1.5、JobHandler1.6、Cron1.7、任务超时时间任务操作任务管理新增任务页面字段释义1.1、路由策略路由策略指一个任务选择使用哪个执行器去执行。这个参数只有当执行器做集群部署的时候才有意义。策略参数值详细含义第一个FIRST固定选择第一个机器最后一个LAST固定选择最后一个机器轮询ROUND依次选择执行

2020-11-27 15:34:52 10136

原创 xxl-job环境搭建

xxl-job 快速上手xxl-job 源码地址 https://github.com/xuxueli/xxl-jobXxl-job 中文文档 https://www.xuxueli.com/xxl-job/1、下载release版本的源码git clone https://github.com/xuxueli/xxl-job.git2、打开项目/doc 文档资料 包括"调度数据库" 建表脚本/xxl-job-core 公共jar依赖/xxl-job-admin 调度中心的源代码

2020-11-23 13:04:47 2068

原创 docker+mysql 主从配置

文章目录拉取镜像创建volume、network运行镜像节点配置配置主节点配置从节点主机上建立账户并授权slave从机配置拉取镜像docker pull mysql:5.7创建volume、networkdocker volume create mysqldocker volume create mysql3307docker network create mysql-net运行镜像docker run -d --name mysql3306 -e MYSQL_ROOT_PASSWOR

2020-11-17 15:38:20 376

原创 docker安装rocketmq

文章目录1、选择镜像2、拉取镜像3、查看镜像4、运行镜像4.1、创建本地文件夹用于挂载容器内文件4.2、安装nameserver4.3、安装broker5、安装rocketmq 控制台6、查看容器FAQ:docker的出现 可以大大简化我们安装程序的开销,可以更方便地帮助我们管理中间件。1、选择镜像[root@wojiushiwo ~]# docker search rocketmqNAME DESCRIPTION

2020-11-17 15:35:09 1419 2

原创 SpringBoot+Redis

添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>配置redis参数spring.redis.host=localhostspring.redis.port=6379sp

2020-11-17 15:28:04 90

原创 logstash的基本使用

文章目录logstash概述logstash安装运行logstash配置详解输入过滤输出案例举例1:使用Logstash展示标准输入、输出举例2:使用Logstash收集日志文件并输出到控制台举例3:使用Logstash收集日志文件并输出到es举例4:使用logstash输入 filebeat收集上的日志 并输出到控制台举例5:使用logstash输入 filebeat收集的日志 并解析字段 输出到eslogstash概述LogStash是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据

2020-09-27 17:47:42 2247

原创 kibana的基本使用

文章目录kibana概述kibana的安装与运行kibana常用工具数据探索DiscoverDashboard自定义DashboardDev Toolskibana概述kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。kibana的安装与运行kibana下

2020-09-27 17:42:16 26746 2

空空如也

空空如也

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

TA关注的人

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