java教程技术文章
-
本文介绍如何判断整数数组中是否存在至少一个重复元素,重点分析暴力解法的逻辑缺陷、编译错误成因,并提供基于JavaStream的简洁高效解决方案。313 收藏 -
ChronoUnit是Java8提供的精确时间单位计算工具,支持DAYS、WEEKS、MONTHS等单位的整数差值计算,MONTHS/YEARS基于日历逻辑而非固定毫秒,需注意类型一致性和参数顺序。313 收藏 -
InterruptedException是线程被中断时抛出的检查异常,需恢复中断状态或向上抛出,不可吞掉;它表示协作式中断通知,非线程终止信号。313 收藏 -
最有效方式是分析堆转储快照(HeapDump)。通过开启OOM自动Dump、用MAT查看LeakSuspects/TopConsumers/Histogram,结合GCRoots引用链定位泄漏源头,并用jstat等工具多点采样验证增长趋势。311 收藏 -
应控制递归深度、设最小任务粒度阈值、用迭代替代深层递归、复用辅助数组避免每层arraycopy,并加深度校验与合理-Xss设置。311 收藏 -
Comparable是自然排序,类内部实现compareTo方法定义默认顺序;Comparator是外部比较器,通过compare方法灵活定制多种排序规则。前者适用于单一自然序,后者支持多条件、运行时动态排序,两者可共存,常结合使用。310 收藏 -
受检异常必须显式处理,否则编译不通过;运行时异常继承自RuntimeException,编译器不检查;Error代表JVM严重问题,一般不捕获。310 收藏 -
ArrayList序列化本身稳定,问题源于元素类未声明serialVersionUID或使用JDK移除API;应为业务类显式定义serialVersionUID、避免内部API,并优先采用JSON/Protobuf替代Java序列化。309 收藏 -
局部变量表中数组变量仅占1个Slot存储引用,实际元素存于堆;Slot可复用以降低栈压力,但编译期已固定总大小,作用域控制比分支位置更影响空间效率。309 收藏 -
文章 · java教程 | 3星期前 | Java · HTTP · ndjson · httpclient · 性能实践 · 流式读取 背压 Java HttpClient NDJSON BodyHandlers.ofLines
Java HttpClient 读取 NDJSON 时,先用 BodyHandlers.ofLines() 把响应转成逐行流,再在消费端做字段校验、数量上限和超时收尾。本文用订单事件流说明连接关闭、异常中断与消费速度不匹配时的处理边界。309 收藏 -
this是Java中代表当前对象引用的关键字,仅限实例方法和构造方法使用;用于区分同名成员变量与参数、调用本类其他构造方法(需首行)、返回或传递当前对象实现链式调用、以及在内部类中访问外部类成员。308 收藏 -
可行,但需将非模块化JAR放模块路径使其转为自动模块,按推断名(如fastjson)声明requires,并用--module-path编译运行;反射访问需opens,SPI需uses,命名模糊时用jdeps验证。308 收藏 -
使用String.format("%.2f",3.14159)可保留两位小数并返回字符串;2.System.out.printf("价格:%.2f元%n",19.876)直接格式化输出并换行;3.DecimalFormatdf=newDecimalFormat("0.00")可灵活控制小数位和千分位,适合复杂格式需求。308 收藏 -
Semaphore通过许可机制限制并发线程数,初始化指定许可数量,线程需acquire()获取许可并release()释放,确保最多n个线程访问资源,常用于控制数据库连接等场景,支持公平与非公平模式,应结合try-finally防止许可泄漏。308 收藏 -
hasNextDouble()可安全预判合法浮点数,但仅支持Java字面量格式(如3.14、-2.5e-3、.7),不接受空格、逗号、单位、中文符号等;它不消费输入,依赖默认空白分隔符切分,对"12.34abc"或"12,34"返回false,对"inf"/"NaN"返回true。308 收藏