建立小册的目的:
- 用输出倒逼输入,写文档的过程,是对自己所学知识的沉淀,分享交流的过程是对知识的复盘,这些都能够加深对知识的理解。(费曼学习法)
- 学习一定要有输出,学完一个知识点不一定能汲取到其中的精华,一定要把它变成自己的东西,加入自己的理解,再在这个基础上综合更多的东西进来。
编写小册的想法:
高中时候有摘笔记的习惯,每天都会挤时间抄课堂讲义,但到高考结束都几乎没有翻完那一堆本子。后来发现这是一种比较愚蠢的课堂笔记 —— 什么都记还不如不记。经过一次次的尝试后,觉得根据文章理大纲也比较低效。目前来看,还是通过判断个人对知识点吸收的难易程度去记,更容易自己成长。把认为重要的、容易遗忘的、经常要查阅的记录下来,形成自己的学习小册,定期温故知新。未来需要用到的时候,还能节省时间成本,不用一一百度/Google。
- 学习计划:TypeScript,React17/18
- 正在学习:学习完 TS 基础,在类型编程开始纯学习理论知识点有点不知所云,准备先学习 React + TS 的应用,从实际应用中发现问题、找到问题、带着场景顺带学习 TS。
持续更新,学习不止。
- HTML
- CSS
- JavaScript
- ES6 - ES12 新特性
- TypeScript
- TypeScript 基础
- 基础类型(始于 JS)
- 字面量类型与枚举
- 函数与 class 类型
- 内置类型和类型断言
- TypeScript 进阶
- 类型创建
- 类型安全保护
- 泛型
- 浏览器相关
- 浏览器工作原理
- 浏览器宏观认识
- 浏览器内核与 JavaScript 引擎
- 渲染引擎的工作原理
- V8 引擎的工作原理
- 浏览器安全
- 同源策略
- 跨站脚本攻击(XSS)
- CSRF 攻击
- 网络安全协议(HTTPS)
- JS 手写
- 简单手写:函数
- 实现防抖函数(debounce)
- 实现节流函数(throttle)
- 实现浅克隆(shallowClone)
- 实现深克隆(deepClone)
- 实现 instanceof 运算符
- 实现 Object.create 方法
- 实现 new 运算符
- 实现 call 方法
- 实现 apply 方法
- 实现 bind 方法
- 其它知识点,待后续继续补充
- 复杂手写:类库
- 实现符合 Promises/A+ 规范的 Promise
- 其它知识点,待后续继续补充
- Vue.js
- React
- React 基础
- React JSX
- React Hooks(内置)
- React Hooks(自定义)
- 函数组件设计模式
- 受控组件和非受控组件
- 近期在学习,每日更新
- Webpack
- Git
- Nginx
- Nginx 基础知识
- 正向代理与反向代理
- 负载均衡
- Nginx 用法整理
- Nginx 的安装
- Nginx 的卸载
- Nginx 常用命令
- Nginx 设置开机自启
- Nginx 配置文件详解
- Nginx 配置文件模板
- Nginx 安全访问控制
- Nginx 文件列表功能
- Nginx 页面安全认证
- Nginx 部署 Https 安全认证
- Nginx 限流常用模块
- Nginx 部署方案
- Nginx 部署前后端分离项目
- 其它知识点,待后续继续补充
- Linux
- Linux 基础知识
- 常用命令
- Linux 常见问题
- vim 中文乱码问题
- 计算机网络
- 网络基础
- 网络分层模型
- IP 地址
- UDP 协议
- TCP 协议
- TCP 重传、乱序和重复的问题
- 网络排查
- 网络排查工具
- 抓包与分析
- 经典问题
- Linux 系统是如何收发网络包的?
- 输入 URL 到页面展示,中间发生了什么?
- TCP 三次握手期间异常,会发生什么?
- TCP 四次挥手期间异常,会发生什么?
- 拔掉网线几秒再插回去,原本的 TCP 连接还在吗?
- 如果已经建立了连接,但是客户端突然出现故障了怎么办?
- 如果已经建立了连接,但是服务端的进程崩溃会发生什么?
- TCP 和 UDP 可以使用同一个端口吗?
- 服务端没有 listen,客户端发起连接建立,会发生什么?
- 用了 TCP 协议,数据一定不会丢吗?
- TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?
- 数据结构与算法
- 设计模式
- 源码阅读与学习
- Vue3 源码中的基础工具函数
- 抽空学习,不占用主学习进程
- Python
- Python 基础知识
- 编译器与解释器
- 语法规范
- PEP8 风格
- 变量与常量
- 数据类型
- 函数参数
- 函数装饰器
- 错误和异常
- 类型提示 Type Hints
- 类型提示进阶:typing 模块
- Python 面向对象
- 面向对象编程
- 类和实例
- 类变量和实例变量
- 实例方法、类方法、静态方法
- 公共变量、私有变量、保护变量
- @property 装饰器
- 类的继承
- super() 函数
- 反射
- 魔术方法(双下划线方法)
- 实现单例模式
- Python 高级进阶
- 切片
- 多线程、多进程
- 全局解释器锁(GIL)
- 协程
- 生成器 generator
- 迭代器 Iterator
- Python 常用模块
- Python 多版本虚拟环境共存
- 使用 logging 配置日志的方式
- 使用 xlrd 处理旧版本 Excel
- 使用 openpyxl 处理新版本 Excel
- 使用 smtplib 发送电子邮件
- 使用 subprocess 执行 cmd
- 使用 telnetlib 执行 Telnet
- 使用 Paramiko 执行 SSH
- 使用 Fabric 执行 SSH
- 使用 Celery 实现任务调度
- 其它知识点,待后续继续补充
- Django
- Django 基础知识
- model 字段与属性
- model 外键关系
- model 元数据 Meta
- model 继承
- model 增删改操作
- model 增删改操作
- model 查询/检索操作
- signal 监测 model 变化
- Django 内置权限系统使用
- Django 实战经验
- Django 用户模型扩展/重写
- Django 内置权限系统扩展
- Django 与 Guardian 的集成
- Django+JWT 实现 Token 认证
- Django 设置 Redis 作为缓存
- Django 与 Celery 的集成
- Django 与 Channels 的集成
- Django 常见问题
- 导出/导入数据库表数据
- 执行 migrate 时报错 SQLite 版本过低
- MySQL
- MySQL 基础知识
- MySQL 数据类型
- MySQL 常用命令
- 库和表的基本操作
- 表中列的基本属性
- 数据的增删改
- 简单查询语法
- 条件查询语法
- 表达式和函数
- 分组查询语法
- 子查询语法
- 连接查询语法
- 组合查询语法
- MySQL 常见问题
- 脏读、不可重复读和幻读
- MySQL 日常运维
- MySQL 的安装与卸载
- MySQL 主键和自增 ID
- MySQL 数据库设计规范
- 其它知识点,待后续继续补充
- Redis
- Redis 基础知识
- Redis 数据类型
- Redis 常用命令
- Redis 常见问题
- Redis 缓存三大问题
- Redis 日常运维
- Redis 的安装与卸载
- Redis 的 ACL 安全策略
- Elasticsearch
- Elasticsearch 基础知识
- ES 中的概念与名词
- 正排索引与倒排索引
- 文档基本操作
- 全文搜索语法
- Term 查询语法
- 组合查询语法
- 搜索词自动补全语法
- 统计语法:聚合查询
- 嵌套类型和父子文档
- 分词器的原理和使用
- 分页查询的三种语法
- Elasticsearch 日常运维
- ES 的安装
- 集群管理 API
- 索引管理 API
- 定义字段类型:Mapping
- 索引模板:Index Template
- ES 集群性能优化小记录
这个仓库完全开源,它不是什么官方文档,仅仅是一份个人学习小册,用于知识点的梳理。
每块知识点是本人一边学习一边总结的,可能会存在错误,希望大家能够「带着怀疑的态度」去阅读,如果对内容有不同的看法,可以在 留言板 提出,或者提交 PR,大家互相学习、共同进步。
我将持续更新这个仓库的内容。独学而无友,则孤陋而寡闻,期待你能和我一起交流。
如果本仓库对你有帮助,可以通过以下几种方式支持我一下:
- 给我一个小星星 ⭐️
- 提交 Issues 或 PR
- 送我一本书
本书采用「保持署名—非商用」创意共享 4.0 许可证。
只要保持原作者署名和非商用,您可以自由地阅读、分享、修改本小册。
详细的法律条文请参见创意共享网站。
Copyright (c) 2020-present, WenYuan
感谢广大行业前辈、教育工作者和知识传播者,得益于你们的探索,我们能够站在巨人的肩膀上去学习。
本仓库内容也借鉴了不少业内的资料,我会在每篇文章后单独列出,仅在这里统一表达感激之情。
也感谢对象的支持和理解,平时忙于工作和学习,多少会疏于陪伴。
最后,既然选择了这一行业,那就不停地学习吧。生命不息,奋斗不止,感谢你正在访问本仓库,让我们一起加油吧!