-
本文介绍如何在Java中正确判断两个任意菱形是否发生几何重叠,指出仅比较顶点坐标的常见误区,并提供基于轴对齐包围盒(AABB)预检与精确凸多边形相交判定的完整解决方案。303 收藏 -
LongAdder比AtomicInteger快在通过分段累加(cells数组)减少CAS冲突,写多读少场景吞吐更高;但sum()弱一致性、无compareAndSet、不适用于强一致或读多写少场景。408 收藏 -
自定义异常类不是必须实现Serializable,但强烈建议实现;若添加了不可序列化字段或用于跨JVM传输(如RMI、Dubbo),未实现会导致NotSerializableException或InvalidClassException。185 收藏 -
使用Comparator配合Arrays.sort()实现逆序排序的关键是翻转比较逻辑,如b-a或b.compareTo(a),推荐用reversed()方法确保健壮性。475 收藏 -
Java中打印"和\需双重转义:字符串内双引号用\",反斜杠用\\;因编译器与正则等多层解析,路径、JSON、命令拼接等场景易出错,推荐用TextBlocks(Java15+)简化硬编码。434 收藏 -
HashSet遍历顺序不固定是设计使然,因其底层基于HashMap,元素位置由hashCode()和哈希表容量共同决定,受JDK版本、扩容时机等影响;应改用LinkedHashSet保持插入顺序。452 收藏 -
CopyOnWriteArrayList通过写时复制实现线程安全,读操作不加锁、效率高,适用于读多写少、允许数据稍有过期的场景,但写操作需复制整个数组,性能开销大,适合监听器列表、配置缓存等低频更新场合。444 收藏 -
Java9起String改用byte[]+coder标志位实现紧凑字符串:全Latin-1字符时1字节/字符,含非Latin-1字符时自动切UTF-16模式2字节/字符,省空间不降功能。487 收藏 -
Java线程执行顺序由操作系统调度器决定,JVM不干预;setPriority()基本无效;需用CountDownLatch等同步机制而非调度策略控制顺序。122 收藏 -
凯撒密码用char数组循环实现:将明文转为char[],遍历每个字符,字母按偏移量模26平移(分大小写处理基准'a'/'A'),非字母不变。179 收藏 -
访问数组前需检查索引合法性,通过判断索引是否在0到数组长度范围内避免越界;2.使用增强for循环可规避手动控制索引带来的风险;3.封装安全访问方法,在越界时返回默认值提升健壮性;4.Java8+推荐使用Optional封装元素,支持函数式处理空值情况。核心是“先判断后访问”,杜绝依赖异常控制流程。118 收藏 -
公平锁按线程等待时间顺序分配锁,非公平锁允许插队;2.公平锁通过newReentrantLock(true)创建,保证FIFO,避免饥饿但性能较低;3.非公平锁为默认方式,直接尝试CAS获取锁,吞吐量高但可能引发线程饥饿;4.synchronized是非公平锁;5.非公平锁因高效成为默认推荐,选择取决于公平性与性能权衡。471 收藏 -
Java反射绕过private限制需满足三条件:目标非编译期常量、类加载器未禁用反射、字段未被JVM内联优化;修改前须确认非final基本类型、模块化导出配置正确、操作对象为具体实例而非Class。459 收藏 -
抽象方法的核心作用是强制子类实现特定方法,统一流程骨架并保留实现灵活性;需用abstract修饰、无方法体,所在类也须为abstract;不可为private或final,推荐public;常用于模板方法模式,配合钩子方法提升扩展性。153 收藏 -
构造方法重载必须满足:同一类中方法名相同(即类名)、参数列表不同(数量、类型或顺序至少一者不同)、与访问修饰符和返回值无关;本质是通过签名差异实现编译期唯一绑定。454 收藏