Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

APS 博客系列

面向中文技术社区(首发 CSDN)的 APS(Accelerated Proxy Solution) 博客系列。目标是讲清楚一个高性能 Java 动态代理库「为什么快、怎么用、底层怎么实现」,为开源仓库引流并启发读者思考。

仓库地址:https://github.com/LamSpace/aps 仓库内用户指南:docs/guide/(13 章,中英双语)

目录结构

aps-blog/
├── README.md          # 本文件:系列导航 + 大纲 + 发布说明
├── posts/             # 11 篇博客(Markdown)
└── examples/          # 单个可运行 Maven 工程,按章分 package
    ├── pom.xml
    ├── README.md      # 如何 build & run
    └── src/main/java/io/github/lamspace/blog/ch01…ch11/

系列大纲(共 11 篇)

① 入门(1 篇)

# 文件 标题 一句话
01 posts/01-intro.md 一行代理告别反射:Java 动态代理新选择 APS 痛点 → 一个 API 代理类与接口 → 首个可跑示例 → 特性总览

② 进阶(7 篇,每篇一个特性,原子化)

# 文件 标题 一句话
02 posts/02-method-grouping.md 方法分组:Group 如何做到零热路径开销 Group.of/otherwise、first-match-wins、未匹配零开销透传
03 posts/03-annotation-api.md 注解驱动拦截:@Intercept / @Around 的声明式玩法 注解 API、lambda 级速度、何时用注解 vs lambda
04 posts/04-constructor-interception.md 构造器拦截:ConstructorInterceptor 的参数改写与否决 before/after、参数改写、veto
05 posts/05-static-method-proxy.md 静态方法代理:proxyStatic 遮蔽 public static 方法 场景、用法、限制
06 posts/06-multi-interface.md 多接口与非 public 接口代理 一个对象实现多接口、冲突检测、非 public 接口
07 posts/07-hot-reload.md 热重载与热替换:evict / evictClassLoader / rebind 热部署、live 实例换拦截器
08 posts/08-jpms.md JPMS 强封装:--add-opens 与快速失败 强封装模块、privateLookupIn、可操作的报错提示

③ 原理(2 篇,字节码层)

# 文件 标题 一句话
09 posts/09-dispatch-internals.md 从方法调用到字节码:APS 分发机制逐层拆解 为什么反射/MethodHandle 慢 → switch + INVOKESPECIALjavap 验证
10 posts/10-jit-gc-safety.md 为什么能被 JIT 内联,又为什么 GC 安全 JIT 内联原理、WeakCache 键设计、hidden class

④ 收尾(1 篇)

# 文件 标题 一句话
11 posts/11-benchmark.md APS vs CGLib vs Proxy:实测对比与基准方法学 JMH 数据、结论、怎么测才公平

每篇统一模板

  1. 动机 / 场景:先讲痛点或需求,让读者有代入感
  2. 核心 API:贴关键代码 + 逐行说明
  3. 完整可跑示例:指向 examples/ 对应 package,正文贴关键片段
  4. 预期输出:跑出来的输出就是文章里的输出
  5. 坑与限制:诚实说明边界
  6. 延伸阅读:指向仓库 docs/guide/ 对应章节 + 仓库链接

运行示例

# 0. 先把 aps 安装到本地仓库(仓库还没上 Maven Central)
cd ~/workspace/aps
mvn -s /home/lam/repo/settings.xml install -DskipTests

# 1. 编译并运行某一章示例
cd ~/workspace/aps-blog/examples
mvn -s /home/lam/repo/settings.xml compile
mvn -s /home/lam/repo/settings.xml -q exec:java -Dexec.mainClass=io.github.lamspace.blog.ch01.Main

详见 examples/README.md

CSDN 发布说明

  • 文章为标准 GFM Markdown,CSDN 的 Markdown 编辑器可直接粘贴渲染。
  • 约定:代码块带语言标签(java/bash/text);用表格与有序/无序列表;不使用 GitHub 专属语法(task list - [ ]、脚注 [^1]mermaid 图),避免 CSDN 渲染异常。
  • 图解优先用 ASCII 代码块(text 语言标签)。
  • 每篇结尾的统一引流句:> 本文示例代码见 [aps-blog/examples](https://github.com/LamSpace/aps-blog),框架源码与完整文档见 [APS 仓库](https://github.com/LamSpace/aps)。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors