[Code] 沙加之编程修养

 

C++是考验程序员修养的首选。这里记录一些标准程序员需要知道的东西,提高修养。

有趣的链接列在这里:

 

  

 

编程内功


一、操作系统

  • 链接与加载

~Linux C_22_ELF加载链接【加载链接,用户内核空间关系】

    • a.out run!【代码细节 - 用户内核关系】

~Linux C_21_ELF文件解析【文件内部细节】

~Linux C_20_静态库与动态库【使用和延迟机制介绍】

~Linux C_16_预处理【宏技巧】

~Linux C_13_变量存储布局【变量的内存权限基本知识】

~Linux C_8/14_作用域【变量/函数的文件链接问题】

~Linux C_5/6/7/12_ELF链接【命令查看内部地址细节】

~Linux C_4_进程的内存映像【进程的生成过程以及管理】

~Linux C_2/3/11_GDB DEBUG【printf&Assert&GDB】

~Linux C_1_一些细节【犄角旮旯的问题】

 

  • 预备役

挂个文件系统

自旋锁,旋啊旋

ADD系统调用

系统调用之“一调到底”

内核回调 之 一"读"到底

神灯亮起来

 

 

二、ARM汇编

  • Device Driver

网桥一二三

网卡驱动DM9000(2)

网卡驱动DM9000(1)

Communication - 03.RILC

Communication - 02.Call U

Communication - 01.Foreword

 

  • Device Datasheet

~Datasheet - MemoryController

~Datasheet - DMA

~Datasheet - IIS

~Datasheet - Nand

~Datasheet - Clock

~Datasheet - RTC, WATCHDAG

~Datasheet - AC97

 

 

 

 

编程外功


一、新建工程

  • 安装 GCC

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9
you can then compile using the command:
g++-4.9 -std=c++14 -Wall -Werror -O2 -o helloworld helloworld.cpp
GCC

  

  • 从 Makefile 到 CMake

[c++] CMake to build project 【正规部队-重点】 

[c++] Makefile is a good start.【几个实用例子】

山寨内核Makefile之“天龙八部” 【逐行解释】

[Link] 跟我一起写Makefile

 

  • 灵活的命令行参数

[advanced] Professional coding 03 - 命令行参数 

 

 

 

二、代码质检

  • 命名法 

[advanced] Professional coding 02 - 书写格式【遵循Google风格 】

[Link] Google 开源项目风格指南

 

  • 测试

[quality] 05 - ctest: cmake tells U how to test

[quality] 04 - valgrind: monitor memory occupied by your sh*t a.out

[quality] 03 - cache: system level optimization

[quality] 02 - clang static analyzer: scan-build

[quality] 01 - gpertools: measure each function

[quality] 00 - Introduction: code testing methods

 

 

三、C/C++ language

  • 基础知识

[c++] IKM【菜鸡面试】

[c++] C Language Features【菜鸡教程基础笔记】

[c++] constexpr and literal class【用的少】

[c++] namespace【使用案例】

[c++] Exceptions【基础概念,较难】

 

  • 类和对象

[c++] Class【类和对象的基础知识】

[c++] Type Casting【类型转换】

[c++] Operator overloading【常见的操作符重载】

[c++] Copy Control【拷贝控制】

 

  • 标准模板库 STL

[c++] String and her STL【以string为基础的STL再学习】

[c++] Sequence Containers【顺序容器】

[c++] Associative Containers【关联容器】

[c++] Iterators【迭代器】

[c++] Algorithms in STL [to do]

 

  • 高级部分

[c++] Smart Pointers【基本用法】

[c++] RTTI: Run-Time Type Identification [to do]

[c++] Templates【元编程基础】

[c++] New features in c++11/14/17


  • 更多开源库

[Link] Folly: Facebook Open-source Library

[Link] The Boost Graph Library (BGL)

 

 

 

 

编程磨洋功


具备一定的基础后,开始进阶学习,最终的目的可能就是具备OpenCV源代码提交的能力。

Ref: C++学习心得和进阶路线总结

Ref: C++进阶 必读书籍

 

2010年8月号《程序员》刊登的拙文《C++强大背后》最后一段

 

 

短小精悍的两本书:

《Essential C++》

《Accelerated C++》

 

项目实战的两本书:

《Effective C++》

《More Effective C++》

《Effective Modern C++》

 

模板实战:

《C++ Templates》

 

神之领域:

《C++语言的设计和演化》

《编程的本质》(含STL设计背后的数学根基)、

C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献

《C++ Coding Standard: 101 Rules》 

 

《Exceptional C++》

《More Exceptional C++》  // --> Google风格说:我们不使用 C++ 异常

posted @ 2016-11-20 16:37  郝壹贰叁  阅读(269)  评论(0编辑  收藏  举报