-
LongAdder在高并发频繁更新时比AtomicLong快,因其采用分段计数减少CAS自旋争抢;适用于监控计数等弱一致性场景,不适用于强一致序列号生成。
-
javac用于编译.java文件为.class字节码,java用于运行编译后的类。2.编译使用javac命令生成class文件,运行使用java命令启动JVM执行主类。3.需注意类名与文件名一致、正确设置类路径及包结构下的运行方式。
-
Java只有值传递,参数均为副本:基本类型传值拷贝,对象类型传引用地址拷贝;String因不可变性使赋值无效,而ArrayList等可变对象可通过引用副本修改内容。
-
线程池配置需匹配任务特征:过小导致排队延迟,过大引发OOM和上下文切换;应选有界队列、合理设core/maxPoolSize,避免无界队列,优先静态配置并结合监控调优。
-
UDP通信必须配对使用DatagramPacket(信封)和DatagramSocket(端点);后者需显式创建并绑定端口,前者需正确设置地址、端口及缓冲区长度;须配置receive()超时、统一UTF-8编解码、单线程接收、关闭前中断线程。
-
Java类加载机制是JVM将.class文件读入内存、校验、分配空间、解析引用并初始化,最终生成Class对象的过程;含加载、验证、准备、解析、初始化五阶段,遵循双亲委派模型,由Bootstrap、Extension、App三类加载器协作完成。
-
最简路径是:Maven引入ip2region2.7.0依赖,下载v2格式ip2region.db放resources下,单例初始化DbSearcher并传入文件路径,查IP前清洗IPv4字符串,用btreeSearch获取Region对象解析归属地。
-
Java常量管理应集中定义、类型安全、便于维护:按业务分组建publicfinal类,优先用枚举管理状态,配置型常量走@ConfigurationProperties或配置中心,并辅以Javadoc和文档规范。
-
Java原生序列化不处理循环引用致StackOverflowError,需用XStream/FST/Kryo等支持引用的库;transient字段反序列化后为null因未初始化;serialVersionUID不一致引发InvalidClassException,应显式声明并按变更规则更新;Jackson默认不识别transient且需注解或配置支持循环引用与对象同一性。
-
签到模块需兼顾准确性、防重、统计与扩展性:表设计用(user_id,sign_date)联合唯一索引;采用INSERTIGNORE等原子操作防并发重复;连续签到推荐实时更新或离线计算;接口返回状态与奖励,异步处理奖励发放。
-
Account类应封装状态变更规则:balance设为private,仅提供getBalance()读取;存款、取款、转账均通过方法实现,且各方法内部校验合法性(如余额非负、账户有效等)。
-
优先使用StandardCharsets.UTF_8等静态常量,因其零开销、线程安全、编译期校验;Charset.forName()需运行时解析且可能抛异常,仅在动态编码名场景下配合try-catch使用。
-
Java类加载器无法卸载类,热更新实为用新ClassLoader加载同名类并让旧类被GC回收;需确保旧类实例彻底不可达、使用独立URLClassLoader、避免静态引用;常见陷阱包括static字段未清理、线程未终止及JNI资源泄漏。
-
组合表示强“has-a”关系,部分生命周期依赖整体,如Car与Engine;聚合为弱“has-a”,部分可独立存在,如Department与Employee。
-
ProjectSDK和Projectlanguagelevel必须匹配,否则会导致语法标红或编译错误;Module的Languagelevel和Targetbytecodeversion需单独检查;Gradle/Maven项目需手动Reload并确认JDK一致性;IDEA编译器应设为Javac并指定正确路径。