Java学习随笔:默认值为何也需要明确的业务含义(2026-10-30)
学习 Java 业务开发时,默认值经常被当成一个很小的实现细节。字段没有传进来,就补一个零;字符串没有内容,就换成空字符串;配置没有填写,就沿用某个固定数字。这样确实能让程序继续执行,但继续执行并不代表含义正确。今天想整理的,是默认值如何改变输入的解释,以及怎样避免它悄悄隐藏本来需要处理的问题。 可 ...
面试被LeetCode 27(移除元素)问懵?别再用两层 for 循环了:一道“简单题”吃透双指针原地删除,附面试加分话术 + 11 个避坑清单
LeetCode27移除元素深度剖析,带你跳出暴力O(n²)误区。详解快慢双指针保序方案、首尾交换优化方案,吃透读写分离、循环不变式,对比两种解法适用场景。配套11条避坑清单、面试高频问答,一套原地压缩模板打通26、283、80等数组双指针经典题,面试刷题必备,持续更新算法面试干货。 ...
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 接口时,参数校验往往是最早补上的一段逻辑:判断必填项是否存在,检查字符串长度,再确认数字有没有超出范围。做完这些,很容易觉得请求已经被检查过,后续只需执行操作。但在订单、库存等会持续变化的场景里,输入格式正确,和操作此刻确实可以执行,是两件需要分别判断的事情。今天想整理的,就是这两类校 ...


