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


    知识点总结

    第一部分——Linux命令

    1、 man命令
    · 在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写。要查看相应区段的内容,就在 man 后面加上相应区段的数字即可
    · man命令通常与管道命令结合使用
    man -k k1 | grep k2 | grep 2
    · man -k 填空:Linux中显示文件(file )属性(status)的命令是( stat )
    数据结构中有线性查找算法,C标准库中没有这个功能的函数,但Linux中有,这个函数是(lfind或lsearch)

    2、grep命令
    · 用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,
    或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
    · -n:在显示符合范本样式的那一列之前,标示出该列的列数编号。
    -r:为递归查找
    · grep 填空:
    ~/test 文件夹下有很多c源文件,查找main函数在哪个文件中的命令( grep main .c )
    Linux Bash中,使用grep查找当前目录下.c中main函数在那个文件中的命令是( grep main *.c )
    查找宏 STDIN_FILENO 的值的命令是(grep -nr XXX /usr/include)

    3、cheat命令
    · cheat是非常好用的“打小抄”搜索工具,能够方便的告诉你你想要的内容。
    · 填空:
    To list the content of /path/to/foo.tgz archive using tar ( tar -jtvf /path/to/foo.tgz )
    使用du命令对当前目录下的目录或文件按大小排序 的命令是( du -sk *| sort -rn )

    一、文件管理类命令:

    1 cat命令
    · 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
    说明:把档案串连接后传到基本输出
    · 参数:
        -n 由 1 开始对所有输出的行数编号
        -b 和 -n 相似,只不过对于空白行不编号
        -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
    · 判断:Linux Bash中,cat -n 和 nl 命令功能等价。对

    2 find命令
    · 用法 : find
    使用说明: 将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
    · 范例:
       将目前目录及其子目录下所有延伸档名是 c 的档案列出来:# find . -name "*.c"
       将目前目录其其下子目录中所有一般档案列出:# find . -ftype f
       将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出:# find . -ctime -20
    · find 填空:
    查找当前目录下所有目录的find命令是(find . -type d)
    查找当前目录下2天前被更改过的文件 (find . -mtime +2 -type f -print)

    3 locate命令
    · 使用方式: locate [-q] [-d ] [--database=]
    说明:locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。

    二、文档编辑类命令:

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

    三、磁盘管理类命令

    1 du命令
    · 显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
    · 参数:
    -a:显示目录中个别文件的大小。
    -b:显示目录或文件大小时,以byte为单位。
    -c: 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    · 判断:Linux Bash中,df和 du 命令功能等价。错

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

    3 who命令
    · 使用方式 : who - [husfV] [user]
    说明 : 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。
    · 参数 :
      -h : 不要显示标题列
      -u : 不要显示使用者的动作/工作
      -s : 使用简短的格式来显示

    第二部分——Linux编程基础

    一、vim编辑器

    1 vim的三种模式
    命令行模式:只能移动光标,删除,复制,粘贴
    插入模式:编辑文字
    底行模式:文件保存或退出,设置编辑环境

    2 操作
    · 插入:i 在当前光标处进行编辑
    I 在行首插入
    A 在行末插入
    a 在光标后插入编辑
    o 在当前行后插入一个新行
    cw 替换从光标所在位置后到一个单词结尾的字符
    · 保存文档:进入命令行模式,输入w回车,保存文档;输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
    · 退出vim:进入命令行模式,输入wq回车,保存并退出编辑

    3 剪切及粘贴
    · 删除:dd删除整行
    · 复制:yy复制整行
    · 粘贴:p

    二、GCC

    1 使用GCC编译时要加“-g”参数,然后才能够用gdb调试

    2 常用命令
    gdb programm(启动GDB)
    l 查看所载入的文件
    b 设断点
    info 查看断点情况
    run 开始运行程序
    bt 打印函数调用堆栈
    p 查看变量值
    c 从当前断点继续运行到下一个断点
    n 单步运行(不进入)
    s 单步运行(进入)
    quit 退出GDB

    3 四种断点(函数、行、条件、临时)

    4 判断: gdb中next和step都可以单步跟踪,根据自顶向下原则应该优先选用step. 错

    四、静态库和动态库

    1 静态库
    · 静态库的生成:ar rcsv libxxx.a xxx.o
    · 静态库的使用: gcc -o main main.c -L. -lxxx 注意-L -l 的含义
    · 创建它的可执行文件
    gcc -02 -c main2.c
    gcc -static -o p2 main2.o ./libvector.a
    · 参数:
    gcc -c只编译,不连接成为可执行文件。
    ar -r:在库中插入模块(替换)
    -c:创建一个库
    -s:写入一个目录文件索引到库中

    2 动态库
    · 动态库的生成:gcc -fPIC -c xxx.c
    gcc -shared -o libxxx.so xxx.o
    · 共享库的使用:gcc -o main main.c -L. -lxxx

    3 静态库和动态库的区别与联系
    · 静态函数库:.a;
    利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,
    编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。
    如果静态函数库改变了,那么你的程序必须重新编译。
    · 动态函数库:.so;
    动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。
    由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。
    动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。

    收获

    经过两个月的学习,让我对计算机有了进一步的了解,包括汇编的知识,存储器的知识,机器进行计算等方面。收获最大的是如何学习。通过小组答疑论坛大家交流出现的问题,能够发现自己在看书时没有注意的细节,能够学习他人的学习态度。通过自己看书,起初是漫无重点的看,渐渐地学会根据老师给出的重点,有侧重点的学,自己的学习态度也逐渐由开始完成任务变成学知识。通过每周检测和博客评比,增加了认真学习的动力。学的知识只是一条条概念,很多时候不理解,但是结合书上的练习就变得容易了。自学应该是一个个人能力问题,而不仅仅是这门课程的学习方式。

    不足

    教材中的内容吸收的比较慢,知识点也没能好好灵活的运用,以后应该在学习过程中结合教材中的练习变化一下,应该就能更深刻的理解知识点。

    课程建议和意见

    我觉得这门课程相较于其他课程来讲,充分调动了我们的积极性,把“学习”从“期末突击”转变为了“苟日新,日日新”。不过,对于基础中等的同学来讲,其实我觉得现在的任务量也相当充实了;现在这种因人而异的学习任务更适合我们。

    代码托管

    代码托管连接

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 30/30
    第二周 300/500 1/3 20/50
    第三周 100/600 1/4 20/70
    第五周 300/900 1/5 30/100
    第六周 136/1036 1/6 20/120
    第七周 124/1160 1/7 20/140
    第八周 0/1160 3/10 20/160

    参考资料

  • 相关阅读:
    VC编译器遇到问题处理
    C++笔试、面试题总结
    变量自增整理
    当app出现线上奔溃,该如何办?
    Xcode9新变化
    iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a
    百度总裁陆奇:人工智能时代,我们想把它变得更简单
    【转】iOS库 .a与.framework区别
    【转】谈谈 iOS 中图片的解压缩
    【转】iOS中流(Stream)的使用
  • 原文地址:https://www.cnblogs.com/summerharper/p/6023764.html
Copyright © 2020-2023  润新知