java教程技术文章
-
Semaphore不能用于分布式限流,因其许可计数仅存在于单JVM堆内存中,各节点隔离无共享、无一致性协议;需用Redis+Lua等外部存储实现原子扣减与过期机制。400 收藏 -
static代码块适合初始化必须在类首次使用前准备好且无法单行赋值的静态资源,如加载配置、注册JDBC驱动、构建不可变Map、预热缓存、加载本地库;不适合耗时I/O或网络请求。400 收藏 -
ClassLoader.getSystemResource本质是委托系统类加载器查找JVM自带路径下的资源,不搜索项目classpath,因此加载自定义配置文件通常返回null。400 收藏 -
本文介绍如何利用Java泛型与接口设计重构高度相似的过滤器构建方法,避免因继承导致的代码冗余和脆弱基类问题,同时提升可维护性与类型安全性。400 收藏 -
“多重捕获类型层次裁剪”并非标准术语,而是对可观测性中多重捕获、元数据建模中的类型层次及软件工程中裁剪概念的误混;其真实需求应聚焦于元数据精简与分级治理。400 收藏 -
URLConnection.getContentType()仅适用于已建立的URL连接,依赖服务器响应头或文件扩展名,不分析实际内容,故无法处理内存中的byte[]或ByteArrayInputStream等变量流。400 收藏 -
Java集合对null支持差异显著:ArrayList/LinkedList允许任意位置存null;HashMap/LinkedHashMap允许一个null键和多个null值;TreeMap/TreeSet完全禁止null;ConcurrentHashMap拒绝null键值,CopyOnWriteArrayList允许add(null)。400 收藏 -
Java9+模块系统默认启用强封装,反射访问JDK内部API(如sun.misc.Unsafe)会抛InaccessibleObjectException;需用--add-opens或模块opens声明授权,或改用VarHandle等官方替代方案。400 收藏 -
HashMap通过哈希机制实现快速存取,核心操作包括put、get、remove及遍历;其性能依赖hashCode和equals的正确实现,需注意键的不可变性、非线程安全、初始容量与负载因子设置,以及null键值的使用风险。399 收藏 -
本文详解如何将整数集合(Set)转换为以元素值为下标、以其在集合中遍历顺序为值的稀疏索引数组,并解决Lambda中修改非final变量导致的编译错误。399 收藏 -
在JOOQ的UNION(如UNIONALL)查询中,仅首个子查询的ad-hocconverter生效,后续子查询的mapping会被忽略——这是由JDBC结果集无源标识特性决定的设计约束,而非bug。本文详解其原理并提供两种可靠绕过方案。399 收藏 -
try-catch必须配对出现,否则编译报错;catch顺序须子类在前父类在后;受检异常需处理或声明throws;避免catch(Throwable);finally中return会覆盖try/catch返回值;log异常应传入异常对象而非拼字符串。399 收藏 -
Arrays.stream是Java中将数组转为Stream的核心工具,支持基本类型和引用类型数组,可进行过滤、映射、归约等操作,并能通过toArray实现流与数组互转,还可指定范围处理子数组,提升代码简洁性与数据处理效率。399 收藏 -
Java构造方法用于对象初始化,无返回类型且名须与类名严格一致;可重载、可加任意访问修饰符;若定义了任一构造方法则无默认无参构造;可用this()调用本类其他构造方法,须为首行唯一语句。399 收藏 -
应使用compareTo()比较BigDecimal金额,因其按数学值归一化后精确比较;equals()同时比较数值和精度,==比较引用,均不适用;需用字符串构造避免double精度误差,并确保非null。399 收藏