20145314郑凯杰 《信息安全系统设计基础》课程总结

20145314郑凯杰 《信息安全系统设计基础》课程总结

每周作业链接汇总

  • 第0周学习总结

    此周内容与重要成长:

    1. 翻阅了课本,并对每个章节提出问题;
    2. 使用虚拟机VirtualBox安装Linux系统,提出并解决相关问题;
    3. 预习了Linux基础入门;
    4. 阅读了老师推荐的博客并回答相关问题
    • 二维码1:
  • 第1周学习总结

    此周内容与重要成长:

    1. 了解linux与快捷键的使用;
    2. 核心的Linux命令:find/locate/cheat/grep/which/whereis
    3. 预习了Linux基础入门;
    4. 使用Linux中用户管理命令/系统相关命令/文件目录相关命令
    • 二维码2:
  • 第2周学习总结

    此周内容与重要成长:

    1. GCC编译的四个步骤:预处理(gcc -E)、编译(gcc -S)、汇编(gcc -c)、链接,如何使用gdb调试技术;
    2. 静态链接库的生成:ar rcsv libxxx.a xxx.o ;
    3. 共享库的生成 gcc -fPIC -c xxx.c;
    4. 教材第一章
    5. 进行实践调试。
    • 二维码3:
  • 第3周学习总结

    此周内容与重要成长:

    1. 给出了上周知识练习的实践:(helloworld的断点调试);
    2. 二进制在计算机中的重要地位、布尔运算在C语言中的应用;
    3. 介绍了有符号整数、无符号整数、浮点数的表示;
      
    4. 信息=位+上下文
    • 二维码4:
  • 第5周学习总结A

    第5周学习总结B

    GDB调试32位汇编堆栈分析
    此周内容与重要成长:

    1. 介绍了X86汇编基础、ISA;
    2. 介绍了函数调用栈帧的概念、用GDB进行调试;
    3. GDB调试32位汇编堆栈分析;
    4. 进入待及格名单
    • 二维码5:

    • 二维码6:

    • 二维码7:

  • 第6周学习总结A

    此周内容与重要成长:

    1. 教材第四章 处理器体系结构;
    2. 安装Y86处理器;
    3. Y86就是一个X86的缩减版;
    4. 逻辑设计和硬件控制语言HCL;
    5. 适应待及格名单生活规律
    • 二维码8:
  • 第7周学习总结A

    第7周学习总结B

    此周内容与重要成长:

    1. 放上上一周Y86模拟器安装截图;
    2. 介绍了常见的存储技术(RAM、ROM、磁盘、固态硬盘等);
    3. 学习了局部性和缓存思想,并进行深入实践理解(见博客B);
    4. 知识重点突破 磁盘;
    5. 用 wc -l find src -name *.c 类似统计代码行数
    • 二维码9:

    • 二维码10:

  • 期中复习总结A

    期中复习总结B

    此周内容与重要成长:

    1. 复习了 Linux常用命令以及教材1-7章;
    2. 总结了自己新学到的知识点、自己的收获、自己的不足;
    3. 提出了部分课程建议和意见;
    4. 对知识进行补缺补漏(例如我没完成的Vim部分内容,在这周补上了);
    5. 对每章遇到的问题进行总结归纳(博客里“每章所遇到问题的总结分析”)
    • 二维码11:

    • 二维码12:

  • 第9周学习总结

    第9周学习总结B

    此周内容与重要成长:

    1. 课本第10章《系统级I/O》;
    2. 掌握两个重要命令:man -k key1 | grep key2| grep 2 根据关键字检索系统调用;grep -nr XXX /usr/include查找宏定义,类型定义,并进行实践;
    3. 解决了典型问题--“头文件问题”;
    • 二维码13:

    • 二维码14:

  • 第10周学习总结

    此周内容与重要成长:

    1. 课本第10章《系统级I/O》;
    2. 再次对man -k key1 | grep key2| grep 2grep -nr XXX /usr/include进行实践;
    3. 分析老师给的代码"fs文件夹",并对代码进行修改编译;
    • 二维码15:
  • 第11周学习总结

    此周内容与重要成长:

    1. 课本第八章《异常控制流》;
    2. 学习异常及其种类、异常处理;
    3. 管道和I/O重定向:pipe, dup, dup2
    4. 分析老师给的代码,并对代码进行修改编译;
    5. 关于指针数组与数组指针的区别,函数指针和指针函数的区别;
    • 二维码16:
  • 第12周学习总结

    此周内容与重要成长:

    1. 分析前三周的代码;
    2. 完成视频学习;
    3. 学习理解:指针与声明、信号的产生和处理;
    4. 分析老师上课内容,对右左右左法进行研究实践;
    • 二维码17:
  • 第13周学习总结

    此周内容与重要成长:

    1. 掌握三种并发的方式:进程、线程、I/O多路复用;
    2. 掌握线程控制及相关系统调用;
    3. 掌握线程同步互斥及相关系统调用;
    4. 复习刘念老师所授网络编程内容;
    5. 对代码进行分析和GIT
    • 二维码18:
  • 第14周学习总结

    此周内容与重要成长:

    1. 虚拟存储器的概念和作用、地址翻译、存储器映射;
    2. 动态存储器分配的方法、垃圾收集;
    3. C语言中与存储器有关的错误;
    4. Linux虚拟存储器系统
    • 二维码19:

