-
单例模式在Java中用于确保一个类只有一个实例并提供全局访问点,适用于控制资源创建与访问,如数据库连接池、配置管理器等。其核心优势在于避免资源浪费和保证状态一致性,但滥用会导致代码耦合度高、测试困难。实现方式包括:1.基础懒加载实现,线程不安全;2.加synchronized关键字实现线程安全但性能较差;3.双重检查锁定,需加volatile避免指令重排序,兼顾性能与安全;4.静态内部类实现,推荐使用,线程安全且支持懒加载;5.枚举方式,简洁可靠,防止反射与反序列化破坏单例。实际开发中需注意:Spring
-
Selector用单线程监控海量连接的本质是委托内核(如Linux的epoll_wait)只返回就绪fd,而非轮询;通道必须configureBlocking(false)才能注册,否则破坏事件驱动模型,且需正确使用Buffer状态和OP_WRITE。
-
Java中控制循环结束的核心是设计清晰的退出路径。需确保条件表达式随循环体操作动态变化,变量在循环内被修改,避免无限循环;推荐条件直白、集合操作谨慎。
-
intern()是登记+查重操作:检查常量池有无equals相等的字符串,有则返回其引用,无则将当前字符串引用加入池中并返回;JDK7+后只存引用不拷贝内容。
-
Ant的IDE集成本质是委托执行而非深度融合,需手动配置IDE识别build.xml、统一JDK版本、避免产物路径冲突,并注意环境变量缓存问题。
-
JDK是开发者工具包,含JRE及编译调试工具;JRE是运行环境,仅含JVM和类库;JDK包含JRE,JRE包含JVM与核心类库;开发者选JDK,普通用户选JRE。
-
Java中通过throws声明受检异常并由调用者用try-catch处理,底层传递异常、上层捕获并转化业务异常,提升程序健壮性与可维护性。
-
Semaphore许可数应根据目标资源真实容量设定,如数据库连接池为5则设为5,需预留10%~20%余量,动态资源应换用Resilience4j等限流器。
-
Eclipse中必须配置JDK(而非JRE)才能正常编译调试及使用新语法;需在InstalledJREs中添加JDK根路径,并在项目级设置JavaBuildPath、CompilerCompliance和ProjectFacets保持版本一致。
-
Java中Set的并、交、差需用addAll、retainAll、removeAll,但会原地修改;判断交集非空应使用!Collections.disjoint()而非retainAll返回值。
-
生成复杂Excel报表的核心在于选择合适工具库、设计数据模型并结合模板或代码实现样式与结构控制。一、选择ApachePOI适合精细控制样式、公式和图表,而EasyExcel适合大数据量导出且上手快;二、设计清晰的DTO/VO层以组织多维数据,包括主表、明细、汇总信息;三、采用模板驱动方式可减少硬编码样式工作量,结构动态变化则用代码构建;四、处理多级表头需合理设计数据结构(如HeaderInfo类)并精确计算坐标合并单元格;五、优化性能时,POI的SXSSFWorkbook和EasyExcel均支持流式写入
-
Java基本类型不能直接参与OOP操作,必须用包装类(如Integer、Boolean)转为对象才能调用方法、放入集合、作为泛型参数或实现多态;因int是primitive,无方法、不继承Object、无运行时类型信息,JVM在栈上直接存值,与堆中对象机制不同。
-
Thread.yield()不会让线程真正让出CPU,仅向调度器发出可忽略的让权提示;它不改变线程状态、不触发上下文切换,在多数场景下无效,仅极少数协作式轮询中谨慎使用。
-
JobRunrOSS版本不支持自动删除已移除@Recurring注解的定时任务,但可通过显式ID管理+启动时编程式清理实现准自动化卸载,避免因残留记录导致的类找不到异常。
-
全局静态常量应使用staticconstexpr或staticconst声明,命名严格采用全大写加单下划线的SNAKE_CASE格式,定义在头文件中以static保证翻译单元隔离,类型安全且避免宏与枚举混淆。