java教程技术文章
-
Java无法直接用do-while实现非阻塞I/O轮询通讯,因JVM缺乏对UART/I²C/BLE等外设的原生非阻塞支持;do-while仅用于带退出条件的有限重试或数据拼包,真正的低功耗需依赖中断、回调或底层epoll/poll机制。146 收藏 -
String.intern()对低基数字符串特别有效,因其通过常量池复用相同内容对象,将千万级重复字符串实例减至个位数,但仅适用于取值少、重复高、生命周期长的字段,需避免高基数或冗余数组字符串的误用。158 收藏 -
ulp是浮点数的最小可分辨差值,即相邻可表示浮点数间的距离;它随数值增大而增大、符号不影响、float精度低于double,用于量化“0.1+0.2≠0.3”的误差量级。440 收藏 -
数组实现拓扑排序检测依赖环的核心是Kahn算法:用入度数组记录各变量被依赖次数,邻接表数组记录其直接依赖项;通过静态数组模拟队列进行BFS式剥离,最终若处理节点数cnt等于n则无环,否则存在环。106 收藏 -
Java自定义异常应继承RuntimeException,用结构化错误码枚举(如ORDER_NOT_FOUND)替代字符串,提供三类构造函数并正确调用super,上下文信息存入context字段而非message。333 收藏 -
ATM类设计需保证线程安全:账户余额用AtomicInteger或synchronized保护;Account与ATM解耦;余额操作返回boolean;避免在getter/toString中做业务判断;withdraw需严格参数校验。222 收藏 -
SplitPackage指同一逻辑包名被分散在多个物理模块中,导致运行时加载不一致、符号重复或变量覆盖;其难排查源于模块系统只认物理路径而非语义,且多语言机制均按边界划分作用域而开发者按业务组织包名。163 收藏 -
不能只靠一个正则安全彻底剔除HTML标签,因正则不支持递归,无法处理嵌套、自闭合标签、注释、CDATA及含>的属性值;推荐用JSoup解析器。314 收藏 -
MixedGC无法及时回收老年代碎片是因为其仅按收益阈值动态选择部分老年代分区回收,低收益高碎片区域被跳过,导致连续空间不足而触发AllocationFailure。395 收藏 -
直接返回Collections视图(如subList、asList、keySet)会导致视图与源集合共享底层数据,修改源集合会静默影响所有关联视图,引发ConcurrentModificationException或异常值,是典型的“静默型”Bug。200 收藏 -
应使用枚举配合switch实现状态分流,显式覆盖所有枚举值、禁用default兜底,Java14+推荐switch表达式,旧版default抛AssertionError;case仅调度不实现业务;状态变量须强类型绑定枚举;优先考虑在枚举内定义抽象方法实现行为穷尽。299 收藏 -
读懂JDK8-XX:+PrintGCDetails日志的关键是抓住元空间变化、分代内存水位、GC事件类型与耗时三类核心信息,重点识别晋升异常、FullGC频繁、GC耗时突增、老年代持续上涨四类问题信号。141 收藏 -
前驱是左子树最右节点或不存在,后继是右子树最左节点或不存在;删除度为2节点时,用其前驱或后继替换可保持BST性质,且被替换节点至多一个子节点,便于递归删除。126 收藏 -
flatMap本身不直接采样或均衡,而是做“一对多映射+扁平化”的结构准备;采样与均衡需结合filter、limit、hash等后续操作或外部策略实现。130 收藏 -
Collections.synchronizedList()仅保证单方法原子性,不保障复合操作或迭代安全;需手动同步临界区,如检查再添加、遍历时须synchronized(list)块;替代方案依读写比例选CopyOnWriteArrayList或ReentrantLock。378 收藏