2020年学习计划:1月底~5月底

1. 学习内容
2. 学习计划
- - - -2.1 linux 命令行工具
- - - -2.2 linux 端开发:必备工具
- - - -2.3 计算机科学与编程类经典书籍
3. issue 记录


SMART 原则 解释
specific 具体性 切合实际行为,避免笼统不清晰
measurable 可度量 可数量化或行为化
attainable 可实现 符合现实情况,避免过低或过高
relevant 相关性 多个目标之间的关联性
timebased 时限性 截止时间

1 学习内容

毕业学期要事有俩:实验室(毕业论文与导师项目)与工作技能,基于此总结出下面主要学习点。

  • 1. 工作技能
    • 工程基础: linux 端工具使用,
    • 编程基础:计算机与编程类经典书籍阅读,
    • awesome C++ 开源项目实践;·
  • 2. 课题组项目
    • 加油机源码(正星/稳牌/加油车)与对应设备,
    • git 与 github 在课题组项目管理中的应用;
  • 3. 大论文
    • 多加油站的 web 云管理平台,
    • OpenCV 身份验证等;

2 学习计划

2.1 linux 命令行工具

liujun@Lemon:/$ which reboot ls cmake
/sbin/reboot
/bin/ls
/usr/bin/cmake
liujun@Lemon:/$ ll /bin /sbin /usr/bin -h --sort=size > ~/linux_cmd_list.txt
liujun@Lemon:/$ cat ~/linux_cmd_list.txt | wc -l
1178

暂缺少/usr/sbin目录下的约130个命令

得到1178条信息,即约有 1200 条命令(或其他二进制文件),按照linux_cmd_list.txt中的顺序学习 linux 命令。

  • 时间/具体:

    • 时间线:2020.1.21~2020.4.30
    • 5+2 原则:7 天为单个 lesson,前5天平均每日 20 个 命令,即单个 lesson 需至少 100 个命令。后2回顾整理与归纳总结。共(1200/100=)12个阶段,约(12*7/30=>)3个月。
  • 度量/实现:

    • 每个 lesson 至少一篇博客。遇到感兴趣知识点或有时间另开一篇博客,如 loadkeysdumpkeys的键盘转译实现机制与应用。

    • 过 man 手册与 help 信息。理解命令的作用,熟悉高频参数与操作,

    • 自我检验:

      • ① 需求式:如删除某大型文件中的质数行
      • ② 提问式:如 tail/head/sed/more/less/cat 等文本查看命令的特点与区别
  • 补充:

    1. 在回顾总结时,根据综合情况(个人时间,学习效果等)调整计划,如在学习btrfs命令时,后续碰到相关命令 10 余条,可归纳并整合到之前含有btrfs的 lesson,
    2. vim/git/gcc/gdb/cmake/grep正则...等较大型工具辅以相关书籍或教程;

2.2 linux 端开发 必备工具

Linux 端开发必备工具:vim 编辑器/shell 脚本/gcc-g++编译器/gdb 调试器/make 工程管理/git 源码管理与协同合作/vscode

  1. vim
    1. vim-galore-zh,vim-galore-en
  2. shell
    1. linux 命令大全
    2. 脚本教程
  3. gcc
    1. 工具背景与说明
    2. 参数使用与实践
    3. 编译流程(加解密)
  4. gdb
    1. 基本命令与使用
    2. core 调试
    3. 多线程
  5. make
    1. make 基础
    2. cmake
      1. cmake 手册
      2. cmake 实践
  6. git
    1. github 简明教程
    2. GitPro V2
    3. gitlab 安装与使用
  7. vscode
    1. 原理
      1. 跨平台桌面应用框架(基于 node.js 与 chromium 的 Electron)
      2. 源码解析
    2. 配置
      1. 配置参数
      2. 配置解析
    3. 插件
      1. 插件使用
      2. 插件开发

2.3 计算机科学与编程类经典书籍

书籍阅读不受此阶段的时间限制,即后面每个学习阶段都包括书籍阅读,也包括下面列出的书籍。

  1. 基础入门篇
    1. 计算机基础
      1. 《深入理解计算机系统》
    2. 操作系统/计算机网络
      1. 《Unix 环境高级编程》
      2. 《Unix 网络编程》
      3. 《Linux 高性能服务器设计》(游双 著)
      4. 《Linux 内核设计与实现》
    3. 编程基础
      1. 《编写可读代码的艺术》
      2. 《head firs 设计模式》
  2. 进阶篇
    1. 《深入理解 Linux 内核架构》
    2. 《程序员自我修养》
  3. C++编程
    1. 《C++ primer 》(第六版)
    2. 《Effective C++ :改善程序与设计的 55 个方法》
    3. 《深入探索 C++对象模型》
    4. 《STL 源码剖析》
  4. 其他
    1. 《金字塔原理》
    2. 《麦肯锡方法》

3 issue 记录

学习过程中遇到的相关或其他知识点,做个记录,后续填坑

  1. WSL 在 Linux 学习中的应用;
    使用WSL(Windows for subsystem Linux)在 win10 平台下构建 Linux 开发环境,学习与使用 linux 命令行工具。
  2. Linux 文件系统: /proc目录解析,
  3. GNU 核心工具组:GNU coreutils,List of GNU packages,coreUtils 常用工具
  4. 其他
    1. Linux 中 rc 文件的含义

你可能感兴趣的:(综述)