-
SpringBoot2.x默认仅暴露health和info端点;其他端点需显式配置exposure.include才启用,禁用通配符,应明确列出所需端点并配合SpringSecurity单独配置/actuator/*路径的认证授权。
-
Java多线程调试断点不触发,需将断点Suspend策略设为Thread而非All;调试时需手动打开Threads面板查看所有线程;阻塞调用前/后设断点,勿在sleep/wait上设;远程调试需正确配置JDWP参数、端口绑定及防火墙。
-
TypeNotPresentException在泛型反射时发生,因JVM解析泛型签名时遇到当前ClassLoader无法加载的类;常见于Shade/FatJar场景,需对getGenericXxx()单独try-catch并fallback到非generic方法。
-
Java数组赋值有静态初始化、动态初始化、数组间引用赋值及工具类赋值四种方式:静态初始化直接指定元素并推断长度;动态初始化先定长再逐个赋值,默认值自动填充;数组间赋值为引用传递,需用Arrays.copyOf()等复制副本;Arrays.fill()可批量设相同值。
-
投票系统应选用ConcurrentHashMap存储票数、ConcurrentHashMap.newKeySet()记录已投ID、动态锁对象保障原子性、流式排序生成实时有序视图。
-
Python中没有trim(),只有strip()及其变体;strip()默认删除首尾空白字符且不修改原字符串,加参数时按字符集合而非子串匹配,安全用法是不加参数。
-
Java线程协调核心是控制等待与通知机制,常用方式包括synchronized+wait/notify、Lock+Condition、CountDownLatch、CyclicBarrier、Semaphore和BlockingQueue;其中BlockingQueue最实用,CountDownLatch适用于一次性等待,Condition适合多条件精确控制,wait/notify需配合while循环和synchronized使用。
-
应提取方法而非深层嵌套——三层以上if需警觉;优先用卫语句+提前返回,封装校验为boolean方法;避免Boolean包装类空指针与==比较;输入统一用nextLine()+try-catch解析。
-
Java对象在new、反射、反序列化等操作时创建,最常见是new;对象可被回收当且仅当无GCRoots可达的强引用链;finalize已弃用,应使用AutoCloseable或Cleaner;回收时机由GC器决定,不可控。
-
continue语句用于跳过当前循环迭代,直接进入下一次迭代;在for循环中先执行迭代表达式再判断条件,而在while和do-while中直接跳转至条件判断;常用于过滤不满足条件的数据,如遍历中跳过偶数仅处理奇数。
-
Scala并不默认对泛型类启用协变;看似“协变赋值”实为编译器基于左侧类型标注反向推断右侧泛型参数的结果,本质仍是不变型(invariant)行为。
-
Arrays.asList返回的List不可增删、不拆包基本类型数组、与原数组共享内存,仅适用于只读场景;安全用法仅有直接传引用类型字面量或明确接受联动视图。
-
应优先使用NumberFormat.getCurrencyInstance(Locale)获取区域敏感的货币格式器,而非直接使用DecimalFormat;因后者不绑定Locale且无视币种小数规则,易导致符号错误或非法小数位。
-
应从设计上避免死锁,通过按固定顺序获取锁、使用tryLock设置超时、避免嵌套和长时间持锁、采用并发工具类等方法预防死锁,降低风险。
-
必须用InputStream处理原始二进制数据,如图片、音频、ZIP、HTTP响应体等;用Reader仅限已知编码的文本,须通过InputStreamReader显式指定编码(如UTF-8),避免默认编码导致乱码。