代码改变世界

随笔分类 -  大学写过的文章

写在我离开之前

2012-07-29 12:22 by respawn, 1887 阅读, 收藏, 编辑
摘要: 转眼间,三年的大学生活就这样过去了. 感谢你们,伴我走过两年学习和生活的兄弟,一群可爱的人. 大二的时候,我们聚在一起,各自分组做项目,有老师的陪伴.那时候我们也许想的更多的就是学习. 在那些激情的岁月里,大家不停的在做项目的过程中成长.很快,都已不是当初懵懂不知的大一新生. 后来暑假的时候我们都留校,呆在一起做项目.有时间的时候就一起去玩,那时候的日子真的很快乐. 大二暑假,是我的转型期. 接到头的任务,需要协助研究生做一个科研的项目,被迫从JAVA转C. 那时候开发就只有我和一个师兄在做,那位师兄学的是C++,而我却对C不甚了解,一切都要从零开始.好在项目是在linux下面开... 阅读全文

C++ Standard Stl -- SGI STL源码学习笔记(05) stl_vector 与 一些问题的细化 1

2012-07-29 08:47 by respawn, 1714 阅读, 收藏, 编辑
摘要: 上篇文章中很粗略的角度讲解了一下stl_deque的设计思想,以及涉及到得浅显的STL内存管理方面,至少我们看得到的冰山一角. 这篇文章中关于vector的分析,我将将一些问题细化一下,对一些函数做细致的分析.有些时候,有些问题还是说清楚比较好. 打开stl_vector的源码,发现vector的设计思路和stl_deque如出一辙,想想这样是很合理的,保持实现的一致性.只是stl_vector没有提供一个确定的模板类Iterator去实现迭代器,而是在vector模板类中实现了迭代. 但是和deque基本没有什么大的不同.下面来看看源码: 1. 这次就不讲解设计部分了,主要讲解... 阅读全文

C++ Standard Stl -- SGI STL源码学习笔记(04) stl_deque && 初涉STL内存管理

2012-07-28 15:07 by respawn, 1753 阅读, 收藏, 编辑
摘要: 在SGI STL源码中,很多时候一些模板类提供默认形参的时候,都会选择提供deque.template ) > // stl_stack.h template ) > // stl_queue.h _STL_DEPENDENT_DEFAULT_TMPL宏就是替换后扩展为"=deque".既然出场的频率那么高,所以我首先选择他.一起去看看deque的源码.deque的源码很多,一千六百多行的代码. 而且实现也是蛮复杂的.包括deque_iterator,deque_allocator,deque_base,deque.如果你也在阅读deque的源码,我的建议是先从 阅读全文

C++ Standard Stl -- SGI STL源码学习笔记(03) STL中的模板编译期检查与偏特化编译期检查

2012-07-27 10:13 by respawn, 1666 阅读, 收藏, 编辑
摘要: 前一篇文章中说了SGI STL中的Concepts Check,其实就是利用模板类类实例化在编译期会执行检查的特性. SGI STL大量运用了Concepts Check,前面已经说过,这里不再多说.在>中在"模板与泛型编程"章节中有讲解模板的特化,不再赘述. 模板特化分为两种: 1. 绝对特化 2. 部分特化在这片博文中,主要来看一下部分特化.依旧是选用stl_stack.h源码.template ) >宏__STL_DEPENDENT_DEFAULT_TMPL只是简单的用来实现默认模板参数的指定:# define __STL_DEPENDENT_DEFAU. 阅读全文

C++ Standard Stl -- SGI STL源码学习笔记(02) Concepts Check

2012-07-25 17:28 by respawn, 1806 阅读, 收藏, 编辑
摘要: 希望很多同学不是因为看到标题,出于好奇心才进来的. 以前我驻扎在CSDN一段时间,但是后来搬到了博客园. 博客园同CSDN比起来,感觉好很多,自己也不知道是什么原因. 可能是CSDN现在很多所谓的技术专家都开始转行写小说了,俺不喜欢看小说,喜欢搞技术,所以就到了博客园. 标题上写着是介绍STL中的Concepts Check,可以说是一种机制. 今天我也是在阅读SGI STL源码的过程中遇到这个问题,问了很多人,也查阅了很多资料.但是很多人表示对此毫不知情~ 下午又去图书馆找资料,最后也只是找到一本>,粗略的浏览了一下相关章节,有点吃力,原因是它的线索是前后贯穿的,引用前面章节的例子来说 阅读全文

