zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155219《信息安全系统设计基础》第1周学习总结

    2017-2018-1 学号 《信息安全系统设计基础》第X周学习总结

    教材学习内容总结

    教材每章的提问

    • 第一章

    什么是计算机系统?它包括什么?研究它有什么意义?

    • 第二章

    计算机中的数据和平常我们生活中的数据有什么异同?

    • 第三章

    为什么要学习汇编?

    • 第四章

    ISA是什么?

    • 第五章

    如何优化程序性能?

    • 第六章

    存储系统层次结构分为什么?

    • 第七章

    链接是如何进行的?

    • 第八章

    常见异常怎么解决?

    • 第九章

    虚拟存储器如何工作?它有什么特性?

    • 第十章

    Unix I/O是什么?

    • 第十一章

    网络编程步骤?

    • 第十二章

    并发编程是什么?

    • vim常用操作

    vim可以仅仅在通过键盘在任意模式之下进行切换,这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作,对文字录入员或者程序员可以大大增强速度和效率。vim有6种基本模式(常用的是普通模式、插入模式和命令行模式):

    正常模式:可以使用快捷键命令,或按:输入命令行。

    h或退格: 左移一个字符;
    l或空格: 右移一个字符;
    j: 下移一行;
    k: 上移一行;

    插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。

    i: 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+就插入了36个+组成的分割线。
    I: 在当前行第一个非空字符前插入;
    gI: 在当前行第一列插入;
    a: 在光标后插入;
    A: 在当前行最后插入;

    可视模式:正常模式下按v可以进入可视模式,
    在可视模式下,移动光标可以选择文本。

    按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。

    替换模式:正常模式下,按R进入。

    几种常用模式的切换:

    vim启动进入普通模式;

    处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式;

    普通模式中按i(插入)或a(附加)键都可以进入插入模式;
    普通模式中按:进入命令行模式;

    命令行模式中输入wq回车后保存并退出vim。

    - gcc编译器

    如果是用Code::Blocks等编译软件编译,则在编译完成后自动生成可执行文本;若是用vim,则必须手动完成翻译工作。
    image
    image

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

    1。在实验楼中打开的gvim环境中输入i进入编辑模式,输入代码,保存为hello.c文件。

    2.在XfceTerminal打开后的界面中输入:gcc hello.c -o hello,编译成功,将会在当前目录生成一个可执行文件 hello

    3.继续输入:./hello 就会运行该程序
    imageimage
    得到

    image

    - gdb调试程序

    使用gdb调试c程序
    *执行下一步:
    (gdb) next
    这样,执行一行代码,如果是函数也会跳过函数。这个命令可以简化为n.

    *执行N次下一步:
    (gdb) next N

    *执行上次执行的命令:
    (gdb) [Enter]
    这里,直接输入回车就会执行上次的命令了。

    *单步进入:
    (gdb) step
    这样,也会执行一行代码,不过如果遇到函数的话就会进入函数的内部,再一行一行的执行。

    *执行完当前函数返回到调用它的函数:
    (gdb) finish
    这里,运行程序,直到当前函数运行完毕返回再停止。例如进入的单步执行如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish.

    *继续运行程序直接运行到下一个断点:
    (gdb) continue
    这里,如果没有断点就一直运行。

    *强制调用函数:
    (gdb) print
    这里,print和call的功能类似,不同的是,如果函数的返回值是void那么call不会打印返回值,但是print还是会打印出函数的返回值并且存放到历史记录中。

    *在当前的文件中某一行(假设为6)设定断点:
    (gdb) break 6

    *设置条件断点:
    (gdb) break 46 if testsize100
    这里,如果testsize
    100就在46行处断点。

    *指定程序直到退出当前循环体:
    (gdb) until
    或(gdb) u
    这里,发现需要把光标停止在循环的头部,然后输入u这样就自动执行全部的循环了。

    *跳转执行程序到第5行:
    (gdb) jump 5
    这里,可以简写为"j 5"需要注意的是,跳转到第5行执行完毕之后,如果后面没有断点则继续执行,而并不是停在那里了。
    另外,跳转不会改变当前的堆栈内容,所以跳到别的函数中就会有奇怪的现象,因此最好跳转在一个函数内部进行,跳转的参数也可以是程序代码行的地址,函数名等等类似list。

    具体实施情况如下

    image
    image
    image
    image
    image

    - makefile

    Makefile带来的好处就是“自动化编译”。因为一但写好,只需要 make 命令,整个工程可以完全的编译,极大提高软件的开发效率。
    make工具最主要也是最基本的功能是由makefile文件中描述的源程序至今的相互关系完成自动编译、维护多个源文件的工程。而makefile文件需按照某种语法来编写,文件中需要说明如何编译各个源文件并链接生成可执行文件,要求定义源文件之间的依赖关系。
    Makefile 基本规则

    • 打开的gvim环境中输入i进入编辑模式,输入代码,保存为prog.c、 code.c、 code.h文件

    • 输入vim Makefile,输入i进入编辑模式,输入代码并保存

    • 输入make,进行自动化编译

    • 执行./test查看结果

    教材学习中的问题和解决过程

    • 问题1:在windows系统下运行gcc无法使用。

    image

    • 问题1解决方案:在实验楼中进行学习。

    代码调试中的问题和解决过程

    • 问题1:虚拟机中git的使用有些遗忘,这次先用idea进行git。
    • 问题1解决方案:下一周会在虚拟机中进行git。

    代码托管

    image

    其他(感悟、思考等,可选)

    本周主要的学习内容就是vim,gcc,gdb以及makefile。这些对于我们去深入理解C语言的编译过程都有非常大的帮助。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 95/95 1/1 8/8 学习了gcc与gdb的使用

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    算法练习-寻找和为定值的两个数
    算法练习-字符串全排列
    算法练习-最长回文子串
    判断一点是否在三角形的外接圆内
    用递归方法计算行列式的值
    算法练习-回文判断
    算法练习-字符串转换成整数(实现atoi函数)
    算法练习-字符串包含
    数据结构-队列
    结构体(或者联合体)变量的成员在内存里是如何分布的
  • 原文地址:https://www.cnblogs.com/paypay/p/7587499.html
Copyright © 2011-2022 走看看