Java 8升级到Java 17:全面升级指南(含JVM/GC优化)
引言Java 8到Java 17的升级是企业级应用现代化的重要步骤。本文全面介绍升级过程中的关键变化,特别关注JVM和GC的优化。 语言特性变化Java 8到Java 17各版本关键特性Java 9 (2017年9月) **模块化系统 (JPMS)**:引入模块化概念,提高安全性和可维护性 JShell:交互式Java REPL工具 集合工厂方法:List.of(), Set.of(), Map.of() 接口私有方法:接口中可以定义私有方法 HTTP/2客户端:新的HTTP客户端API Java 10 (2018年3月) **局部变量类型推断 (var)**:简化局部变量声明 应用类数据共享:提升启动性能 并行全GC:改进G1 GC的并行处理能力 Java 11 (2018年9月) - LTS HTTP客户端标准化:java.net.http包 启动单文件源代码:直接运行.java文件 String增强方法:isBlank(), lines(), repeat(), strip() Lambda参数类型推断:var可用于lambda参数 Java 12 (...
Docker Compose引发的网络冲突事件分析
本文记录了一次生产环境中Docker Compose网络配置导致的服务器连接问题,详细分析了问题现象、排查过程、冲突原理,并提供了临时和长期解决方案。通过这次事件,我们可以更好地理解Docker的网络模型和IP地址分配机制,以及如何在复杂网络环境中正确配置Docker网络。 问题现象在一次执行docker compose up -d命令后,测试服务器突然无法连通。测试环境配置如下: 测试服务器拥有公网独立 IP,通过 TP-Link 路由器连接 服务器内网 IP 为192.168.0.100 通过 VPN 连接路由器,VPN 分配的内网 IP 为192.168.100.3 问题出现后,我的电脑可以连接 VPN,但无法连接到测试服务器。 排查过程 通过远程桌面连接到内网中的另一台机器192.168.0.12 从该机器登录到测试服务器192.168.0.100 在服务器上尝试 ping 本机 VPN IP:ping 192.168.100.3 出现错误信息:192.168.96.1 unreachable 运行ifconfig查看网络接口,发现192.168.96.1是 Do...
使用 docker 方式部署 clash
在日常工作中,我们经常需要访问一些国外网站或者服务。Windows 和 MacOS 都有图形化的 Clash 客户端,但在 Linux 系统下,特别是 Ubuntu,找到一个稳定可靠的 Clash 客户端并不容易。为了解决这个问题,我们可以利用 Docker 来部署 Clash 服务,这不仅简化了部署过程,还提供了更好的可维护性和跨平台兼容性。 实现1234567891011services: clash: image: dreamacro/clash:v1.18.0 container_name: clash ports: - 9000:9000 - 7890:7890 volumes: - ./config.yaml:/root/.config/clash/config.yaml mem_limit: ${CLASH_MEM_LIMIT:-64m} restart: unless-stopped 需要从机场下载配置文件 config.yaml,并放在当前目录下。 123456port...