C++ Standard Stl -- SGI STL源码学习笔记(01) auto_ptr

2012-07-25 07:03 by respawn, 3180 阅读, 收藏, 编辑
摘要: 写在前面: 学C++,到现在是第九天了,所以我只是在理论上对C++有浅显的认知.对于实际应用,我还没有实际的经验.所以接下来对于SGI STL源码分析的相关文章,更多的就只是针对源码的直接分析,是没有关于实际应用场景经验之谈的.所以我们只谈源码,其他不谈. 对于侯捷的那么本>,我下载了PDF,只是粗略的浏览了一下目录而已.想要说明的问题就是我没有参考别人现成分析的书籍,可能在分析的过程中有参考过一些博客中不错的关于一些源码阅读过程中细节问题的解释.如果分析的有误,也是我自己分析的过错,绝对不是参考XX人错误的分析资料,与他人无关.auto_ptr的实现在memory文件中,包括所有的注释 阅读全文

学习C++要多久? 是时间的问题吗?

2012-07-24 08:20 by respawn, 16656 阅读, 收藏, 编辑
摘要: 这一周没有写过博客,是因为时间被安排来学习C++. 尽管学C很久,但是不得不承认,在C++方面,只能是个小菜鸟~今天是第八天了,我在看着sgi stl的源码. 欣赏着曾让C++繁荣的经典之作.为什么要学习C++ ? 以前我是如此的固执的认为C++是一门很悲剧的语言,因为它夹在C与 JAVA的中间,注定高不就低不行. 只能委身在游戏领域了~也不知道自己是怎么改变自己的想法的,可能是因为自己马上步入大四,就业的压力来了. 随着自己渐多的浏览招聘信息,发现自己需要学习一下C++,给自己在招聘的时候提供更多的选择.随着学C的逐渐深入,也意识到到了一定的阶段,需要的就是实践的经验来提高自己,理论的高度已 阅读全文

学习工具篇 - eclipse 中使用autotools plugins

2012-07-16 09:33 by respawn, 4098 阅读, 收藏, 编辑
摘要: 很多时候我们都是在使用IDE来构建自己的小项目,使用IDE,在学习中足够了。但是渐渐的发现使用IDE已经满足不了自己了,发现自己处于两难的境地。为什么这么说呢? 首先,最主要的出发点是想要去自己动手构建一个项目。 其次,去学习如何写makefile吗? 第三,有没有其他的选择呢?学习makefile,是根本上出发去学习如何组织构建一个项目,应该是不错的选择,真的不错吗?当尝试去查找makefile相关资料的时候,看到长长的文档目录和密密麻麻的英文,即使我承认自己的英文水平还不错,但是头也大了。也有一些不错的中文makefile教程,但是学习起来无异于学习一门新的语言,从时间的角度出发,至少对于 阅读全文

GNU C - Using GNU GCC __attribute__ mechanism 02 Variable Attribute && Type Attribute

2012-07-09 20:51 by respawn, 1489 阅读, 收藏, 编辑
摘要: 上篇文章中介绍了 __attribute__ mechanism Function Attribute 参考链接:http://www.cnblogs.com/respawn/archive/2012/07/09/2582548.html我不喜欢对自己写的文章做过多的修饰,所以很不注重排版,喜欢走简约路线. 所以如果您认为我的博文排版很差而忽略文章内容的话,那么我只能说我注重技术,不注重次要的浪费时间的无价值动作. 如果您可以对我的博文进行批评指正的话,那我这里谢过了.技术嘛,需要多讨论,多研究,不是写出来给别人赞扬的.(上述仅代表我个人观点,如果您不喜欢,请原谅.)下午有事出去了,直到刚才. 阅读全文

GNU C - Using GNU GCC __attribute__ mechanism 01 Function Attribute