实验报告链接汇总

代码托管

链接:20145314郑凯杰代码托管链接

二维码26:

截图 git log --pretty=format:"%h - %an, %ar : %s 的结果

图1:

代码托管其他部分是通过分别"git add 'XXX'"然后再push上去的。

图2:

代码量汇总:

代码行数:

代码驱动的学习做到没有?

从本学期开始,我就沿袭了上学期的松懈想法,对于刚开始的一些代码就没有树立保存意识。到后来,在老师和同学们的提醒下,我开始意识到托管代码的重要性,但是却没有分目录,描述也很简单。在一度进入了“待及格名单”之后,老师开始对我们这些待及格的同学进行筛查。于是我开始看了老师发的《代码驱动的学习》博客后,认真学习代码管理。也向同学请教了许多。平时关于代码托管的问题,在我做问题归纳的时候,也总结了一份“关于GIT问题的汇总”链接如下:

第十二周问题汇总20145314

实践上有什么经验教训

刚开始使用代码托管的时候遇到困难很多:

  • 这些命令不如程序的编写一般有章可循,而是需要我们去各方收集资料。接着来进行记忆。

  • 需要注意文件夹的分类与管理,在GIT时需要特别注意。(归类至src文件夹里)

后来渐渐通过问同学,就慢慢开始熟能生巧了。

对老师的那句“困难的路,越走越容易。容易的路,越走越困难”深有体会。

如果一直问别人的话,下次你还得继续问别人,每次直接问到问题的答案的同时意味着你永远都要靠别人的大脑来获得答案。

最好的方法就是,做中学,遇到不会的还是需要问,而且需要在问之后总结和归纳。在代码托管部分,刚开始需要死记硬背,我请教了张亚军同学,她的思路清晰,知识扎实,很快就帮我处理好了我的问题。但是这样一来,我自己是永远不会的,所以我向她继续请教,让她一步步告诉我。我再学,再实践,最终才学到了。

回答一下第0周作业中自己提出的问题。

第一章 计算机系统是如何组成的?

运算器、控制器、存储器、输入设备、输出设备

第二章 无符号数和数的二进制补码对编程的影响?

我认为这个问题的回答最好是以问答问:

问:怎么样让负数等于正数?

答:①令第二个数是无符号运算,第一个就会自然被转换为无符号数。

②在数后面+U

第三章 如何修改条件码

三类指令
算术指令:既改变操作数,也有肯能改变条件码。
CMP指令:右操作数减左操作数,只可能改变条件码。
TEST指令:两操作数相与,只可能改变条件码。

第四章 处理器的结构?

CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。

第五章 怎样优化程序?

以前问这个问题的时候问大了···
可以从以下方面优化:
- 程序的书写结构
- 标识符
- 程序结构(模块化)
- 减少判断语句
- 表达式

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

高速缓冲存储器、主存储器、辅助存储器。

第七章 链接是如何进行的?

将各种代码和数据部分收集起来并组合成为一个单一文件,然后由链接器执行。

第八章 局部性在虚拟存储器中有何意义

从具有良好局部性的意义上来说,好的程序员总是应该试着去编写高速缓存友好的代码

第九章 虚拟存储器是如何工作的?

它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换

第十章 标准I/O库是什么?

会对I/O操作进行缓冲,分全缓冲、行缓冲和不缓冲三种。

第十一章 协议软件需要的基本能力有哪些

命名机制和传送机制。

第十二章 什么是并发编程?

所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。
多个事件在同一时间间隔发生。

关于加分项目的经验

①第七周博客的加分

git@OSC代码组织。

