最近公共祖先LCA,详细讲解,蒟蒻也能看懂
\(upd\):根据 SgtTree dalao的新方法,增加树链剖分写法 本文共讲述了五种方法,个人认为讲的比较详细,请放心食用 定义 最近公共祖先,简称 lca (Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根节点最远的那一个。 例题 最 ...
bool-hybrid-array 高效实战效果展示:亿级用户×少量标签的画像分群(0.1% 稀疏:list 指针数组 800MB → BHA 400KB,2026-10-26 实测)
声明:本文是 bool-hybrid-array 使用者的真机实测笔记,不是第三方独立评测;所有数字本机可复现(脚本口径见文末),优点短板都如实标注,别把"种草"当"评测"。 做用户画像分群的朋友都懂一个尴尬:用户是亿级的,标签是几十个的,但"给一亿个人打一个 True/False 标记"这件事,用 ...
P4591 [TJOI2018] 碱基序列,详细题解
一道“字符串hash + dp”的好题 一.题意简述 题面理解起来有点困难,翻译一下题面 给定 DNA 串 \(s\) 和 \(k\) 组字符串,从每组恰好选一个字符串,按组顺序拼接。要求拼接结果是 \(s\) 的子串,求所有选择方案在 \(s\) 中出现的总次数(同一方案能在多个位置出现会分别计数 ...
BoolHybridArr 与 numpy / 原生序列互转 API 真机速查 · 边界答疑
从一个真实疑惑开始 有读者拿到一个 BoolHybridArr 实例 b,顺手敲了一行: import numpy as np print(np.asarray(b)) 屏幕上喷出来的不是一串整齐的 True / False,而是一长串 0 1 0 0 1 ... 一样的整数,dtype 还是 in ...
Java学习随笔:参数校验为什么要分清格式和业务状态(2026-10-26)
写 Java 接口时,参数校验往往是最早补上的一段逻辑:判断必填项是否存在,检查字符串长度,再确认数字有没有超出范围。做完这些,很容易觉得请求已经被检查过,后续只需执行操作。但在订单、库存等会持续变化的场景里,输入格式正确,和操作此刻确实可以执行,是两件需要分别判断的事情。今天想整理的,就是这两类校 ...
2026-10-26 Integer 缓存:127 与 128 的分界线
这段代码大概是学 Java 时最容易被当成"玄学"的一处: Integer a = 127, b = 127; Integer c = 128, d = 128; System.out.println(a == b); // true System.out.println(c == d); // f ...
使用 Python 修改 PDF 页面尺寸:标准纸张与自定义尺寸
在实际工作中,PDF 的页面尺寸往往决定了它能否顺利打印、归档或嵌入到其他系统里。比如,一份为 A3 设计的报表需要缩成 A4 分发,或者扫描件需要统一到某个自定义尺寸。手动逐页调整既耗时又容易出错,用 Python 脚本批量处理会是更稳妥的选择。 Free Spire.PDF for Python ...
北漂 13 年,我把 Java 家底钉成了这张知识图谱(全站免费)
北漂13年Java老兵,整理九大免费知识图谱:线上实战项目、源码深度拆解、模板化算法、Java落地RAG、面试原理题、高并发场景设计,附带工具箱,不卖课不割韭菜,求职进阶、转AI方向都能用。 ...
Spring AI 落地企业中台:多模型动态路由与 SSE 流式长连接高并发治理 (生产高阶进阶实战)
本文深入剖析 Spring AI 在企业级中台的落地实战,针对多模型动态路由降级、SSE 长连接高并发下的 Netty 内存爆破与线程阻塞痛点,提供基于 Reactive 响应式架构的完整高并发治理与容灾演进方案。 ...
Java学习随笔:超时预算如何在一次调用中分配(2026-10-25)
学习 Java 服务开发时,我曾把超时理解为给某个远程调用填一个数字:超过这个时间就返回错误。可是当一次请求需要排队、访问数据库、调用其他服务,甚至进行重试时,每个环节都单独设置一个看似合理的等待时间,最后加起来却可能远远超过调用方愿意等待的上限。今天想整理的,是把超时当成整次请求的预算来考虑,而不 ...
时间序列数据中,如何找出缺失值
前段时间有位读者朋友问我一个关于如何处理时间序列数据中的缺失值问题,但是只在评论中简单回复了一下。 后来我想想,时间序列数据是一种非常常见的数据集,处理缺失值的问题可以单独聊一聊,于是,就整理了这篇文章。 我们拿到一份时间序列数据,第一步通常不是分析,而是确认它完不完整。 数值缺失好认:空值、NaN ...
BHA_Queue 内存压测翻车现场:8.6MB → 0.13MB,罪魁祸首是一行列表推导式
本文基于 bool-hybrid-array 9.13.11,所有数字都是我本机真机实跑、脚本贴在文末可原样复现。我不是来吹这个库的——恰恰相反,我第一次压测它的时候,差点把它当"虚假宣传"删掉。这篇记录我是怎么被自己写的基准骗的,以及 BHA_Queue 到底适不适合替换 collections. ...
Python 项目中的 venv 机制介绍
.venv 通常是 Python 项目中的虚拟环境,用于为单个项目提供相对独立的 Python 环境和第三方库。 为什么要这样做?不同项目使用的 Python 解释器版本和第三方库版本可能不同。如果不使用虚拟环境,而是直接修改全局环境并把第三方库都安装到全局环境中,一方面会造成全局环境污染;另一方面 ...
正本清源:BoolHybridArr 到底是"位图"还是"异常下标表"?它从一开始就是两段
最近 bool-hybrid-array 的存储结构冒出两种各执一词、但都很笃定的说法: 一种(扒了 uint8 之后)说:它省内存本质就是一张位图,8 个布尔压一个字节,贴着 ⌈N/8⌉ 跑,"稀疏切换"只是边角料; 另一种(在万分之一命中的稀疏数据上受益)说:它本质是一张异常值下标表 array ...
Python 潮流周刊#172(附第 122 期全文):3.15 的 JIT 终于见效、自由线程 Python 进入下一阶段
本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 重要提示: 本期有读者福利抽奖活动,满 100 人自动开奖,奖品是一份周刊专栏的年 ...
Kafka 入门实战(5)--安全协议
本文主要介绍 Kafka 中客户端(如 Producer、Consumer、AdminClient)与 Broker 之间,以及 Broker 节点相互通信时的安全协议,它决定了通信过程中的加密机制(Encryption)和身份验证方式(Authentication);文中使用到的软件版本:Kafk ...
树链剖分详细讲解,蒟蒻也能看懂
本文内容部分参考这篇博客,但图片,代码均为原创 树链剖分 定义 树链剖分是一种将树按轻重边划分成若干条链,使任意两点路径可在 \(O(log\,n)\) 条链内分解,并可用线段树等结构维护路径或子树的算法。 它通过两次 DFS 求出重儿子、链顶、DFS 序等信息,从而把树上操作转化为序列区间操作,实 ...
2026-10-23 Servlet 生命周期实测
课上讲 Servlet 生命周期就四个词:构造、init、service、destroy。但"什么时候"发生,我其实没搞清楚。于是在 Tomcat 上写了两个 Servlet,把每个阶段都打上时间戳跑了一遍。 一、第一个坑是自己撞出来的 我想在构造函数里打一行日志,证明"实例是什么时候被 new 出 ...
Java学习随笔:批量任务如何留出失败恢复的余地(2026-10-23)
写 Java 批量任务时,我很容易先想到一个循环:查询数据,逐条处理,全部结束后打印成功。这样的实现适合说明流程,却还没有回答真实运行中的一个问题:如果处理到一半停了,下一次从哪里继续?今天整理的这个小主题,就是怎样给批量任务留出恢复的余地,让失败之后仍能说清已经完成什么、还剩下什么。 可以想象一个 ...
面了上百人,我最爱问的LeetCode 1「两数之和」:能背代码的很多,能讲清“先查后存”的没几个
LeetCode 1 两数之和深度面试拆解!不止AC代码,重点讲先查后存、HashMap底层原理、整型溢出、预分配容量等工程优化,对比多解法优劣,附带高频追问与面试表达思路,告别背题,大厂算法面试直接用✨持续更新面试算法系列,欢迎关注! ...


