avatar
文章
46
标签
25
分类
8

wshawk's blog
搜索

wshawk's blog

Redis之主从复制
发表于2026-03-04|后端
Redis之主从复制Redis的主从复制机制是实现高可用性和扩展读性能的基石。它的核心思想可以概括为:基于「共享主从复制ID + 偏移量」的精巧设计,通过「全量同步 + 增量同步」的组合策略,高效地保证主从节点数据最终一致。 下面,我将带你彻底拆解这个机制。 0. 主从复制全景图在深入细节前,我们先通过一张流程图,从宏观上把握一次完整的主从同步过程。这能帮你建立起全局视角,更好地理解后续的每个环节。 12345678910111213141516171819202122sequenceDiagram participant S as 从节点 (Slave) participant M as 主节点 (Master) Note over S,M: 阶段一:建立连接与协商 S->>M: PSYNC ? -1 (首次同步,不知道主库runid和offset) M-->>S: +FULLRESYNC {runid} {offset} Note right of M: 判断需要全量同步,返回自己的 ...
Redis之主从复制
发表于2026-03-04|后端
Redis之redisDbredisDb 是 Redis 单机数据库中每个逻辑数据库的物理实现,它不仅是键值对的容器,更是一个高度集成的数据管理中枢。理解 redisDb 的结构与运作机制,是掌握 Redis 内存管理、过期策略、阻塞操作、事务、持久化、复制及集群模式的基石。本文基于 Redis 源码(以 7.0 版本为基准),全面剖析 redisDb 的设计思想与实现细节,并融入最新版本的演进特征。 1. redisDb 数据结构全景每个 Redis 服务器拥有多个数据库(默认 16 个),存储在 redisServer.db 数组中。客户端通过 SELECT 切换当前数据库,实际就是修改 redisClient.db 指针指向对应的 redisDb 实例。redisDb 结构定义在 server.h 中,核心字段如下: 12345678910111213typedef struct redisDb { dict *dict; // 键空间,存储所有键值对 dict *expires; // 过期字典,存 ...
SpringBoot 启动时实现缓存预热
发表于2026-02-28|后端
SpringBoot 启动时实现缓存预热Spring Boot 启动时预热缓存,核心思路就是在应用启动完成后、对外提供服务之前,把数据库里的热点数据或配置数据主动写入Redis。 主流方案有三种 CommandLineRunner / ApplicationRunner @PostConstruct 注解 监听 ApplicationReadyEvent 事件 @PostConstruct 注解在某个 Bean 初始化完成后执行预热逻辑。 执行时机较早(Bean 初始化阶段),此时可能其他依赖还未完全准备好(例如数据库连接池、Redis 连接等),不适合依赖外部资源的预热。 12345678910111213@Componentpublic class CachePreloader { @Autowired private SomeService someService; @PostConstruct public void preload() { // 加载数据到缓存 List<Data> lis ...
AI自动化协作体系的演进
发表于2025-12-02|AI
1. 初始AI模型交互与提示词演进这是最基础的人机交互层面,解释了用户如何与AI沟通以及如何让AI更好地理解用户意图。 1.1 用户提示词 定义:这是最直观的交互方式,即用户向AI提出的问题或指令(例如:“写一首关于夏天的诗”)。 局限性: A) 缺乏人设:AI不知道提问者的身份(是学生、老师还是程序员?),无法给出针对性回答。 B) 回答平庸:由于缺乏背景,AI倾向于给出最安全、最通用的回答,缺乏个性。 C) 无法区分上下文:即使是同一个问题,在不同的场景下可能需要不同的答案,但仅靠用户提示词无法传递这些信息。 1.2 系统提示词 产生背景:早期为了给AI设定人设,用户需要将背景信息也写进问题里(例如:“你是一个专业的律师,请帮我看看这份合同…”),但这让对话显得很不自然。 定义:为了解决这个问题,系统提示词被独立出来。它是一个隐藏的、由系统预设的指令,包含了AI的人设、性格、背景信息和回复语气。用户只需要发送自己的核心问题即可。 机制:当用户发送消息时,系统会自动将预设的系统提示词附加在用户消息之前或一起发送给AI。这样,AI在回复时就知道该以什么 ...
日志系统搭建
发表于2025-11-14|后端
日志系统搭建案例链接京东云技术团队 https://www.cnblogs.com/jingdongkeji/p/17816753.html 美团技术团队 https://tech.meituan.com/2021/09/16/operational-logbook.html 美团高性能终端日志系统建设时间 https://tech.meituan.com/2022/11/03/logan-real-time-log.html 基于AOP方式实现1https://github.com/macrozheng/mall/blob/master/mall-common/src/main/java/com/macro/mall/common/log/WebLogAspect.java 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 ...
Spring Bean
发表于2025-09-05|后端
Spring Validation 自定义注解案例通用枚举类校验@EnumValid.java1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Repeatable;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Repeatable(EnumValid.List.class)@Target({E ...
Java接口参数校验
发表于2025-06-08|后端
Java接口参数校验后端服务接口接收参数后,一般都需要根据业务规则进行参数的校验,没有接触过Validation的Java新手可能使用如下述代码来校验参数。 123456789101112131415161718192021222324252627282930@RestController@RequestMapping("/user")public class UserController { @Resource private UserService userService; @PostMapping("/register") public ServerResult<String> registerUser(@RequestBody UserRegisterDTO userRegisterDTO) { String username = userRegisterDTO.getUsername(); String password = userRegisterDTO.getPassword( ...
MySQL之InnoDB存储结构
发表于2023-10-14|数据库
MySQL之InnoDB存储结构本文转载于MySQL - InnoDB - 听雨危楼 - 博客园 (cnblogs.com) InnoDB逻辑存储结构表空间(table space)在InnoDB存储引擎中,所有数据都存放在表空间(table space)中,表空间由段(segment)、区(extent)、页(page)、行(Row)组成,它们的关系如下图: 段(segment)表空间由各个段组成,常见的段类型有:数据段、索引段、回滚段。由于InnoDB表采用的是聚簇索引,所以数据段可以看成是B+树的叶子节点,索引段可以看成是B+树的非索引节点。 区(extend)一个段由多个区组成,区由多个连续页组成,每个区的大小为1MB,默认情况下,每个页的大小为16KB: 1234567mysql> select @@innodb_page_size;+--------------------+| @@innodb_page_size |+--------------------+| 16384 |+--------------------+1 row in s ...
MySQL之binlog
发表于2023-06-15|数据库
MySQL之binlogMySQL的binlog是由MySQL Server生成的,记录了所有的DDL和DML语句(不会记录查询类的操作,比如 SELECT 和 SHOW),以事件形式记录,还包含语句执行所消耗的时间,并且是事务安全型的。 开启binlogMySQL的binlog日志 - 马丁传奇 - 博客园 (cnblogs.com) 12345678vi编辑打开mysql配置文件 # vi /usr/local/mysql/etc/my.cnf 在[mysqld] 区块 设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名); 重启mysqld服务使配置生效 # pkill mysqld # /usr/local/mysql/bin/mysqld_safe --user=mysql & 查看binlog是否开启1234567show variables like 'log_%';+------------------------------------- ...
MySQL之高可用集群方案
发表于2023-03-20|数据库
MySQL之高可用集群方案[20 InnoDB Cluster:改变历史的新产品.md (lianglianglee.com)](https://learn.lianglianglee.com/专栏/MySQL实战宝典/20 InnoDB Cluster:改变历史的新产品.md) MHA(Master High Availability)MHA(Master High Availability)是一款开源的 MySQL 高可用程序,它为 MySQL 数据库主从复制架构提供了 automating master failover 的功能。 MHA 是由业界大名鼎鼎的 Facebook 工程师 Yoshinorim 开发,开源地址为:https://github.com/yoshinorim/mha4mysql-manager它由两大组件所组成,MHA Manger 和 MHA Node。 MHA Manager 通常部署在一台服务器上,用来判断多个 MySQL 高可用组是否可用。当发现有主服务器发生宕机,就发起 failover 操作。MHA Manger 可以看作是 failover ...
12…5
avatar
wshawk
文章
46
标签
25
分类
8
Follow Me
公告
This is my Blog
最新文章
Redis之主从复制
Redis之主从复制2026-03-04
Redis之主从复制
Redis之主从复制2026-03-04
SpringBoot 启动时实现缓存预热
SpringBoot 启动时实现缓存预热2026-02-28
AI自动化协作体系的演进
AI自动化协作体系的演进2025-12-02
日志系统搭建
日志系统搭建2025-11-14
分类
  • AI1
  • Linux2
  • hexo1
  • 前端2
  • 后端21
    • Java2
  • 数据库16
  • 网络1
标签
AI HTTP JDK Java JavaScript Linux MySQL Redis Spring SpringBoot Tomcat Vue hexo redisDb 主从同步 代理 动态代理 参数校验 后端 日志 时间戳 概念 缓存 踩坑 随笔
归档
  • 三月 20262
  • 二月 20261
  • 十二月 20251
  • 十一月 20251
  • 九月 20251
  • 六月 20251
  • 十月 20231
  • 六月 20231
网站资讯
文章数目 :
46
本站总字数 :
75.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2026 By wshawk
框架 Hexo|主题 Butterfly
搜索
数据库加载中