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])
    -  ...
  • 相关阅读:
    70.BOM
    69.捕获错误try catch
    68.键盘事件
    523. Continuous Subarray Sum
    901. Online Stock Span
    547. Friend Circles
    162. Find Peak Element
    1008. Construct Binary Search Tree from Preorder Traversal
    889. Construct Binary Tree from Preorder and Postorder Traversal
    106. Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/ZouJR/p/5903465.html
Copyright © 2011-2022 走看看