zoukankan      html  css  js  c++  java
  • 20145206 《信息安全系统设计基础》第2周学习总结

    20145206 《信息安全系统设计基础》第2周学习总结

    教材学习内容总结

    ·源程序实际上就是一个由值0和1组成的位(bit)序列,8个位被组织成一组,称为字节。每个字节表示程序中某个文本字符。
    ·在Unix系统上,从源文件到目标文件的转化是由编译器驱动程序完成的:

    unix> gcc -o hello hello.c
    ```GCC编译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行目标文件hello,翻译过程分为四个阶段:
    
    
    ·将系统中的存储设备划分成层次结构--CPU寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM主存和磁盘存储器。
    ·操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象:1)文件是对I/O设备的抽象;2)虚拟存储器是对主存和磁盘的抽象;3)进程是对处理器、主存和I/O设备的抽象。
    ·从特殊系统的角度来看,网络就是一种I/O设备。
    
    
    ## 实验楼学习内容
    
    ·实验二 Linux下C语言编程基础
    1、vim
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924121953418-322671220.png)
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924122209934-2030074645.png)
    
    2、gcc
    能够编译用C、C++和Object C等语言编写的程序。GCC编译代码的过程如下:
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924122801309-585974978.png)
    
    把编译过程分成四步,以编译hello.c生成可执行文件hello为例,如下图:
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924122841481-681189938.png)
    
    ·预处理: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
    
    3、gdb
    GDB最基本的命令有:
    ·gdb programm(启动GDB)
    ·b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    ·run 开始运行程序
    ·bt 打印函数调用堆栈
    ·p 查看变量值
    ·c 从当前断点继续运行到下一个断点
    ·n 单步运行
    ·s 单步运行
    ·quit 退出GDB
    应该掌握的调试命令有:
    ·display 跟踪变量值的改变
    ·until 跳出循环
    ·finish 跳出函数
    ·help 帮助
    
    4、makefile
    Makefile带来的好处就是——“自动化编译”,一但写好,只需要一个 make 命令,整个工程便可以完全编译,极大的提高了软件的开发效率(特别是对于那些项目较大、文件较多的工程)。
    实践了一下实验楼上的实验:
    ·gcc -c code.c -o code.o
    ·gcc -c prog.c -o prog.o
    ·gcc prog.o code.o -o test
    
    5、静态库和共享库
    
    静态链接库的生成:ar rcsv libxxx.a xxx.o
    
    静态库的使用: gcc -o main main.c -L. -lxxx   注意-L   -l 的含义
    
    共享库的生成 gcc -fPIC -c xxx.c
    
                 gcc -shared -o libxxx.so xxx.o
    
    共享库的使用:gcc -o main main.c -L. -lxxx
    静态库、动态库(共享库)解决了不想给别人xxx.c时还要别人用xxx.c的功能的好办法。
    
    ·vim编辑器
    首先安装好vim
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925140708691-2007677373.png)
    
    1、Vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令dd删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。
    2、在插入模式中,可以按ESC键回到普通模式。
    3、vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[(这在vim课程环境中不管用)即可进入普通模式。普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。命令行模式中输入wq回车后保存并退出vim。
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925113319494-1437697142.png)
    
    按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标。
    按键	说明
    h	左
    l	右(小写L)
    j	下
    k	上
    w	移动到下一个单词
    b	移动到上一个单词
    4、在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入
    命令	说明
    i	在当前光标处进行编辑
    I	在行首插入
    A	在行末插入
    a	在光标后插入编辑
    o	在当前行后插入一个新行
    O	在当前行前插入一个新行
    cw	替换从光标所在位置后到一个单词结尾的字符
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925113923895-1656411951.png)
    
    注意每次要先回到普通模式才能切换成以不同的方式进入插入模式
    
    5、从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925162434302-1528598157.png)
    
    在实验楼中输入vim helloworld.c新建程序,然后输入i进入插入模式,输入一段helloworld程序,esc退出插入模式进入普通模式,再:wq退出并保存
    如果下次再想找到这个程序,直接输入vim 文件名就行了。
    
    6、从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
    命令	说明
    :q!	强制退出,不保存
    :q	退出
    :wq!	强制保存并退出
    :w <文件路径>	另存为
    :saveas 文件路径	另存为
    :x	保存并退出
    :wq	保存并退出
    
    普通模式下输入Shift+zz即可保存退出vim
    
    7、进入普通模式,使用下列命令可以进行文本快速删除:
    
    命令	说明
    x	删除游标所在的字符
    X	删除游标所在前一个字符
    Delete	同x
    dd	删除整行
    dw	删除一个单词(不适用中文)
    d$或D	删除至行尾
    d^	删除至行首
    dG	删除到文档结尾处
    d1G	删至文档首部
    
    2dd表示一次删除2行
    
    8、在普通模式下.(小数点)表示重复上一次的命令操作,普通模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作
    9、进入普通模式输入N<command>,N表示重复后面的次数
    例如:输入10x,删除10个连续字符
    
    
    ## 练习
    1.练习vimtutuor至少一遍。
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924152125324-454754767.png)
    
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924155613543-723893766.png)
    
    2 利用gcc编译hello.c程序:
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925141141554-649389103.png)
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925141929305-739867376.png)
    
    3 git代码:
    在百度上搜索怎样用ubuntu git代码,自己根据教程做出的过程如下:
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925145311713-1125536568.png)
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925145339997-1126648131.png)
    
    代码上传结果:
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925160622616-1227891199.png)
    
    ## 学习中的问题和解决过程
    
    在自己的电脑上直接输入vimtutor不能直接打开编辑器,需要安装,但在安装过程中出现如下问题: 
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924155613543-723893766.png)
    
    在百度上搜索找到解决办法:输入ps aux,找到-apt对应的数字4503,然后输入sudo kill 4503,成功安装!
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924161441496-980175223.png)
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160924161456637-1715535246.png)
    
    
    ## 本周代码托管截图
    
    ![](http://images2015.cnblogs.com/blog/877170/201609/877170-20160925160622616-1227891199.png)
    
    ## 其他(感悟、思考等,可选)
    
    本周学会了一些基本用法,知道了怎样应用vim编译器在终端里编程序,了解了普通模式、命令行模式以及插入模式的切换方法,编译并运行成功程序,但实验楼中的知识点较多,不能完全掌握,还需要更多地练习来巩固。
    
    ## 学习进度条
    
    |            | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|
    | --------   | :----------------:|:----------------:|:---------------:  |:-----:|
    | 目标        | 5000行            |   30篇           | 400小时            |       |
    | 第一周      | 0/0           |   1/2            | 20/30             |  学习了一些Linux核心命令     |
    | 第二周      | 250/250           |   1/3            | 20/50             |  学习了vim编辑器基础     |
     
    
    ## 参考资料
    -  [《深入理解计算机系统V2》学习指导]([http://www.cnblogs.com/rocedu/p/5826467.html])
    -  ...
  • 相关阅读:
    js_类数组转化为数组
    js_立即执行函数
    react-router详解
    闭包_详解
    react_生命周期执行顺序
    Git-Gitlab-Genkins持续集成
    java 通用查询
    java-JDBC事务
    java中的session和cookie实现购物车的结算和清空
    servlet服务器
  • 原文地址:https://www.cnblogs.com/ZouJR/p/5903465.html
Copyright © 2011-2022 走看看