刷新
最近公共祖先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\) 中出现的总次数(同一方案能在多个位置出现会分别计数 ...

Java学习随笔:参数校验为什么要分清格式和业务状态(2026-10-26)

博主头像 写 Java 接口时,参数校验往往是最早补上的一段逻辑:判断必填项是否存在,检查字符串长度,再确认数字有没有超出范围。做完这些,很容易觉得请求已经被检查过,后续只需执行操作。但在订单、库存等会持续变化的场景里,输入格式正确,和操作此刻确实可以执行,是两件需要分别判断的事情。今天想整理的,就是这两类校 ...

Java学习随笔:超时预算如何在一次调用中分配(2026-10-25)

博主头像 学习 Java 服务开发时,我曾把超时理解为给某个远程调用填一个数字:超过这个时间就返回错误。可是当一次请求需要排队、访问数据库、调用其他服务,甚至进行重试时,每个环节都单独设置一个看似合理的等待时间,最后加起来却可能远远超过调用方愿意等待的上限。今天想整理的,是把超时当成整次请求的预算来考虑,而不 ...

时间序列数据中,如何找出缺失值

博主头像 前段时间有位读者朋友问我一个关于如何处理时间序列数据中的缺失值问题,但是只在评论中简单回复了一下。 后来我想想,时间序列数据是一种非常常见的数据集,处理缺失值的问题可以单独聊一聊,于是,就整理了这篇文章。 我们拿到一份时间序列数据,第一步通常不是分析,而是确认它完不完整。 数值缺失好认:空值、NaN ...

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 批量任务时,我很容易先想到一个循环:查询数据,逐条处理,全部结束后打印成功。这样的实现适合说明流程,却还没有回答真实运行中的一个问题:如果处理到一半停了,下一次从哪里继续?今天整理的这个小主题,就是怎样给批量任务留出恢复的余地,让失败之后仍能说清已经完成什么、还剩下什么。 可以想象一个 ...

<1234···50>