十亿用户如何检查用户名是否存在:布隆过滤器加速,唯一索引兜底
十亿用户的用户名查询,不能只靠布隆过滤器决定注册结果。本文区分预检查与最终占用,结合数据库唯一约束、Redis Set、过滤器误判和同步滞后,讲清规范化、容量估算、故障降级、outbox 增量更新与全局唯一性,并提供通过并发模拟验证的 Java 8 核心代码。
Recent posts
近期发布的技术思考与实践记录。
十亿用户的用户名查询,不能只靠布隆过滤器决定注册结果。本文区分预检查与最终占用,结合数据库唯一约束、Redis Set、过滤器误判和同步滞后,讲清规范化、容量估算、故障降级、outbox 增量更新与全局唯一性,并提供通过并发模拟验证的 Java 8 核心代码。
聊天记录需要离线查询、稳定翻页、重复消息去重和可靠落盘。本文从 SQLite 的嵌入式特点出发,设计消息表与联合索引,演示游标分页、窗口函数、FILTER 和带修订号的 UPSERT,说明 WAL 单写者限制、运行时版本差异及备份边界,并纠正历史功能对比中的过时结论。
把本地 MP4 变成浏览器可播放的直播流,可以让 Spring Boot 管理任务、FFmpeg 负责读取和编码、ZLMediaKit 提供 HTTP-FLV 与 HLS 播放。本文从命令行验证到 Java 进程管理,补齐路径限制、重复启动、异常退出、资源释放和播放就绪判断,区分直播、点播与历史回看。
CPU 使用率达到 900% 时,先分清进程统计口径和业务影响,再沿 MySQL 正在执行的 SQL、索引与请求并发,或 Java 热点线程、十六进制 nid 与线程快照逐层定位。结合原文的队列空轮询案例,说明如何改用阻塞获取并正确处理中断,以及修复后如何验证吞吐量和积压。
从 JDK ThreadLocal 的哈希定位讲起,拆解 Netty FastThreadLocal 用全局下标和线程绑定数组换取直接访问的机制,并分析普通线程退化、数组增长、线程池清理和 ByteBuf 分配中的实际边界。
看到“Google的Java规范”这个标题,容易以为文章要讨论GoogleJavaStyle。真正展开的却是Guava:字符串、集合、函数式工具、本地缓存和异步回调。这个错位本身值得先澄清:Guava是Google维护的Java工具库,不是编码规范,也不能替代语言和JDK本身。它的价值不在于“Google在用”,而在于把一些容易写错的边缘条件固化成了明确的类型和约束。问题也在这里:API一旦...
Topics
从熟悉的技术方向开始阅读。
About this site
记录值得再次查阅的技术过程,保留分类、标签和归档入口,让每一篇内容都更容易被找到。
了解本站