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

参考资料

原文地址:https://www.cnblogs.com/20145240lsj/p/5906170.html