这次的加分主要是由于当时我进入了待及格名单,所以老师给的加分机会。把握住了这次机会,也好好学习了一下,如何git,怎样更好的git,特别是要对自己的代码进行组织和整理。这部分经验就是:

  • 这些命令不如程序的编写一般有章可循,而是需要我们去各方收集资料。接着来进行记忆。

  • 需要注意文件夹的分类与管理,在GIT时需要特别注意。(归类至src文件夹里)

②期中知识归纳

  • 期中复习总结A

    期中复习总结B

    • 二维码11:

    • 二维码12:

    • 重要心得:

      1.  是对Linux常用命令以及教材1-7章的一次复习;
        
      2.  总结了自己新学到的知识点、自己的收获、自己的不足;
        
      3.  提出了部分课程建议和意见;
        
      4.  对知识进行补缺补漏(例如我没完成的Vim部分内容,在这周补上了);
        
      5.  对每章遇到的问题进行总结归纳(类似后来同学们做的归纳)
        

③第十二周问题汇总

对同学们的问题进行总结,在做这个加分项目的时候,我主要进行了四步的工作:

  1. 对所有博客78名进行归纳汇总,将问题都挑出来存入文档
  2. 汇总之后开始进行分类和整合,将类似的问题归纳为一类
  3. 触类旁通,举一反三。遇到问题需要处理的并非是问题本身,更是该问题的同类问题。(如GIT的问题,我将小组内讨论的GIT的问题都汇总了)
  4. 进行反思与分析,为什么会有这个问题,这个问题解决之后对我们的意义是什么?总结问题的人应该进行一下分析。

总的来说这个加分项目还是十分有意义的。值得一提的是,第十二周的学习任务是复习前三周的学习内容,所以我在总结的时候也顺便对前三周问题进行了补缺补漏。

关于扣分项目的反思

没有按时参加考试

其实这一条并不算正规的扣分,但是也是导致我一度进入待及格名单的主要原因。考试的规格化成绩,使得每次参加考试的人都可以获得至少1分的成绩。这样不会因为某一次的失误而造成巨大分差,但是如果长期不学,分差就很明显了。所以我的反思就是,要认真学习,认真对待考试。

及时验收代码

老师会按时对待及格名单中的同学进行代码验收,若不验收,那么就会扣分。这是对待及格名单同学的一种催促,一种负责。成绩落在后面的我,由于有这种代码验收机制的存在,才能不断地赶上,而不会就那样放任自己,破罐破摔。

待及格管理制度的优缺点(进入过的同学必写)

待及格期间多发的博客列表

第5周学习总结B
二维码6:

第7周学习总结B
二维码10:

期中复习总结B
二维码12:

第9周学习总结B
二维码14:

优缺点

先说优点,毋庸置疑,待及格名单是为了对成绩落在后面的同学进行催促,激励,增加他们的紧张感,达到让其可以加赶上成绩在前面的同学的目的。这对提高全班的总体成绩,鼓励不同分段的同学都能好好学习,是非常好的方法。作为曾经一度在待及格名单中的我来说,当我知道自己进入了待及格名单之后,我是很惶恐的,我也认为,没有人会对“待及格”这三个字泰然处之。于是之后,在老师的要求下,每周开始写两篇博客,第一篇周四,第二篇周日。

看似是增加了任务,实际上,是对学习时间的更好分配。强制要求待及格名单中的同学,提早开始学习,前半周就完成大部分学习,后半周再进行补缺补漏。任务总量其实还是不变,这样的提前做法,也可以让我在提前完成了本周任务的基础上,在进行其他方面的兼顾和拓展。

还有一方面优点,是待及格名单的代码验收机制。代码是至关重要的,理论知识可以从网上搜索并复制进博客,但是代码确实要亲手去运行与实践的。验收机制给了我一个强制的学习要求,必须强制学习代码。上手之后学习才慢慢变得不那么吃力。

再说缺点,缺点是对待及格名单没有对症下药,过于一刀切。以我做例子,在某些周次里,我不是不想学习,而是生活中其他琐事等客观原因影响较大,在那些周次里,为了完成任务而完成任务,就只能蒙混过关。然而一旦蒙混过关,那一章的知识就将是个大缺口,下一周又需要疲于奔命地学新知识,漏洞很难补上。

建议

对于我所提的缺点,我的改进方案是:引入“计算机实习”的方式,在计算机实习中,我们在选题时,选择了不同难度的题目。题目的难度和其最高分成正比,这有利于针对不同学习阶段的同学,都能找到其合适的学习目标。

