2017年10月17日

数据结构之优先队列

摘要: 模型 优先队列是允许至少下列两种操作的数据结构:插入,和删除最小者。 插入等价入队,删除等价出队。 二叉堆 二个性质: 结构性 堆序性 结构性质 堆是一颗被完全填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入。这样的树称为完全二叉树。 利用数组表示二叉堆 一个堆数据结构由一个数组,一个代 阅读全文

posted @ 2017-10-17 09:17 Mr.Tan& 阅读(1258) 评论(1) 推荐(2) 编辑

2017年10月12日

程序员的自我修养十内存

摘要: 内存是承载程序运行的介质,也是程序进行各种运算和表达的场所。 10.1 程序的内存布局 现代的应用程序都运行在一个内存空间里,在32位系统里,这个内存空间拥有4GB(2的32次方)的寻址能力。现在的应用程序可以直接使用32位地址进行寻址,这被称为平坦的内存模型。在平坦的内存模型中,整个内存是一个统一 阅读全文

posted @ 2017-10-12 14:42 Mr.Tan& 阅读(2015) 评论(1) 推荐(7) 编辑

2017年9月28日

程序员的自我修养九Windows下的动态链接

摘要: 9.1 DLL简介 DLL即动态链接库的缩写,它相对于Linux下的共享对象。 Windows下的DLL文件和EXE文件实际上是一个概念,它们都是有PE格式的二进制文件。 微软希望通过DLL机制加强软件的模块化设计,使得各种模块之间能够松散地组合、重用和升级。 9.1.1 进程地址空间和内存管理 一 阅读全文

posted @ 2017-09-28 09:48 Mr.Tan& 阅读(1614) 评论(0) 推荐(7) 编辑

2017年9月15日

程序员的自我修养七动态链接

摘要: 7.1 为什么要动态链接 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率,原先现在程序规模也随之扩大。但静态链接的缺点也暴露出来:浪费内存、磁盘空间、模块更新困难。 静态链接的方式对于计算机内存和磁盘的空间浪费非常严重。特别是多线程 阅读全文

posted @ 2017-09-15 09:24 Mr.Tan& 阅读(1761) 评论(0) 推荐(1) 编辑

2017年9月8日

程序员的自我修养六可执行文件的装载与进程

摘要: 可执行文件只有装载到内存以后才能被CPU执行 6.1进程虚拟地址空间 程序和进程的区别: 程序:是一个静态概念,它就是一些预先编译好的指令和数据集合的一个文件。 进程:是一个动态概念,它是程序运行时的一个过程,很多时候把动态库叫做运行时。 程序被运行起来以后,它就拥有了独立的虚拟地址空间。虚拟地址空 阅读全文

posted @ 2017-09-08 07:54 Mr.Tan& 阅读(1645) 评论(0) 推荐(4) 编辑

2017年8月29日

程序员的自我修养五Windows PE/COFF

摘要: 5.1 Windows的二进制文件格式PE/COFF PE文件格式事实上与ELF同根同源,它们都是由COFF格式发展而来。 5.2 PE前身——COFF 在win下,Command Prompt for vs 2017,cd命令进入源代码所在目录: 运行命令: “cl”是VISUAL C++的编译器 阅读全文

posted @ 2017-08-29 10:54 Mr.Tan& 阅读(2450) 评论(0) 推荐(3) 编辑

2017年8月22日

程序员的自我修养四静态链接

摘要: 真正了不起的程序员对自己的程序的每一个字节都了如执掌。 当我们有两个目标文件时,如何将它们链接起来形成一个可执行文件?这个过程发生了什么?这基本上就是链接的核心内容:静态链接。 4.1 空间与地址分配 对于链接器来说,整个链接过程中,它就是将几个输入目标文件加工后合并成一个输出文件。 但链接器如何将 阅读全文

posted @ 2017-08-22 10:16 Mr.Tan& 阅读(1363) 评论(0) 推荐(3) 编辑

2017年8月10日

程序员的自我修养三目标文件里有什么

摘要: 编译器编译源代码后生成的文件叫做目标文件。 目标文件从结构上讲,它是已经编译后的可执行文件格式,只是没有经过链接的过程。 3.1目标文件的格式 现在PC平台流行的是可执行文件格式,主要是win下的PE和Linux的ELF,它们都是COFF格式的变种。 不光是可执行文件按照可执行文件格式存储。动态链接 阅读全文

posted @ 2017-08-10 10:13 Mr.Tan& 阅读(1460) 评论(0) 推荐(0) 编辑

2017年8月7日

程序员的自我修养二编译和链接

摘要: 通常的开发环境都是流行的集成开发环境(IDE)。这样的IDE一般都是将编译和链接的过程一步完成,通常将这种编译和链接合并到一起的过程称为构建。 2.1被隐藏了的过程 上面代码文件名为:hello.c,编译代码的过程可以分解为4个步骤: 预处理 编译 汇编 链接 2.1.1 预编译 源代码文件hell 阅读全文

posted @ 2017-08-07 09:32 Mr.Tan& 阅读(1463) 评论(0) 推荐(4) 编辑

2017年8月2日

程序员的自我修养一温故而知新

摘要: 1.1从Hello World说起 目的:从最基本的编译,静态链接到操作系统如何转载程序,动态链接及运行库和标准库的实现,和一些操作系统的机制。了解计算机上程序运行的一个基本脉络。 1.2变不离其宗 计算机最关键的三个部分:CPU,内存,I/O控制芯片。 早期的计算机:没有复杂的图形功能,CPU和内 阅读全文

posted @ 2017-08-02 15:39 Mr.Tan& 阅读(7401) 评论(28) 推荐(70) 编辑

导航