自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @FeignClient源码浅析

从@EnableFeignClients 出发,寻找Spring如何识别FeignClient从源码中查看到@Import(.class)查看FeignClientsRegistrar 的类图如下,ResourceLoaderAware 注入 ResourceLoaderEnvironmentAware 注入 Environment查阅registerFeignClients 部分的代码,大致逻辑为找到@FeignClient标注的接口,注册到Spring,那注册到Spring的Bean是什么呢??

2023-07-07 22:39:23 471

原创 ROCKETMQ极简介绍,顺序,事务示例

管理Broker实例的注册,提供心跳检测机制路由管理: Producer和Conumser通过NameServer可以获取整个Broker集群的路由信息以生产者组的形式出现,一个生产者组可以同时发送多个主题的消息存储消息、转发消息以消费组的形式出现同一类消费者的集合,这类Consumer消费的是同一个Topic类型的消息。

2023-06-14 23:35:49 1120

原创 分库分表-ShardingSphere

分片策略数据分布以后扩展基于Hash:hash(分片键)%分片数数据分布均匀不易扩容,扩容需要数据迁移范围分片:例如按年分,按月,按日数据分表可能不均匀易扩展,扩展不需要数据迁移。

2023-06-11 18:09:31 835

原创 Dubbo 注册,调用,通信,容错

3种开发方式开发方式举例特点XML配置等业务代码零侵入扩展修改方便注解方式扩展修改方便修改需要重新编译代码API编程ReferenceConfig应用业务侵入性大修改复杂修改后需要重新编译。

2023-06-09 00:15:48 293

原创 分布式任务调度XXL-JOB

xxl_job_group 每个appName 一条记录,执行器逗号分割存在address_listxxl_job_registry 每个执行器一条记录xxl_job_info 任务一个appName 对应 多个 执行器 ,一个执行器,多个任务。

2023-06-07 22:53:58 818

原创 利用Zookeeper实现集群选举

分布式开源协调系统,数据模型简单,可以实现同步,配置管理,分组管理,分命名空间管理等。

2023-06-06 23:17:03 466 1

原创 GraphQL入门实战