2012-07-09 13:12 by respawn, 2937 阅读, 收藏, 编辑
摘要: 近来阅读glibc源码的时候遇到很多关于__attribute__的问题,索性就查找了相关的资料,学习了一下.要是不解决了这个问题,有的时候还真的是比较难下手.就拿glibc来说,使用xcscope搜索POSIX pthread函数: pthread_create,得到的结果如下:如果一路跟进函数的话,最后会发现这样子的一个宏定义:下面是GNU glibc开发人员对此类宏的注释,看起来直白一点:现在只是知道,在链接的时候,寻找pthread_create会被链接到__pthread_create_2.1/__pthread_create_2.0.上面展现的是GNU glibc中很常用的编程技巧 阅读全文

GNU C - 一个别致的HelloWorld程序 引申到: __attribute__((constructor)|(destructor)(PRIORITY))

2012-07-09 04:22 by respawn, 12112 阅读, 收藏, 编辑
摘要: 在前面的>关于object files的内容中,有看到使用自定义段的部分内容,(如果关于object files的内容不了解的话,可以去参考>这本书或者去wiki,其中也有关于段的解释,也可以称作节区.) 可以通过硬编码实现自定义段. __attribute__ ((section("name"))) .....编译生成的object file,代码会保存在".text"段,全局变量和静态变量会放在".data"和".bss"(未初始化的全局变量和局部静态变量)利用GCC的扩展机制就可以做到自定义段了. 阅读全文

C复习篇 - 使用Posix标准线程库 Porgramming with Pthread

2012-07-08 16:38 by respawn, 2363 阅读, 收藏, 编辑
摘要: Programming with pthread? what is Pthread?Pthread,作为C/C++编程的标准线程库,其实它是POSIX Standard thread library. 那么,怎么去理解POSIX标准呢? 下面给一些资料的链接,有兴趣的可以自己去查看. 1. http://zh.wikipedia.org/wiki/POSIX 2. standards.ieee.org/findstds/standard/1003.1-2008.html 3. www.opengroup.org/austin/papers/posix_faq.html 4. www.unix. 阅读全文

学习工具篇 - eclipse 结合cdt EGit 插件的使用

2012-07-05 09:22 by respawn, 4097 阅读, 收藏, 编辑
摘要: 在前面的一片文章中,随便的介绍了一下emacs + cscope + xcscope阅读源码.今天这篇文章就介绍一下eclipse,安装相关插件也能够起到和上面emacs安装插件后结合终端svn/git 使用的效果~ 为了简洁和方便,我一般很少安装IDE,但是eclipse例外,因为 它可以支持多种语言的开发.用起来很方便.1. 安装eclipse cdt 插件:相信很多人都有配置过eclipse + cdt 插件,配置的过程很简单,就简单的介绍一下.因为相关的文章很多. 从eclipe的菜单选项中选择Help -> Install New Softwware,然后去添加上cdt插件的官 阅读全文

学习工具篇 - 还在为寻找合适的源码工具烦恼吗?

2012-07-02 20:25 by respawn, 3044 阅读, 收藏, 编辑
摘要: 这篇博文和前面的篇文章是衔接的,也算是一点点补充吧. 在前文中说过关于阅读源码可以提高自己的修养~ 对于源码的阅读,无非就是选中一个自己认为适合自己的源码包,然后去阅读和学习.这里就有一个问题了,你使用什么样子的工具阅读呢? 使用vi? 或者是win下的记事本?虽然很多的源码都是模块化开发的,在阅读的时候选中一个小模块,然后慢慢琢磨就可以了.但是在源码阅读的过程中总是需要查找的功能的,一般的文本编辑器只能实现在一个文件中的指定查找,功能有限.不过,你也可以使用IDE阅读源码,方法很多,随自己喜欢吧.其实,我们还是有其他选择的.解决的办法是什么呢? emacs/vim会给我们答案.我已经不使用v 阅读全文

程序员的自我修养 - 符号修饰 函数签名 以及一个引申的问题: extern "c"

