-
SelectionKey的四种事件(OP_ACCEPT、OP_CONNECT、OP_READ、OP_WRITE)表示内核通知应用某操作已就绪可安全执行:OP_ACCEPT表示服务端三次握手完成待accept;OP_CONNECT表示客户端TCP连接建立完成需finishConnect;OP_READ表示接收缓冲区有数据可读(不保证完整);OP_WRITE表示发送缓冲区有空闲空间可写(通常仅在写未完成时注册)。
-
答案:Map.merge()用于合并键值,若键不存在或值为null则插入新值,若键存在则按BiFunction函数更新值。
-
Java日志需避开java.util.logging的FileHandler缺陷,优先选Log4j2RollingFileAppender(配append="false"与immediateFlush="true")或调优SLF4J+Logback异步队列,禁用裸Files.write。
-
Java中使用Lambda表达式的核心目的是简化函数式编程写法,提升代码简洁性与可读性。1.Lambda表达式的基本语法为(参数列表)->{方法体},可省略大括号和return;2.必须结合函数式接口使用,如Runnable、Comparator、Consumer等;3.在StreamAPI中发挥强大作用,支持filter、map、collect等操作;4.可自定义函数式接口配合Lambda实现策略模式等逻辑封装。掌握Lambda表达式有助于适应现代Java开发趋势,但需注意保持代码可读性和维护性。
-
ArrayList和LinkedList允许null,但遍历时调用item.toString()等方法会抛NPE;HashMap/HashSet有限支持null,ConcurrentHashMap禁止null;TreeSet/TreeMap默认不支持null,需自定义Comparator;Optional不应作为集合元素。
-
直接newThread()在高并发下易导致OOM和性能崩溃,必须使用显式配置的ThreadPoolExecutor;应避免Executors工具类的无界队列和失控线程数陷阱,选用有界队列、合理拒绝策略与可监控参数。
-
首先调用shutdown()停止接收新任务并等待已提交任务完成,再通过awaitTermination()设置超时等待;若超时或发生中断,则调用shutdownNow()强制关闭,避免资源泄漏。
-
静态分派发生在编译期,依据引用类型选择重载方法;动态分派发生在运行时,依据实际对象类型选择重写方法;二者协同工作,先静态后动态。
-
Java访问控制模型是编译器强制的可见性规则体系,通过public、protected、default、private四关键字划定“谁能在哪看到什么”,核心服务于封装、低耦合与可维护性,而非运行时权限管理。
-
Java用户注册登录核心是密码安全、会话管理、输入校验三环节落地:密码须用BCrypt加密存储与校验;Session需显式设HttpOnly、Secure及超时;接口必做邮箱、密码强度、限流及统一错误提示。
-
NumberFormatException是输入校验缺失的信号,应前置校验而非依赖try-catch;推荐使用ApacheCommonsLang的NumberUtils提供默认值、判断可创建性及自动trim的安全转换方法。
-
使用top-H-p<pid>定位高CPUJava线程,将十进制LWPPID转十六进制后在jstack输出中匹配nid,重点分析RUNNABLE状态线程栈,区分业务逻辑、JIT编译或GC等根因。
-
Java中关系运算符用于比较两个值,返回布尔结果。包括==、!=、>、<、>=、<=,适用于基本类型直接比较,对象比较需用equals()避免引用地址误判,浮点数应使用误差范围判断相等性。
-
访问者模式适用于结构稳定但操作多变的场景,如编译器语法树、XML/JSON节点树、GUI组件树等;它通过双分派解耦操作与结构,新增功能只需添加Visitor实现类,避免修改原有节点类,提升可维护性与健壮性。
-
根本原因是Lombok插件未安装或未启用,需在IDEA中安装插件、启用注解处理,并确保Maven中正确配置annotationProcessor路径及版本对齐。