今天第二更,废话不说上干货

上一章我们学习了内存和cpu间的互动方式,了解到内存的空间非常有限,所以这样就需要我们在编程的时候尽可能的节省内存空间,用最少的空间发挥最大的效果,以下是几种节约内存的方法:

函数共用

被调用方清理栈

数据压缩

函数公用:

假设有两个程序a,b,他们中有一个共同的代码都是用来发出显示指令的,这样就用了双倍的内存空间

windows有一个dll(动态加载)工具,把很多共有的指令集合到了一起,这样在软件需要的时候只需用函数调用就可以了,省去了写一长串代码的麻烦

被调用方清理栈:

这里引入了栈的概念,栈存放在内存区域,用于计算,存储一些临时使用的值,例如程序计算所产生的临时值,使用完需要回收

清理栈在什么时候完成?

答:在一个函数被调用后

windows由stdcall来做栈,其他方式要用一次声明一次

内存的物理结构:

扇区——>磁道(磁盘中的圆圈)

读写用簇的方式进行

一簇=一个扇区(早年)

簇:windows对于磁盘读写的单位,会根据磁盘大小而改变,簇与磁盘大小成正相关

一个扇区=512个字节

若存一个小于512b的文件,它会变成512b(byte)

1簇里不能有相同的文件

数据压缩:(节约磁盘)

RLE压缩算法

从数据来看:

AAAAAABBCCCDDDD

压缩后:A6B2C3D4

但是此种压缩方式有致命弱点

若:AAAA 4444 则会压缩成 A444,但这种压缩结果是错误的

所以RLE可以压缩图像(传真类型),EXE文件,但是无法压缩文本

文本压缩使用哈夫曼算法(很复杂,简单说)

大致原理:先找出出现的频率

例如:A:200 D::50 C:221

分别使用编码的方式,最短编码如1

按差进行编码,将编码方案与位数计算出来

使用电报的方式将常用编号做成短的,不常用的做成长的

最高压缩率能达到10%

以上所述为可逆压缩(可还原)

不可逆压缩(JPEG图片格式)会损坏文件

固态硬盘原理:本身没有改变,在磁盘扇区进行改变,通过类似集成IC操作,也是以出的方式读取,与U盘原理除通道不同其他一模一样

混合硬盘:有磁盘结构,还有一个IC比磁盘快,作为磁盘缓存

read磁盘阵列:

将数据分为几种块,使几种块同步读取,可理解为最早的分布式

小白的CTF学习之路8——节约内存的编程方式的更多相关文章

  1. 小白的CTF学习之路2——二进制数据基础与运算(上)

    今天的第二更,被我拖到了傍晚,嘿嘿,二进制这方面让本就数学不好的我很头疼,所以研究了一段时间 在学习之前我们先了解几个问题: 32位是几个字节? 01011100对于十进制是多少? 00001111向 ...

  2. 小白的CTF学习之路7——内存与硬盘

    前天去网吧跟朋友包宿,导致昨天一整天都报废,今天早上研究了一下nethunter导致手机成功变砖,感冒不停地咳嗽,这些理由应该足够我前两天拖更了吧,下面开始正题 磁盘学习路线 虚拟缓存 虚拟内存 节约 ...

  3. 小白的CTF学习之路1——程序与CPU

    刚刚注册了这个博客园,尽量保持每日一更(*/ω\*) 今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记 首先我们学习程序与CPU之前需要 ...

  4. 小白的CTF学习之路5——内存的逻辑结构

    很衰的一天,各种意料之外的问题,但都挡不住我每日一更的步伐 内存的逻辑结构大致分为以下几种: 数组 栈与队列 链表 二叉树 以上,数组,栈,链表是我这章要说明的 在学习前需要了解的两个问题: 1.内存 ...

  5. 小白的CTF学习之路4——内存

    明天要进行二模考试了,沉住气,加油,能过 内存是学C路上必不可少的一环,一定要非常认真的去学 内存的物理结构: ROM:只读内存——早期的手机 RAM:读写(数据断点既消) DRAM:经常更新 SRA ...

  6. 小白的CTF学习之路6——阶段测评

    刚才考了自己一次,下面我把题和答案放到下面 CPU中不含有以下选项中的  C A:     运算器 B:      寄存器 C:     内存 D:     时钟 这是一道送分题,CPU包含以下几种原 ...

  7. 小白的CTF学习之路3——二进制数据基础与运算(下)

    处理了二进制的整数运算,下面我们来进行令人绝望的浮点数运算 我们先来看一下float事列程序: #include<"stdio.sh"> int main() { fl ...

  8. 新手小白的Linux学习之路

    大家好,我是一个零基础的新手小白,在此和大家分享一下新手小白的学习之路.欢迎各位大神指教!谢谢 Linux简介: Linux操作系统诞生于1991年10月,由芬兰赫尔辛基大学的在校生Linus Tor ...

  9. 小白的mapbox学习之路-显示地图

    刚接触mapbox,只是简单记下自己的学习之路,如有错误,欢迎大神指正 1-头部引入链接 2-body中定义一个div块,用来显示地图 3-在script中创建一个map对象,并设置相关参数 mapb ...

随机推荐

  1. springboot中logback配置

    <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...

  2. 关于ASP.NET 服务器报错 Server Error in '/' Application Runtime Error 错误及解决方法

    今天遇到一个错误 程序在服务器上运行时报错 先贴上错误代码 自己也在网上找了一些解决方法,把错误定位到服务器的配置文件也就是Web.config的问题, 于是在system.web节点下 加上cust ...

  3. HTML的基础样式之CSS

    一.初始CSS 1.1.介绍CSS 1.CSS定义如何显示HTML元素. 2.当浏览器读到一个样式表,他就会按照这个样式表来对文档进行格式化(渲染). 1.2.CSS语法 每个CSS样式由两个组成部分 ...

  4. 使用WebClient调用第三方接口

    需要调用一个第三方接口,传参返回数据 本来是很简单的一个需求,搞了一天没整好 首先在POSTMAN中测试没有问题,但是使用jquery ajax在前台就会涉及到跨域 虽然设置了 无论怎么写都会报错 C ...

  5. Charles篡改后台数据

    1.打开Charles找到相对应的接口 2.在接口上右键选择Breakpoints打断点. 3.重新请求截断接口,Charles会多弹出一个截断窗口如下图(第一个修改请求的,第二图是修改返回的) 点击 ...

  6. 查询sqlserver数据库表的记录数

    SELECT a.name, b.rows FROM sysobjects AS a INNER JOINsysindexes AS b ON a.id = b.idWHERE (a.type = ' ...

  7. java Graphics2D drawString()内容换行问题

    //字符串总宽度 private int getStringLength(Graphics g,String str) { char[] strcha=str.toCharArray(); int s ...

  8. [BZOJ2252]矩阵距离(BFS)

    题意 输入矩阵m行n列(m<=500,n<=500),只含0.1,输出离每个元素距离最近的1的距离,其中距离定义为D(aij,akl)=abs(i-k)+abs(j-l). 示例: 输入: ...

  9. jquery全选的选中和取消选中

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. 解决layui table方法渲染时时间格式问题

    在显示时间时没有成功 ,{field:'showTime',title:'要显示的时间'} 崎岖过程就不详述了,直接上干货 @官网相关文档1.@官网相关文档2.@参考文章1.@参考文章2 浏览了很多资 ...