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

     

    学习计时:共10小时

    读书:4

    代码:3

    作业:2

    博客:1

    一、学习目标

    1. 熟悉Linux系统下的开发环境   
    2. 熟悉vi的基本操作   ok
    3. 熟悉gcc编译器的基本原理   
    4. 熟练使用gcc编译器的常用选项   
    5 .熟练使用gdb调试技术   
    6. 熟悉makefile基本原理及语法规范   
    7. 掌握静态库和动态库的生成

    二、学习资源

    1. 教材:第一章,第七章

    2. 《嵌入式Linux应用程序开发标准教程》第三章3.1-3.5

    3. 课程资料:https://www.shiyanlou.com/courses/413   实验二,课程邀请码:W7FQKW4Y

    4. Vim编辑器:https://www.shiyanlou.com/courses/2

    5. Linxu系统编程:https://www.shiyanlou.com/courses/24,实验2、3、4

    6. 教学视频:http://pan.baidu.com/s/1kTHxOFl ,可以参考第十个视频

    三、学习方法

     

    1.  进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。

    2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/

    3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习

    4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“信息安全系统设计基础第二周学习总结”



     

    四、学习任务

    (提示:请将要求学生完成的任务、测验或思考题列在此处)

    1.教材第一章,第七章学习:阅读并消化教材内容(有部分考试内容)

    2.《嵌入式Linux应用程序开发标准教程》第三章3.1-3.5的学习(本周大部分考试内容都从这出,特别是与教材重复内容)

    3.完成实验并发Blog

    • 练习vimtutuor 至少一遍 
    • 使用vim 输入以下代码,联系使用“K”查找帮助文档:
    • 练习gcc编译运行代码。 
    • 练习gdb调试代码 。
    • 把上述代码中除了main函数外的代码制作成一个静态库math.a和一个共享库math.so。 
    • 编写makefile,让代码编译,上述静态库和共享库的使用自动化。

     

    、后续学习预告(可选):

    教材第二章《信息的表示和处理》

    六、学习过程

    一、Vim

    Vim具有6种基本模式和5种派生模式,我们这里只简单介绍下6种基本模式:

    • 普通模式(Normal mode)

    在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。

    Vim强大的编辑能来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令dd删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个d,比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,2dd(重复dd两次),和dj的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。

    在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按a(append/追加)键或者i(insert/插入)键。

    • 插入模式(Insert mode)

    在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。

    在插入模式中,可以按ESC键回到普通模式。

    • 可视模式(Visual mode)

    这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。

    • 选择模式(Select mode)

    这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。

    • 命令行模式(Command line mode)

    在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。

    • Ex模式(Ex mode)

    这和命令行模式比较相似,在使用:visual命令离开Ex模式前,可以一次执行多条命令。

    1.三种命令转换:vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[(这在vim课程环境中不管用)即可进入普通模式。普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。命令行模式中输入wq回车后保存并退出vim。

    2.游标移动

    按键

    说明

    h

    l

    右(小写L)

    j

    k

    w

    移动到下一个单词

    b

    移动到上一个单词

    3.插入模式

    在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入

    命令

    说明

    i

    在当前光标处进行编辑

    I

    在行首插入

    A

    在行末插入

    a

    在光标后插入编辑

    o

    在当前行后插入一个新行

    O

    在当前行前插入一个新行

    cw

    替换从光标所在位置后到一个单词结尾的字符

    4.保存文档

    从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下

    5.退出Vim

    (1)命令行模式下退出vim

    从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑

    以下为其它几种退出方式:

    命令

    说明

    :q!

    强制退出,不保存

    :q

    退出

    :wq!

    强制保存并退出

    :w <文件路径>

    另存为

    :saveas 文件路径

    另存为

    :x

    保存并退出

    :wq

    保存并退出

    (2)普通模式下退出vim

    普通模式下输入Shift+zz即可保存退出vim

    6.删除文本

    进入普通模式,使用下列命令可以进行文本快速删除:

    命令

    说明

    x

    删除游标所在的字符

    X

    删除游标所在前一个字符

    Delete

    同x

    dd

    删除整行

    dw

    删除一个单词(不适用中文)

    d$或D

    删除至行尾

    d^

    删除至行首

    dG

    删除到文档结尾处

    d1G

    删至文档首部

    除此之外,你还可以在命令之前加上数字,表示一次删除多行,如:

    2dd表示一次删除2行

    7.重复命令

    (1)重复执行上次命令

    在普通模式下.(小数点)表示重复上一次的命令操作

    普通模式下输入x,删除第一个字符,输入.(小数点)会再次删除一个字符,除此之外也可以重复dd的删除操作

    (2)执行指定次数相同的命令

    进入普通模式输入N<command>,N表示重复后面的次数。

    在普通模式下,还可以使用dw或者daw(delete a word)删除一个单词,所以你可以很容易的联想到dnw(n替换为相应数字)表示删除n个单词。

    8.游标的快速跳转

    (1)行间跳转

    命令

    说明

    nG(n Shift+g)

    游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)

    gg

    游标移动到到第一行

    G(Shift+g)

    到最后一行

                     !注:在完成依次跳转后,可以使用Ctrl+o快速回到上一次(跳转前)光标所在位置

    (2)行内跳转

      普通模式下使用下列命令在行内按照单词为单位进行跳转

    命令

    说明

    w

    到下一个单词的开头

    e

    到下一个单词的结尾

    b

    到前一个单词的开头

    ge

    到前一个单词的结尾

    0或^

    到行头

    $

    到行尾

    f<字母>

    向后搜索<字母>并跳转到第一个匹配的位置(非常实用)

    F<字母>

    向前搜索<字母>并跳转到第一个匹配的位置

    t<字母>

    向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)

    T<字母>

    向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)

    9.复制粘贴和剪切

    (1)复制及粘贴文本

    • 普通模式中使用y复制
    • 普通模式中,yy复制游标所在的整行(3yy表示复制3行)
    • 普通模式中,y^ 复制至行首,或y0。不含光标所在处字符。
    • 普通模式中,y$ 复制至行尾。含光所在处字符。
    • 普通模式中,yw 复制一个单词。
    • 普通模式中,y2w 复制两个单词。
    • 普通模式中,yG 复制至文本末。
    • 普通模式中,y1G 复制至文本开头。
    • 普通模式中使用p粘贴
    • 普通模式中,p(小写)代表粘贴至光标后(下)
    • 普通模式中,P(大写)代表粘贴至光标前(上)

    (2)剪切及粘贴

         dd删除命令就是剪切,每次dd删除文档内容后,便可以使用p来粘贴

         交换上下行:ddp。 实现了快速交换光标所在行与它下面的行。

    10.字符的替换及撤销(Undo操作)

           替换和Undo命令都是针对普通模式下的操作

    命令

    说明

    r+<待替换字母>

    将游标所在字母替换为指定字母

    R

    连续替换,直到按下Esc

    cc

    替换整行,即删除游标所在行,并进入插入模式

    cw

    替换一个单词,即删除一个单词,并进入插入模式

    C(大写)

    替换游标以后至行末

    ~

    反转游标所在字母大小写

    u{n}

    撤销一次或n次操作

    U(大写)

    撤销当前行的所有修改

    Ctrl+r

    redo,即撤销undo的操作

    11.快速缩进

    (1)使用命令进行快速调整缩进操作

           缩进操作均在普通模式下有效:

    • 普通模式下输入15G,跳转到15行
    • 普通模式下输入>> 整行将向右缩进(使用,用于格式化代码超爽)
    • 普通模式下输入<< 整行向左回退
    • 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数

    (2)shiftwidth命令

         shiftwidth命令是指上一节>>命令产生的缩进(可以简写成sw) 普通模式下输入:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数 获取目前的设定值         :set shiftwidth?

         设置缩进为10个字符      :set shiftwidth=10

    输入ESC回到普通模式,再次尝试>>看缩进量是否变化

    (3)调整文本位置

          命令行模式下输入:ce(center)命令使本行内容居中   :ce

          命令行模式下输入:ri(right)命令使本行文本靠右      :ri

          命令行模式下输入:le(left)命令使本行内容靠左       :le

    12.查找

    (1)快速查找

            普通模式下输入/然后键入需要查找的字符串 按回车后就会进行查找。?与/功能相同,只不过?是向上而/是向下查找。 进入查找之后,输入n和N可以继续查找 n表示继续查找,N反向查找。

    • 普通模式下输入/icmp查找字符串icmp
    • 普通模式下输入n查找下一个icmp
    • 普通模式下输入?tcp向上查找字符串tcp
    • 普通模式下输入N查找上一个出现的tcp

    (2)高级查找

    • 普通模式下输入*寻找游标所在处的单词
    • 普通模式下输入#同上,但* 是向前(上)找,#则是向后(下)找
    • 普通模式下输入g*同* ,但部分符合该单词即可
    • 普通模式下输入g#同# ,但部分符合该单词即可

      !以上查找n,N 的继续查找命令依然可以用

    13.多文件编辑

          编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件。另一种就是进入vim后再编辑其他的文件。 同时创建两个新文件并编辑

          $ vim 1.txt 2.txt

    (这一块存在一些问题)

    14.视窗操作

    • 命令行模式下输入:sp 1.txt 打开新的横向视窗来编辑1.txt
    • 命令行模式下输入:vsp 2.txt 打开新的纵向视窗来编辑1.txt
    • 普通模式下Ctrl-w s 将当前窗口分割成两个水平的窗口
    • 普通模式下Ctrl-w v 将当前窗口分割成两个垂直的窗口
    • 普通模式下Ctrl-w q 即 :q 结束分割出来的视窗。如果在新视窗中有输入需要使用强制符!即:q!
    • 普通模式下Ctrl-w o 打开一个视窗并且隐藏之前的所有视窗
    • 普通模式下Ctrl-w j 移至下面视窗
    • 普通模式下Ctrl-w k 移至上面视窗
    • 普通模式下Ctrl-w h 移至左边视窗
    • 普通模式下Ctrl-w l 移至右边视窗
    • 普通模式下Ctrl-w J 将当前视窗移至下面
    • 普通模式下Ctrl-w K 将当前视窗移至上面
    • 普通模式下Ctrl-w H 将当前视窗移至左边
    • 普通模式下Ctrl-w L 将当前视窗移至右边
    • 普通模式下Ctrl-w - 减小视窗的高度
    • 普通模式下Ctrl-w + 增加视窗的高度

    15.文档加密

        创建加密文档  ——  $ vim -x file1

    二、gcc(编译)

         GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统

    • 预处理: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

    三、gdb(调试)

    • gdb programm(启动GDB)
    • b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    • run 开始运行程序
    • bt 打印函数调用堆栈
    • p 查看变量值
    • c 从当前断点继续运行到下一个断点
    • n 单步运行
    • s 单步运行
    • quit 退出GDB

     作业还在研究中TAT

    七、遇到的问题及解决

    1.vim编辑器时学习复制:3yy一开始以为是将同一行内容复制三行,结果操作后发现复制的是从光标行数3行。

    2.vim:一开始shiftwidth命令不能实现,输入set shiftwidth命令并改变了几个值后缩进量并没有改变。最后发现问题是在普通模式下输入完set shiftwidth命令后直接Esc返回了,应该先按回车在返回到普通模式,这样之后就成功了。

    3.转换文件编辑并不成功。从file1转到file2,输入n不行,必须加上!。但是再从file2到file1就不行了,出现了以下错误,希望老师解答。

     

     

     

    八、其他

    感觉这周的学习内容比较有趣。首先学习了vim,现在还不是太熟练,我想熟练之后应该会很方便很强大。然后gcc和gdb的湘鄂西也比较顺利,但是后面的内容有些难以理解。所以目前为止作业还没有研究出来,在下周上课前会再研究研究。这周学习状态有所好转,但还是感觉有些吃力。以往以后可以更加有效的学习。

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/lhc-java/p/4841403.html
Copyright © 2011-2022 走看看