2012-06-30 21:35 by respawn, 2453 阅读, 收藏, 编辑
摘要: 由于最近都在忙着复习考试,所以自己的读书笔记也就落下了. 现在只剩下最后的单片机了,还有四天时间,现在复习?算啦,等到最后一天再说吧. ~~额 慢慢的我已经习惯这节奏,喜欢上裸考的心跳~关于目标文件的相关知识,其实还是蛮多的.我能做到的就是选取自己需要的知识去学习.(其实是自己能理解和在时间不浪费的情况下去选取值得学习的知识,从大体上去掌握.这可能和研究这些编译链接的细节的最初出发点是相违背的,最初的出发点是想要弄清楚细节,但是从另外一个角度来思考,重点是编译和链接,对于这其中的小细节,忽略也是可以接受的).一、如何引申出符号修饰与函数签名的概念?小生有仔细的思考过这个问题,但是最后还是选择总 阅读全文

大三小生浅谈如何学C

2012-06-30 00:37 by respawn, 1734 阅读, 收藏, 编辑
摘要: 这篇算是自己的随想录吧,反正考试周,寂寞的要死~ 我想说的是:考试周,去你的~1. 首先学习标准C. 学习C,当然先从标准C学起了,如果你对标准C模糊的话,那么请去google吧,实在不行就度娘.直到搞明白为止,要不然 说其他的等于没说. 标准C学习推荐一本比较好的书 - >. 个人感觉这本书还不错. 看完这本书就可以尝试去了 解一下C标准库了,同样有本书推荐 - >.2. 你喜欢的是windows还是*nix? 不要告诉我说,你一直都是使用windows,不知道什么是*nix.我想,要是一个IT的孩纸不知道*nix,悲剧的程度无法想象.要是你 说你只会*nix,不会windows 阅读全文

程序员的自我修养 - 目标文件

2012-06-24 09:52 by respawn, 392 阅读, 收藏, 编辑
摘要: 有点坑爹,刚才写的文章,现在要重新写过.在上篇博文中,最后生成的是object files,也就是目标文件.目标文件在不同的平台,有不同的种类.windows下就有流行的PE(Portable Executable),linux下有ELF(EXECUTABLE LINKABLE FORMAT).我只关心linux下的.查阅了一些资料,这里总结一下.先来看一下ELF的文件类型.首先看看我们生成的helloworld.o的文件类型.这里是什么意思?慢慢解释.在书中,作者添加了一种:核心转储文件(Core Dump File) 当进程意外终止时,系统可以将该进程的地址空间的内同及终止时的一些其他.. 阅读全文

程序员的自我修养 - 被隐藏的过程

2012-06-24 08:55 by respawn, 611 阅读, 收藏, 编辑
摘要: >是用hellowolrd开始说起的,我也不能免俗,也从helloworld说起.(又是一个helloworld,自从与编程结缘,就和helloworld挂钩了.)编译的过程可以分为四个阶段,分别是:Preprocessed(预处理), Compilation(编译), Assembly(汇编), Linking(链接).在不同的阶段,需要使用不同的工具处理.举个例子,在使用gcc编译程序的时候,最简单的命令就是: gcc helloworld.c背后的机制是: gcc会调用工具执行预处理,编译,汇编,链接,最后产生二进制可执行文件.借用一句简单的话解释就是:gcc这个命令只是这些后台程 阅读全文

程序员的自我修养 - 新的起点

2012-06-24 07:38 by respawn, 441 阅读, 收藏, 编辑
摘要: 开始的时候,就着重推荐一下>这本书,的确是本好书.虽然自己现在看得还不多,但是已经很明显的感觉到书中的内容对自己的帮助很大.如果你是一个C/C++程序员,又苦于段时间内处于停滞不前的状态,那么可以阅读一下这本书,会找到答案的.就像>这本书在第二章开始的时候说道的一样,现在很多IDE已经帮我们处理了项目的构建,操作起来也是很简单的.我们需要做的只是build project,然后run or debug.不错,IDE确实是提高了开发的效率,而且现在的IDE做的越来越人性化,功能也是越来越齐全.别的不说,大名鼎鼎的VS可是拥有很多用户的.另外知名的IDE还有像eclipse,netbe 阅读全文