java教程技术文章
-
静态代码块不能替代构造函数前的实例初始化,它仅用于类加载时的一次性静态字段初始化,不感知实例;实例级统一预处理应使用私有基构造函数或Kotlin的init块。490 收藏 -
Collection必须实现15个核心方法:增删查基础操作(add、remove、contains、size、isEmpty)、批量操作(addAll、removeAll、retainAll、containsAll、clear)、遍历转换(iterator、toArray、toArray(T[])),以及JDK8+默认方法(stream、parallelStream、removeIf)。146 收藏 -
ConcurrentHashMap通过分段锁与CAS机制实现线程安全且高性能,并提供原子操作方法,适用于高并发场景。291 收藏 -
String.intern()可使重复JSONkey共享同一对象,降低内存占用与GC压力;需限定在有限高频key集合中使用,避免敏感信息或大字符串误用,并推荐通过预定义KNOWN_KEYS集合控制intern范围。494 收藏 -
可行但需谨慎设计:用AQS的32位state低16位存写锁重入次数、高16位存读锁线程数,通过位掩码与CAS原子操作实现,严禁直接setState,须用compareAndSetState保证线程安全。478 收藏 -
finally中的return会覆盖try/catch的返回值并吞掉异常;正确做法是用局部变量记录结果,清理逻辑放在finally中,最终在方法末尾统一return。139 收藏 -
Dev和Run环境共享JDK但角色不同:Dev需JDK+IDE+构建工具以支持调试与快速反馈,Run应精简为JRE或jlink定制镜像以保障稳定;CLASSPATH与系统属性配置差异显著,java-version无法反映实际运行态差异。161 收藏 -
PriorityBlockingQueue不能直接当任务队列用,因其并发offer()不保证优先级重排序,需配合显式锁或封装为线程安全的分发器;它不支持peek后修改重排序,且序列化后堆结构可能损坏。467 收藏 -
安装JDK提示“无权写入目录”是因用户权限不足,解决方法包括:更换为非系统目录如C:\Java\jdk,以管理员身份运行安装程序,或在Linux下使用sudo授权解压至/opt/jdk等路径,同时确保目录权限正确并更新JAVA_HOME和PATH环境变量。350 收藏 -
使用事务控制和异常处理保障数据一致性:通过JDBC事务管理实现操作原子性,利用try-with-resources确保资源释放,结合自定义异常封装业务错误,并在Spring中使用@Transactional注解自动管理事务回滚,防止部分更新导致数据不一致。167 收藏 -
ServiceConfigurationError是包装异常,真实冲突在getCause()中;常见原因包括类加载器不一致导致“notasubtype”、配置文件多处覆盖、类路径缺失或static块异常,需逐个捕获迭代并校验类加载器一致性。495 收藏 -
<p>~是按位取反运算符,对int的32位补码(含符号位)逐位翻转,结果恒等于-(x+1),如~5==-6、~-3==2、~0==-1,其本质是补码体系下的数学恒等式~x==-x-1。</p>178 收藏 -
KMP算法中的break语句用于子串匹配成功时提前退出循环,而非子序列判断;因KMP仅处理字符严格连续的子串匹配,子序列需用双指针等其他方法。451 收藏 -
直接写"UTF-8"是隐患,因拼错如"UTD-8"不报编译错误但运行时抛UnsupportedCharsetException,且旧Android不支持"Utf-8";StandardCharsets.UTF_8类型安全、编译校验、零查找开销。238 收藏 -
轻量级锁的CAS自旋机制旨在推迟挂起,减少线程状态切换开销;通过对象头检查、栈帧锁记录、CAS替换与自旋等待实现用户态抢锁,配合自适应自旋、合理阈值及代码优化维持轻量状态。447 收藏