• 20145229《信息安全系统设计基础》期中总结


    20145229《信息安全系统设计基础》期中总结

    教材学习内容总结

    Ubuntu版Linux常用快捷键

    CTRL+ALT+T: 打开终端
    CTRL+SHIFT+T: 新建标签页,编程时很重要
    ALT+数字N: 终端中切换到第N个标签页,编程时很重要
    CTRL+C:  中断程序运行
    Ctrl+D: 键盘输入结束或退出终端
    Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行
    Ctrl+Z: 将当前程序放到后台运行,恢复到前台为命令fg
    Ctrl+A: 将光标移至输入行头,相当于Home键
    Ctrl+E: 将光标移至输入行末,相当于End键
    Ctrl+K: 删除从光标所在位置到行末
    Alt+Backspace: 向前删除一个单词
    Tab: 终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成
    上下键盘: 切换命令历史,刚输入一个很长的命令,按上键就可以恢复
    Shift+PgUp: 将终端显示向上滚动
    Shift+PgDn: 将终端显示向下滚动
    

    Linux常用命令

    Linux中命令格式为:command [options] [arguments] []表示是可选的,即组成结构为:命令 [选项] [参数]

    man命令

    • 如果我们在 Linux 环境中遇到困难,可以使用 man 命令,它是Manual page的缩写,作用是调用手册页。
    • 如果我们想查看 man 命令本身的使用方式,可以输入 man man。

    常用选项:

    • a:在所有的man帮助手册中搜索
    • k:根据关键字搜索联机帮助,是一种模糊搜索
    • f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息
    • P:指定内容时使用分页程序
    • M:指定man手册搜索的路径

    数字:指定从哪本man手册中搜索帮助
    关键字:指定要搜索帮助的关键字

    cheat命令

    • cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能
      cheat安装过程
    • 输入sudo apt-get install pyhton安装pyhton
    • 输入sudo apt-get install pyhton-pip安装pip
    • 输入sudo pip install docopt pygments安装所需要的python依赖包
    • 输入git clone
    • 输入cd cheat进入cheat目录
    • 输入sudo python setup.py install运行‘setup.py’

    grep命令

    可以对文件全文检索,比如你接手一个C语言项目,里面有上百个C源文件,想找找main函数在那个文件中,你可以通过grep -n main *.c,快速找到main在哪个C文件中并指出在第几行。grep支持正则表达式,正则表达式也是一个重要的元知识。可以通过cheat grep学习grep命令。

    • 命令格式:grep [options]
    • [options]主要参数:
      -c:只输出匹配行的计数
      -I:不区分大小写(只适用于单字符)
      -h:查询多文件时不显示文件名
      -l:查询多文件时只输出包含匹配字符的文件名
      -n:显示匹配行及行号
      -s:不显示不存在或无匹配文本的错误信息
      -v:显示不包含匹配文本的所有行
      如果想查找某个宏,我们已知宏保存在include文件夹中,所以可以使用下列语句:grep -nr XXX /usr/include(XXX为所要找的宏)

    find命令

    find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
    命令格式:find pathname -options [-print -exec -ok ...]

    常用选项:
    -name:按照文件名查找文件
    -perm:按照文件权限来查找文件
    mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前
    -newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件
    -type:查找某一类型的文件,诸如:b - 块设备文件,d - 目录,c - 字符设备文件,p - 管道文件,l - 符号链接文件,f - 普通文件
    -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
    -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
    举例:查找当前目录下大小大于50M的文件,查找大小大于10K的文件

    • find . -type f -size +10k

    locate命令
    快速搜寻数据库并找到档案,数据库由updatedb程序负责更新。
    命令格式:locate [选择参数] [样式]
    命令参数:
    -e:将排除在寻找的范围之外
    -1:如果是1则启动安全模式,在安全模式下,使用者不会看到权限无法看到的档案。这会使速度减慢,因为 locate必须至实际的档案系统中取得档案的权限资料
    -f:将特定的档案系统排除在外,例如我们没有到必要把proc档案系统中的档案放在资料库中
    -q:安静模式,不会显示任何错误讯息
    -n:至多显示 n个输出
    -r:使用正规运算式 做寻找的条件
    -o:指定资料库存的名称
    -d:指定资料库的路径
    -h:显示辅助讯息
    -V:显示程式的版本讯息
    查找etc目录下所有以sh开头的文件:locate /etc/sh

    whereis which命令

    whereis,which: 告诉你使用的命令工具装在什么地方。Linxu初学者会不习惯Linux的文件系统,C盘呢?D盘呢?用apt-get install安装程序好象也不用我们选择安装位置,程序装在哪了?比如:我们在Linux下上网使用firefox浏览器,大家可以使用whereis firefox或更精确的使用which firefox来看看结果。apt-cache: 可以在使用apt-get install安装一个程序时先找找软件源的库里有没有这个程序,有才可以安装。比如老师推荐了一个调试工具ddd,你可以用apt-cache search ddd查查有没有这个程序。

    sort命令

    将文本文件内容加以排序。可针对文本文件的内容,以行为单位来排序。
    参数:
    m:将几个排序好的文件进行合并。
    n:依照数值的大小排序
    Linux Bash中,ls . | sort 命令的功能是(显示当前目录内容并排序)

    ls命令

    显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
    参数:
    a:显示所有档案及目录
    A:同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
    t:将档案依建立时间之先后次序列出
    列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" : ls -AF
    Linux Bash中,把ls命令显示当前目录的结果存入ls.txt的命令输出重定向命令是(ls > ls.txt)
    vi、 gcc、gdb、make的使用

    用户权限管理

    • who am i指令查看用户
    • sudo addgroup xxx创建用户组
    • sudo useradd -g xxx(用户组名) xxx(用户名)创建一个以xxx为成员的用户组
    • sudo adduser xxx新建用户
    • sudo -l指令切换登录用户
    • Ctrl+D退出当前用户
    • sudo usermod -G sudo xxx为用户添加用户组
    • sudo deluser xxx --remove-home删除用户

    Vim六种模式

    • 普通模式(Normal mode)**:在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。在普通模式中,进入插入模式比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
    • 插入模式(Insert mode)**:在插入模式中,可以按ESC键回到普通模式。
    • 可视模式(Visual mode):命令多与字母v有关,移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。
    • 选择模式(Select mode):这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
    • 命令行模式(Command line mode)**:在命令行模式中,执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
    • Ex模式(Ex mode):这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。

    Vim常用命令总结
    插入:

    • i:在当前光标处进行编辑
    • a:在光标后插入编辑

    退出:

    • :q!:强制退出,不保存
    • :q:退出
    • :wq!:强制保存并退出
    • :wq:保存并退出
    • :w<文件路径>:另存为

    删除:

    • x:删除游标所在的字符
    • dd:删除整行

    行间跳转:

    • nG(n Shift+g):光标移动到第n行

    复制与粘贴:

    • nyy:复制光标所在及其后的整行共n行
    • p:代表粘贴至光标后

    功能设定:

    • set autoindent(ai):设置自动缩进
    • set cindent(cin):设置C语言风格缩进
    • set nu:以显示行号

    GCC编译过程

    预处理:gcc –E hello.c –o hello.i ;gcc –E调用cpp 产生预处理过的C原始程序
    编译:gcc –S hello.i –o hello.s ;gcc –S调用ccl 产生汇编语言原始程序
    汇编:gcc –c hello.s –o hello.o ;gcc -c 调用as 产生目标文件
    链 接:gcc hello.o –o hello ;gcc -o 调用ld 产生可执行文件
    运行: ./hello

    静态库

    静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文 件);链接阶段,选择静态库,后缀名为“.a”;选择动态库,后缀名为“.so”。
    静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o
    静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx//链接到静态库
    注意:
    -L:在库文件的搜索路径列表中添加dir目录
    -l:在头文件的搜索路径列表中添加dir目录

    共享库

    共享库的生成:

    • gcc -fPIC -c xxx.c
    • gcc -shared -o libxxx.so xxx.o
      共享库的使用:gcc -o main main.c -L. -lxxx
      注册共享库的方法:将库文件直接复制到/lib或者/usr/lib目录下: cp (lib+name).so /lib

    GDB调试

    进入gdb:
    gcc -g xxx.c -o xxx
    gdb xxx
    查看源码:
    (gdb) l:进行行号提示
    (gdb) b n:在第n行设置断点
    (gdb) r:运行代码,运行至断点处
    (gdb) n:单步运行
    (gdb) c:使程序继续往下运行,直到再次遇到断点或程序结束
    (gdb) q:退出GDB
    (gdb) watch n:在"n"设置了观察点,观察变量的变化情况

    gdb常用命令:

    gdb 调试文件:启动gdb
    (gdb) l :(字母l)从第一行开始列出源码
    (gdb) break n :在第n行处设置断点
    (gdb) break func:在函数func()的入口处设置断点
    (gdb) info break: 查看断点信息
    (gdb) r:运行程序
    (gdb) n:单步执行
    (gdb) c:继续运行
    (gdb) p 变量 :打印变量的值
    (gdb) bt:查看函数堆栈
    (gdb) finish:退出函数
    (gdb) shell 命令行:执行shell命令行
    (gdb) set args 参数:指定运行时的参数
    (gdb) show args:查看设置好的参数
    (gdb) show paths:查看程序运行路径;
    (gdb) cd 相当于shell的cd;
    (gdb)pwd :显示当前所在目录
    (gdb)info program: 来查看程序的是否在运行,进程号,被暂停的原因。
    (gdb)clear 行号n:清除第n行的断点
    (gdb)delete 断点号n:删除第n个断点
    (gdb)disable 断点号n:暂停第n个断点
    (gdb)enable 断点号n:开启第n个断点
    (gdb)step:单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的
    (gdb)quit:简记为 q ,退出gdb

    四种断点:

    • 函数断点:b 函数名 条件表达式
    • 行断点:b 行数或函数名 条件表达式
    • 条件断点:b 行数或函数名 if表达式
    • 临时断点:tbreak 行数或函数名 条件表达式

    makefile

    功能:识别文件代码是否更新,减少编译工作量
    格式为:
    目标体:依赖文件
    [tab键]各目标体运行命令
    目标体:由make创建,通常是目标文件或可执行文件
    依赖文件:创建目标体所依赖的文件
    运行命令:创建每个目标体时需要的运行命令,必须以tab键开头。
    使用make的格式:make 目标体
    目标文件:由make创建,通常是目标文件或可执行文件

    • 依赖文件:创建目标体所依赖的文件
    • 运行命令:创建每个目标体时需要的运行命令,必须以tab键开头
    • 格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)
    • 使用make的格式:make 目标文件
    • makefile变量的定义: •递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),缺点:不能在变量后追加内容
    • 格式定义:VAR = var
    • 展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用
    • 格式定义:VAR := var
    • make中变量的使用格式: $(变量名)
    • 变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感

    收获

    总结一下这学期对这门课的学习吧,由于上学期java课程的不努力导致最开始对这门课的学习非常热情,第一周的学习挺认真的,掌握得挺好的,到后面了又有了贪玩的心,开始敷衍对待,后来被老师要求写两篇博客进入了待及格,心态就发生了变化,希望能真的在那本厚重的书里学到知识,开始一句一句的理解内容,后来也养成了习惯每天学习一点点,到周末了也不会觉得赶,如果要我谈一谈收获的话,就是收获了一个学习的态度和学习的方式,不再把任务留到最后,也不再每天长吁短叹当初选错了专业,到现在我居然感觉到了一些学习的乐趣,我觉得当我理解了一部分汇编内容,gdb调试,我觉得是一件很自豪的事情,是对以前自己的一个超越,跟过去的自己说再见

    不足

    说到不足有挺多说的,对东西的热情程度只能持续一段时间算是吧,在学习中,现在会保持每周认真完成老师要求的内容的习惯,其实也是一个囫囵吞枣的过程,过了一周两周我可能就忘记了学习的内容,对知识的巩固还差一些努力,只想着每周考试的应付,考试过了,可能学的东西也就忘了,所以我希望在之后可以给自己定一个一周一复习的目标,一周的内容很少,这周复习上周的内容,会将知识掌握得更加牢固

    对课程的建议

    在教材学习中,其实很多情况我只是被动的接受了一个知识,比如一个公式,只是记住了,并不理解它的推导过程,很多时候还是一个记忆,并不是真正的理解,所以希望在以后的课程中,有些问题真的是晦涩难懂的,所以希望老师可以看看大家提出的问题,对于问题出现较多的知识点可以在课堂上统一讲。
    学习进度条

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 130/130 1/1 17/17
    第二周 90/270 1/1 16/16
    第三周 120/390 2/2 16/16
    第四周 89/479 1/1 17/17
    第五周 120/599 1/1 16/16
    第六周 110/709 1/1 18/18
    第七周 128/837 1/1 18/18
    第八周 5/842 1/1 16/16

    参考资料

  • 相关阅读:
    vue 购买弹出框 动画
    vue 和animate.css 的动画使用
    获得url地址?后的参数
    Java 实现随机数组元素升降序
    java for循环实现九九乘法表
    java 随机生成字符串验证码
    Mysql插入值时,避免重复插入
    Mysql的unique和primary key
    2020 3.6日电话面试(某外包公司)
    Intellij IDEA配置javaweb项目
  • 原文地址:https://www.cnblogs.com/20145229ss/p/6036214.html
Copyright © 2020-2023  润新知