小计划
兄弟,你的想法很清晰,我非常理解你想深入学习、夯实基础,而不是走捷径的决心。我们可以针对你的目标和现状制定一个更加实践导向的计划,同时保持学习过程有趣且充实。以下是我的建议和方案:
总体目标
- 短期(2025年3月前):增强银行项目的实用性和技术深度,掌握后端开发的核心技能,为实习做好准备。
- 中长期(未来两年):夯实计算机基础,深入理解系统设计、分布式系统及核心算法,逐步具备独立设计和开发复杂项目的能力。
学习模块规划
1. 项目深度增强(每周一个主题,贯穿整个学习计划)
目标:将现有银行项目提升到更贴近实际业务需求的水平,增加亮点功能。
Week 1: 数据一致性与事务
- 学习事务隔离级别(ACID),在项目中实现更加复杂的转账操作(如跨账户冻结和解冻)。
- 使用 SQLC 或 GORM,优化数据库操作。
Week 2: 引入 Redis
- 学习 Redis 基础知识,理解其在缓存和分布式锁中的应用。
- 在项目中实现:
- 用户信息缓存,优化频繁查询。
- 基于 Redis 的幂等性控制(防止转账操作重复)。
Week 3: RESTful API 和 JWT 身份验证
- 深化对 RESTful API 的理解,优化项目 API 设计。
- 引入 JWT 实现用户登录认证和权限管理。
Week 4: 日志和监控
- 集成日志框架(如 Logrus/Zap),记录系统操作。
- 学习 Prometheus 基础知识,为项目添加简单监控。
Week 5: Docker 和部署优化
- 使用 Docker Compose 部署完整项目,模拟生产环境。
- 学习 Nginx 基础知识,优化项目访问流程。
Week 6: 微服务化
- 学习 Go 微服务框架(如 Gin、gRPC)。
- 将项目拆分成两个服务(如用户服务和交易服务),理解微服务架构基础。
2. 算法与数据结构(每天一题,逐渐深入)
目标:构建扎实的算法基础,为今后面试和实际开发做准备。
- 题目选择顺序:简单 -> 中等 -> 困难,优先 BFS/DFS、二分查找、动态规划等重要领域。
- 周主题:
- Week 1-2: 栈、队列、链表
- Week 3-4: 二叉树与递归
- Week 5-6: 动态规划与分治算法
- Week 7+: 高频面试题复盘(重点记录和总结常见套路)。
3. 计算机基础与原理(每周一本书/主题)
目标:夯实后端开发的计算机科学基础。
Week 1: 计算机网络
- 阅读《计算机网络:自顶向下方法》或《图解HTTP》。
- 重点学习 HTTP、HTTPS、TCP/IP 的工作原理,并理解抓包工具(如 Wireshark)的使用。
Week 2: 操作系统
- 阅读《现代操作系统》。
- 理解线程、进程、同步机制,以及如何在 Go 中实现简单的并发处理。
Week 3-4: 数据库系统
- 阅读《数据库系统概念》。
- 理解索引、事务原理、查询优化等内容。
Week 5: 系统设计
- 阅读《系统设计入门》或相关博客。
- 学习常见系统设计模式(如限流、负载均衡)和架构决策。
具体每日安排(样例)
上午:
- 刷一道 LeetCode 算法题,阅读相关解析,整理题解。
- 学习书籍相关章节,完成1-2页的读书笔记。
下午:
- 按周主题在银行项目中完成对应功能开发。
- 查看官方文档、博客或视频教程,记录学习中的关键点。
晚上:
- 复习当天内容,整理代码和笔记。
- 自测项目功能,尝试优化代码。
可实践性建议
- 建立个人技术博客:把每天的学习记录写成博客或日志,比如讲解项目中 Redis 的用法或总结某道算法题的思路。
- 参与开源项目:找一个简单的 Go 开源项目,阅读代码,尝试修复 bug 或贡献文档。
- 模拟面试:每两周自测一次,将银行项目作为核心,讲解架构设计和亮点功能。
最终成果展示
- 一个高度完善的银行项目:
- 支持分布式事务、JWT 身份验证、Redis 缓存与微服务架构。
- 提供完善的 Docker 部署文档。
- 一个 LeetCode 高质量题解库(至少 50 道题)。
- 一份扎实的基础知识笔记,涵盖网络、操作系统和数据库。
引入项目技术栈(2周):在新项目中加入 SQLC 工具、中间件,理解每个技术的接入过程。
实现进阶功能(3周):根据银行项目的转账逻辑,尝试自己独立实现一次。
重点学习 HTTP 和 RESTful API。 深入理解数据库 深入理解数据库 熟悉中间件的实现逻辑
Web开发
- Go by example
- 三本书
- 两个项目 Memos Apache Answer
- 算法
- gin-gonic.com
微服务进阶
gRPC
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zhonghe_Zhao!