2014年终总结

2014能够算做真正意义上参加工做的第一年(虽然2013毕业,可是毕业后的半年基本是处于迷糊状态),心态上、技术上都有了一个比较大的转变。之前心态上老是比较浮躁,想着捷径啊快速什么的,如今以为作事情,尤为是作技术得沉淀下来,慢慢积累。html

工做上的事情基本是循序渐进的进行,感受没有什么想说的,可是这一年利用业余时间看了一些技术书籍,这里就按时间的顺序简单的总结一下。python

  • 《C++ Primer》

刚毕业的时候对于C++,嗯,基本就是学校课堂上那一点C with class的东西,以及作过几个课程设计的水平。因此选择了这本经典的大部头来学习,以前在网上看到不少人说这本书太厚读起来困难什么的,其实我以为只要真的静下来读的话,没那么难,做者写的仍是很是简单易懂的。算法

由于想比较系统的学习一下C++的语法,在阅读学习的时候基本上碰到不太理解的地方就会停下来敲代码实践思考一下,每一道课后习题都敲代码作了一遍。最后读完后统计了一下课后习题的练习代码都有七八千行,这个是一开始没想到的。编程

学习整本书的的过程大概花了2-3个月的时间,与大学课堂上学的那一点C with class相比,收获很是大。缓存

  • 《Effective C++》

读完了C++ Primer以后就寻思着读本进阶一点的书籍,因而另一本经典的书籍天然的进入了个人视线中。这本书主要是一本谈C++经验、避免踏入各类坑的书籍,里面讲了不少很是好的经验,好比视C++为语言联邦、以对象管理资源(RAII)、尽可能以传引用代替传值、尽可能以组合代替继承、善用智能指针等等。我的认为。目前来讲,对我最为有益和深入的莫过于RAII了,有了它能够在必定程度上很好的避免资源泄露。固然里面也有一些经验谈目前还理解的不是太深入,须要必定的经验后再去阅读消化了。大概用了1个半月的时间读完了这本书。网络

  • 《Effective STL》

STL始终是C++绕不开的一个东西,可能有些人是STL洁癖,喜欢用c标准库的东西或者本身造轮子,但我我的来讲仍是比较喜欢STL的。由于想多了解一些使用STL的技巧、因此就买了这本书回来阅读了,这本书比较详细的介绍了使用STL时了一些须要注意的地方,好比各类容器迭代器失效的状况,好比vector和string的clear函数并无释放空间,能够用临时对象swap的方式释放空间,好比erase、remove惯用法等等。用了将近一个月的时间来阅读这本书,读完了它后对STL的理解加深了很多。数据结构

  • 《大话数据结构》

以前用了不少的业余时间学习C++方面的东西,想着大学学的数据结构也都忘的记不起多少了,因而在豆瓣上找了一本评价还不错的书买回来学习了。其实开始的时候是准备学习算法导论的,大概看了前面二三十页,对里面一些数学证实读起来比较吃力,orz。因此就换了本稍微简单易懂点的。多线程

其实这本书我到没有很是仔细的阅读、基本是对书上介绍的每一种数据结构和算法的概念和思想读完理解一下,而后就本身用C++实现敲代码去了。架构

主要涉及到了线性表、栈、队列、串(暴力匹配、KMP)、二叉树(平衡二叉树树、红黑树、霍夫曼树),图的算法(BFS、DFS、最小生成树、prim、kruskal、dijkstra、floyd、拓扑排序、关键路径)以及各类排序算法(冒泡排序、简单排序、插入排序、希尔排序、堆排序、归并排序、快速排序)。主要是将这些数据结构和算法本身用C++实现了一遍,可是并无去作一些题目、根据不一样的状况来选用、综合这些基本算法。时间一长仍是容易忘记,好比在我写下这篇blog的时候,上面的一些算法只能说出基本的思想和思路,要实际手写的话估计仍是得费劲想或者再看书熟悉熟悉才行。不过我以为另外一方面的好处是知道这些算法的思想、用途以及时间复杂度,在平常编程中,能够根据状况选用更有效率的标准库算法,在使用各类容器的时候,知道其底层模型是什么、怎么实现的、用起来也更加自如了。数据结构和算法

  • 《深刻理解计算机系统》 又名《CSAPP》

