zoukankan      html  css  js  c++  java
  • 20145210《信息安全系统设计基础》期中总结

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

    自己新学到的知识点总结

    本学期学习Linux,感觉自己学到的基本都是新的知识点,我在此对感触比较深,收获比较大的几个方面进行总结:
    首先,本学期我第一次接触到虚拟机,ubuntu系统。因为种种原因,我安装了好多次的虚拟机,对于虚拟机的安装我还是很有印象的。在学习的过程中,我也对ubuntu系统越来越熟悉,越来越会用,感觉ubuntu系统还是很方便的,不过可能是因为计算机的原因,我的虚拟机速度很慢

    Linux命令:

    •Ubuntu快捷键

        •CTRL+ALT+T:打开终端;
        •CTRL+SHIFT+T:新建标签页;
        •ALT+数字N:终端中切换到第N个标签页;
        •Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成;
        •上下键盘:切换命令历史,刚输入一个很长的命令,按上键就可以恢复;
        •CTRL+C:中断程序运行。
    

    •Linux命令(系统调用)

        •命令格式:command [options] [arguments]; 
        •括号是可选的,有些命令不需要选项也不需要参数;
        •选项(option)是调整命令执行行为的开关,选项不同决定了命令的显示结果不同,参数(arugment)是指命令的作用对象。
    

    •ls命令(库函数)

        •ls或ls .是两条等价的命令,显示当前目录的内容。这里“.”就是参数,表示当前目录,这个参数缺省可以省略;
        •ls -a .命令表示显示当前目录中的所有内容,包括隐藏文件和目录
    

    •man命令
    •man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
    •常用选项:

          •-a:在所有的man帮助手册中搜索
          •-k:根据关键字搜索联机帮助,是一种模糊搜索
          •-f:关键字精确搜索,等价于whatis指令,显示给定关键字的简短描述信息
          •-P:指定内容时使用分页程序
          •-M:指定man手册搜索的路径
    
    •参数:
      •数字:指定从哪本man手册中搜索帮助
      •关键字:指定要搜索帮助的关键字
    •多关键字查找:man -k key1 | grep key2 | grep key3 | 
    
          •man -k 等价的命令apropos,使用man -k找到命令后,可以用man -f cmd查看命令的基本功能。
          •man -f等价于whatis
    

    •cheat 命令
    •cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。
    •cheat命令简单来说,就是告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用
    •grep命令
    •grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
    •命令格式:grep [options]
    •[options]主要参数:

            •-c:只输出匹配行的计数
            •-I:不区分大小写(只适用于单字符)
            •-h:查询多文件时不显示文件名
            •-l:查询多文件时只输出包含匹配字符的文件名
            •-n:显示匹配行及行号
            •-s:不显示不存在或无匹配文本的错误信息
            •-v:显示不包含匹配文本的所有行
    
      •正则表达式主要参数:
    
            •:忽略正则表达式中特殊字符的原有含义
            •^:匹配正则表达式的开始行
            •$:匹配正则表达式的结束行
            •<:从匹配正则表达式的行开始
            •>:到匹配正则表达式的行结束
            •[ ]:单个字符,如[A]即A符合要求
            •[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求
            •。:所有的单个字符
            •*:有字符,长度可以为0
    

    •其他核心命令

        •find:查找一个文件在系统中的什么位置,可以通过cheat find学习find命令。
        •locate:神速版本的find(Windows下有个神器Everything和locate功能类似)。
        •grep :可以对文件全文检索。通过grep -n main *.c可以快速找到main在哪个C文件中并指出在第几行。grep支持正则表达式,可以通过cheat grep学习grep命令。
        •whereis、which:告诉你使用的命令工具装在什么地方。我们在Linux下上网使用firefox浏览器,大家可以使用whereis firefox或更精确的使用which firefox来看看结果。
        •apt-cache:可以在使用apt-get install安装一个程序时先找找软件源的库里有没有这个程序,有才可以安装。
    

    vim

    •vim有6种基本模式,常用的是普通模式、插入模式和命令行模式

        •普通模式:在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。在普通模式中,进入插入模式比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
        •插入模式:在插入模式中,可以按ESC键回到普通模式。
        •可视模式:命令多与字母v有关,移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。
        •选择模式:这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
        •命令行模式:在命令行模式中,执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
        •Ex模式:这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令
    
    •三种常用模式的切换
    
          •vim启动进入普通模式;
          •处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式;
          •普通模式中按i(插入)或a(附加)键都可以进入插入模式;
          •普通模式中按:进入命令行模式;
          •命令行模式中输入wq回车后保存并退出vim
    
    •退出vim(常用):
    
          •命令行模式下退出vim:从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑。
          •普通模式下退出vim:普通模式下输入Shift+zz即可保存退出vim
    

    gcc

    •编译

        •预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
        •编译: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
    

    •使用gcc编译一个c程序

        •打开的gvim环境中输入i进入编辑模式,输入代码,保存为hello.c文件
        •在XfceTerminal打开后的界面中输入:gcc hello.c -o hello,编译成功,将会在当前目录生成一个可执行文件 hello
        •继续输入:./hello 就会运行该程序
    

    •gcc编译常用选项

        •-E:只预编译
        •-S:只编译不汇编
        •-o:将file文件指定为输出文件
        •-c:只编译不链接
        •-I dir:在头文件的搜索路径列表中添加dir目录
        •-g:在可执行程序中包含标准调试信息
    

    •库选项

        •-static:进行静态编译,即链接静态库、禁止使用动态库
        •-shared:生成动态库文件、进行动态编译,在没有动态库时才会链接同名静态库
        •-L dir:在库文件的搜索路径列表中添加dir目录
        •-lname、-fPIC:生成使用相对地址的位置无关的目标代码,然后使用gcc的-static选项从该PIC目标文件生成动态库文件
    
    •共享库
    
        •共享库的生成:gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o;
        •共享库的使用:gcc -o main main.c -L. -lxxx
        •注册共享库的方法:
          •修改/etc/ld.so.conf文件
          •修改LD_LIBRARY_PATH环境变量
          •将库文件直接复制到/lib或者/usr/lib目录下:cp (lib+name).so /lib
    
    •静态库
    
        •链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”。
        •静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;
        •静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx //链接到静态库;
        •注意:-L:在库文件的搜索路径列表中添加dir目录,-l: 在头文件的搜索路径列表中添加dir目录。
    

    gdb

    •gdb调试c程序

    1.打开的gvim环境中输入i进入编辑模式,输入代码,保存为gdb.c文件
    
    2.在XfceTerminal打开后的界面中输入:gcc –g gdb.c -o testgdb,生成一个可执行文件testgdb
    
    3.输入gdb testgdb 启动gdb
    
    4.键入 l命令(gdb) l相当于list命令,从第一行开始列出源码
    
    5.设置断点:(gdb) break 16:设置断点,在源程序第16行处;(gdb) break func :设置断点,在函数func()入口处。
    
    6.输入(gdb) info break 查看断点信息。
    
    7.输入(gdb) r 运行程序,run命令简写
    
    8.输入(gdb) n单条语句执行,next命令简写。
    
    9.输入(gdb) c 继续运行程序,continue命令简写。
    
    10.输入(gdb) p i打印变量i的值,print命令简写。
    
    11.输入(gdb) bt查看函数堆栈。
    
    12.输入(gdb) finish退出函数。
    
    13.输入(gdb) q退出gdb
    

    •gdb基本命令

        •gdb programm:启动GDB)
        •b:设断点,在b后加入相对应的行号,例:b 6
        •run:开始运行程序
        •bt:打印函数调用堆栈
        •p:查看变量值。例:p n
        •c:从当前断点继续运行到下一个断点
        •n:单步运行
        •s:单步运行(s会进入函数,n不会进入函数)
        •quit:退出GDB
        •display:跟踪变量值的改变
        •until:跳出循环
        •finish:跳出函数
        •help:帮助
    

    •断点的设置:

        •函数:b 文件名.c:函数名
        •行:b 行数
        •条件:b 行数 if 表达式(例如:b 9 if == 12)
        •临时:tb [文件名:]行号或函数名 <条件表达式>
    

    makefile

    makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。其带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。
    

    •makefile 基本规则

    1.打开的gvim环境中输入i进入编辑模式,输入代码,保存为prog.c、 code.c、 code.h文件
    2.输入vim Makefile,输入i进入编辑模式,输入代码并保存
    3.输入make,进行自动化编译
    4.执行./test查看结果
    

    •makefile文件编写规则:

        •目标文件:由make创建,通常是目标文件或可执行文件
        •依赖文件:创建目标体所依赖的文件
        •运行命令:创建每个目标体时需要的运行命令,必须以tab键开头
        •格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)
        •使用make的格式:make 目标文件
    

    •makefile变量的定义:

        •递归展开方式:在引用该变量时进行替换(不能用于引用自己的情况),缺点:不能在变量后追加内容
        •格式定义:VAR = var
        •展开方式:在定义处展开,并只展开一次。优点:消除变量的嵌套引用
        •格式定义:VAR := var
        •make中变量的使用格式: $(变量名)
        •变量名的命名:不包括“:”、“#”、“=”以及结尾空格的任何字符串;变量名大小写不敏感
    

    教材知识点

    教材里的知识对于我来讲有一些还是比较抽象的,但是在学习的过程中我也有很多的收获,对于计算机信息的表示与存储、计算机中汇编代码的具体意义还有计算机存储结构、存储流程还是有了一定的了解。按照书上的说明、表格、例子,我做了相应的练习题,觉得计算题的准确率还是比较高的,对于代码题,有一部分是能够理解,一次就能做对的,有些是做错了,需要自己思考、请教同学才能理解的,有一些就是比较抽象,不是很理解的。
    总体来说教材上的知识很多很全很丰富,自己看一遍也能有很大的收获,不过感觉相较于教材上的内容,能真正装进脑子的并不是很多,还需要多加练习,多看书才能真正地学会。
    

    自己的收获

    本学期的学习模式和上学期是一样的,说起我最大的收获,可能是一种坚持看书的学习方法和生活方式吧。现在的学习大部分是依靠操作计算机来完成的,本学科让我们能够回归教材,锻炼我们自省自学的能力,让我们能够在每天抱着电脑学习的同时不忘学习书本上的知识,这是一种很好的学习方式,也是能够让我们真正踏实地、一步一个脚印地学习的机会。

    自己的不足

    我觉得我在动手操作这部分可能还需要加强,在刚开始学习的时候安装配置虚拟机真的占用了很多的时间,可能有客观因素的影响,但我觉得还是我的动手能力不强,学的东西表面化,没有真正理解命令里每一个部分的真正含义,在以后的学习过程中,我还需要踏踏实实地学习,多动脑,多动手,多操作,多问问题。

    课程建议和意见

    我们这门课每周的学习任务包括:看书、到实验楼看实验要求,做实验、看老师给的一些学习链接等等,个人觉得学习的内容太分散,不仅需要学习教材上纸质版的内容,还需要点很多链接,看很多网页版的内容,如果能够把学习的内容整合到一起的话,学习的效率会更高一些。
    可能每个人的学习习惯和学习方法都不一样,我就还是比较喜欢看书,看一些纸质版的材料,笔记的话也比较喜欢写在本子上或者教材上,对于我来讲,写字还是比打字更快,在书上标注的话也更加直观。

  • 相关阅读:
    Python爬虫开源项目代码,爬取微信、淘宝、豆瓣、知乎、新浪微博、QQ、去哪网等 代码整理
    python ---split()函数讲解
    常见的操作系统及linux发展史
    第五次作业
    第四次软件工程作业
    软件工程——第三次作业
    软件工程--第二次作业
    软件工程--第一次作业
    在SQL Server中调用.NET程序集
    c#中使用ABCpdf处理PDF,so easy
  • 原文地址:https://www.cnblogs.com/20145210ysy/p/6024680.html
Copyright © 2011-2022 走看看