二维码:
1. 教材第四章学习总结
html
2. mybash实现 
二维码
1. 第八周课下做业
java
2. 第八周学习总结
二维码
1. 第九周课下做业
linux
2. 第九周学习总结
实践上有什么经验教训git
- 早作准备,有问题尽可能本身解决。说实在的,不少时候难题对于你们都是同样难,本身动手解决才能在下次遇到问题时,有办法解决
基本上抓住了程序员
1.虚拟内存的含义和存在的意义算法
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它一般是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在须要时进行数据交换。 别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序很大或不少,则会致使内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机缺少运行程序或操做所需的随机存储器 (RAM),则 Windows 会用之进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入与移出分页文件可释放RAM,以便完成工做。 通常而言,计算机的RAM越多,程序运行得越快。若计算机的速率因为RAM可用空间匮乏而减缓,则可尝试借增长虚拟内存来进行补偿。可是,计算机从RAM读取数据的速率要比从硬盘读取数据的速率快,于是扩增RAM容量(可加内存条)是最佳选择。
2.C语言中的位级运算的实际应用有什么编程
按位存储的数据的清零和置位
3.解释内存中的栈、堆和静态存储区的用法?vim
堆区: 1.存储的所有是对象,每一个对象都包含一个与之对应的class的信息。(class的目的是获得操做指令) 2.jvm只有一个堆区(heap)被全部线程共享,堆中不存放基本类型和对象引用,只存放对象自己. 3.通常由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。 栈区: 1.每一个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每一个栈中的数据(原始类型和对象引用)都是私有的,其余栈不能访问。 3.栈分为3个部分:基本类型变量区、执行环境上下文、操做指令区(存放操做指令)。 4.由编译器自动分配释放 ,存放函数的参数值,局部变量的值等. 静态区/方法区: 1.方法区又叫静态区,跟堆同样,被全部的线程共享。方法区包含全部的class和static变量。 2.方法区中包含的都是在整个程序中永远惟一的元素,如class,static变量。 3.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另外一块区域。
4.Y86和X86的区别和联系数组
Y86是一个指令体系结构(ISA),它是一个写这本书的做者出的指令集.目的是为了让咱们更加清晰地了解ISA,就像在读编译原理的时候,做者会教你作个编译器是同样的道理. Y86和X86的区别在于,有的时候Y86须要两条指令来达到X86一条指令就能够达成的目的. 好比对于X86指令中的addl $4,%ecx这样的指令,因为Y86当中的addl指令不包含当即数,因此Y86须要先将当即数存如寄存器,即便用irmovl指令,而后再使用addl来处理加法运算. 总的来讲,Y86就是X86的一个缩减版,他的目的就是以简单的结构来实现一个处理器,帮助咱们了解处理器的设计和实现.
5.什么是循环展开?安全
循环展开就是经过在每次迭代中执行更多的数据操做来减少循环开销的影响。其基本思想是设法把操做对象线性化,而且在一次迭代中访问线性数据中的一小组而非单独的某个。这种思想主要适用于计算循环索引和测试循环条件的开销部分所占比重过大(相对于循环体内执行的指令而言),连续执行一组相同的指令,能提升指令的cache命中率。
6.对程序引用的局部性和局部存储有什么关系
虚拟存储管理的效率与程序局部性程序有很大关系。根据统计,进程运行时,在一段时间内,其程序的执行每每呈现出高度的局限性,包括时间局部性和空间局部性。 一、时间局部性:是指若一条指令被执行,则在不久的未来,它可能再被执行。 二、空间局部性:是指一旦一个存储单元被访问,那它附近的单元也将很快被访问。
7.使用动态静态连接库的缘由
避免重复写代码
8.系统调用是如何实现的
经过exev或者其余调用系统命令的函数
9.如何规避C程序中常见的与内存有关的错误?
类型 1:内存未分配成功,却使用了它。 方 法:在使用以前检查指针是否为NULL。 1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进行断言检查。 2)当使用malloc或new来申请内存时,应该用if(p != NULL)进行防错检查。 类型 2:引用了还没有初始化的指针 原 因:内存的缺省初始值到底是什么并无统一的标准,在使用以前都进行初始化。 1)没有初始化的观念。 2)内存的缺省值是未定义,即垃圾值。 类型 3:越界操做内存 原 因:内存分配成功且初始了,但越界操做是不容许的。 例 如:在使用数组时常常发生下标“多1”或“少1”,特别是在for循环语句时。 类型 4:忘记释放内存,形成内存泄漏。 原 因:含有这种类型错误的函数,每被调用一次,就丢失一块内存。当内存充足时看不到这种错误带来的影响,当内存耗尽时系统提示:“内存耗尽”。所以,动态内存的申请与释放必须配对,程序中malloc与free的使用次数要相同。 类型 5:释放了内存却继续使用它 原 因:对应的状况有2种 1)返回了“栈内存的指针或引用”,由于堆栈中的变量在函数结束后自动销毁。 2)某块内存被free后,没有将指向该内存的指针设置为NULL,致使产生“野指针”。
10.I/O是一种文件吗?
linux把设备看成一种特殊文件整合到文件系统中。 每一个I/O设备分配一个路径,一般放在/dev目录下,每一个设备都必须有主次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。 这些设备中,有些设备是对实际物理硬件的抽象,而有些设备则有内核自身提供的功能(不能依赖于特定的物理硬件,又称为“虚拟设备”)
11.客户端服务器通讯的基本流程
服务器端: – 申请一个socket (socketWatch)用来监听的 – 绑定到一个IP地址和一个端口上 – 开启侦听,等待接授客户端的链接 – 当有链接时建立一个用于和链接进来的客户端进行通讯的socket(socketConnection) – 即续监听,等侍下一个客户的链接 客户端: – 申请一个socket(socketClient) – 链接服务器(指明IP地址和端口号)
12.信号量如何实现互斥的?
信号量,也就是操做系统中所提到的PV原语,能达到互斥和同步的效果,这就是今天咱们所要讲述的信号量线程控制。 PV原语是对整数计数器信号量sem的操做,一次P操做可以使sem减一,而一次V操做但是sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具备访问权限。当信号量的值大于零或等于零的时候,该进程(或线程)具备对公共资源访问的权限,不然,当信号量的值小于时,该进程(或线程)就会被阻塞,直到信号量的值大于或等于一。
竞赛
参加密码技术竞赛,在初赛中取得本科生小组中第一名
- 能够在学习以前先去看看别人的学习总结,就像看看天气预报不要一点准备都没有;在实践 的时候克服本身的畏难心理;
- 学习的时候经常抓不住重点,仍是要多向别人学习
- 结对最好是能有优点互补的,个人学习搭档对于个人帮助是安装软件,实践动手,我能帮到他的是理论学习和编程
- 有问题本身解决。
- 别由于学习任务重就不出去玩从而影响到对学习的热情。
- 基本天天都学,具体多长时间说不清楚,一天至少半个小时。
- 比上个学期好不少,不过仍是很拖沓
- 学无止境
- 有了发博客的习惯应该不会轻易停下来,不过到了大四可能博客内容会变成复习国考。
- 写博客