zoukankan      html  css  js  c++  java
  • 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

    参考资料

  • 相关阅读:
    辅助随笔:因知识点不足暂时错过的题目
    NOIP2019翻车前写(and 抄)过的代码
    NOIP2019翻车前计划以及日记
    Luogu P3706 [SDOI2017]硬币游戏
    Luogu P5296 [北京省选集训2019]生成树计数
    Luogu P3307 [SDOI2013]项链
    Gaussian整数
    Problem. S
    LOJ6696 复读机 加强版
    数据库约束
  • 原文地址:https://www.cnblogs.com/20145240lsj/p/5906170.html
Copyright © 2011-2022 走看看