
1. Java基础核心概念速查手册作为从业15年的Java老司机我整理了一份真正实用的Java基础速查表。这不是那种抄写API文档的应付式清单而是从真实项目经验中提炼出来的肌肉记忆级知识点。当你忘记基础语法时这份手册能像老搭档一样快速唤醒你的记忆。2. 开发环境配置避坑指南2.1 JDK安装与版本管理推荐使用jEnv或SDKMAN进行多版本管理实测比手动配置环境变量更可靠。特别注意JDK8与JDK17的模块化差异Lombok插件需要对应JDK版本支持遇到源发行版需要目标发行版警告时检查pom.xml配置2.2 环境变量配置技巧PATH和JAVA_HOME的配置有讲究# Mac/Linux示例 export JAVA_HOME$(/usr/libexec/java_home -v 17) export PATH$JAVA_HOME/bin:$PATHWindows系统注意用户变量与系统变量的优先级问题3. 语法核心精要3.1 数据类型与运算符基本类型陷阱整型默认int、浮点默认double与equals()的5个比较层级位运算在权限控制中的实战应用3.2 流程控制优化写法// 现代Java推荐写法 switch(day) { case MONDAY, FRIDAY - System.out.println(工作日); case SATURDAY - System.out.println(休息日); default - throw new IllegalArgumentException(); }4. 面向对象编程精髓4.1 类与对象设计原则遵循SOLID原则的落地实例继承与组合的选择标准不可变对象的4大优势4.2 设计模式速查表用最简代码展示23种设计模式// 单例模式双重检查锁 public class Singleton { private static volatile Singleton instance; public static Singleton getInstance() { if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } } return instance; } }5. 集合框架性能图谱5.1 集合选型决策树根据场景选择最优集合需要排序 → TreeSet高频查询 → HashSet线程安全 → ConcurrentHashMapLRU缓存 → LinkedHashMap5.2 集合初始化技巧// Java9 工厂方法 ListString list List.of(a, b, c); MapString, Integer map Map.of(a, 1, b, 2); // 传统方式指定初始容量 new ArrayList(100); // 避免频繁扩容6. 异常处理最佳实践6.1 异常分类处理策略受检异常必须处理非受检异常预防为主OutOfMemoryError处理方案6.2 异常日志记录规范try { // 业务代码 } catch (BusinessException e) { log.error(业务异常: {}, 参数: {}, e.getMessage(), params, e); throw new ServiceException(操作失败, e); }7. IO与NIO对比实战7.1 文件操作避坑指南Path取代File的5个理由Files工具类的妙用文件锁的使用场景7.2 NIO核心组件// 文件复制性能对比 try (FileChannel src new FileInputStream(a.txt).getChannel(); FileChannel dest new FileOutputStream(b.txt).getChannel()) { dest.transferFrom(src, 0, src.size()); }8. 多线程并发编程8.1 线程池参数详解ThreadPoolExecutor executor new ThreadPoolExecutor( 5, // 核心线程数 10, // 最大线程数 60, // 空闲时间 TimeUnit.SECONDS, new ArrayBlockingQueue(100), // 任务队列 new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略 );8.2 并发工具类速查CountDownLatch多任务等待CyclicBarrier循环栅栏CompletableFuture异步编排9. JVM基础调优9.1 内存参数设置java -Xms512m -Xmx2g -XX:UseG1GC -jar app.jarXms与Xmx设置相同值避免动态调整年轻代与老年代比例配置9.2 常见问题排查OOM错误分析流程jps/jstack/jmap使用示例内存泄漏定位方法10. 新特性实用指南10.1 Java8核心特性Lambda表达式简化集合操作Stream API性能注意事项Optional避免NPE的陷阱10.2 模块化系统module-info.java配置示例module com.myapp { requires java.base; requires transitive java.sql; exports com.myapp.api; }11. 开发工具链配置11.1 IDEA优化配置开启Lombok注解处理配置代码模板内存设置调整11.2 构建工具技巧Maven多环境配置profiles profile iddev/id properties envdevelopment/env /properties activation activeByDefaulttrue/activeByDefault /activation /profile /profiles12. 编码规范与性能12.1 代码风格检查Checkstyle规则定制SonarQube质量门禁避免的10种坏味道12.2 性能优化点字符串拼接选择自动装箱开销集合初始化大小13. 调试与问题排查13.1 常见错误解决方案类找不到异常排查注解处理器问题编码问题处理13.2 远程调试配置java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -jar app.jar14. 测试必备技能14.1 JUnit5新特性ParameterizedTest ValueSource(ints {1, 3, 5}) void testOddNumbers(int number) { assertTrue(number % 2 ! 0); }14.2 模拟测试框架Mockito使用模式Test void testService() { UserRepository mockRepo mock(UserRepository.class); when(mockRepo.findById(any())).thenReturn(Optional.of(new User())); UserService service new UserService(mockRepo); assertNotNull(service.getUser(1L)); }15. 实用代码片段库15.1 日期处理// 日期转换 LocalDate date LocalDate.parse(2023-01-01); DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy/MM/dd); String formatted date.format(formatter);15.2 加密解密// AES加密 Cipher cipher Cipher.getInstance(AES/GCM/NoPadding); cipher.init(Cipher.ENCRYPT_MODE, keySpec, new GCMParameterSpec(128, iv)); byte[] encrypted cipher.doFinal(plaintext.getBytes());这份手册会持续更新建议收藏到浏览器书签栏。当你在实际编码中遇到基础语法问题时随时打开对应章节查找解决方案。记住扎实的基础是应对复杂系统设计的基石。