同样的,待及格名单的初衷就是针对不同学习能力的同学,给予不同的要求,鼓励大家最后都能有所收获。所以我建议最好可以加大学习目标的弹性,对某些实在有原因的同学放宽那一周的要求,同时降低其得分。学有余力时再补上,同时也把分数补上。这样整个课程的弹性就将增大,从而也更好的达到“待及格名单”的设置意义。

课程的收获与不足

自己的收获

  • 本学期的课程确实让我可以深入理解计算机系统。最基本的,吃饭的家伙——Vritualbox虚拟机,Linux系统,都令我耳目一新。在新领域探索,让我感受到了一种发现新大陆的感觉。知识的储备也十分具有意义。

  • 掌握了许多新思路。在数次的实验中,最基本的思路就是arm板,Redhat虚拟和本机的三项模型。对于实践操作是十分有意义的。

  • 重要的提高,并非是像突然掌握了神功的武林高手一样,天下无敌;而是在细节中慢慢体现出来的。在平时的实践中,经常会出现对代码的实践。实践意味着经常会出现错误。当你认为自己操作无误时,系统突然跑出来一大堆的英文报错,我相信,曾经的我早已抓瞎。然而现在对于这种错误,我还是十分有经验了,冷静地看其中的你认识的部分,根据这些信息推测可能的错误。80%以上的错误将会得到解决。

  • 这种处理问题的方法实例我也总结过,请参照:

    链接:第十二周问题汇总
    二维码27:

  • 另外的重要收获是,对代码的管理。作为一名信息安全的学生。保证信息的完整性和安全性是我们最基本的要求。所以,必须得做到代码托管。养成良好的GIT习惯。这是本学期重大收获之一。

自己的不足

记得我在大二上学期的时候,当时的班主任是范洁老师。有一次班会,范老师让大家上去给自己的大一评一次分,大家打的分都是80、90。而当时的我,自信地给自己打了100分,因为我认为,我不仅在大一学到了知识,应用了知识,还参加了学生工作,参加了学科竞赛,那便是我当时100分的自信。

如果现在,再让我给我的这学期的课程进行评分,我想,我只会给50分吧。

重中之重的,老师也在群里说过。学生的本职工作是学习,如果学习没搞好,其他工作全都是白瞎。就事论事,本学期本课程而言,我确实没有做到学习上搞好。特别是一度进入了待及格名单,主要原因是我忙于学生工作,耗费了大量的精力和时间。

本末倒置,终究不会有什么好结果。学生工作、比赛竞赛之类的,都需要建立在基础成绩足够优秀的基础上。蒋介石说过“攘外必先安内”,如果本职工作没做好,一味追求其他方面,那么最后必会是失败的。就算是侥幸蒙混过关,也终究经不起时间和人们的考验,最终吃亏的还是自己。

痛定思痛,对于即将过去的这门课程,我还将继续努力,继续补上我未学完的功课,还它一个交代。正如老师说的“一切看行动”,说的再多,也不如一个行动。接下来就用行动,把我缺下的50分给补上吧!

给学弟学妹们的学习建议

态度决定一切,永远不要抱着蒙混过关的心态来学习。“求其上者得其中,求其中者得其下”,目标是及格的话,最终只会落得不及格的下场。
其次是学习时间的分配,每天学一点,不要把每周的学习任务堆积到周末才开始着手,当学习任务多的时候可能会无法完成所有的内容。
听老师的,对你真的好。老师一定不会害你,单词、五笔、加分项目的设置,每一条都是在为学生们考虑,只要积极配合老师去做,就能有很大的提高。

问卷调查

你平均每周投入到本课程多长时间?

  • 平均25小时

每周的学习效率有提高吗?

  • 会提高,因为充实。高效会成为习惯的。

学习效果自己满意吗?

  • 还可以

课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书

  • 会的,还有个大创项目,痛定思痛后,我一定会开始做的。

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

  • 继续待及格名单。虽说分化不太好,不过正因为有这样的制度存在,大家才会警醒,才会有紧张和优越感。才会有动力。

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

家庭作业的考试。
在接近期末的时候进行家庭作业的考试感觉没有很大的意义。考试的时候只是翻出答案照抄而已。

你觉得这门课老师应该开始做什么新的事情?

课堂上的互动,随机抽学号进行问答。抽查的方式可以最大限度保证每个人都认真去准备。当然,这样的抽查需要配套奖惩制度。更可以搭配抢答制度一起实施,如老师的思想“游戏化”。

posted on 2016-12-25 23:00  20145314郑凯杰  阅读(324)  评论(5编辑  收藏  举报

导航