-
ForkJoinPool适用于天然可分的递归任务(如数组求和、树遍历),依赖工作窃取提升效率;应优先使用commonPool(),合理设置拆分阈值,避免用于非递归或阻塞型任务。
-
public和private在类成员上的行为差异它们控制的是「谁能在哪访问」,不是「能不能用」。public成员可以从任何地方被访问,只要能拿到对象引用或类名;private成员只能在定义它的那个类内部访问,连子类、同包其他类都不行。子类继承public方法可直接调用;继承private方法则完全不可见——编译器会报cannotfindsymbol同包下其他类能访问public字段,但对private字段连读都做不到,更别说修改private构造方法意味着外部无
-
非静态内部类默认持有外部类强引用,Java编译器在字节码中注入this$0字段,导致Activity等组件无法被GC回收,引发内存泄漏;Handler、匿名监听器及捕获实例方法的Lambda均属此类。
-
static成员变量属于类而非对象,被所有实例共享且存于方法区;修改实例变量为static会改变生命周期与作用域,易致数据污染、并发问题及序列化异常。
-
WebSocket连接后收不到弹幕,主因是Session被意外关闭;需检查isOpen()、避免异步未发送、禁用轮询改用SimpMessagingTemplate;弹幕时间应服务端归一化为offsetMs;高并发广播改用CopyOnWriteArraySet;XSS防护须后端白名单过滤。
-
本文详解为何无法直接用Hibernate的@Check注解实现跨表计数校验,并提供基于数据库设计、应用层控制与并发安全的可行替代方案。
-
FileNotFoundException本质是文件系统拒绝访问,不是Java的错这个异常不意味着代码写错了,而是JVM在操作系统层面找文件时被挡住了。常见现象是本地开发能跑,部署到Linux服务器就报错;或者IDE里双击运行正常,用java-jar启动就炸——根本原因往往不在Java代码里,而在路径解析逻辑或进程权限上。FileNotFoundException的message里显示的路径,是Java实际尝试打开的绝对路径(不是你写的相对路径),务必先打印出来确认用
-
synchronized实例方法锁的是this对象而非方法本身,等价于synchronized(this),因此同一对象的多个同步方法互斥,不同对象则不互斥;静态方法锁Class对象;synchronized代码块需显式指定锁对象,应避免用this、字符串常量等;wait/notify必须在synchronized块中调用以确保线程安全;JDK6后synchronized经优化(偏向锁、轻量级锁等)在低竞争下性能接近ReentrantLock。
-
正确使用equals避免空指针,contains和indexOf提升查找效率,substring和split注意边界与正则,优先选用strip处理Unicode空白,结合isBlank判断空值,可显著提升Java字符串操作的安全性与性能。
-
是算术右移(符号位扩展),>>>是逻辑右移(高位补0);负数时>>保持负号,>>>转为正数,如-8>>1=-4,-8>>>1=2147483644。
-
Arrays.asList返回的List不可增删、不拆包基本类型数组、与原数组共享内存,仅适用于只读场景;安全用法仅有直接传引用类型字面量或明确接受联动视图。
-
UnsupportedOperationException出现在操作不被支持时,常见于不可变集合修改、Arrays.asList()限制、自定义未实现方法等场景。例如List.of()创建的列表调用add会抛出该异常。应通过创建可变副本、检查文档或捕获异常来处理。自定义类中可主动抛出以提示不支持的操作,提升代码透明度与维护性。
-
本文介绍如何通过MenuListener动态调整JPopupMenu位置,使JMenu在屏幕底部时自动向上弹出,避免遮挡其他应用窗口,适用于高分辨率多任务环境下的Swing桌面应用。
-
Java中main方法抛出未捕获异常会导致程序立即终止并打印堆栈到System.err,JVM退出;声明throws仅满足编译要求,不改变JVM异常处理逻辑;运行时异常无需声明但同样终止程序;可通过外层try-catch、全局异常处理器或System.exit实现可控退出。
-
方法签名由方法名和参数类型列表(顺序与数量)组成,不包括返回类型、异常声明、访问修饰符或参数名;void表示无返回值,非void方法每条执行路径末尾必须有return表达式。