-
合理配置JVM参数、选择适合的垃圾回收器、控制线程与连接资源、启用监控诊断是保障Java应用稳定运行的关键。1.设置-Xms和-Xmx相等(如4g)以减少堆调整开销;2.避免堆过大,超8GB考虑G1或ZGC;3.限制元空间至256m防止溢出;4.调整-Xss256k降低线程内存占用;5.吞吐场景用ParallelGC,低延迟选G1GC,极致低延迟用ZGC;6.开启GC日志便于分析;7.使用线程池和连接池控制资源;8.防止死锁与阻塞,设置超时与非阻塞锁;9.监控线程数变化;10.启用JMX、APM工具实现可
-
答案:Collectors.toMap用于将流中元素按键值映射转为Map,支持处理键冲突和自定义Map类型。示例中List<User>通过id和name转为Map<Integer,String>,重复键可用合并函数解决,还可指定TreeMap等实现类。
-
答案:Java反射机制可在运行时获取类的属性和方法。通过类名.class、对象.getClass()或Class.forName()获取Class对象;调用getFields()或getDeclaredFields()获取属性,getMethod()或getDeclaredMethod()获取方法;访问私有成员需setAccessible(true),注意性能与异常处理。
-
LinkedList基于双向链表实现,支持高效插入删除。1.可用addFirst/addLast/add在任意位置添加元素;2.通过removeFirst/removeLast/remove按位置或对象删除;3.提供getFirst/getLast/get/set进行访问修改;4.支持for-each、Iterator正反向遍历。因其Deque特性,适合两端操作,但随机访问性能差,大量索引访问应选ArrayList。
-
首先定义Servlet接口接收课程ID和文件名参数,通过安全校验防止路径穿越,再定位文件并设置响应头,最后输出文件流实现下载。
-
Java7默认不支持TLS1.2,但自OracleJDK7u95(仅限商业授权用户)及部分OpenJDK7发行版(如AzulZulu7)起,已通过系统属性jdk.tls.client.protocols显式启用TLS1.2。
-
ThreadGroup已被弃用,因其无法保证线程归属、方法非线程安全、不参与权限控制且与现代并发工具不兼容;应使用ExecutorService进行显式生命周期管理、监控和隔离。
-
答案是开发一个基于HashMap和关键词匹配的简易Java问答系统,通过清洗输入、模糊匹配预设问题并返回答案,支持持续交互直至用户退出。
-
判断字符串为空或空白应先判null再trim().isEmpty(),或用StringUtils.isBlank()、JDK11+的isBlank();substringendIndex不包含且需满足索引范围;replace处理字面量,replaceAll处理正则;循环拼接必须用StringBuilder。
-
推荐直接使用ThreadPoolExecutor而非Executors,因其可显式配置核心线程数、最大线程数、队列容量和拒绝策略,避免newCachedThreadPool和newFixedThreadPool因无界队列导致的OOM风险。
-
ArrayList底层是Object[]数组,非链表或哈希结构;默认容量10,不自动压缩空间,扩容为1.5倍,支持null和重复元素,随机访问O(1),增删平均O(n)。
-
ArrayList随机读和批量写远快于LinkedList,因内存连续性带来CPU缓存友好;LinkedList仅在极少数频繁中间增删且无需随机访问的场景可能占优,但实际大型项目中几乎不存在。
-
Java中方法调用指令由编译期类型和修饰符决定:invokestatic用于静态绑定(static/private/构造器),invokevirtual用于虚方法调用(支持多态),invokespecial强制调用当前类版本(构造器/private/super),invokeinterface用于接口方法,invokedynamic支持动态语言和Lambda的运行时绑定。
-
List接口的replaceAll方法可用于批量修改元素,它接受UnaryOperator参数对每个元素进行转换并原地更新,适用于需直接修改可变列表的场景,但不支持Set等集合且存在线程安全和不可变集合限制,若需新列表或更高灵活性,推荐使用StreamAPI实现。
-
配置文件不存在时Properties.load()会抛IOException,应捕获FileNotFoundException走默认值,其他IOException需warn日志;getResourceAsStream()返回null须判空;@Value的默认值不适用于外部设为空串场景,推荐@ConfigurationProperties配合字段初始化。