兄弟,你的想法很清晰,我非常理解你想深入学习、夯实基础,而不是走捷径的决心。我们可以针对你的目标和现状制定一个更加实践导向的计划,同时保持学习过程有趣且充实。以下是我的建议和方案:


总体目标

  1. 短期(2025年3月前):增强银行项目的实用性和技术深度,掌握后端开发的核心技能,为实习做好准备。
  2. 中长期(未来两年):夯实计算机基础,深入理解系统设计、分布式系统及核心算法,逐步具备独立设计和开发复杂项目的能力。

学习模块规划

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页的读书笔记。
  • 下午

    • 按周主题在银行项目中完成对应功能开发。
    • 查看官方文档、博客或视频教程,记录学习中的关键点。
  • 晚上

    • 复习当天内容,整理代码和笔记。
    • 自测项目功能,尝试优化代码。

可实践性建议

  1. 建立个人技术博客:把每天的学习记录写成博客或日志,比如讲解项目中 Redis 的用法或总结某道算法题的思路。
  2. 参与开源项目:找一个简单的 Go 开源项目,阅读代码,尝试修复 bug 或贡献文档。
  3. 模拟面试:每两周自测一次,将银行项目作为核心,讲解架构设计和亮点功能。

最终成果展示

  • 一个高度完善的银行项目:
    • 支持分布式事务、JWT 身份验证、Redis 缓存与微服务架构。
    • 提供完善的 Docker 部署文档。
  • 一个 LeetCode 高质量题解库(至少 50 道题)。
  • 一份扎实的基础知识笔记,涵盖网络、操作系统和数据库。

引入项目技术栈(2周):在新项目中加入 SQLC 工具、中间件,理解每个技术的接入过程。

实现进阶功能(3周):根据银行项目的转账逻辑,尝试自己独立实现一次。

重点学习 HTTP 和 RESTful API。 深入理解数据库 深入理解数据库 熟悉中间件的实现逻辑

Web开发

  1. Go by example
  2. 三本书
  3. 两个项目 Memos Apache Answer
  4. 算法
  5. gin-gonic.com

微服务进阶

gRPC