Java 提高篇知识点总结
多线程与并发编程Java 提供了多种多线程实现方式包括继承Thread类、实现Runnable接口和使用Callable结合Future。线程池ExecutorService可以有效管理线程资源避免频繁创建和销毁线程。synchronized关键字和ReentrantLock用于解决线程安全问题。volatile保证变量的可见性但不保证原子性。Atomic类如AtomicInteger提供原子操作。ConcurrentHashMap、CopyOnWriteArrayList是线程安全的集合类优于Collections.synchronizedXXX。JVM 内存模型与性能优化JVM 内存划分为堆Heap、栈Stack、方法区Method Area等。堆内存分为新生代Young Generation和老年代Old Generation。垃圾回收算法包括标记-清除、复制、标记-整理等。常见的垃圾收集器有Serial、Parallel、CMS、G1和ZGC。性能优化可通过调整 JVM 参数如-Xms、-Xmx或使用工具如VisualVM、JProfiler分析内存泄漏和 CPU 占用。Java 8 新特性Lambda 表达式简化匿名内部类的写法如ListString list Arrays.asList(a, b, c); list.forEach(s - System.out.println(s));Stream API 提供函数式编程支持如过滤、映射、归约等操作ListInteger numbers Arrays.asList(1, 2, 3, 4); int sum numbers.stream().filter(n - n % 2 0).mapToInt(n - n).sum();Optional类用于避免NullPointerExceptionCompletableFuture支持异步编程。网络编程Java 支持 TCP/IP 和 UDP 协议。Socket和ServerSocket用于 TCP 通信DatagramSocket用于 UDP 通信。NIONon-blocking IO提供更高效的网络编程方式核心组件包括Channel、Buffer和Selector。// NIO 示例 try (ServerSocketChannel serverChannel ServerSocketChannel.open()) { serverChannel.bind(new InetSocketAddress(8080)); serverChannel.configureBlocking(false); Selector selector Selector.open(); serverChannel.register(selector, SelectionKey.OP_ACCEPT); // 事件循环处理 }设计模式单例模式确保类只有一个实例如双重检查锁定DCL实现public class Singleton { private static volatile Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } } return instance; } }工厂模式、观察者模式、代理模式等也是常用设计模式。反射与动态代理反射Class、Method、Field允许在运行时动态获取类信息并操作对象Class? clazz Class.forName(com.example.MyClass); Object obj clazz.newInstance(); Method method clazz.getMethod(myMethod); method.invoke(obj);动态代理Proxy、InvocationHandler可以在运行时生成代理类常用于 AOP 编程。注解与泛型自定义注解通过interface定义结合反射实现功能如框架中的Autowired。泛型提供类型安全如public class BoxT { private T value; public void setValue(T value) { this.value value; } public T getValue() { return value; } }泛型擦除是 Java 泛型的实现机制运行时类型信息会被擦除。集合框架高级用法HashMap底层基于数组链表/红黑树负载因子默认 0.75。LinkedHashMap保持插入顺序TreeMap基于红黑树有序存储。Collections工具类提供排序、查找等操作ListInteger list new ArrayList(Arrays.asList(3, 1, 2)); Collections.sort(list, Comparator.reverseOrder());IO 与 NIO传统 IOInputStream、OutputStream是阻塞式的NIO 支持非阻塞和通道操作。Files类简化文件操作Path path Paths.get(file.txt); ListString lines Files.readAllLines(path, StandardCharsets.UTF_8);单元测试与调试JUnit 是常用的单元测试框架Test public void testAdd() { assertEquals(2, Math.add(1, 1)); }Mockito 用于模拟对象行为方便隔离测试。