这周 Kimi 和 Fable 5 抢了所有头条。但有一件事被低估了:WASI 0.3 预览版上个月发布了,带 […]
分类: 技术
数据库引擎的静默革命:B+Tree 统治四十年后,新玩家来了
你有没有想过一个问题:为什么 MySQL 用 B+Tree、RocksDB 用 LSM Tree、向量数据库用 […]
没有 Fable 5 的日子里:开发者社区在用什么替代?
Fable 5 被禁快两周了。开发者社区最初是愤怒和恐慌,现在则呈现出一种务实的自救氛围。 我翻了翻这几天的 […]
GraphRAG 正在改变检索增强生成:当知识图谱遇上 LLM
传统 RAG 有一个致命缺陷:它能回答"点"的问题,回答不了"面"的问题。 你问"这个微服务的 QPS 上限是 […]
后端性能优化:数据库连接池调优实战
连接池是后端系统中最容易被忽视的性能瓶颈之一。很多团队直接用 Spring Boot 默认参数上线,结果在流量 […]
Rust 写给 Java 程序员:所有权机制深度解析
Rust 的所有权(Ownership)是让 Java 程序员最头疼的概念。Java 里我们只管 ,GC 会处 […]
2026 年 Apache Doris 3.0 新特性全解析
Apache Doris 3.0 在 2026 年 4 月正式 GA。作为 OLAP 领域增长最快的项目,这次 […]
Kubernetes 网络模型:从 Pod 到 Service 的完整数据包旅程
Kubernetes 的网络模型是面试高频题,但很多人只是背了「每个 Pod 一个 IP」,实际数据包怎么走的 […]
Spring Boot 3 + Virtual Threads:性能测试与踩坑记录
Java 21 的 Virtual Threads(虚拟线程)是 Project Loom 的最终成果。Spr […]
为什么 ClickHouse 比 MySQL 快 100 倍?列式存储原理
面试经常被问:「为什么 OLAP 数据库用列存,而不是行存?」 直接用数据说话。假设有一张表: 查询: 行式存 […]
Redis 为什么快?单线程、IO 多路复用与数据结构分析
Redis 单线程却能支撑 10 万 QPS。这篇文章解释背后的设计。 1. 为什么单线程? Redis 选择 […]
AGENTS.md:给 AI 写一份项目说明书
如果你用 AI 辅助编程(Copilot、Cursor、Claude Code),有个简单但被低估的做法:在项 […]
MCP 协议:让 LLM 安全调用外部工具的标准化方案
MCP(Model Context Protocol)是 Anthropic 2024 年底开源的标准协议。它 […]
Spring Boot + Redis 缓存实战:从注解到分布式锁
缓存是后端性能优化的第一道防线。 Spring Cache 注解 Redis 序列化配置 默认 JDK 序列化 […]
Rust 正式进入 Linux 内核主线,C 语言的黄昏到了?
Linux 6.15 正式合并了 Rust 实现的 Ext4 驱动。这是 Rust 在内核中的第一个生产级文件 […]
MySQL 索引原理:B+Tree 为什么统治了数据库世界
面试必问题:「为什么 MySQL 用 B+Tree 而不是二叉树/哈希/B-Tree?」 磁盘 IO 是根本原 […]
gRPC vs REST:什么时候该用 gRPC?
微服务通信选 REST 还是 gRPC? 核心差异 Protobuf:体积就是优势 JSON 渲染: → 58 […]
AI 编程助手横评:Cursor、Copilot、Claude Code 怎么选
市面上的 AI 编程助手越来越多,怎么选? 三者对比 Cursor 像一个有 IDE 的 AI。补全最快,多文 […]
阿里基于 Doris 的实时数仓实践:每天 500 亿条数据
最近看了阿里云数据库团队分享的基于 Doris 的实时数仓实践,干货很多。 业务场景 - 淘宝/天猫的实时大屏 […]
Java 25 发布:虚拟线程稳定版、字符串模板正式 GA
Java 25 正式发布,几个特性很值得关注。 虚拟线程(Virtual Threads)正式 GA 虚拟线程 […]
Cursor 估值突破 100 亿美元:AI 编程工具重新定义了「IDE」
Cursor 的估值到了 100 亿美元。一个「代码编辑器」值这么多? 做了什么不一样 Cursor 不是给传 […]
Kubernetes ConfigMap 和 Secret:配置管理的正确姿势
ConfigMap 和 Secret 是 K8s 中管理配置的两大工具。 ConfigMap 存储非敏感配置— […]
实时计算入门:Flink 和 Spark Structured Streaming 该怎么选?
最近在看实时计算相关的资料,对比了 Flink 和 Spark Structured Streaming。 F […]
系统设计面试:设计一个 API 限流器(Rate Limiter)
API 限流是每个后端系统都需要的基础能力。面试中常让你设计一个限流器。 需求 - 限制每个用户/API Ke […]
Ollama 和本地大模型:为什么越来越多人选择在笔记本上跑 AI
Ollama 在 GitHub 上的 star 数突破了 15 万。越来越多人开始在本地跑大模型了。 为什么选 […]
ConcurrentHashMap 为什么比 Hashtable 快?锁分段到 CAS 的优化之路
Hashtable 和 ConcurrentHashMap 都是线程安全的 Map,但性能天差地别。 Hash […]
设计模式面试:单例的 5 种写法和工厂模式在 Spring 中的应用
设计模式在面试中的作用:证明你不是只会 CRUD 的码农。 单例模式的 5 种写法 1. 饿汉式(最简单) 缺 […]
Kafka 不再是唯一选择:2025 消息队列选型指南
Kafka 统治消息队列领域十多年了,但最近出现了很多有意思的替代品。 Redpanda - 用 C++ 重写 […]
计算机架构面试入门:CPU 缓存和伪共享(False Sharing)
计算机架构的知识让你写出高性能代码。 存储层次 每往下走一层,速度差一个数量级。这就是为什么局部性原理(时间局 […]
HashMap 源码深度解析:JDK 8 的红黑树化和扩容机制
HashMap 是 Java 面试出场率最高的数据结构。 数据结构 JDK 8 的 HashMap = 数组 […]
Service Mesh 入门:Istio 到底解决了什么问题?
Service Mesh 是微服务架构的下一阶段。Istio 是目前最流行的 Service Mesh 实现。 […]
Kafka vs RabbitMQ vs RocketMQ:消息队列选型面试全攻略
消息队列选型是面试中常见的问题。三个主流 MQ 各有擅长。 简单对比 各自的擅长场景 Kafka:日志收集、流 […]
系统设计面试:设计一个社交媒体的信息流(News Feed)
信息流(News Feed / Timeline)是社交媒体的核心,也是系统设计面试的经典题。 需求 - 用户 […]
CAP 定理面试精讲:你只能三选二,但现实没有那么简单
CAP 定理是分布式系统面试的必考题。 CAP 是什么 - C(Consistency,一致性):所有节点在同 […]
MySQL 分库分表学习笔记:从单库到分片的完整思路
最近在学习分库分表的方案,整理一下理解。 为什么需要分库分表 当一个表的数据量超过千万级别时,单库的性能会遇到 […]
API 设计的哲学:从 REST 到 gRPC 再到 GraphQL 的反思
REST、gRPC、GraphQL 各有各的好,但好的 API 设计跟选择什么协议关系不大。 REST RES […]
Spring MVC 请求处理流程:从 DispatcherServlet 到视图渲染
Spring MVC 的请求处理流程是经典面试题。 完整流程 每一步详解 1. DispatcherServl […]
后量子密码学入门:量子计算机会破解 HTTPS 吗?
量子计算机离实用还有距离,但加密算法的过渡已经开始了。 量子计算机为什么威胁加密 现在的 HTTPS 依赖两种 […]
Spring Bean 生命周期:从实例化到销毁经历了什么?
Spring Bean 的生命周期是面试的经典题。完整流程如下: 生命周期全流程 面试时怎么答 不要一开始就背 […]
线程池面试八连问:核心参数、拒绝策略和调优思路
线程池是 Java 并发编程面试的高频题。 七个核心参数 执行流程 1. 任务来了,如果线程数 corePoo […]
@Transactional 失效的 5 种场景:为什么你的事务没回滚?
@Transactional 看起来很美好,但它有好几种情况会静默失效。 1. 同类方法调用 原因:Sprin […]
系统设计面试:设计一个即时通讯系统(WhatsApp/微信)
设计一个像 WhatsApp 或微信的即时通讯系统,是系统设计面试的常考题。 核心需求 - 一对一聊天和群聊 […]
Neovim 配置指南:2025 年的终端编辑器还能打吗
用了一年 Neovim,分享一下配置心得。 为什么选 Neovim - 启动快(50ms vs Code 的 […]
Redis Cluster 入门:从单机到集群的那些坑
最近在学习 Redis Cluster,搭了一套 3 主 3 从的环境,过程中踩了不少坑。 搭建过程 Redi […]
MySQL 索引面试核心:为什么最左前缀匹配是面试最爱问的?
MySQL 索引的面试题绕不开「最左前缀」。 联合索引的存储结构 假设有一个联合索引 ,它在 B+Tree 中 […]
操作系统面试核心:进程和线程到底有什么区别?
进程和线程是操作系统面试的基础。 核心区别 进程间通信(IPC) 1. 管道:父子进程间单向通信, 2. 消息 […]
synchronized vs ReentrantLock:从面试被问到源码实现
synchronized 和 ReentrantLock 有什么区别?十个面试九个问。 用法对比 核心区别 J […]
Kubernetes HPA 自动伸缩深入理解:从 CPU 到自定义指标
HPA(Horizontal Pod Autoscaler)是 K8s 中实现自动伸缩的核心组件。 HPA 工 […]
JVM 垃圾回收面试精讲:从 CMS 到 G1 到 ZGC
JVM 垃圾回收是 Java 面试的高频考点。别再只说「标记-清除」了。 GC 算法的演进 - 标记-清除:最 […]
SQL 优化面试指南:从 EXPLAIN 到索引设计的实战思路
SQL 优化是后端面试的高频题,也是日常开发必备技能。 EXPLAIN 核心字段 type 字段(从好到差) […]
CDN 边缘计算入门:Cloudflare Workers 和 Vercel Edge 能做什么?
边缘计算(Edge Computing)是 CDN 的进化版——不仅缓存静态文件,还能在离用户最近的节点上运行 […]
读源码是成为更好程序员的最佳捷径
很多人觉得读源码太难了,其实有方法。 为什么读源码 - 文档会过时,代码不会骗你 - 理解为什么这样设计,而不 […]
Git 工作流最佳实践:从单人项目到团队协作
Git 用了很久,但好的习惯是逐渐养成的。 Commit Message 推荐 Conventional Co […]
Spring Boot 自动配置原理:@SpringBootApplication 到底做了什么?
Spring Boot 的自动配置是面试高频题。很多人只会说「约定大于配置」,但被追问原理就卡壳了。 @Spr […]
系统设计面试攻略:设计一个短链接服务(TinyURL)
设计短链接服务是系统设计面试的经典题。用一个结构化框架来分析。 1. 需求澄清 不要急着画图,先问清楚: - […]
HTTP 和 HTTPS 面试全攻略:状态码、缓存、TLS 握手
HTTP 协议是后端面试的基础题。 HTTP 的演进 HTTP 1.0:每个请求一个 TCP 连接,用完就关。 […]
Doris vs ClickHouse:OLAP 数据库学习对比
最近在学习 OLAP 数据库,把 Doris 和 ClickHouse 做了一个对比。 架构差异 ClickH […]
我的终端工具链:2025 年开发效率套件分享
分享一下我日常高频使用的终端工具。 文件操作 - fd:比 find 更快更好用的文件搜索 - ripgrep […]
MySQL 事务隔离级别面试精讲:脏读、幻读、不可重复读到底怎么区分?
事务隔离级别几乎是 MySQL 面试必问题。 三种并发问题 脏读:读了别人还没提交的数据。别人回滚了,你读到的 […]
PostgreSQL 还是 MySQL?2025 年数据库选型的重新思考
MySQL 和 PostgreSQL 的争论从来没有停过。2025 年了,情况有些变化。 PostgreSQL […]
分布式锁的三代演进:从 Redis 到 Etcd 再到无锁设计
分布式锁看着简单,实际上坑很多。 第一代:Redis 分布式锁 问题: 1. 锁过期时间不好设定——设短了业务 […]
TCP 三次握手四次挥手:面试官到底想听什么?
TCP 的连接建立和释放是计算机网络面试的核心。 三次握手 为什么三次而不是两次? 两次握手的问题:如果客户端 […]
Redis 高频面试题:缓存穿透、雪崩、击穿到底有什么区别?
这三个词面试中几乎必问,而且很多人分不清。 缓存穿透 现象:查询的数据在数据库也不存在,缓存自然也没有。每次请 […]
Apache Pulsar 入门:下一代消息队列有什么不一样?
Apache Pulsar 被称为「下一代消息队列」,它和 Kafka 最大的区别是架构。 存算分离 Kafk […]
JVM 内存模型面试精讲:堆、栈、方法区和元空间
JVM 内存模型是理解 Java 程序运行的基础。 JVM 运行时数据区 堆(Heap) - 存放所有对象实例 […]
作为 Java 开发者,我是怎么开始学 Rust 的
最近开始学 Rust,作为写了几年 Java 的人,思维方式确实需要转换。 最大的不同:所有权 Java 的垃 […]
Spring IoC 和 AOP 面试怎么答?不只是背概念
Spring 的 IoC 和 AOP 是面试必考题。但大多数人只会背概念。 IoC(控制反转) 面试官想听到的 […]
Docker 镜像层缓存原理:为什么 COPY 顺序影响构建速度
Docker 的镜像层缓存是一个非常重要但容易被忽视的概念。 层是什么 Docker 镜像由多个只读层叠加而成 […]
Java 集合框架面试全解:ArrayList、LinkedList、HashMap 底层原理
Java 集合框架是面试的必考题,而且通常是第一道。 ArrayList vs LinkedList Arra […]
HTTP/3 和 QUIC:为什么用 UDP 替代 TCP?
HTTP/3 已经逐渐普及,但它底层用 UDP 而不是 TCP,很多人不理解。 为什么不用 TCP? HTTP […]