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


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

    教材学习内容总结

    • 第一章主要学习了:信息是什么、源代码到目标程序所需要经过的4个过程、系统如何执行目标程序、执行过程中发现存在不断复制搬移程序的问题、为了解决问题出现了高速缓存器、完善过程,出现了存储器分层的结构 、操作系统如何管理硬件、三个抽象概念,进程(线程),虚拟内存,文件(网络也是一种文件)、并发和并行。

    • 第七章主要学习了链接的基本概念,也了解了三类目标文件、符号、符号表等重要概念。

    • 每章问题提出

      • 第一章:虚拟内存的意义是什么,为什么通过进程、虚拟内存、文件三个抽象概念可以实现操作系统的两个基本功能
      • 第二章:了解计算机的编码等规则对编程有什么益处?
      • 第三章:程序的机器级表示是什么意思?
      • 第四章:处理器的体系结构是什么?
      • 第五章:如何优化程序的性能?
      • 第六章:存储器这种层次结构有什么好处?
      • 第七章:什么时候用到静态库和动态库?我们日常的编程中常用吗?
      • 第八章:异常控制流是什么意思?C语言里是怎么处置异常的?
      • 第九章:为什么存在虚拟内存的概念?它和内存有什么区别?
      • 第十章:系统级I/O是什么意思?
      • 第十一章:如何用C语言进行网络编程?与Java语言相比有什么优势与劣势?
      • 第十二章:如何用C语言进行并发编程?与Java语言相比有什么优势与劣势?

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

    • 问题1:使用gcc -c hello.s -o hello.o把.s文本文件转为.o二进制文件中不知道为什么出现了问题,但是若gcc -c hello.i -o hello.o却没有问题,然后程序也可以正常运行

    • 问题1解决方案:尚未知道原因,目前使用第二种方法能正常运行。个人认为是.s文件出现了问题,.s文件按照书上解释应该是文本文件,且应是汇编代码构成的,但是当我打开.s文件后发现.s文件却是乱码?!

    • 问题2:自己独自练习gcc编译时,在输入完gcc -c sum.i -o sum.o后运行发现运行不了

    • 问题2解决方案:因为sum.o文件属于可重定位目标文件,缺少链接部分,因此还要输入gcc sum.o -o sum后,生成可执行文件即可,且通过打开sum.o文件和sum文件也可发现这两个文件是有差别的。个人感觉,在平日正常编程中,编译环节还是使用gcc -c sum.i -o sum比较方便

    • 问题3:使用AR工具创建函数的静态库时,书上写着命令ar rcs libvector.a addvec.o multvec.o,其中参数rcs是什么意思?

    • 问题3解决方案:通过网上的资料显示,参数r:在库中插入模块(替换);参数c:创建一个库。不管库是否存在,都将创建;参数s:创建目标文件索引。

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

    • 问题1:在使用gdb进行调试的时候,第一步是先把代码调出来,即要输入命令l即可,但是在真正调试的时候,如果只是想调试中间某一部分而跳过某些暂不需要的代码时,这样输入命令就会很麻烦
    • 问题1解决方案:
      通过网上资料显示,命令l一次显示10行代码,可以在命令l后加入想调出来的代码的行数,则可显示此行数上下的部分代码,比较方便

    代码托管

    上周考试错题总结

    结对及互评

    暂无

    本周结对学习情况

    • 20155330
      • 结对学习内容
        • 第一章
        • 第七章

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

    • 本周我主要学习在虚拟机的Linux系统下学习C语言编程,学会使用vim的三种基本模式,初步掌握gcc编译器的常用选项以及相关的命令参数,初步学会使用gdb进行调试,

    • 下周主要任务是认真学习教材第七章的内容,学习并学会使用静态库和动态库。

    • 总而言之,本周的学习收获主要是初步掌握后续学习要使用的基本工具,熟悉Linux环境,为后续学习奠定基础,下周的学习主要是对本周学习进行修补和完善。此外,本周对Makefile以及断点的调试的学习和练习仍较生疏,下周还需多加学习。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 400小时
    第一周 48/48 1/1 15/15

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

    • 计划学习时间:10小时

    • 实际学习时间:15小时

    • 改进情况:在动手实践编程方面要提高效率

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

    参考资料

  • 相关阅读:
    AtomicReference与volatile的区别
    深度剖析ConcurrentHashMap(转)
    ConcurrentHashMap原理分析
    Java Stack源码分析
    Fail-Fast机制详解
    TreeSet源码分析
    状态(State)模式
    原型(Prototype)模式
    职责连模式
    观察者模式(Observer)
  • 原文地址:https://www.cnblogs.com/rafell/p/7588157.html
Copyright © 2020-2023  润新知