20145240 《信息安全系统设计基础》第二周学习总结
20145240 《信息安全系统设计基础》第二周学习总结
教材学习内容总结
课本学习内容
教材第一章
-
信息就是位+上下文,系统中所有信息——包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网上传送的数据,都是由一串位表示的,区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。ASCII字符构成的文件是文本文件,所有其他文件都是二进制文件。
-
Hello程序的生命周期从高级C语言程序开始,每条C语句被转化为一系列“低级机器语言”指令,然后这些指令按照“可执行目标程序”的格式打包,并以二进制磁盘文件的形式存放起来,目标程序也称为“可执行目标文件”。
-
源文件到目标文件的转化由编译器驱动程序完成,unix> gcc -o hello hello.c 这里GCC编译器驱动程序读取源文件并把它翻译成一个可执行目标文件。翻译过程分为四个阶段:预处理、编译、汇编、链接,预处理器、编译器、汇编器、链接器一起构成编译系统。
-
系统的硬件组成:总线、I/O设备、内存、处理器
-
文件就是字节序列
-
并发:一个同时具有多个活动的系统。并行:用并发使一个系统运行地更快,并行可以在计算机系统多个抽象层次上运用。按照系统层次结构由高到低的顺序强调三个层次:线程级并发、指令级并行、单指令多数据并行
-
在处理器里,指令集结构提供了对实际处理器硬件的抽象
-
计算机系统是由硬件和系统软件组成的,程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件
-
处理器读取并解释存放在主存里的二进制指令
-
操作系统内核是应用程序和硬件之间的媒介,提供三个基本的抽象:
①文件是对I/O设备的抽象
②虚拟存储器是对主存和磁盘的抽象
③进程是对处理器、主存和I/O设备的抽象
- 网络提供了计算机系统之间通信的手段
教材第七章:链接
1.静态链接器主要任务:符号解析、重定位
2.目标文件形式:可重定位目标文件、可执行目标文件、共享目标文件
3.每个可重定位目标模块m都有一个符号表,它包含m所定义和引用的符号的信息。有三种不同的符号:
①由m定义并能被其他模块引用的全局符号
②由其他模块定义并被模块m引用的全局符号
③只被模块m定义和引用的本地符号
vim编辑器
Vim的6种基本模式:
Vim具有6种基本模式和5种派生模式
-
普通模式(Normal mode)
Vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。 在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
-
插入模式(Insert mode)
在这个模式中,大多数按键都会向文本缓冲中插入文本。在插入模式中,可以按ESC键回到普通模式。
-
可视模式(Visual mode)
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
-
选择模式(Select mode)
这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
-
命令行模式(Command line mode)
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
-
Ex模式(Ex mode)
这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。
游标移动
在进入vim后,按下i键进入插入模式。在该模式下您可以输入文本信息,下面请输入如下三行信息:
插入模式
在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入
保存文档
从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
退出vim
- 命令行模式下退出vim
从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
-普通模式下退出vim
普通模式下输入Shift+zz即可保存退出vim
删除文本
- 普通模式下删除vim文本信息
vim重复命令
- 重复执行上次命令
在普通模式下.(小数点)表示重复上一次的命令操作;普通模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作
- 执行指定次数相同的命令
输入10x,删除10个连续字符
输入3dd,将会删除3行文本
游标的快速跳转
- 行间跳转
- 行内跳转
复制粘贴和剪切
- 复制及粘贴文本
普通模式中使用y复制
普通模式中,yy复制游标所在的整行(3yy表示复制3行)
普通模式中,y^ 复制至行首,或y0。不含光标所在处字符。
普通模式中,y$ 复制至行尾。含光所在处字符。
普通模式中,yw 复制一个单词。
普通模式中,y2w 复制两个单词。
普通模式中,yG 复制至文本末。
普通模式中,y1G 复制至文本开头。
普通模式中使用p粘贴
普通模式中,p(小写)代表粘贴至光标后(下)
普通模式中,P(大写)代表粘贴至光标前(上)
- 剪切及粘贴
其实前面讲得dd删除命令就是剪切,你每次dd删除文档内容后,便可以使用p来粘贴。
查找替换
- 替换和撤销(Undo)命令
替换和Undo命令都是针对普通模式下的操作
输入11G,跳转到11行
输入fa跳转到第一个a字符
输入r,并且输入b,a字符被b字符替换(实用)
输入R替换字符,输入新字符串,输入完按ESC回到普通模式(实用)
输入cc替换整行字符,输入新字符串,输入完按ESC回到普通模式
输入cw 替换一个英文字(word),输入完按ESC回到普通模式(实用)
输入~,翻转游标所在字符的大小写
输入C 替换至行尾,即游标所在处以后的字都会被替换,输入完按ESC回到普通模式
输入u 撤销上一次的操作
快速缩进
-
使用命令进行快速调整缩进操作
普通模式下输入15G,跳转到15行 普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽) 普通模式下输入<< 整行向左回退 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数
-
shiftwidth命令
shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 获取目前的设定值
-
调整文本位置
命令行模式下输入:ce(center)命令使本行内容居中 命令行模式下输入:ri(right)命令使本行文本靠右 命令行模式下输入:le(left)命令使本行内容靠左
查找
- 快速查找
普通模式下输入/然后键入需要查找的字符串 按回车后就会进行查找。 ?与/功能相同,只不过?是向上而/是向下查找。 进入查找之后,输入n和N可以继续查找 n表示继续查找,N反向查找
-
高级查找
普通模式下输入\*寻找游标所在处的单词 普通模式下输入\#同上,但 \* 是向前(上)找,#则是向后(下)找 普通模式下输入g\*同\* ,但部分符合该单词即可 普通模式下输入g\#同\# ,但部分符合该单词即可
多文件编辑
- 使用vim编辑多个文件
命令行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件
命令行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件
-
进入vim后打开新文件
命令行模式下输入:e 3.txt 打开新文件3.txt 命令行模式下输入:e# 回到前一个文件 命令行模式下输入:ls可以列出以前编辑过的文档 命令行模式下输入:b 2.txt(或者编号)可以直接进入文件2.txt编辑 命令行模式下输入:bd 2.txt(或者编号)可以删除以前编辑过的列表中的文件项目 命令行模式下输入:e! 4.txt,新打开文件4.txt,放弃正在编辑的文件 命令行模式下输入:f 显示正在编辑的文件名 命令行模式下输入:f new.txt,改变正在编辑的文件名字为new.txt
-
恢复文件
如果因为断电等原因造成文档没有保存,可以采用恢复方式,vim -r进入文档后,输入:ewcover 1.txt来恢复
可视模式
-
可视模式命令简介
在普通模式下输入v(小写),进入字符选择模式,就可以移动光标,光标走过的地方就会选取。再次按下v会后就会取消选取。 在普通模式下输入Shift+v(小写),进入行选择模式,按下V之后就会把整行选取,您可以上下移动光标选更多的行,同样,再按一次Shift+v就可以取消选取。 在普通模式下输入 Ctrl+v(小写),这是区域选择模式,可以进行矩形区域选择,再按一次Ctrl+v取消选取。 在普通模式下输入d删除选取区域内容 在普通模式下输入y复制选取区域内容
视窗操作
命令行模式下输入:sp 1.txt 打开新的横向视窗来编辑1.txt
命令行模式下输入:vsp 2.txt 打开新的纵向视窗来编辑1.txt
普通模式下Ctrl-w s 将当前窗口分割成两个水平的窗口
普通模式下Ctrl-w v 将当前窗口分割成两个垂直的窗口
普通模式下Ctrl-w q 即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q!
普通模式下Ctrl-w o 打开一个视窗并且隐藏之前的所有视窗
普通模式下Ctrl-w j 移至下面视窗
普通模式下Ctrl-w k 移至上面视窗
普通模式下Ctrl-w h 移至左边视窗
普通模式下Ctrl-w l 移至右边视窗
普通模式下Ctrl-w J 将当前视窗移至下面
普通模式下Ctrl-w K 将当前视窗移至上面
普通模式下Ctrl-w H 将当前视窗移至左边
普通模式下Ctrl-w L 将当前视窗移至右边
普通模式下Ctrl-w - 减小视窗的高度
普通模式下Ctrl-w + 增加视窗的高度
在vim执行外部命令
在命令行模式中输入!可以执行外部的shell命令
:!ls 用于显示当前目录的内容
:!rm FILENAME用于删除名为 FILENAME 的文件
:w FILENAME可将当前 VIM 中正在编辑的文件另存为 FILENAME 文件
GCC的使用
编译器gcc的使用
- gcc 支持编译的一些源文件后缀名
gcc 编译程序的流程
用 gcc 编译一个经典 C 程序
gcc 到底背着我们做了什么
-
第一步,在Xfce终端中输入
$ gcc -E hello.c -o hello.i
hello.i这是一个经过预处理器处理之后的C源文件,在bash试试这个命令,然后用vim打开它。
gcc的-E参数可以让gcc在预处理结束后停止编译过程。
-
第二步,将hello.i编译为目标代码,gcc默认将.i文件看成是预处理后的C语言源代码,因此它会直接跳过预处理,开始编译过程。
$ gcc -c hello.i -o hello.o
-
第三步,gcc连接器将目标文件链接为一个可执行文件,一个大致的编译流程结束
gcc hello.o -o hello
gcc 编译模块化的程序
gdb的使用
gdb是GNU开发组织发布的一个强大的UNIX/Linux下的程序调试工具。
Makefile 使用
教材学习中的问题和解决过程
已经敲过main.c这个文件了,第一次没有显示找不到main.c,但是没有反应,第二次打开后显示没有main.c这个文件
本周代码托管截图
在实验楼做实验时,保存代码没有保存到code文件夹中就直接保存了,因此部分代码没有保存下来,剩余了小部分
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/2 | 18/18 | |
第二周 | 300/500 | 1/3 | 20/38 |