以前在知乎上看到不少大牛推荐这本书,好比老赵老赵书托系列中就推荐了这本书,因此本着学习瞻仰的目的就买来了这本书学习了,啊哈哈哈。

首先第一章计算机漫游整体介绍了计算机的从硬件到软件的基本组成和架构,第一次让个人脑海里对计算机的总体模型有了一个基本的认识。后面第二章紧接着介绍了计算机数据的二进制表示,虽然在学校的计算机组成原理这门课上学习了一点这些东西,那时候上课也没怎么认真听(如今想一想估计光想着哪一个妹子和怎么玩wow去了,orz),好比数据的上溢下溢,数据截断等等都是很是有用的东西。

第三章做者用短短100页左右的时间将基本的IA32和x86-64汇编介绍了一遍,读完以后不说能写多好的汇编程序,起码能看懂很多编译器编译的汇编代码,这不只debug的时候是颇有用的,也对理解一些编程语言的机制比较有用,好比经过了解汇编就纠正了以前学C++时候的一个错误的观点,觉得pass by reference必定比pass bay value有效,其实当pass value时候数据位的大小没有超过寄存器的一次读取数据的位数上限的话,pass by value实际上会经过pass by register,这样就更加有效率了。同时也知道了临时变量大多时候是存放在寄存器中,对临时变量的理解也更深入了一些。

第四章依次介绍了处理器的体系结构,包括简单的指令集、流水线结构、分支预测、转发机制等等。第五章介绍了一下程序优化的技巧,例如循环展开、积累变量、减小存储器引用、等技巧都是很是有用的,虽然现代编译器的优化能力很是强大,可是在必要的时候我也是能够经过这些手段去尝试着测试、优化、提升效率的。第六章介绍了存储器的结构、数据存储加载的基本方式以及缓存命中/未命中、数据局部性对程序性能的影响等等。虽然这些底层的东西可能对咱们上层的程序编写来讲,表面上没有关联,但我我的认为知道一些基本的底层知识能更好的写出对底层机制更亲和的代码。

后面还介绍了异常控制流引伸出了操做系统内核和用户态的切换,进程,线程,网络编程,IO等许多东西,这里就再也不赘述了。一共花了2个月的时间来阅读这本书、并动手作了每节的课后习题,可是每章的家庭做业并无作,准备读第二遍的时候把它们作了。

这本书很是好,也不枉许多大牛的推荐,因为书中介绍了知识概念不少,时间一久细节的东西比较容易忘记,有时候须要常常翻出来查找某些概念和知识。

  • 《深度探索C++对象模型》

因为读完了CSAPP后对底层比较感兴趣,就搞到了这本书想了解一些C++底层的实现机制,以及编译器在背后作了哪些事情。这本书也花了一个多月的时间来阅读,里面讲解了不少有趣的东西,好比在C++Primer中说的当咱们没有为一个类定义构造函数的时候,编译器会自动合成一个默认构造函数,可是读了这本书后才明白,其实编译器这个坏家伙在背后并不必定会合成默认构造函数,例如当这个类的数据成员是内置类型的时候,编译器就神马都不作。C++标准中把这种构造函数叫作trival构造函数、对于trivial默认构造函数编译器是不会合成的,编译器只会合成non-trivial构造函数。再好比多态、虚函数的实现机制、运行时类型识别的实现机制等等。里面颇有不少这样有意思的东西。

另外也花了很多业余时间也研究了多线程C++开源网络库muduo的源码、学习陈硕老师的网络编程思想以及代码风格等等。

2015年的展望。但愿2015年在技术上有所积累、提高一个档次,主要有三个方面:一方面计划在15年抽空学一门函数式编程语言,好比lisp或者haskell,了解一下另外一种范式的语言,开开眼界;另外一方面也想系统的学习一下python,了解这这一门动态语言的设计思想,由于目前只是在工做中偶尔用python写写工具脚本,谈不上熟悉,总的来讲我比较喜欢C++,可是也想多了解了解不一样的语言,熟悉多种范式和内在的语言设计思想;最后,但愿在网络编程、多线程方面的技巧、思想有所提高,操做系统、协议栈上的机制有所了解和理解。

(完)

相关文章
相关标签/搜索