虽然 Demo 项目运行的过程中我发现了几个 bug,但是整体无伤大雅,修改起来也很简单,对于初学者来说,还是很友好的。
在这个页面我还发现了一个叫做 COLA 的项目架构:
COLA 是啥玩意?
官方给了这样的一个代码结构图:
看到这里的时候,我大概明白了,有 App 层、Domain 层、 Infrastructure 层,这个架构其实就是 DDD 思想的一种落地吧。
经过这两天短暂的了解,我发现如果想要理解一下抽象的 DDD 思想,那么 COLA 架构,我感觉是一个不错的切入点。
Arthas 教程
前面介绍了这么多东西,我还是来带着你实操一把,里面的黄金教程:
其实我觉得真的没有这个必要,因为它上面的教程已经是一步步的手摸手教学了。
比如,你看这个 Arthas 基础教程,我给你录个屏幕:
左边是操作文档,右边是运行环境。所及即所得,多香啊。
我是强烈建议你把四个教程都自己去看一遍,操作一把。
但是重心可以放到这个教程里面:
你看看这个教程里面的 14 个实验:
都是实战性的手摸手教学,别人环境、场景、工具都给你准备好了,你只要需要关注于怎么使用这个工具就行了。
比如其中的“Arthas热更新代码案例”,这个其实就是一个生产环境常常会遇到的一个问题:
有一个判断逻辑有问题,我不想修改代码之后,重新打包,然后走上线流程,怎么办?
Arthas 热更新了解一下?
比如,下面的代码:
@GetMapping(value={"/user/{id}"}) public User findUserById(@PathVariable Integer id) { logger.info("id: {}", (Object)id); if (id != null && id < 1) { throw new IllegalArgumentException("id < 1"); } return new User(id.intValue(), "name" + id); }
现在当请求的 id 小于 1 的时候会抛出异常。但是上线之后,我们经过评估发现这个地方也许返回一个默认的值,不抛出异常会更好一点。
那么我们就可以用 Arthas 对这段代码进行热更新。
左边是修改之后,右边是修改之前:
具体怎么去修改,怎么去用 ClassLoader 加载修改之后的代码,这个案例里面都有详细的使用说明:
当然了,如果你要是在实操之后,又再去了解了其热更新背后的工作原理,那么是再好不过的了。
知道了使用方式,掌握了实现原理。恭喜你,再给自己的套一个生产案例,不经意间面试的时候有多了一个加分点。
另外,悄悄的说个骚操作。
你可以随便找个教程,领个窗口,然后......
比如我装个 Redis:
诶,反正就是玩嘛。就当熟悉 Linux 命令了。