20145221 《信息安全系统设计基础》课程总结
每周作业链接汇总
- 20145221 《信息安全系统设计基础》第0周学习总结
- 20145221 《信息安全系统设计基础》第1周学习总结
- 20145221 《信息安全系统设计基础》第2周学习总结
- 20145221 《信息安全系统设计基础》第3周学习总结
- 20145221 《信息安全系统设计基础》第4周学习总结
- 20145221 《信息安全系统设计基础》第5周学习总结
- 20145221 《信息安全系统设计基础》第6周学习总结
- 20145221 《信息安全系统设计基础》第7周学习总结
- 20145221 《信息安全系统设计基础》期中总结
- 20145221 《信息安全系统设计基础》第9周学习总结
- 20145221 《信息安全系统设计基础》第10周学习总结
- 20145221 《信息安全系统设计基础》第11周学习总结
- 20145221 《信息安全系统设计基础》第12周学习总结
- 20145221 《信息安全系统设计基础》第13周学习总结
- 20145221 《信息安全系统设计基础》第14周学习总结
实验报告链接汇总
- 20145221 《信息安全系统设计基础》实验一 开发环境的熟悉
- 20145221 《信息安全系统设计基础》实验二 固件设计
- 20145221 《信息安全系统设计基础》实验三 实时系统的移植
- 20145221 《信息安全系统设计基础》实验四 外设驱动程序设计
- 20145221 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
代码托管汇总
- linux-besti-is-2016-2017-1-20145221托管项目
git log
格式化查看日志:- 代码量汇总:
- 代码驱动的学习
- 完成学习任务时如果我们缺少思考,累却收获不大,从而失去学习的激情。当我在学习的过程中产生了一些厌烦、懈怠的情绪时,我会较为自觉的主动说服自己让自己对这一门课重新燃起希望。
- 我不否认信息安全是我高中毕业时梦寐以求的专业这一客观因素,可能也正是这个因素使得我在学习过程中克服了许多的不良情绪。但我也想说,人嘛,都有偷懒的时候,也都有对困难的事情感到畏缩的时候,但通过娄老师的细心指导,我找到了能克服不良情绪的根本原因——代码驱动的程序设计学习。
-
编程的学习,代码驱动是个很好的方式,我们的教材《深入理解计算机系统V2》是那么厚的一本书,通过使用git和gdb来积极主动的读写代码是一个很好的方式。积极主动的前提是自己有思考,不是仅仅完成老师的任务,那么按照下面的方法学习,这学期收获的不是一门功课的好成绩,而是为学习信息安全专业打下的坚实的计算机基础:程序设计、操作系统、计算机组成原理、汇编语言、编译原理、计算机网络、软件工程……
- 人生不如意十之八九,学习尚且存在许多烦恼,更不必说“编写代码”这个技术活了。我们带着对代码的思考,对问题的思索,去探究代码的魅力,会发现短短几行代码背后所包含的知识点是非常广的。而通过这些代码反映出来的知识也正是我们课本中的理论所学啊!
- 而我认为代码驱动学习的魅力也在于此,我在书中与他们(理论、知识点)相遇,可能只是粗粗一瞥,彼此之间没有发生任何故事;而在后续编程实践过程中,随着我编程的需要不断思索,而他们在此时便会一一浮现在我眼前,再次遇见他们,对他们有了更深厚的情感,发现我更了解他们了,发现他们也更愿意接受我了。我想这种感觉会激发更大的学习兴趣吧~
- 编程的智慧
-
编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。
- 学习代码是一门艺术,因为代码也叫“编程语言”嘛!既然是语言,他就有他独特的表达习惯与语法规则。在做到遵循其基本的规则后,我认为学习代码和读书是一回事,也是一个由薄到厚由厚到薄的过程,是一个量变产生质变的过程。
- 短短几行代码,可能换几行的顺序,改改控制条件,变动一个字符,代码的结果和原来的或许就会大相径庭。而这产生的差异正式我们要思索的,这也就是由薄到厚的过程。刚才已经介绍了,既然他是一门语言,表达内容当然自由,就和我们说话一样,同样一个意思,可以换许多种方法表达,但如何表达精炼且符合规范这就需要炉火纯青的技术了,明明10行代码足以解决所有问题,而您却偏偏写了100行代码,顺序、循环、选择结构随便乱用,这两者之间孰好孰差就一目明了。所以,如何用简短的表达实现预期的效果,这就是提炼的过程,是将学习编程由厚到薄的过程。
-
- 实践上经验教训
- git是个好东西:大家不要不相信,我知道看这篇博客主要的对象是我的学弟学妹。初学git你可能会和我们一样“非常烦躁”,因为你会认为有优盘啊,有云盘啊,git是个什么鬼,配置还这么复杂。哈哈哈,这话说对了,配置确实复杂,但是配置好后可谓极其方便,简单的三条语句基本上可以助你未来2年无忧:
git add
、git commit
、git push
,这个东西又叫“代码仓库”,它就真的像仓库一样辛勤地帮你看管着你之前的代码。我周围一些有的同学虚拟机炸了,就是靠这种方法在找老师查代码找回了之前的代码,可谓挽救了代码,挽救了分数啊~ - 如果你真是在用git托管你的项目、管理着结构层次复杂的代码,你会感谢git给你带来的便捷;但是,如果你是在用git完成“每周学习总结中代码托管的截图”,那就确实很烦了~
- git是个好东西:大家不要不相信,我知道看这篇博客主要的对象是我的学弟学妹。初学git你可能会和我们一样“非常烦躁”,因为你会认为有优盘啊,有云盘啊,git是个什么鬼,配置还这么复杂。哈哈哈,这话说对了,配置确实复杂,但是配置好后可谓极其方便,简单的三条语句基本上可以助你未来2年无忧:
关于第0周预习作业
关于《SCAPP》每一章的问题
- 链接
- 第00周的预习任务中,要求我们对《SCAPP》中每一章节提一个问题,当时自己对课本知识还不了解,为了完成学习任务,我大致翻了翻每章节的导论和中间的相关内容,每章节给出了一个问题,所以当时提的问题难免幼稚抓不住重点。幸好娄老师的指导博客中,对每章的学习重点有一个整体说明,这样在学习的过程中就能有的放矢,不会偏离重点了。
问题解决
第1章:一个“hello.c”程序的生命周期到底是怎样的?
- 答:
- C预处理器——扩展源代码-生成.i文件
- 编译器——产生两个源代码的汇编代码-——生成.s文件
- 汇编器——将汇编代码转化成二进制目标代码——生成.o文件
- 链接器——产生可执行代码文件
第2章:计算机对数据信息的处理与现实生活中的计算到底有何异同,计算机对数字处理的数学原理是什么?
- 答:计算机系统中的所有信息都是以二进制形式存储的,计算机系统规定了三种重要的编码方式:无符号编码、补码编码、浮点数编码。
第3章:Intel IA32和x86-64两种汇编语言有何异同,能否通过本章的学习使自己能够理解编译器优化的能力?
- 答:
- Intel处理器系列:俗称x86,开始时是第一代单芯片、16位微处理器之一。
- DOS时代的平坦模式,不区分用户空间和内核空间,很不安全;
- 8086的分段模式;
- IA32的带保护模式的平坦模式
- 每个后继处理器的设计都是后向兼容的,可以保证较早版本上编译的代码在较新的处理器上运行。
第4章:处理器的硬件设计是如何与操作系统进行搭配的?
- 答:处理器管理的第一项工作是处理中断事件,硬件只能发现中断事件,捕捉它并产生中断信号,但不能进行处理。配置了操作系统,就能对中断事件进行处理。处理器管理的第二项工作是处理器调度,并引入了进程与线程的概念。
第5章:对程序进行优化的方法有哪些,在哪些情况下会更适用哪一种方法?
- 答:
- 消除循环的低效率:固定不变的东西提出循环,减少每次循环都计算相同的内容,这一点对性能的提升时很明显的;
- 减少过程的调用:消除循环中的过程调用,可通过函数提前得到需要操作的对象,这样会提高速度,但是模块性降低;
- 消除不必要的存储器引用:函数参数为指针时,如果循环中用到指针,需要对指针的地址进行访问,则每一次访问都会进行取指,执行,存储等操作,这时最好在函数中声明临时变量,在循环中用临时变量,这样直接就可以对变量进行赋值,循环结束之后,再将结果赋给指针地址。
第6章:存储技术是如何被组织成层次结构的?
第7章:链接器在软件开发中扮演了怎样一个角色?
- 答:链接器是将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件的程序,它的两个主要任务是:符号解析及重定位。
第8章:应用程序是如何与操作系统交互的?
- 答:进程的经典定义就是执行中程序的实例。它提供了一种假象使得我们以为自己在独占处理器和存储器。首先来看独占处理器的假象,在有n个进程的操作系统中,这n个进程轮流执行一个时间片,然后被抢占。其中每个进程中程序计数器(即PC)的值序列与别的进程中的序列是相互独立的,这样就为我们制造了一种处理器只运行自己程序的假象。再来看独占存储器的假象,在一个有n位地址的机器上,地址空间是
1—2^n-1
的集合,每个进程都有2^n
大小的地址空间。其他进程不能访问,至于它的实现主要是虚拟存储器来实现的。
第9章:虚拟存储器是如何工作的,应用程序是如何使用和管理虚拟存储器?
- 将主存看成磁盘地址空间的高速缓存。
- 只保留了活动区域,并根据需要在磁盘和主存间来回传送数据,高效使用主存。
- 为每个进程提供一致的地址空间
- 简化存储器管理
- 保护了每个进程的地址空间不被其他进程破坏。
第10章:Unix I/O和标准I/O的一般概念是什么?
- 答:对于大多数应用程序而言,标准I/O更简单,是优于Unix I/O的选择。然而在网络套接字的编程中,要使用健壮的RIO函数。因为RIO函数提供了带缓冲的读操作,与无缓冲的写操作(对于套接字来说不需要),且是线程安全的。
第11章:Web服务器如何搭建,怎样实现其功能?
- 客户端:
- 通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。
- 通过该描述符请求与服务器的连接(connect函数),此时需要事先知道服务器的ip和服务器上的应用程序的端口
- 当connect函数成功返回,则表示连接达成,则可通过该文件描述符或者recv,send该文件描述符,即可实现与某服务器端的通信
- 服务器端:
- 通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。
- 绑定端口(bind函数),端口人为设置,本机IP自动获取即可(端口和IP设置通过sockaddr_in结构体实现)。
- 监听socket函数返回文件描述符(listen函数)
- 当listen函数返回时,表示有请求,则使用accept获取请求,accept函数产生一个新的文件描述符,用于和该请求通信。
- 读写该文件描述符或者recv,send该文件描述符,即可实现与某客户端的通信
- 服务器端还可以继续监听socket文件描述符,接受其他端口的请求
- 运行时,应该先启用服务器端。
第12章:三种并发编程的技术有何异同?
- 答:
- 进程,用内核来调用和维护,有独立的虚拟地址空间,显式的进程间通信机制。
- I/O多路复用,应用程序在一个进程的上下文中显式的调度控制流。逻辑流被模型化为状态机。
- 线程,运行在一个单一进程上下文中的逻辑流。由内核进行调度,共享同一个虚拟地址空间。
加分项目
加分说明
- 这是娄老师做的分数表格,非常细致,将相关加分项截图如下
优秀作业
- 第2周作业
- 第5周作业
- 第7周作业
- 第8周作业
- 第9周作业
- 第10周作业
- 第11周作业
匿名调查
- 2016-2017-1 信息安全系统设计基础(北京电子科技学院)- 投票
随谈
- 其实我加分项目较为单一,除了“课代表”加分比较特殊,其余加分项都很普通一般,但最后怎么也加满了上限(10分)。所以如果说谈谈经验的话,我想说加分项是一个非常好的设定,它能帮你弥补一些在每周测试中流失的分数,当然这需要你的努力才能得到。
- 加分最简单的方法就是,认真对待每周的学习任务,认真完成每周博客(我认为这个博客不要一味的堆砌知识点,应当是前半部分是知识脉络,后半部分应当是大量的本周实践),这样既完成了学习任务,也真正学到了东西,顺便也可以把分数给加了。这个方法可谓是最轻松、最直接、最有效的方法。
- 学有余力、能力强的同学,应该可以尝试尝试娄老师给的加分项目,因为这里面的东西更有拔高性,是最好的实践平台。
扣分项目
- 未按时完成作业
- 在这里我要检讨一下自己,客观因素是这学期选课太多,主观原因是心里还不够重视提交作业这个环节、不会安排时间,所以第13周作业没有按时提交,导致扣分。
- 交作业是完成作业后的自然动作,不交作业是不该发生的,唉,这个分确实该扣,大家都能按时交,为什么我不能呢?还是自己的问题。
待及格管理制度
优点
- 说到待及格管理制度,就不能不提娄老师特有的一周一公布成绩这个制度了,这个制度使得我们每时每刻都知道我们现在处于班级一个怎样的位置:较靠前,我是不是得继续卯着劲,激励自己努力学习?较靠后,我是不是得奋发图强,至少不挂科吧?这一动态变化确实也在动态地改变我们每个人的心理,时刻提醒着每一位同学。
- 待及格同学,就是那些不做任何的改变期末必定挂科的同学,待及格管理制度也就是针对这些同学设定的一个制度,它及时将一部分同学从不及格的状态挽救回来,从现实角度出发,确实使得这些同学有了很大的改变,不少同学很快就脱离了“梁山”。
建议
- 一个制度最怕只是规定条条框框其实却不对现实作任何指导作用(此处不是指本制度)
- 所以,我认为针对本制度还有以下2方面亟待完善:
- 首先,我把待及格的同学划拨出来,提醒他们,这样很好,他们也很快意识到了事态的严重。但是,他们之所以处在这个范围可能是自己确实跟不上啊,所以在弄懂书上基本的代码后,能不能给他们单独布置一些特别的他们可以实际独立自主完成的实践项目(因为老师给的加分项目难度可能很大),使得在实践的过程中可以增强一点对学习的信心与兴趣,同时也能加点分,看到脱离待及格队伍的希望。
- 其次,班级里还是应该有一种互助氛围啊。不能说他们处于挂科边缘,其余人就高枕无忧,或者睁一只眼闭一只眼了。或是能力不足、或是接受很慢、或是态度问题,但这些问题被发现后,如果能针对性解决,实现班级里类似“一帮一”互助,提供一些学习中必要的指导帮助是不是更好呢。(但这里要杜绝完全依赖帮扶人这一现象,不然自己还是没有任何改变)
课程收获与不足
自己的收获(投入,效率,效果等)
- 能熟练使用虚拟机,不再像之前一样抵触它了。这也说明了,越是有用的东西往往越不受人重视,时常以各种客观利用拒绝,但学会之后,会发现很多时候都离不开它了。
- Linux,我专业方面的造诣可能不深,截至目前,计算机操作系统中也就接触过windows和Linux两种,但经过这2学期的对比,发现,Linux在某些方面确实比windows厉害不少,就拿每周统计代码行数举例,在Linux中一行指令就可解决,而在windows中,还需要下载软件、配DLL,相当麻烦。
- 学会时刻将信息托管云盘。“作为信息安全专业的学生,东西丢失是一件很可耻的事”,这句话是娄老师说的,对此我也深表认同。所以,除了每周虚拟机中的正常代码托管,我的D盘中有一个叫“课程”的文件夹,里面记录了大学以来每门课程的课件、实验、学习资料等等,这些东西我认为都是宝贵的,所以我定期都会将文件夹中的内容,更新到云盘一次。
自己需要改进的地方
- 学习效率不是很高,经常会头重脚轻,不会合理安排时间,在关于时间安排、效率提高方面还有待加强。
- 执行力不是很强,有时候心中往往有行动的想法,但总会被各种客观因素利用,给自己找借口,但是专业课的学习哪能离得开实践的补充,所以在这方面还得多实践,不能停留于理论部分。
给开学初的你和学弟学妹们的学习建议
To me
- 下学期学初就要离开娄老师的怀抱了,说实话有点舍不得呢,相处一年,娄老师对学生负责的态度确实令我感动,老师在微信群、朋友圈、博客里分享的一些心得很是受用,老师不管是从为人还是为师都非常令我钦佩。
- 带着在娄老师这里的好习惯继续出发!有的人说娄老师上课啥也不说,全靠自己领悟;其实不然,老师在课堂上除了讲授专业知识以外,还告诉我们一些人生道理、职业规划,以过来人的角度时刻提醒着我们,让我们少走弯路。对于这一点,我非常感谢这位老师,希望在今后的学习生活中,在明年开学时能继续保持这样一份心情,带着在娄老师这里的好习惯继续出发!
To sister and brother
- 以我当时初学的感受,厌恶博客、厌恶git、厌恶实验楼,总觉得这一切都是麻烦,总觉得这一切都是超过这门课程的要求而是任课老师强加在我身上的。
- 但我现在要说这个想法是极其错误的,态度是很不端正的。且想想你所选的专业是什么?是信息安全。出去走一走瞧一瞧,对于我们这点要求可以说根本不过分,而是作为一名信安人应当掌握的计算机技能。更何况这设定的一切都是辅助我们学习的,帮助我们学习的。
- 虽然是门专业课,但也是为后续的学习打基础的。基础不牢,大厦将倾。面对老师的总总要求,我们学生总有各种各样的应对方式。所谓各种糊弄、各种混分。但现在欠下的债,我们永远不知道什么候会还,而等到我们必须还债的时候,恐怕也是我们追悔莫及的时候。
- 关于这门课程更多的想法,我在这篇博客中前前后后也谈了不少,不再赘述了。最后,我在这里分享一篇文章与大家共勉,这也是娄老师推荐给我们的。
- 大学生上课为什么一定要认真听讲?
问卷调查
你平均每周投入到本课程多长时间?
- 答:24小时左右,也就是一天的时间吧。感觉最后写每周总结还是花了一部分时间的。
每周的学习效率有提高吗?
- 答:有时候翻开课本会感觉非常多,无从下手。我的做法往往是看一看教学进程,娄老师很负责细心的写下了每周应该重点看的例题、重点实践的练习,有了这些学习材料,学起来至少就有了方向和方法,效率当然提高了不少。
现在评价一下第0周提出的问题的质量,抓住重点了吗?
- 第00周的预习任务中,要求我们对《SCAPP》中每一章节提一个问题,当时自己对课本知识还不了解,为了完成学习任务,我大致翻了翻每章节的导论和中间的相关内容,每章节给出了一个问题,所以当时提的问题难免幼稚抓不住重点。幸好娄老师的指导博客中,对每章的学习重点有一个整体说明,这样在学习的过程中就能有的放矢,不会偏离重点了。
学习效果自己满意吗?
- 答:我认为还可以,至少我可以负责任的说,从2016年9月12日第一次上这门课的我和今天写博的我是有很大变化的,还是很有收获的,学到了之前不曾接触过的东西。对于每一章的学习效果,我往往是通过每次的考试以及对代码的理解程度来检验自己的学习效果,对于大部分章节还是弄懂了的。
本学期你与老师和同学交互最多的一篇博客是哪篇?
- 《Linux下who命令之C语言实现》:http://www.cnblogs.com/20145221GQ/p/6060420.html
- 这篇博客是在老师第一次讲用C语言实现终端命令后完成的,当时是对老师讲的内容很有兴趣,也想弄清楚终端里一些命令实现的原理,就尝试着进行了这个实践。
本学期被阅读最多的博客是哪一篇?有何经验?
- 《爱春秋之戏说春秋 Writeup》:http://www.cnblogs.com/20145221GQ/p/5936482.html
- 这篇博客本不是《信息安全系统设计》这门课程的主要内容,是在总结《信息安全概论》中实践部分所完成的,是一篇分享性质的交流博客。当时完成这篇博客的初衷有两点,一个是记录一下自己在网络攻防实践中的学习历程,另一个是希望了将自己原创的东西在网络上发布,能与兴趣相投的人有一个交流学习。
- 该博客阅读量达到了731次阅读,从数据上说应该是比较受大家欢迎的。我想原因大概是,这样的交流博客本身就很吸引大家阅读,网络攻防技术本身也需要一个量的积累,见多才能识广;其次,博客本身详实地记录了我攻破每一道关卡的经历,包括失败的,所以可能这篇博客完成的出发点就站在了一个初学者的角度,能与更多的读者产生共鸣,里面有他们所需要的东西。
- 有了这个经历(加上下文中提到的另一篇博客),我认为博客不单单是一个我们完成作业的平台,我们在博客中发表一些原创的东西,发表一些自己学习的体会经验,既是对自己的总结,也是对他人的帮助。
- PS:不久的以前,我在百度上搜索一个较专业的知识,往往会优先点击“百度知道”,而现在的我则会点击后缀为“博客园”、“CSDN”、“新浪博客”等搜索项,因为事实证明这些博客里的内容大都是专业的、正确的、能真正给人帮助的。
课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
- 答:这个我真不敢保证。但是,我认为我会尽量把自己觉得重要的东西记录进去,不管是这种学习总结,还是一些感想随笔,都可以往上面记录。毕竟博客也是一个方便的云端啊,记录的东西都不会丢失,这一点确实在以后用到博客中内容时非常方便。比如我曾经写过的一篇博客《Atom插件安装》,其中相关内容我几乎花了2天的时间才整理出来,亲测可用,最后博客浏览量达到了5846(截至发博时间),这也算是对我付出的一种肯定吧,有这么多博友支持我。
你觉得这门课老师应该继续做哪一件事情?
- 答:继续这样的教学方式吧,这必定是电科院教学中的一股清流~能培养我们自主学习的能力,也就是学习学习的能力,这个能力比学任何一门特定的课都重要。
你觉得这门课老师应该停止做哪一件事情?
- 答:暂无发现有需要停止的事。
你觉得这门课老师应该开始做什么新的事情?
- 答:
- 就这门课来说,我觉得实验我并没有弄懂,如果老师在下次做实验前能讲一讲就最好啦,带着目的去做,就可以不用过分依赖教程了。同样的,我认为对于一些难的章节,如果也能提前多讲讲,教学进程里详细写写就更好了,毕竟带着目的学习可能会避免走许多弯路。(虽然碰壁走弯路也是一种学习体验,一种经验积累)
- 我觉得,博客这个平台还是有一定的限制,这也就是为什么最初我们都愿意在微信群里提问,可能还是少许不便吧。所以,有时候别人的学习经验可能不能尽快发现,需要老师来推荐。因为这样,我认为可以每周随机选取5位同学(数量待定,可以根据平时学习能力梯次配置),要求其余同学必须在其博客底下有评论,这样也算是一种“强制交流”吧,不然我感觉很少会有人看别人的博客(除了那些老师点名表扬的博客),这对那5名同学来说也是一种“压力”,他们也会认真完成本周任务。
转载请注明出处
参考资料
- 指导老师博客-娄老师
- 《深入理解计算机系统》
- 2016-2017-1 《信息安全系统设计基础》教学进程