- 博客(120)
- 收藏
- 关注
原创 redis分片集群
为实现redis集群中解决海量数据存储和支撑高并发写,本文提出了redis分片集群,并介绍了它的特点:(多主架构,主从备份,节点间心跳,透明路由)。还介绍了 哈希槽来实现数据分片和路由的机制(实现了将Key 均匀地映射到集群的多个节点上),介绍了它的基本的原理并举了个例子来具体说明。
2026-02-08 17:02:33
44
原创 Redis 哨兵(Sentinel)介绍
本文介绍了redis哨兵(sentinel)的定义作用(监控,自动故障恢复,通知)。并介绍了两种实例下线(主观下线,客观下线)判断的依据。还介绍了主节点发生故障时新主节点的选举的规则。最后介绍了网络分区(脑裂)的过程及用来降低此过程数据丢失风向的两个配置(min-replicas-to-write,min-replicas-max-lag )。
2026-02-08 15:55:09
184
原创 redis主从同步
本文指出:为了提高redis的并发能力,使用redis集群。并介绍了redis集群的核心机制:主从同步的核心作用(读写分离,数据冗余,水平扩容),又介绍了相关的概念(replid,offset,repl_backlog);还介绍了两种主从节点数据同步的方案(全量同步,增量同步)的时机,过程。
2026-02-08 15:14:26
253
原创 锁的可重入问题
本文介绍了锁的核心规则:用「同一个锁资源」去保护一组相关的、需要保证原子性的业务逻辑。并以订单服务说明锁的可重入性的必要性;又介绍了锁的可重入性(synchronized,redissson);并介绍了redisson实现可重入性的原理。最后介绍了redisson分布式锁和reddison读写锁的区别。
2026-02-08 10:50:34
383
原创 分布式锁解决超发问题
本文提出集群环境下避免超发问题无法用本地锁(synchronized或ReentrantLock),得用分布式锁来解决;并介绍了sentx的语法和不足(死锁风险->误删新客户的锁,无法保证原子性,不支持重入,单点故障);又提出了锁的有效时间问题( 不设置过期时间:死锁风险;设置过期时间:业务超时问题)提出Redisson 的解决方案:看门狗(Watch Dog)自动续期机制;介绍了完整执行流程和相关代码;
2026-02-08 09:42:06
304
原创 OpenFeign(声明式HTTP客户端)
本文介绍了OpenFeigin的定义和优势,并介绍项目中使用OpenFeign的步骤;并介绍自定义 Feign 请求拦截器,实现让所有 Feign 调用自动携带用户信息到请求头;横向对比了Feign 请求拦截器(RequestInterceptor)和被调用者拦截器(UserInfoInterceptor);还介绍了OpenFeign线程复用问题(提出用OKhttp来代替默认的 HttpURLConnection);最后介绍了 OpenFeign 的日志配置; 讨论了一些常见的思考。
2026-02-07 18:13:50
806
原创 自定义GlobalFilter来完成登录校验
本文的实验目的是在浏览器+网关+下游微服务之间实现用户信息登录校验,传递的全流程;介绍了整体的架构思路。并展开详细的实现:前置准备:jwt相关配置和工具;自定义globalfilter;下游微服务接受用户信息;介绍了ThreadLocal实现线程内的数据隔离的原理;论述了UserInfoInterceptor 拦截器preHandle和afterCompletion所做的工具。
2026-02-07 14:15:04
613
原创 过滤器与过滤器链
本文介绍了过滤器链包含三类过滤器(DefaultFilter,GateWayFilter,GlobalFilter),并介绍了过滤器链的执行顺序规则 (基于order)。又介绍了过滤器两种过滤器:GatewayFilter(路由过滤器)和GlobalFilter(全局过滤器)的作用范围,使用方式,使用场景,案例实现。并介绍了过滤器的执行时机(pre类型和post类型)
2026-02-07 13:42:39
530
原创 Gateway初步介绍
本文介绍了微服务中网关的的职责,解决的痛点;并介绍了路由配置的核心要素(路由id,路由目标url,路由断言predicates,路由过滤器filters),并通过一个application.yml配置介绍路由配置的典型写法;再介绍了网关执行架构来说明路由的生效过程;还提出了可以结合 Nacos 配置中心实现路由配置的热更新; 另外,展开介绍了10种路由断言的语法和含义;再介绍了PredicateFactory 工厂作为路由断言配置的执行引擎的本质;最后对比了两种主流的网关技术。
2026-02-07 11:01:02
747
原创 AMQP 与 RabbitMQ 四大模型
本文介绍了 AMQP 跨语言跨平台的核心特性,以及 SpringAMQP 对 AMQP 协议的 Spring 风格封装和其两大组成部分;并介绍了RabbitMQ 以交换机、队列、绑定为核心的四大模型(WorkQueues,Fanout,Direct,Topic);介绍他们的特点,解决的问题,相应的控制台实现,并举了一些代码实例来辅助说明他们。
2026-02-06 21:00:15
500
原创 rabbitmq实践小案例
本文以微服务项目的父子工程结构为基础,完整介绍了 RabbitMQ 的实战使用流程: 首先通过 Docker 命令在阿里云 Linux 环境搭建 RabbitMQ 实例,然后再RabbitMq控制台完成相关操作(创建用户+vitrual host+queue),以及在代码层面上济宁相关的配置和简单的代码实现(直连方式下的消息发送和消费功能)。
2026-02-06 18:32:14
637
原创 rabbitmq初步介绍
本文介绍了同步调用,异步调用的定义,优缺点,适用场景;还介绍了MQ(消息队列)技术选型 ,RabbitMq和Kafka的核心优势,不足,使用场景;并介绍了RabbitMQ的架构框(VirtualHost,exchange,Queue);并实战创建一个docker来去拉取rabbitmq的镜像;访问其控制台;
2026-02-06 15:19:33
603
原创 redis数据淘汰策略
总结:本文介绍了redis的数据淘汰策略。介绍了其支持的8 种淘汰策略:noeviction(默认),基于ttl策略,针对所有key的策略‘;并对比了两种核心算法LRU vs LFU的定义和适合场景;并给出了实际应用的建议;并回答了两个常见的面试问题。
2026-02-03 17:12:48
224
原创 Redis过期策略
本文介绍了redis的两种过期删除策略,惰性删除的核心逻辑和优缺点(利cpu,不利内存),定期删除核心逻辑和优缺点(利内存,不利cpu),并介绍了实际运行时的组合使用:三道防线(惰性删除,定期删除,内存淘汰机制)
2026-02-03 11:00:38
395
原创 Redis持久化介绍
本文介绍了两种redis持久化的方案,RDB和AOF;介绍了ROF的核心原理,触发方式;bgsave的原理;并讨论了os用虚拟地址的好处;以及RDB的优缺点(文件体积小,恢复速度快,两次开照之间的数据可能丢失)又讲了AOF核心原理,开启方式,刷盘策略,AOF重写;以及优缺点;并进行了RDB 与 AOF 的横向对比;
2026-02-03 10:21:45
715
原创 Redis双写一致性
本文介绍了 Redis 作为缓存时双写一致性问题;讨论了写操作时是先更新库还是先删缓存的问题?(交代了行业最佳实践是:写操作只更新数据库,然后删除缓存而不直接于缓存上更新的原因)。并揭示了无论哪个原因都会让某个线程读到脏数据。从而提出了「延迟双删、读写锁、MQ/Canal 异步」这些解决方案;并交代了强一致性场景(库存 / 交易)用「Redisson 读写锁」,最终一致性场景(资讯 / 商品)用「MQ/Canal 异步通知」;
2026-02-02 21:06:30
632
原创 缓存穿透,缓存击穿,缓存雪崩
本文介绍了缓存穿透的定义以及其两种解决方案(缓存空数据,布隆过滤器),并介绍了布隆过滤器的原理(插入数据,查询数据)以及它的误判率与数组大小的关系;另外介绍了缓存击穿定义以及它的两种解决方案(互斥锁方案和逻辑过期方案),并对比了他们的优缺点,从而得出“技术方案没有绝对的 “银弹”“这个感悟。又介绍了缓存雪崩的定义以及它的四种解决方案。最后总结了3种问题的记忆技巧。
2026-02-02 16:12:30
757
原创 短轮询,长轮询和websocket
本文基于消息推送需求介绍了消息推送,基于http的两种通讯模式:短轮询和长轮询;另外还有websocket相关内容。
2026-02-01 18:29:06
719
原创 三种服务器架构
本文介绍了3中服务器的架构,多线程版,线程池版,selector版;指出了它们的缺点; 并交代了BIO的线程阻塞和NIO select()的线程阻塞的区别;并补充了阻塞态和read()/write()IO过程的本质。
2026-02-01 13:33:01
841
原创 mysql子查询
总结:本文介绍了子查询的定义,并按照结果类型将之分类为:标量,列,行子查询;按出现位置分类为:where之后,from之后,select之后,其中还介绍相关常见的操作符。
2026-01-31 17:44:20
313
原创 mysql多表查询
本文介绍了多表查询的各个情况:内连接(隐式内连接,显示内连接),外连接(左外连接,右外连接),自连接;还介绍了联合查询(介绍union all和union的区别)
2026-01-31 16:21:40
368
原创 数据库三大范式&&BCNF
本文介绍了冗余和异常的含义,感受到这真的很烦,故而提出数据库的三大范式(1NF,2NF,3NF)和BCNF来解决问题;并举了个例子来剖析解决过程。但是实际应用还是集中在数据库设计上,设计者无需纠结教材上的刻意反例,只需靠直觉和常识设计: 你只要按 “谁属于谁,就放谁表里” 去设计,根本不会遇到那种诡异的 BCNF 反例 。
2026-01-31 11:30:12
829
原创 索引失效的情况
本文介绍了5种可能导致索引失效的情况;包括违法最左原则;范围查询右边的列,无法使用索引;在索引列上进行运算或函数操作;字符串不加单引号,导致隐式类型转换;like查询以%开头;并介绍了如何快速判断索引是否失效的方法:会用explain,看key和type字段。
2026-01-31 10:13:27
253
原创 InnoDB选用B+树作为索引的原因
本文介绍了b+树作为InnoDB索引的原因,对比了二叉树/红黑树,b树等数据结构,更加彰显了b+树的优势。还分析了树高和磁盘IO次数的关系,得出:最终为减少磁盘IO次数服务。
2026-01-31 09:34:02
274
原创 索引创建的原则
本文介绍了索引创建的原则;看表的规模和热度,看字段的作用;区分度高的;长字段用前缀索引,避免NULLL值;优先使用联合索引,要控制索引总数
2026-01-31 09:16:45
166
原创 mysql回表查询
本文介绍了聚簇索引和非聚簇索引的概念;然后介绍回表查询的概念;并举了一个例子来说明回表查询;并列举了两个不会回表的情况(直接使用主键索引查询和覆盖索引查询);这也是我们mysql优化的思路来源。
2026-01-30 22:13:39
395
原创 死锁的介绍及避免
本文介绍了死锁的定义;并通过一段代码(锁的嵌套)来模拟死锁的局面;并提出了使用(破坏循环等待条件:让所有线程按统一顺序获取锁)的解决方案来解决这个问题;还讨论总结了常见避免死锁局面的代码规范;
2026-01-30 16:17:49
315
原创 lock锁
本文介绍了lock锁的使用;核心是手动加锁和释放锁;并介绍了lock锁的核心优势;这些个优势着实打动我在复杂场景中去使用lock锁而不是synchronized;
2026-01-30 15:47:37
301
原创 探究StringBuilder和StringBuffer的线程安全问题
本文探究StringBuilder和StringBuffer的线程安全问题,并总结何时使用他们的情况
2026-01-30 15:26:18
246
原创 java线程sleep方法抛出异常处理
本文介绍了sleep处理异常的方式(得用try...catch),并剖析了原因并横向对比介绍了受检异常和非受检异常
2026-01-30 14:23:20
235
原创 nia500总结
摘要:系统设计涉及序列化、逻辑删除和状态管理三个关键点。1)序列化确保Java对象能存入Redis缓存,未实现Serializable会导致写入失败;2)逻辑删除通过标记位保留关联数据,避免物理删除造成的数据丢失和业务中断;3)参数选项的"正常/停用"状态控制业务可用性,需保持前后端状态标识一致。实时监控通过Redis缓存从机状态实现低延迟展示,告警系统基于设备上报数据触发三类基础告警。数据库设计采用直观的参数名称而非编码,提升管理效率。系统采用分层架构处理设备数据:MQTT消息经解析后
2026-01-16 22:48:51
642
原创 hrformer配置文件解析
本文介绍了hrformer的配置文件中验证集的相关配置;由此衍生出1)数据集通用配置data_cfg2)训练阶段的数据预处理流水线pipleline(验证阶段的流水线有点差别)重点探讨了人体检测指标对姿态识别的影响(即要使用预训练好的同一指标还是直接用真实目标框)提供了人体检测指标和coco数据集的下载方式
2026-01-12 17:40:56
628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