3 分钟阅读
Java 参数传递:为什么换引用不等于改对象
在方法中给参数重新赋值,调用方的变量不会跟着改变;但通过参数修改 List 内容,调用方却能看到变化。这两种行为并不矛盾。
在方法中给参数重新赋值,调用方的变量不会跟着改变;但通过参数修改 List 内容,调用方却能看到变化。这两种行为并不矛盾。
遍历数组时多写一个等号,就会在最后一步越界。分页、切片和批处理也有类似问题:区间的端点究竟包含在内,必须说清楚。
计算成功率时,把两个整数相除再赋给 double,可能得到 0.0。错误发生在除法表达式内部,改变接收变量的类型不能修复已经丢失的信息。
登录名来自请求参数,配置项来自文件,二者即使显示一样,也不应该用 == 判断内容。字符串池会让部分示例碰巧通过,反而掩盖问题。
用一个小型日志统计示例,理解 yield、迭代器耗尽,以及惰性处理的内存边界。
让 CSV 脚本从“能跑一次”变成可检查的工具,明确坏数据该报错还是跳过。
限制同时进行的 I/O,管理任务生命周期,并分清“并发数量”和“等待任务数量”。
从 ThreadPoolExecutor 的任务接收顺序入手,理解有界队列为什么是系统容量的一部分。
理解 hashCode、equals 和可变键之间的关系,避免把放进去的数据变成“查不到的条目”。
为什么从字符串创建十进制数,以及 equals、compareTo 和舍入规则各自负责什么。
给想法一个落脚的地方。从今天开始,记录学习、阅读与日常。
从 Recall@k 和 MRR 开始,将检索质量、回答依据、耗时与成本分开观察。