信息安全系统设计基础期末总结


1.本学期博客总结

(1)每周读书笔记链接汇总

(2)实验报告链接汇总

(3)家庭作业链接汇总

(4)实践作业链接汇总

2.课程收获与不足

(1)自己的收获

学习方法

所谓教育,是忘却了在学校的全部内容之后剩下的本领,我觉得这是在学习过程中一种学习能力的培养。

  • 硬知识、软知识和元知识
    • 在学习中如何构建合理的知识框架,通过已有的知识来把握新知识脉络。
  • 搜索能力
    • 尽量通过自己的搜索一步步的解决问题,而不是不动脑子的照搬。
  • 读书
    • 积累与应用

这三点我在期中总结的时候就已经提到过(详见第七周读书笔记)。再学习一些其他的软件工具和程序语言等新知识的时候,这些能力的积累会使人学的更加轻松。

  • 在实践中学习

    • 领了一个实践任务,开始的时候也没想着加分,只是觉得老师一下子给那么多实践任务,硬件的我一个人做可能有难度,就想着做一个不涉及硬件的,积累一些其它的知识。没想到这个简单TUI游戏设计的实践任务让我读了两本非常好的书:《Unix/Linux编程实践教程》、《Unix/Linux下的Curses库开发指南》,深刻地体会到了在编程任务中学习的好处。

编写的过程中不可避免的会遇到的很多问题,但是通过查找资料和自己的认真分析研究去解决之后,对问题的理解会更深入,也很有成就感(详见简单TUI游戏设计)。

知识积累

  • Linux系统基本操作

    • 如何使用 man -kgrep -nr XX /usr/include 等命令获取帮助
  • Vim的使用

  • GCC编译与GDB调试

    • 静态库与动态库的制作与使用
    • makefile
  • 信息的表示和处理

    • 信息 = 位 + 上下文
    • 存储系统核心思想———缓存
    • 操作系统核心抽象:文件、虚存、进程、虚拟机
  • 程序的机器级表示

    • ISA指令集体系结构
    • 栈帧
  • 处理器体系结构

    • Y86指令集体系结构
    • 逻辑设计和硬件控制语言HCL
  • 存储器层次结构

    • 三种常见存储技术:RAM/ROM/磁盘
    • 局部性原理:时间局部性与空间局部性
    • 中心思想:每层存储设备都是下一层的"缓存"
    • 高速缓存存储器结构
  • 异常控制流

    • 异常:中断、陷阱和系统调用、故障、终止
    • 进程
    • 信号
  • 虚拟存储器

    • 页表
    • 虚拟地址空间和物理地址
    • 存储器映射
    • 动态存储器分配
  • 系统级I/O

  • 并发编程

    • 进程
    • I/O多路复用
    • 线程
  • 万能函数

    • 输入的是指针,指向真正想要传到函数里的数据。

    • 将需要输入的数据放入一个结构体中,指针指向这个结构体,不管数据的类型是什么和有多少数据,只要将一个指针指向这个结构体就可以了。

        void func(void parameter)
        typedef void (uf)(void para)
      
  • 指针问题(右左右左法)

    • 指针数组:是数组,数组里的元素是指针

        int *daytab[13]
      
    • 数组指针:是指针,指向一个类型和元素个数都固定的数组

        int (*daytab1)[13]
      
    • 指针函数:是函数,返回值类型是指针

        int *comp()
      
    • 函数指针:是指针,指向函数的指针,函数名就是函数指针

        int (*comp1)()
      
  • curses库使用

其他技能

  • Markdown编辑工具
  • 虚拟机的安装与问题解决
  • 正则表达式
  • 简单的交叉编译

(2)自己需要改进的地方

  • 对教材《深入理解计算机系统》的学习没有达到预想的程度,很多问题都是不求甚解的状态。在这学期开始的时候,我感觉可能学完这一本书我真的可以深入理解计算机系统了:(越学到后面我发现,这本书就是一个很庞大的计算机学习导图的树根,每一章甚至每一节深入研究都有很多值得学习和挖掘的东西,需要花更多的时间和精力去研读。
  • 代码的阅读普遍不够细致。不管是书上的、实践的还是实验的代码,阅读基本停留在运行完,大概知道是干什么的,很少一行一行的细读。除了单独两周给出实践时有认真研究了几个代码外,其余大多都没有用心认真的看。做实验之前,没有很好的预习,应该将实验步骤中的代码阅读理解一下,有准备的做实验。
  • 总是感觉我的学习程度和老师的要求与期望之间有很大的差距。虽然感觉已经加班加点花了很多时间看教材、看代码、做实践、写博客,也经常以各种客观理由安慰自己,但是事实是确实有很多问题没有解决、有很多代码没有认真理解,总是感觉非常自责。

(3)为结对伙伴(20135325刘虹辰)提供帮助

  • Linux的基本操作
  • vim与gdb实践
  • 督促完成课本例题

我觉得自己其实没有提供什么帮助,主要是刘虹辰同学在老师找过之后学习状态有所改变,开始认真的读一些书上的内容。我自己觉得我非常不适合教别人东西,感觉在很多问题上没有表达清楚,只是一些简单的操作和应用。

(4)给学弟学妹们的学习建议——如果重新学习这门课,怎么做才可以学的更好?

  • 进入大学以后,我经常思考到底如何学习,这学期学期运动会训练时遇到的几个大一学妹也在问关于选课、老师和怎么学的问题。我觉得在最开始的时候可能还是很有热情的,面对新事物、新知识开始的时候可能会感觉比较有趣,课程安排上开始也会比较容易,可之后就会变得困难起来。娄老师曾经提到过两句话:很多人学了很久的东西,但是最终还是停留在很熟练的初学者的阶段,甚至还不能算是合格;容易的事越做越困难,困难的事越做越容易。我觉得其实这就是坚持的意义:度过最困难的时间,让自己在课程的学习上入门。
  • 我们选课的时候可能都会去问学长学姐到底哪个老师比较“好”,就抢哪一门课,我也不例外,当初选修Java的时候没想到会变成这样的学习方式:)。但是我一直是抱着只要做了就要尽我的最大努力去做好的态度,尽可能适应各个老师的风格。而且大学确实应该真正学一点东西,所以我觉得娄老师的教学方法特别是给我们讲的一些思想在学习过程中都非常有用。
  • 可能开始的时候比较难适应,万事开头难,特别是每周的博客和实验楼的网络问题...但是时间长了就习惯了,到最后完成的时候,会很有成就感。尽量不要带着抵触的情绪,消极怠工也逃不掉啊,抱着积极认真的态度去做,一学期很快就过去了,而且越学越觉得有用、有趣,会感觉自己知识面太窄,想学的知识太多,深入研究时间总是不够用,生活格外充实。如果开始没有做好,后面想赶上更困难,会陷入恶性循环中,尤其是一些在各门学科中相通的知识,第一次没学好后面再补是一件很痛苦的事。

3.给老师的建议

(1)你觉得这门课老师应该继续做哪一件事情?

  • 每周的学习任务和每章内容的学习指导
  • 博客和小组学习
  • 每周的检测而不是期末的考试
  • 额外的实践项目

(2)你觉得这门课老师应该停止做哪一件事情?

  • 我觉的家庭作业可以不要变成加分项而是必做项,每个同学都至少要研究几个题目。其实在研究家庭作业的时候也是巩固教材的过程,后面章节的确实都是三星地题也很难,但是前面的比较容易的部分大家就都可以去做一做。