- 博客(8)
- 资源 (2)
- 收藏
- 关注
转载 抽象与计算机课程
如果要问计算机领域中哪个思想对我的帮助最大,那么应该就是抽象(abstraction)了。本文主要介绍一下抽象以及它和计算机课程的关系。第一次接触抽象是我大学低年级学数据结构的时候,记得很清楚当时学一个概念叫抽象数据类型(abstract data type),大概意思就是一个数据结构,接口是一回事,实现是另一回事,比如栈,作为使用者你只需要知道它有push、pop、isEmpty等方法,但它的底层
2017-04-28 19:48:52 701
原创 从操作系统的角度看进程的建立过程
进程的建立一个进程最关键的特征就是它拥有自己独立的虚拟地址空间,这让它有别于其他的进程这次我们通过进程的建立来看一看可执行文件的装载很多时候一个程序被执行的同时都伴随着一个新进程的被建立,一般这种情况:创建一个进程,然后装载可执行文件并执行。 在有虚拟储存的情况下,上述过程做了三件事: - 创建一个独立的虚拟地址空间 - 读取可执行文件头,并且建立虚拟地址空间和可执行文件之间的映射关系 -
2017-04-27 21:38:22 1112
原创 【C++】static 的实现原理及其表现
观察以下代码:int testStatic(){ static int count= 10; //这里的赋值实际上从未被执行过,这个count的初始化在程序装载的时候被执行 //它的值被放在了全局变量区 //这个过程发生在main函数被执行之前(和全局变量的初始化类似,在所有程序执行之前已经完成了初始化) return count--;}我们定义了一个sta
2017-04-22 11:13:41 2889 2
原创 动态链接的实现
动态链接和静态链接不同,为了节省空间,在链接的时候,动态库只是将自己的符号表与可执行文件绑定在了一起生成了一个.o的可执行文件,真正的链接,实际上发生在程序运行实施装载的时候。 装载的时候,操作系统将动态链接器加载完后(动态链接器也是一个共享对象),就将控制权交给动态链接库器的入口地址。当动态链接器得到控制权后,它就开始将自身进行初始化,然后根据当前的环境参数,对可执行文件进行动态
2017-04-21 21:40:16 554
原创 变长参数函数的实现及原理
变长参数其实是C语言的特殊参数形式 例如printf()函数和scanf()函数等:int printf(const char * format,...);如此声明,printf函数除了第一个函数类型为const char 之外,其后可以追加任意数量、任意类型的参数。如何实现呢?在函数的实现部分,可以使用stdarg.h里的多个宏来访问各个额外的参数:假设lastarg是变长参数函数的最后一个具名
2017-04-21 21:36:36 926
原创 接口的设计(让类被正确的使用)——《Effective c++》
要开发一个不容易被误用的类,我们就要首先考虑用你的类的用户可能会犯怎样的错误 //explicit 预防出现隐式转换class String {String ( int n ); //本意是预先分配n个字节给字符串String ( const char* p ); // 用C风格的字符串p作为初始化值...}String s2 ( 10 ); //OK 分配10个字节的空字符串St
2017-04-20 11:04:50 408
原创 对引用的一些测试和学习
类的多态class A{public: virtual void test(){ cout << "this is A"<<endl; };};class B :public A{public: void test(){ cout << "this is B"<<endl; }; };void test(){ A a; a.test();// A B
2017-04-20 10:58:22 569
原创 未来一年的计划
大学已经一年半了,做一点总结和对未来的规划。 超大部头的《深入理解计算机系统》,花费时间超过两个月,也将将看完了。但真要说点什么,感觉也说不出来,因为这本书,真的有点太宽泛了。但真的让我对计算机有了一个非常非常深入的理解,我觉得每个计算机的学习者都应该去看看这本书。从接触c++到现在,也差不多一年了,这一年做的事大概如下:大致看完了《STL源码剖析》,并实现了一个空间适配器和迭代器(特性的萃取)
2017-04-08 17:30:23 3918
超级马里奥游戏源码和执行文件
2019-03-04
opencv+C++实现超级马里奥(源码)
2018-07-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人