非科班程序员自学手册,终身更新!
基础不牢,计划从程序语言、操作系统、数据结构与算法、网络、开源框架几个方面进行学习整理。
以C++为主,Java为辅,后期涉及Go。
围绕进程这一主要概念展开,将以一个进程的运行为例,涉及计算机体系结构、少量编译原理、汇编语言基础、中断的本质、内存管理(8086分段管理以及后期的页式管理、段页式管理、虚拟内存等)、文件系统、进程间通信的本质、分布式系统设计(分布式事务、集群)。将尝试分析Linux内核部分源码,主要涉及进程调度、页表的实现、Block I/O处理几个方面。
基础以《算法(第四版)》为参考,练习将以leetcode和剑指offer为主,分类整理,尝试找出问题的大体类别以及解决问题的一般思路。
基础以《网络是怎样连接的》为主,《TCP/IP协议族》为深入方向,主要涉及socket、TCP/IP、组网(Cisco Pack Tracker)学习。
基于以上基础,以及平时项目中遇到的类似问题,将以数据组织的开源框架入手分析,主要为数据库存储引擎LevelDB、MariaDB、Memcached、Redis。将以元数据管理(事务、读写缓存)、高可用(Failover/Failback/整机掉电)、集群管理(集群一致性协议),然后将学习分布式系统设计内容,将以Ceph为例进行分析。
《深入理解计算机系统》
《深入理解Linux内核》
《算法(第四版)》
《数据库系统实现》
《程序员代码面试指南》
《C++ Primer(第五版)》
《操作系统精髓与设计原理》
《UNIX环境高级编程》
《Redis设计与实现》
《MariaDB原理与实现》
管理方面: 《人件》