程序员修炼之路

0.前言:在路上,再上路

在前言《程序员修炼之路-(0)前言:在路上, 再上路》中已经对知识体系进行了梳理,主要分为问题定义、算法与数据结构、系统平台API、编程语言实现、代码设计、测试验证等等。目前集中精力编写算法与数据结构部分,这可能也是最艰难的一部分。其余部分以前零零散散有所涉及,以后再慢慢补充。php


1.计算机数学

离散数学与具体数学。java


2.算法分析设计

对于这一部分的内容编排,主要以《算法设计与分析基础》、《算法》以及LeetCode算法题中的问题分类为横向,以《算法设计与分析基础》中罗列的经典设计技巧为纵向,贯穿每一小节。由于传统算法书籍的结构常常是为了讲算法而讲,目录内容分类都很死板。而我想要的是解决这一类问题有哪些算法?都是用什么技巧和思路设计的?linux

2.1 理论基础

2.2 线性表

2.3 排序

2.4 搜索

2.5 字符串

很是重要,单列一章。程序员

2.6 图

图算法也一样重要,与现实生活的紧密程度甚至超过了上面全部数据结构。golang

2.7 总结

《如何解题》、穷解、减治、分治、动态规划、贪心。web


3.系统平台

计算机架构(计算机组成原理、汇编语言等)、操做系统(Linux和Windows经常使用系统API等)、编译连接(编译和连接的原理)。算法

3.1 体系结构

《深刻理解计算机系统》,绝对的经典,永远的CSAPP:数据库

3.2 操做系统

《操做系统概念》,9分的好书,不知道与《现代操做系统》相比哪本更好:编程

3.2.1 Linux

《Linux C一站式学习》,挺经典的一本书,仍是国产吧:windows

学习操做系统特别是Linux,Shell也是必不可少,有一阵子还很热衷写Shell:

3.2.2 Windows

Windows平台下的编程实践,《Windows程序设计》和《Windows游戏编程大师技巧》能够说是Windows平台编程的两本“圣经”了:

3.3 计算机网络

Java网络编程基础:

3.4 数据库

这一部分目前比较杂,以前看的《数据库概念》没有及时整理,待补充。

3.5 编译连接


4.编码实现

C/C++/Java等主流语言,如何实现咱们的设计,包括语言语法、内存分配、封装抽象、分包引库等小细节。

4.1 开发工具

4.1.1 编辑器

4.1.2 调试工具

4.1.3 项目构建

4.1.4 版本控制

4.1.5 持续集成

4.2 C/C++

4.3 Java

4.4 PHP

4.5 Golang

4.6 Web


5.程序设计

抽象层次定义、23种设计模式、重构改善设计。

5.1 抽象层次

5.2 编码规范

5.3 设计模式

5.4 方法论

5.5 架构设计


6.测试验证

单元测试、性能测试等技术。

6.1 单元测试

6.2 性能测试


附录

附1:业余实践项目

主要是为了练习C,业余时间写了很多代码,从Web到桌面到游戏到算法类的,涉猎有些杂了… 但无论怎样,收获仍是很大,将来仍是要坚持多实践,多写一些实用的小东西!

附2:公开课

附3:《算法导论学习笔记》

当年《算法导论》的学习笔记,坚持到动态规划就浅尝辄止了,DP挺难……

相关文章
相关标签/搜索