作为学生,我一直对学习的内容和方向高度关注。今天正好刷到一个博主分享相关内容,让我感慨如今的网络上,提到计算机学习,铺天盖地都是营销号和培训班,如此真实纯粹并充满干货的内容实在难能可贵,标记一下。
视频内容概括笔记:
计算机基础,编程入门
这一阶段的目的是建立全局观。对计算机大厦的第一层楼和地基有基础的认识。注意这包含很多部分,每一部分都有深入和进阶的知识,深入学下去都是无穷无尽学不完的。作为一阶段,在众多学习资源中选择自己可以接受的跟下去即可,目的是达标并拓宽视野。
学习任务:计算机基础概念,写出小型程序
- 掌握一门编程语言
- 基础算法
- Git
资源推荐:
- CS50
- 计算机系统要素
- MIT6.004
- 计算机是怎样跑起来的
- 现代操作系统
- 计算机网络自顶向下
- CSAPP
- Go Programming Language
- Python从入门到实践 CS50P
- C语言程序设计K&R
- 算法图解
- 橘皮算法
- 算法导论
实践任务:
- 在Linux观察进程,tcpdump抓取分析网络请求
- 编程实现:http服务器,解析json并导入数据库,实现链表操作
- Leetcode 50+
- 200+,多多益善
- 实现二叉树遍历
- 基于Hash表的缓存LUR Cache
计算机开发核心
理解(浅浅深入)开发的核心内容,知识上包括:系统开发基础,Linux,网络,数据库。目标是能独立编写中等规模的项目
不同方向的侧重点(注意这些到要学):
-
系统基础
Linux命令和bash编程
-
数据库
编写并优化SQL查询,理解索引优化
-
网站
开发Restful API,web框架
学习任务:
- 版本控制与项目管理:Git 的使用不仅仅是commit 和push,真正的工程项目涉及到分支管理、团队协作、代码审查等。建议学习 Git FLow、GitHubFLow 等常见开发工作流。
- 操作系统:深入理解进程与线程 (并发编程基础)、虚拟内存(分页、分段)、文件系统(EXT4,FAT32)、Linux 命令行 (bash、grep、sed、awk)。
- 计算机网络:TCP连接管理(三次握手、四次挥手)、HTTP/2、WebSocket,DNS 与负载均衡。
- 4.数据库基础:SQL 语言 (MySQL、PostgreSQL)。
- 5。软件工程基础:学习敏捷开发(Scrum、Kanban)、测试驱动开发(TDD)、代码质量工具(SonarQube) 、持续集成 (CI/cD)。
资源推荐
- MIT6.S081
- 深入理解Linux内核
- 深入理解计算机系统
- 现代操作系统
- Linux命令行与shell脚本编程
- CS144
- 计算机网络自顶向下
- Http权威指南
- 《SQL 必知必会》
- 《计算机程序的构造与解释》(SICP)
实践任务:
-
bash编程定期备份数据库
-
top iptop分析系统性能瓶颈
-
编程实现简单的线程池
-
编程实现web爬虫
-
编程一个Restful API
-
Nginx部署web服务器
-
尝试设计一个简单的
Blog 数据库 -
独立开发一个完整的Web应用,包含用户认证、数据存储、API接口,简单的前端页面
-
分界线
下面两阶段有点听不懂了,估计是因为我没有涉足过。但还是耐心听完了。
软件架构与系统设计
目的和简单:设计并实现微服务架,使用Docker 和K8S部署生产和应用。但东西更多更深入。此后的阶段更多是在工作中接触。学习也必须项目驱动学习。
资源推荐:
- MIT 6.824
实践任务:
-
编程实现gRPC微服务
-
搭建消息队列,处理异步任务
-
K8S部署完整的web应用
独立开发与深入探索
其实在第二阶段就要逐渐选择一个方向,不同方向是不同的技术栈,在不深入的时候东西还是互通的。到这里已经是全部不同的知识。
-
备注
这里已经完全听不懂了,只是简单列举博主提到的东西。
这一阶段几乎没有中文资料。
甚至博主自己也没有深入此阶段
项目驱动学习为主,同时要多阅读源码、参与开源社区、写博客、录制视频,拓展自己的知识广度和深度。
1,开源贡献:阅读并参与GitHub上的热门开源项目,理解大型代码库的架构,提交PR,提升代码质量。
2.源码阅读:阅读优秀的开源项目源码,如Linux内核、Go语言标准库、Redis、PostgreSQL。
3。项目驱动学习:尝试做一个复杂的项目,例如一个分布式爬虫、在线协作文档、区块链应用等。
4,分享与传播:写博客、录制技术视频、参加技术会议,与更多人交流你的所学。
以云计算为例:
-
DevOps
-
云计算
-
CI/CD
-
SaaS
原文链接:
DNG
🎙️思考】计算机学习的四个阶段 目标与推荐 【备注:付费提问
作者博客