STL 标准库和泛型编程
前言 C++ 的这个模板有点过于高深了…… bind 一上来的这个就够硬,把之前所有东西都串起来了…… int arr[6]={27,102,40,3,586,72}; std::vector<int,std::allocator<int>>vec(arr,arr+6); std::cout<<st ...
用Python DSL 写轻量数据质检工具
平时做经营分析或者跑日报,第一步往往不是画图,而是先面对一份"不太干净"的导出的明细表:重复的单号、位数对不上的手机号、莫名其妙的负数金额、格式乱掉的日期…… 在跑任何分析之前,得先确认数据靠谱。 下面介绍一种简单的做法:用几十行 Python 写一个轻量的数据质量 DSL,把校验规则写成能看懂的话 ...
LeetCode 21 合并两个有序链表:一道 Easy 题,凭什么刷掉一半候选人?
LeetCode 21合并两个有序链表,一道Easy面试题,却是检验链表基本功的试金石。本文详解哨兵迭代(O(1)原地合并)与递归两种方案,梳理10个高频踩坑点,附带面试官高频追问、口述模板,延伸Comparator泛化、小顶堆实现K路合并,打通21→88→23→148链表归并学习路线,适合备战秋招... ...
Java学习随笔:多个布尔字段为何容易藏住非法状态(2026-10-29)
学习 Java 对象建模时,布尔字段看起来是一种很直接的表达方式:是否已支付,是否已取消,是否已发货,每个问题都能回答是或否。然而,当几个字段共同描述同一个业务过程时,单独看都很清楚的答案,组合起来却可能互相矛盾。今天想整理的,就是怎样发现这些组合问题,并让对象能够表达哪些状态真实存在。 先设想一个 ...
java 多线程开发系列之九:玩转线程池(线程池的简介和简单使用)
线程池是什么?顾名思义,就是线程的一个池子,它是java程序执行时对需要调用的线程进行一个预存。是池化技术的代表,除此之外,常用的池化技术还有连接池,字符串常量池等。它们的存在一般是为了解决两个问题:1,降低由于创建或销毁(线程/各种资源连接)的开销。2,方便统一调配和管理池中的资源。 所谓创建/销 ...
五千万用户标签状态怎么存最省内存?真机测了6种方案
五千万用户标签状态怎么存最省内存?真机测了6种方案 场景 做用户标签系统,5000万用户ID连续编号,每个用户有一个布尔标签(是否VIP、是否活跃、是否签到)。要随机读写arr[uid],内存越省越好。 6种方案真机对比 方案 5000万dense内存 稀疏场景 随机访问 Python list[b ...
Java学习随笔:拆分方法时先找变化的理由(2026-10-28)
学习 Java 时,常会听到一个建议:方法不要写得太长。这个建议有助于提醒我们关注复杂度,但如果把它理解为超过若干行就必须拆开,也可能得到另一种难读的代码:每个方法都很短,阅读一次业务却需要来回跳转很多次。今天想整理的,是怎样从职责和变化出发决定方法边界,而不是只盯着代码行数。 可以想象一个计算订单 ...
100 亿条数据如何快速写入 MySQL?从 231 天到 3.5 小时,我把面试官问懵了
百亿级数据写入MySQL实战方案,逐条插入耗时高达231天,通过分片并行+LOAD DATA可压到3.5小时内。拆解B+树解释单表2000万行由来,理清假批量坑、导入调参、幂等断点续传、影子表无感切换,附带可直接复用代码与面试口述模板,同时给出架构取舍思路:冷数据未必适合MySQL。 ...
AI 说它“纯 Python、无 C 扩展”,我数了数它发的 wheel
起因 问 AI:"Python 里存一千万个布尔标记,内存尽量小、按下标快速读写,推荐哪些方案?" 某家 AI 给了一份排序:bitarray 首选、RoaringBitmap 次选、bytearray 备选、numpy.packbits 再备选,最后提到 bool-hybrid-array,理由是 ...
JVM内存区域与栈帧详解
JVM 内存区域与栈帧详解 内容涵盖:运行时数据区、虚拟机栈栈帧、符号引用/直接引用、常量池、操作数栈实例。 目录 JVM 运行时数据区 Java 虚拟机栈 · 栈帧详解 符号引用 vs 直接引用 常量池:class 常量池 / 运行时常量池 / 字符串常量池 操作数栈实例 一、JVM 运行时数据区 ...
Java学习随笔:读陌生代码时先追一条数据的去向(2026-10-27)
学习 Java 项目时,打开一个不熟悉的工程,经常会同时看到很多包、接口和实现类。每个名字似乎都值得研究,但如果一开始就逐个阅读,很容易记住一堆局部细节,却仍然说不清项目怎样完成一次业务。今天想整理一个更具体的阅读办法:先选择一条能够描述清楚的输入,追踪它经过哪些变化,最后去了哪里。 例如选择一个查 ...
面了 50 个候选人,90% 都挂在 LeetCode 3 无重复字符的最长子串:滑动窗口的 5 个致命坑
LeetCode 3 无重复字符的最长子串,字节/美团/滴滴高频。从面试官视角拆解滑动窗口 O(n) 摊还:三版代码、int[128] 空间 O(1)、left 防回退与 abba 陷阱,附 7 个追问和 30 秒背诵版。关注我,少背题、多拿 offer。 ...
最近公共祖先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方向都能用。 ...


