Java 平台历代特性
Created|Updated
|Word Count:16|Reading Time:1mins|Post Views:
Java 9 模块化,JDK 只依赖于 PATH 不依赖于 CLASSPATH。
Author: magicliang
Link: https://magicliang.github.io/2020/03/01/Java-%E5%B9%B3%E5%8F%B0%E5%8E%86%E4%BB%A3%E7%89%B9%E6%80%A7/
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2022-01-12
Java中的条件编译
Java中的条件编译

2022-05-09
Lombok 拾遗
sneakyThrow 12345678public static RuntimeException sneakyThrow(Throwable t) { if (t == null) throw new NullPointerException("t"); return Lombok.<RuntimeException>sneakyThrow0(t); } private static <T extends Throwable> T sneakyThrow0(Throwable t) throws T { throw (T)t; }

2026-02-17
Gradle 完全指南
Gradle 完全指南 全景导图 mindmap root((Gradle)) 核心概念 Project模型 Task系统 生命周期 插件机制 依赖管理 Configuration 依赖解析 版本冲突 传递依赖 构建脚本 Groovy DSL Kotlin DSL 多项目构建 插件生态 Java插件 Spring Boot插件 自定义插件 性能优化 构建缓存 并行构建 增量构建 测试管理 单元测试 集成测试 覆盖率 什么是 Gradle Gradle 是新一代的自动化构建工具,基于 Apache Ant 和 Apache Maven 的概念发展而来。与 Maven 使用 XML 配置不同,Gradle 采用基于 Groovy 或 Kotlin 的领域特定语言(DSL)来声明项目配置,大幅简化了...

2021-12-08
JDBC 问题
JDBC URL参数解析 参考《mysql JDBC URL参数解析》 JDBC数据源配置.xmind jdbc 调用层次 在创建事务的时候,调用 createTransaction 会先 getConnection。一开始的时候先试用发出两条语句:select 1;set autocommit=1;测试连接可用性。 12345678910112 = {StackTraceElement@24652} "com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)"3 = {StackTraceElement@24653} "com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482)"4 = {StackTraceElement@24654} "com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.j...

2026-02-06
跨语言超时机制全解析
从"等不起"到"不想等":跨语言超时机制全解析 “A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” —— Leslie Lamport 在分布式系统中,超时是应用与混沌之间最后一道防线。没有超时的 RPC 调用,如同没有刹车的汽车——迟早会撞上墙。 许多 Java 开发者对超时的认知停留在 Future.get(timeout, unit) 这一层,其底层依赖 LockSupport.parkNanos 和自旋等待。然而,翻阅 HSF/Dubbo 的源码会发现,这些 RPC 框架选择的是 HashedWheelTimer(时间轮)。 这就引出了一个值得深究的问题:为什么不直接用 Future.get 的超时版本?时间轮到底解决了什么问题? 事实上,仅 Java 一门语言就存在三种截然不同的超时实现范式。再放眼 Go、JavaS...

2022-02-11
技术拾遗
Java Java 8 Lambda Java 8 Lambdas - A Peek Under the Hood What does $$ in javac generated name mean? lambda 表达式并不总是持有外部 enclosing object 的引用,如果它不访问任何外部变量,即不持有这样的引用。只要设计一个对比实验,就会发现引用过外部变量的lambda实例才会产生一个 arg 的隐式参数引用。而内部类内部总是含有一个this$0。 lambda表达式是词法作用域的-意思是不产生新的作用域,不产生任何shadowing问题。它可以无缝访问外部作用域的东西,就好像从一个 if block 里访问一个方法里的其他变量一样。但,同样地,不能声明新变量。
Announcement
人生只是,守株待兔