文件位置固定文件名固定,resources/graphql/schema.graphqlsschema {id: IDid: IDschema 是固定写法type Query 内部是对应的查询方法。books: [Book] 表示方法名称为books(client需要配置) ,返回的是listbookById(id: String,name: String ): Book 这里返回单个Book,id,name是参数其他的type 是返回值的类。@Component。

2023-06-05 23:44:00 455

原创 分片架构,Redis Cluster 分析

通过堆机器,提升读写性能,与存储性能。

2023-05-30 15:35:41 665

原创 复制架构,Redis Sentinel分析

存储高可用,一般采用复制架构,复制架构,需要关注故障架构和状态决策2个要点。

2023-05-26 17:00:04 224

原创 标签派单系统架构设计

最高1min 200单,一次派单预计0.8s,业务需求每10分钟按城市派1轮,推导出,性能要求不高,可接受一定时延,不超过10min分钟。但是派单结果表 1天1W单,1年365W ,未来场景考虑, 派单结果表采用 按年分表。每10分钟,分城进行一次派单,派单规则可能会动态删减,需要支持动态配置。(高性能,高可用,成本,安全等),需要与产品尽可能沟通,明确。派单系统,规则多,未来变化大,这里采用规则引擎,降低复杂度。,规则多,逻辑多,且未来2年内变化较大,业务复杂度较高。员工类过滤:都满足才通过。

2023-05-25 14:31:57 934

原创 4R 分析 redis 处理客户端请求

4R分析redis 处理client

2022-07-19 19:22:13 179

原创 线上问题-mysql时区造成插入数据时间不对

问题重现线上java代码/** * 示例代码,忽略部分实现 */ @Autowired AMapper aMapper; @Test public Response triggerCollectAllocate() { DispatchInfoUpdateDto dispatchInfoUpdateDto= new DispatchInfoUpdateDto(); dispatchInfoUpdateDto.setAllocateTime(new Date());

2022-05-10 12:01:36 858

原创 长事务引起线上问题

长事务引起线上问题

2022-05-01 20:58:01 158

原创 线上问题-关于@Async

线上问题-关于@Async

2022-01-10 00:06:19 539

原创 记一次线上排查问题

确定哪个线程占用了大量 CPU查看cpu高的进程top查看最高的线程ThreadId这里假设为996382top -Hp \[PID\]导出堆栈信息jstack \[PID\] > PID.txt获取ThreadId对应的16进制数printf %x \[ThreadId\]从栈信息中查询对应的线程内容cat PID.txt|grep -i \[16进制的ThreadId\]根据线程内容进行,具体分析,如果是业务线程,查看具体代码分析,

2021-10-12 13:16:01 91

原创 Kafka监控与调优-文末思维导图

监控主流监控方式JMXTrans + InfluxDB + Grafana主机监控 机器负载:当前CPU工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数,理论上接近0.7*cpu核数比较 CPU使用率= (1 - 空闲态运行时间/总运行时间) * 100%,建议生产系统的 CPU 总使用率不要超过 70% 内存使用率 磁盘I/O使用率 TCP连接数 打开文件数 ulimit -a查看 node使用情况 7.1 ino

2021-06-02 08:35:31 334

原创 kafka进阶-给你思维导图

kafka的第二篇,文末依旧是思维导图。消费者组重平衡弊端影响Consumser端TPS慢,效率低发生时机组成员数据发生变化订阅主题数量发生变化订阅主题分区数发生变化优化配置,避免不必要的Rebalance尝试解决:Consumer没能及时发送心跳请求,导致被踢出Groupsession.timeout.ms 会话间隔heartbeat.interval.ms 心跳间隔session.timeout.ms >= 3* heartbeat.int..

2021-06-01 08:27:12 449 1

原创 kafka基础-文末思维导图

**文末尾有思维导图**,文字就是思维导图的内容,如果不想看着,**可以直接拉到末尾,查看思维导图!**注: 文章,是我学习了极客时间的《Kafka核心技术与实战》专栏总结的学习笔记。# kafka基础## 核心术语 1. Topic 主题2. Partition 分区,一个主题多个分区3. Record消息4. 副本Replica,为消息提供冗余 4.1 leader副本,对外提供服务 4.2 follower副本,仅作为冗余数据 5. 消息位移Offset...

2021-05-31 09:15:52 592

原创 RateLimiter没有用到集合,核心是一个时间值

前言本文不是一个RateLimiter的详细分析,仅仅是概要分析。令牌桶算法一说到RateLimiter,必然要是说的令牌桶,它的大致逻辑如下按图实现令牌桶的图,网上到处可见,按图实现也非常简单,无非是定时添加令牌桶,并提供一个获取令牌的函数,博主实现了一遍代码如下:import java.util.concurrent.*;public class MyRateLimiter { //令牌桶 BlockingQueue<Integer>T

2021-02-27 17:54:21 178

原创 缓存你问题真不少!

引言2021年,2月底,一个超级疲惫的下午,离下班还有30分钟,小航拿了一袋每日坚果,对我说:”温哥,来来来,吃个坚果,开心下”有了前几次的,经验,我意识到,这兄弟又要问题问题,委婉的回绝到:”谢谢好意,你吃吧,我不饿”。小航,一看我有所防备,有拿出了安慕希,并且抓住了我的手臂,说道:“大神,我有困惑,请您帮帮我”看他如此诚恳,我不好意思的说道:“大神不敢当,水平有限,恐无法为你解惑”。小航一看有戏,有给了我一袋每日坚果,眼中有光的说道:“哥,您指点一二,无论对错,我都愿意听”我感动

2021-02-26 16:38:49 91

原创 缓存,数据库先操作那个都行

先更数据库,再删除缓存问题缓存删除后,尚未更新数据库,并发读请求,从数据库读到了旧值,并且更新到缓存导致后续请求都是旧值。 时间 从上 到下, 越来 越晚 更新操作 删除redis 读取操作 缓存没有数据 从数据库读到旧值 回写r...

2021-02-25 11:44:23 104

原创 正排倒排,不是Mysql的排序的全部

引言春节前一个悠闲的上午,小航送了我,一袋每日坚果,他看我吃的正香,慢慢问道:”温哥,mysql的排序,有什么要注意的吗,不就是正排倒排吗?”我一听他问我的问题,顿感每日坚果不香了,但是为了技术(mainzi),我装作大师的说道:“正排倒排,当然不是全部,你最少要知道,2个参数,1个优化,一种特殊情况”注:东西不能乱吃啊两个核心参数sort_buffer_size决定内排,外排。内排就是走内存,外排就是采用归并排序走磁盘。max_length_for_sort_data 决定 .

2021-02-24 14:51:38 72

原创 字符编码,不走索引的元凶之一

引言2021年春节后的某个忙(mo)碌(yu)的下午,旁边的刘哥(老江湖,从业5年+)突然发出了一声叹息:“哎,mysql 出bug了,有索引不走”。作为一个热心的人,我立即说到:“是不是,对索引字段做了函数操作”。刘哥沉思了2秒,略有玩味的小眼神看了看我,慢慢说道:“温兄,常规的情况,对索引字段做函数操作,或者 字符串与数字比较造成的隐式转换,这次的SQL都不涉及”。我一听顿时来了兴趣,略带兴奋的跟刘哥说:“刘哥,您发SQL,我也研究下”。刘哥略有无奈的看了看我后,依旧把SQL发给了我

2021-02-23 11:08:20 226

原创 ES实现自动补全

什么是自动补全随用户输入,给与提示信息,如下图:ES实现原理⽤户每输⼊⼀个 字符,就需要即时发送⼀个查询请求到后段查找匹配项。对性能要求⽐较苛刻。Elasticsearch 采⽤FST,FST 会被 ES 整个加载进内存, 速度很快。实现方式:Completion Suggester 实现1.定义 Mapping,使⽤ “completion” type2.索引数据3.运⾏ “suggest” 查询,得到搜索建议。例子1.定义 Mapping,使⽤ “comp

2021-02-22 11:00:35 2997

原创 ES实现搜素建议

1. 什么是搜索建议?帮助⽤户在搜索的过程,对输入中进行纠错,提示建议性词语。例如:2. ES实现原理输⼊的⽂本分解为 Token,然后在索引的字典里查找相似的 Term 并返回。3. 对应API,Term& Phrase SuggesterTermSuggester3种Suggestion ModeMissing – 如索引中已经存在,就不提供建议Popular – 推荐出现频率更加⾼的词Always – ⽆论是否存在,都提供建议一个排序默认按照

2021-02-22 09:16:45 467

原创 Mysql,version没变,就是更新不成功,别慌!

一个忙(mo)碌(yu)的下午,小航同学,突然大骂一声,“TM ,见鬼了,version没变,更新就是不成功”。我看他,满头大汗,双手握拳,面目狰狞,似乎又要发作,赶紧说:“不成功没关系啊,重试就好,乐观锁一般是要重试的”他略带鄙视的说道:代码有重试了逻辑,我还加日志了,结果发现version没变,就是更新不成功。作为对技术小有追求的人,他怎么一说,立刻引起了我的好奇,随后诚恳的说道,我能看看代码吗?小航,一句不发,双手却笔画了个请的姿势。我仔细端详,代码大致逻辑如下:@Tran

2020-12-09 22:05:33 663 1

原创 了解RefreshScope这篇短文就够了

RefreshScope概述概述作用配置变化时,RefreshScope的Bean 会被刷新。应用举例RefreshScope可以实现,如果数据库的Url(通过Environment)变化时,你可以持有这些连接,使它能够完成他们正在做的事情。之后,下一次从连接池中获取的连接,是使用新的URL。注: 如果你的DataSource bean是一个HikariDataSource,它不能被刷新。这是 spring.cloud.refresh.never-refreshable的默认值.如果

2020-09-12 13:51:08 1105

原创 仅需四步,写一个springboot starter

这个系列分为5篇1. @Component,@Service等注解是如何被解析的2. @Enable驱动原理3. @EnableAutoConfiguration处理逻辑4. spring,springBoot事件5.仅需四步,写一个springboot starter引言只要你用Springboot,一定会用到各种spring-boot-starter。其实写一个spring-boot-starter,仅需4步。下面我们就写一个starter,它将实现,在日志中打印方法执行

2020-07-24 21:21:34 420

原创 简述spring和springBoot事件

这个系列分为5篇1. @Component,@Service等注解是如何被解析的2. @Enable驱动原理3. @EnableAutoConfiguration处理逻辑4.spring,springBoot事件5.自定义springboot starter(最晚20200726)引言spring事件机制,有3个核心部分,事件,监听方式,广播器,下面我们分别介绍。Spring事件spring的事件的API对应ApplicationEvent。它继承了ava.util.Ev

2020-07-18 11:39:14 291 1

原创 @EnableAutoConfiguration处理逻辑

这个系列分为5篇1. @Component,@Service等注解是如何被解析的2.@Enable驱动原理3.@EnableAutoConfiguration处理逻辑4.spring,springBoot事件(最晚20200719)5.自定义springboot starter(最晚20200726)引言工作中,我们直接或间接的,用到@EnableAutoConfiguration注解。今天,我们就聊聊@EnableAutoConfiguration的处理逻辑。找核

2020-07-10 18:12:28 375

原创 @Enable驱动逻辑

这个系列分为5篇1. @Component,@Service等注解是如何被解析的2.@Enableq驱动原理(最晚20200705)3.@EnableAutoConfiguration处理逻辑(最晚20200712)4.自定义springboot starter(最晚20200719)5.spring,springBoot事件(最晚20200726)前言工作中经常用到,如下注解:@EnableEurekaClient@EnableFeignClients@Enabl

2020-07-02 20:47:54 202

原创 @Component,@Service等注解是如何被解析的

这个系列分为5篇,这是首篇1. @Component,@Service等注解是如何被解析的2.@Enableq驱动原理(最晚20200705)3.@EnableAutoConfiguration处理逻辑(最晚20200712)4.自定义springboot starter(最晚20200719)5.spring,springBoot事件(最晚20200726)前言@Component和@Service都是工作中常用的注解,Spring如何解析?1.@Component解析流程

2020-06-26 12:00:14 1900 3

原创 SpringBoot的启动引导类真的是XXApplication吗?

1. 引言SpringBoot项目中的启动类,一般都是XXApplication,例如StatsApplication,UnionApplication。每个项目的启动类名称都不一样。但是它的启动类真的是XXApplication吗?2. META-INF/Manifest.mf文件jar文件实际上是class文件的zip压缩存档。jar并不能表达应用程序的便签信息.META-INF/Manifest.mf文件提供存档的便签信息.Manifest.mf有 Main-Class,用来标

2020-06-06 08:25:20 152

原创 mysql-innodb-事务

写在最前 这是读书笔记,Mysql,innodb系列一共3篇。Mysql-innodb-B+索引 Mysql-innodb-锁 Mysql-innodb-事务ACIDA:原子性,要么成功,要么失败 C:一致性,事务将数据库从一种状态转换为另一种稳定状态,不违反约束条件 I:隔离性,多个事务互不影响 D:持久性事务的隔离级别隔离级别 说明 READ UNCOMMITTED 未提交读,会造成脏读,违反持久性D READ COMMITTED...

2020-05-30 19:16:19 255

原创 mysql-innodb-锁

写在最前 这是读书笔记,Mysql,innodb系列一共3篇。Mysql-innodb-B+索引 Mysql-innodb-锁 Mysql-innodb-事务预计20200530)锁基本概念锁类型 说明 锁级别 意向共享锁 IS Lock 事务想要获得一张表中某几行的数据的共享锁 表级别锁 意向排他锁IX Lock 事务想要获得一张表中某几行数据的排他锁 表级别锁 共享锁S Lock 允许事务读取一行数据 行级别锁...

2020-05-23 15:12:13 133

原创 Mysql-innodb-B+索引

写在最前 这是读书笔记,Mysql,innodb系列一共3篇。Mysql-innodb-B+索引(本篇) Mysql-innodb-锁(预计20200523) Mysql-innodb-事务预计20200530)概述下面是常见的建表语句:CREATE TABLE `aid_***_detail` (//省略所有字段PRIMARY KEY (`id`),KEY `range_idx` (`range_id`,`is_delete`,`range_detail_n...

2020-05-16 10:17:07 265

原创 Spring如何整合Mybatis,源码不难嘛!

Spring整合Mybtais会进行如下的配置(条条大路通罗马,方式不唯一)。private static final String ONE_MAPPER_BASE_PACKAGE = "com.XXX.dao.mapper.one";@Beanpublic MapperScannerConfigurer oneMapperScannerConfigurer() { MapperSc...

2019-11-03 17:20:42 165

原创 Spring如何实现AOP,请不要再说cglib了!

1. 从注解入手找到对应核心类最近工作中我都是基于注解实现AOP功能,常用的开启AOP的注解是@EnableAspectJAutoProxy,我们就从它入手。    上面的动图的流程的步骤就是:  @EnableAspectJAutoProxy  –> AspectJAutoProxyRegistrar  –>AopConf...

2019-10-29 15:54:06 165

原创 Spring源码学习(五) 创建Bean过程中的扩展点

引言上班挺累事事都烦写篇文章兑现诺言一图胜所有[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jMkN31jH-1571044285013)(https://oscimg.oschina.net/oscnet/9a65dd9720f265c3a1a95695f1ae78c8e61.jpg “getbean的扩展点”)]绿色的部一般用于Spring内部扩展...

2019-10-14 17:11:39 115

原创 Spring源码学习(四)在单值注入时如何按类型查找匹配的Bean

这是我学习Spring源码之后的第四篇文章,如果你想了解,之前的3篇文章请您查阅:前3篇blog的地址:1.Spring源码学习(-)别怕,老外点中餐与AbstractBeanFactory.getBean的主流程差不多2.Spring源码学习(二)哎呦,按菜谱做菜与AbstractAutowireCapableBeanFactory.createBean流程差不多3.pring源码学习(三)...

2019-10-03 17:35:00 506

空空如也

空空如也

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

TA关注的人

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