-
transient关键字使字段不参与Java原生序列化,反序列化后为默认值;但对JSON序列化无效,且不提供安全保护,仅跳过序列化。
-
%s(%s)是Java中String.format()的两个连续字符串占位符,括号仅为SQL语法所需,并非格式化特殊符号;第一个%s替换表名,第二个%s替换字段定义列表,共同构成合法的CREATETABLE语句。
-
StringJoiner类用于灵活拼接字符串,支持自定义分隔符、前缀和后缀。1.创建时指定分隔符、前缀和后缀,如newStringJoiner(",","[","]");2.使用add()方法添加元素,支持链式调用;3.未添加元素时默认返回前缀+后缀,可通过setEmptyValue()设置空值输出;4.可与Stream结合,通过Collectors.joining()实现流式拼接,底层基于StringJoiner,语义清晰,适用于构建JSON、SQL等格式化字符串。
-
CodeCache碎片化问题的解决方案是增大CodeCache大小、使用G1GC、禁用不必要的JIT编译、定期重启JVM、启用CodeCache分区与清理机制;其核心在于解决因频繁分配释放导致的连续内存不足,而非单纯空间耗尽。
-
任务类需强制非空校验、状态封装为枚举、ID用Long或UUID、setter链式返回且禁设null;单线程用ArrayList配合synchronizedList,禁用Vector和盲目用CopyOnWriteArrayList。
-
流式按行提取应避免一次性加载全量字符串:Python用io.StringIO+for循环+及时清理引用;Java用String.lines()惰性流;PHP用php://memory+fgets模拟流式读取。
-
利用FutureTask状态机“一键提取异步业务运行期指纹”,即通过反射读取其volatile字段,实时捕获NEW→COMPLETING→NORMAL/EXCEPTIONAL等状态轨迹、耗时、异常根因等结构化快照,实现无侵入、轻量级、可追溯的运行期监控。
-
nextLine()“跳过”输入是因为nextInt()等方法不消费换行符,导致nextLine()立即读到残留的\n而返回空字符串;正确做法是统一用nextLine()配合parseXxx()解析,或在nextInt()后加sc.nextLine()清除缓冲区。
-
BlockingQueue提供开箱即用的线程安全队列,内置阻塞、唤醒与JMM语义保障;无需手写wait/notify,避免虚假唤醒、死锁等错误;ArrayBlockingQueue适合固定容量场景,LinkedBlockingQueue吞吐更高但有GC压力;关闭需配合结束标记或中断机制。
-
接口回调通过定义接口并传递实现,实现事件触发时的逻辑通知。步骤包括:定义含回调方法的接口;在目标类中持有接口引用并在事件发生时调用其方法;调用方实现接口并注册实例。例如,DataProvider通过OnDataListener通知数据就绪,Button利用OnClickListener响应点击事件。Java8后可用Lambda简化单方法接口,如setOnClickListener(btn->println(...))。结合泛型可设计通用监听器EventListener<T>提升复用性。关
-
应优先使用组合而非继承,因继承仅适用于“是”关系(如Car是Vehicle),而“有”关系(如Car有Engine)须用组合;滥用继承导致ClassCastException、空实现、维护困难等问题,且易违反Liskov替换原则。
-
DISTINCT是SQL中用于返回唯一不同值的关键字,作用于SELECT子句中所有指定列的整行组合去重,而非单列独立去重;基本语法为SELECTDISTINCTcolumn1,column2FROMtable_name;支持与WHERE、COUNT等结合使用,但忽略NULL值且可能影响查询性能。
-
StringTable是哈希表,不自动去重,仅通过字面量加载或显式调用intern()才插入条目;intern()在JDK7+存引用而非复制对象,滥用会导致哈希冲突、内存泄漏及性能下降。
-
Collections.addAll()不能初始化空集合,只能向已创建的可变集合(如ArrayList)批量添加元素;正确做法是先创建集合实例,再调用该方法。
-
ZGC采用彩色指针而非“深色指针”,其核心目标是实现亚毫秒级暂停,回收对象堆内存而非“变量”,不追求“秒级回收”。