-
抽象类配合模板方法模式是定义算法骨架最经典的方式:父类用final方法封装固定流程,抽象方法强制子类实现可变步骤,钩子方法提供可选扩展点。
-
不能通过JVM参数为单个线程单独重置栈的物理内存大小;线程栈大小由-Xss全局统一设定,作用于所有线程,启动后不可动态修改,且start()方法不支持传入栈大小参数。
-
核心是通过缓冲区累积小写操作再批量系统调用以提升性能。BufferedOutputStream默认8KB内存缓冲,满、flush()或close()时才真正写入;避免循环flush、漏close或频繁新建对象;按场景调大小更高效,关键变量需手动控制flush时机。
-
延迟初始化能显著压低启动内存峰值,通过将对象创建从启动时全量加载改为首次使用时才构造,避开瞬时高负载;需聚焦构造开销大或使用概率低的对象,按语言选原生机制(如Java@Lazy、Kotlinbylazy),注意线程安全与I/O避坑,并配合JVM参数、条件装配等策略协同优化。
-
主线程通过PipedOutputStream与监控线程的PipedInputStream配对实现字节脉冲实时传输,需确保管道连接、及时读取、明确数据边界,并妥善处理异常与资源释放。
-
动态年龄判定策略的核心是依据Survivor区实时占用率(≥50%)动态确定晋升年龄阈值,而非固定值;通过调整SurvivorRatio、MaxTenuringThreshold并监控GC日志中survivor使用率与晋升量来优化对象晋升节奏。
-
CompressedClassSpace是JVM启用压缩指针时独立划分的固定大小内存区域(默认1G),专存Klass结构,不参与GC;耗尽即抛OutOfMemoryError:Compressedclassspace,与Metaspace是否充足无关。
-
函数式接口是仅含一个抽象方法的接口,可含任意默认方法、静态方法及Object类继承方法;@FunctionalInterface注解用于显式标识并触发编译器校验,非必需但推荐。
-
ZGC只负责单JVM内堆内存对象的低延迟回收,不参与跨节点“大变量分发”;后者属Spark/Flink等框架的广播机制,涉及序列化、网络传输与本地缓存,与垃圾回收器无关。
-
ArrayList随机访问为O(1),LinkedList为O(n),因前者基于数组后者为链表;频繁索引遍历时ArrayList快3–10倍;仅头部/中间高频增删且无随机访问需求时才选LinkedList。
-
Lambda表达式无独立类型,其类型由上下文目标类型决定;编译器根据函数式接口方法签名反向验证参数、返回值及异常兼容性,实现约束驱动的隐式转型。
-
拦截器本质是对象行为的嵌套封装,通过组合+递归+接口契约将横切逻辑自然织入生命周期:当前拦截器前置→下一层(拦截器或target)→当前后置,严格逆序执行,支持终止、跳过与异常补偿。
-
ThreadLocal在线程池中必然残留,不显式清理会导致上下文污染;其value为强引用,key为弱引用,异常或遗漏remove会使value长期驻留,引发数据错乱。
-
在Java中使用Socket.IO客户端向服务端发送类似JavaScriptsocket.emit('pageload',{inputtoken:'...'})的结构化数据时,必须传递符合服务端预期的数据结构(如Map),而非拼接字符串,否则服务端无法解析触发对应事件。在Java中使用Socket.IO客户端向服务端发送结构化事件数据时,必须传递符合服务端预期的数据结构(如Map),而非拼接字符串,否则服务端无法解析触发对
-
应按使用者和使用场景拆分接口:谁在用、为什么用,识别方法调用不重叠、未被调用超40%、测试中大量mock等信号;按业务角色(如UserAuthenticator)而非CRUD命名;用组合代替全能接口继承;老接口迁移需渐进式三步走。