java教程技术文章
-
线程池未关闭会导致JVM无法退出和RejectedExecutionException异常;应先调用shutdown()再配合awaitTermination()等待终止,超时后可shutdownNow();推荐使用AutoCloseable封装或Spring的destroyMethod自动管理。490 收藏 -
泛型抽象工厂通过类型参数统一管理业务实体创建,以TypeRegistry维护抽象类型到具体实现的映射关系,支持命名注册与运行时按名创建,实现解耦与灵活切换。490 收藏 -
Java序列化是将对象及其类结构、字段值、继承链等完整转为字节流,反序列化则逆向还原;NotSerializableException源于字段引用不可序列化类型;需用transient或自定义write/readObject处理;未显式声明serialVersionUID会导致类变更时InvalidClassException;JDK原生序列化因格式私有、安全风险、兼容性差、性能低,生产环境应慎用。490 收藏 -
LockSupport.parkNanos不提供纳秒级精度,仅接受纳秒参数,实际受操作系统时钟粒度限制(如Linux为1–15ms),只能保证“至少等待”,无法保证“恰好等待”,且不响应中断异常但会提前返回。490 收藏 -
Java数组长度不可变是JVM内存模型与运行时安全机制决定的底层约束,length为publicfinalint字段,创建后固化,内存布局要求连续定长空间,边界检查依赖其绝对稳定。490 收藏 -
成员代码块是类中用{}包裹、不在任何方法内的无名代码段,每次new对象时自动执行且位于所有构造函数体之前;编译器将其插入每个构造函数super()/this()调用之后,用于统一处理与参数无关的初始化逻辑。489 收藏 -
公平模式(fair=true)启用FIFO调度,避免线程饥饿但吞吐量降低15%–30%;非公平模式允许插队、提升吞吐,但可能引发延迟波动与个别线程长期等待。489 收藏 -
直接用代码块初始化不同版本的API实例是最轻量、最可控的变量路由解法,通过独立实例隔离版本逻辑,自动加前缀、差异化中间件、分版本监控,并用结构体嵌套保障响应兼容性。489 收藏 -
默认Propagation.REQUIRED导致嵌套方法共享事务,内层异常会标记整个事务rollbackOnly,外层catch无法阻止回滚;REQUIRES_NEW可隔离事务,NESTED仅依赖数据库savepoint且不可靠。489 收藏 -
异常统一流式转化引擎的核心是将异常识别、语义归一、补偿触发、执行校验四环节串成可观测、可配置、可回溯的数据流,实现补偿从硬编码if-else到事件驱动策略流水线的升级。489 收藏 -
适合,ArrayList可存储搜索历史,但需手动处理去重、截断和线程安全;推荐用add(0,keyword)保持最新在前,并转JSON序列化持久化,避免二进制序列化兼容问题。489 收藏 -
静态内部类解决逻辑归属与物理解耦的矛盾:封装辅助类(如HashMap.Node)、避免内存泄漏、实现单例、增强模块化与命名空间控制,且不持外部类实例引用。489 收藏 -
在Java中使用HttpURLConnection设置User-Agent需在connect()前调用setRequestProperty("User-Agent",uaString),推荐使用主流浏览器真实UA字符串,但仅设UA不足以完全模拟浏览器,还需配合其他头部及请求策略。488 收藏 -
Reference.reachabilityFence并非修复NPE的万能药,而是防止JVM过早判定对象不可达的编译器屏障;它仅在对象本应可达但因激进优化(如逃逸分析)被误回收时生效,且必须紧邻最后一次使用、在同一栈帧内调用,配合Cleaner或PhantomReference使用才有效。488 收藏 -
POSITIVE_INFINITY是边界标记值,用于表示无上限或跳过约束,不可直接赋给速度参与物理计算;需配合isfinite()检查,在速度钳制、CCD开关等场景中作为配置语义值使用。488 收藏