2021年技术总结与展望

又到年底了,回顾一下 2021 年的技术学习和实践,顺便展望明年的方向。

回顾这一年

2021 是技术栈快速扩张的一年。从 Java 出发,逐步接触了 Go、Rust、Python 等多个方向。虽然每个方向都还处于学习阶段,但至少打开了视野。

Java 深入

持续深挖 Java 基础——泛型的类型擦除到底意味着什么,反射和注解怎么配合使用,JVM 的类加载机制和内存模型。Spring Boot 也从"会用"变成了"大概理解原理"。Security、JPA 这些组件都过了一遍。

最大的收获是理解了"框架底层在做什么"。以前遇到 Spring 报错就是搜索解决方案,现在至少能看懂异常链,知道问题出在哪一层。

Go 入门

Go 是新学的一门语言。goroutine 和 channel 的并发模型确实优雅,错误处理虽然啰嗦但逻辑很清晰。Go Modules 相比 Java 的 Maven 非常简洁——简单好用。

写了几个小工具练手,主要是 CLI 工具和简单的 HTTP 服务。Go 的编译速度和部署简便(一个二进制文件搞定)让人印象深刻。

Rust 起步

开始学 Rust,这是最 challenging 的一门语言。所有权和生命周期的概念不是看一遍就能理解的,需要大量的实践才能逐渐掌握。

trait 系统、模式匹配、枚举的设计都很精妙。async/await 和 tokio 也初步体验了一下。Rust 的设计哲学是"在编译期解决一切能解决的问题",写起来虽然慢,但一旦编译通过,心里就比较踏实。

Python 量化和机器学习

用 Python 做了双均线策略的回测,也跟着教程跑了一下 scikit-learn 的分类任务。Python 的生态确实没得说——想做什么都有现成的库。

量化这个方向挺有意思的,把编程和金融知识结合起来。虽然离实盘还远,但至少对回测框架和基本的策略思路有了概念。

Docker 和 Kubernetes

容器化也是今年接触的新方向。Docker 从写 Dockerfile 到 docker-compose 编排,再到初步了解 Kubernetes 的 Pod、Service、Deployment 概念。

这块学的比较浅,主要是跟着教程跑 demo。但至少部署个人项目的时候已经习惯用 Docker 了,比直接在服务器上装环境干净太多。

逆向工程初探

年底开始接触逆向工程,学了 IDA Pro 的基本使用和 x86 汇编。做了一些简单的 crackme 练手。

逆向是一个和"正向开发"思维完全不同的领域。正向开发是从设计到实现,逆向是从二进制一点点还原作者的意图。过程很烧脑,但也很有成就感——每看懂一个函数都像在解谜。

2022 展望

明年想在以下几个方向继续深入:

Rust 进阶:目前只是入了个门,想深入学习 unsafe Rust、宏编程、以及用 Rust 写一些实际项目(比如一个简单的数据库或网络工具)。

Go 实战:用 Go 做完整的微服务项目,包括 gRPC、消息队列、链路追踪这些生产级的东西。

系统编程:操作系统原理、网络编程、Linux 内核相关。这些底层知识对理解上层应用的行为非常重要。

安全方向:逆向工程继续学,争取能独立分析一些实际的安全样本。同时看看 CTF 的 pwn 和 web 方向。

量化交易:学习更多因子和策略,试试 backtrader 或者 vnpy 这种更成熟的框架。

一些感想

今年最大的感受是:技术的广度和深度是矛盾的。学了这么多方向,每个都只是浅尝辄止。2022 年可能需要收缩一下战线,挑两三个方向深入下去。

另外一个感受是,写博客对学习帮助真的很大。把知识用自己的话写出来,才能发现哪些地方其实没真正理解。有些文章写到一半发现自己在胡说,又回去重新看了一遍文档。这个过程本身就是学习。

好了,2022 继续加油。