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

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

    教材学习内容总结

    先记录一下第四周老师上课讲的内容:

    1. 学习Linux命令,可以提高效率。
    2. 系统调用
    3. 通过系统调用实现who命令。

    who命令用来查看当前登录的用户信息。
    借助man手册来查看who命令。
    man手册是分章节的,第一节是可执行程序或shell命令,第二节是系统调用,第三节是库调用。所以我们在查看man手册时可以使用man -K key1 | grep key2 | grep key3的方式来过滤其他信息,提高查找效率。

    举个栗子:printf是linux命令,也是库函数,所以在查看时注意区分,man 1 printf是查看linux命令里的printf,man 2 printf是查看库函数里的printf。

    查看man手册时,注意看see also。
    man还可以查看文件,在用man who查看who命令时,发现了utmp这个文件,可以再用man命令去查看utmp文件。知道了这是一个存放用户登录记录的文件,想要通过系统调用读取该文件,再用man查看系统调用的read :man -k read | grep 2 | grep file。先看用到的头文件,然后看函数原型,就知道怎么用了。在read的see also里发现了,write,这下读写都搞定了。

    locate 头文件,可以看见文件被定义在哪里。

    grep -nr 宏名 头文件位置,可以查看头文件里的宏定义。

    然后是我看书上第二章的总结:

    在看到寻址和字节顺序这一节的时候,我用书上实例程序,看了一下我自己的机器对不同数据值的字节表示,如下图所示:

    image

    我的机器是Linux64,采用的小端法,使用的8字节地址。

    32位程序和64位程序的区别在于该程序的编译方式,而不是运行它的机器类型。

    int32_t和int64_t数据大小是固定的,不随编译器和机器设置而变化。

    字节对象的地址为所使用字节中最小的地址。排列一个字节对象的字节有两种规则——大端法和小端法。(在不同类型的机器之间通过网络传送二进制数据时需要协调)

    位向量的一个重要作用就是表示有限集合,也就是编码集合。

    位运算就是按位进行布尔运算,常见用法是实现掩码运算(从一个字中选出一些位的集合)

    区别逻辑运算符与位运算符,逻辑运算符非0即为1,逻辑运算的返回结果只有1或者0,逻辑运算符如果对一个参数求值就能确定结果,则不会对第二个参数求值。

    逻辑右移在左端补0.算术右移在左端补最高有效位。

    C语言里有无符号数和有符号数,有符号数通过补码表示。

    测试了书上48页的代码结果如下:

    image

    可见12345和-12345虽然仅一个正负之差,但其二进制表现却有很大差异。

    补码数的符号拓展:

    image

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

    • 问题1:第48页的练习题2.18,在看这个反汇编列表的时候,不理解$,%rsp,%rax,%rid什么意思
    • 问题1解决方案:去网上查了一下,知道了$表示偏移地址,rsp,rax,rid是寄存器。

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

    • 问题1:在学习补码的时候,需要用到前面定义的show_bytes函数和自定义byte_pointer类型,虽然我同时编译了两个.c文件,但仍然提示我找不到这两个符号的定义。

    image

    解决方案:将这两个符号放到头文件里定义一下就okay了。

    代码托管

    image

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 代码中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 其他

    本周结对学习情况

    - [结对同学学号1](博客链接)
    - 结对照片
    - 结对学习内容
        - XXXX
        - XXXX
        - ...
    

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

    读教材第一遍也许读不懂,但隔几天,多读几遍就会有新的理解,再写写书上的示范程序,对内容的理解就更好了。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 300/1300 2/9 30/90

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

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

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    webBrowser控制新窗口
    MSIL指令速 查表
    [转载]最新.NET Reactor v4.0.0.0 注册机
    如何得到webbrowser的句柄
    【C#】获取本地Cookie的问题
    visio 2007 简体中文版下载
    VMware Workstation(虚拟机) V6.0.2 Build 59824 汉化版 |
    ComponentOne Studio Enterprise 2010 v1
    [转载]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密)
    用WPF实现打印及打印预览
  • 原文地址:https://www.cnblogs.com/clever-universe/p/7673801.html
Copyright © 2011-2022 走看看