Title

第二次寒假作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2023learning
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/2023learning/homework/12899
这个作业的目标 <总结归纳近两周的学习内容以及绘制思维导图>

个人github主页链接:https://github.com/Tongdaoyumi

本周学习记录:

(知识要点与学习心得)

第十二课 编程基础-语句和函数

1、变量、赋值语句

如a=5 ,其中a为可赋值的量,叫做变量。把数字 5 放a里面.这叫"赋值语句",即把一个值赋给一个变量

2、if判断

可以想成是 "如果 X 为真,那么执行 Y,反之,则不执行Y",if语句就像岔路口,走哪条路取决于条件的真假。

3、while循环

当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。

4、for循环

for循环不判断条件,判断次数,会循环特定次数,不判断条件。for 的特点是,每次结束, i 会 +1

5、函数

当一个代码很常用的时候,我们把它包装成一个函数(也叫方法或者子程序),其他地方想用这个代码,只需要写函数名即可。

第13课 算法入门

0、基本慨念

算法:解决问题的基本步骤

1、选择排序

数组:一组数据

选择排序的复杂度为O(n²)

2、大O表示法

大O表示法(算法)的复杂度:算法的输入大小和运行步骤之间的关系,来表示运行速度的量级

3、归并排序

归并排序的算法复杂度为O(n*log n),n是需要比较+合并的次数,和数组大小成正比,log n是合并步骤所需要的的次数,归并排序比选择排序更有效率

4、Dijkstra算法

一开始复杂度为O(n²),后来复杂度为O(nlog n +I),在下图中,n表示节点数,I表示有多少条线。

第14课 数据结构

1、数组 下标

数组(Array),也叫列表(list)或向量(Vector),是一种数据结构。为了拿出数组中某个值,我们要指定一个下标(index),大多数编程语言里,数组下标都从 0 开始,用方括号 [ ] 代表访问数组。注意:很容易混淆 "数组中第 5 个数" 和 "数组下标为 5 的数",数组下标为5的数是数组里面的第6个数

2、字符串

即字母 数字 标点等组成的数组,字符串在内存里以0结尾。

3、矩阵

可以把矩阵看成数组的数组

4、结构体

把几个有关系的变量存在一起叫做结构体

5、指针

指针是一种特殊变量,指向一个内存地址,因此得名。

6、节点

以指针为变量的结构体叫节点

7、链表

用节点可以做链表,链表是一种灵活数据结构,能存很多个 节点 (node),灵活性是通过每个节点 指向 下一个节点实现的。链表可以是循环的也可以是非循环的,非循环的最后一个指针是0

8、队列

"队列" 就像邮局排队,谁先来就排前面,这叫 先进先出(FIFO——first in first out),可以把"栈"想成一堆松饼,做好一个新松饼,就堆在之前上面,吃的时候,是从最上面开始

9、栈

栈是后进先出(LIFO)

10、树

第15课 阿兰图灵

0.可判定性问题

是否存在一种算法,输入正式逻辑语句 输出准确的"是"或"否"答案?

  1. 阿隆佐邱奇,Lambda算子

美国数学家 阿隆佐·丘奇,开发了一个叫"Lambda 算子"的数学表达系统,证明其不存在。

  1. 图灵机

只要有足够的规则,状态和纸带,图灵机可以解决一切计算问题。和图灵机一样完备,叫做图灵完备。

  1. 停机问题

证明图灵机不能解决所有问题。

  1. 图灵测试

向人和机器同时发信息,收到的回答无法判断哪个是人,哪个是计算机,则计算机达到了智能程度。

第16课 软件工程

1、对象

当任务庞大,函数太多,我们需要把函数打包成层级,把相关代码都放一起,打包成对象。对象可以包括其他对象,函数和变量。把函数打包成对象的思想叫做“面向对象编程”,面向对象的核心是隐藏复杂度,选择性的公布功能。

3、API

当团队接收到子团队编写的对象时,需要文档和程序编程接口(API)来帮助合作。API控制哪些函数和数据让外部访问,哪些仅供内部。

4、集成开发环境(IDE)

程序员用来专门写代码的工具

6、调试(debug)

IDE帮你检查错误,并提供信息,帮你解决问题,这个过程叫调试

7、文档与注释

文档一般放在一个叫做README的文件里,文档也可以直接写成“注释”,放在源代码里,注释是标记过的一段文字,编译代码时,注释会被忽略。注释的唯一作用是帮助开发者理解代码。

8、版本控制

版本控制,又称源代码管理。大型软件公司会把会把代码放到一个中心服务器上,叫"代码仓库",程序员可以把想修改的代码借出,修改后再提交回代码仓库。版本控制可以跟踪所有变化,如果发现bug,全部或部分代码,可以"回滚"到之前的稳定版。

9、质量控制

测试可以统称“质量保证测试”(QA),作用是找bug

10、beta alpha

beta版软件,即是软件接近完成,但没有完全被测试过,公司有时会向公众发布beta版,以帮助发现问题。alpha是beta前的版本,一般很粗糙,只在内部测试

第17课 集成电路与摩尔定律(硬件的发展)

  1. 分立元件与数字暴政

一开始,计算机都有独立组件构成,叫"分立元件" , 然后不同组件再用线连在一起,这会导致计算机的构成很复杂,这个问题叫做数字暴政

  1. 集成电路与仙童半导体

封装复杂性:与其把多个独立部件用电线连起来,拼装出计算机,不如把多个组件包在一起,变成一个新的独立组件。这种新的独立组件就叫集成电路(IC),仙童半导体(用硅做成)让集成电路变成了现实。为了不用焊接或用一大堆线,发明了印刷电路板(PCB),他通过蚀刻金属线的方式把零件连接到一起

  1. 光刻0421

即用光把复杂图案印到材料上。我们把一片薄片状的硅叫做晶圆,通过一系列生产步骤,将晶圆表面薄膜的特定部分除去的工艺叫做光刻

光刻组件示意图

光刻成品示意图

  1. 摩尔定律

每两年左右,得益于材料和制造技术的发展 ,同样大小的空间,能塞进两倍数量的晶体管。

  1. 进一步小型化会碰到的问题

1、由于光的波长限制,精度已到极限。

2、量子隧穿效应:当晶体管非常小,电极之间可能只距离几个原子,电子会跳过间隙,会产生漏电问题

第18课 操作系统

  1. 操作系统(OS)

操作系统也是一种程序,不过它有操作硬件的特殊权限,可以运行和管理其他程序。

  1. 批处理

一个程序运行后会自动运行下一个程序。

  1. 外部设备

和计算机连着的其他设备,如打印机。

  1. 设备驱动程序

为了使所写程序和不同类型的电脑兼容,我们需要操作系统充当软件和硬件之间的媒介,更具体地说,操作系统提供程序编程接口(API)来抽象硬件,叫“设备驱动程序”。程序员可以用标准化机制,和输入输出硬件(I/O)交互,

  1. 多任务处理

操作系统能使多个程序在单个CPU上同时进行的能力,叫做“多任务处理”

  1. 虚拟内存

多程序处理带来了一个程序所占用内存可能不连续的问题,导致程序员难以追踪一个程序,为了解决这个问题操作系统会把内存地址虚拟化,这叫“虚拟内存”。

  1. 动态内存分配

虚拟内存的机制使程序的内存大小可以灵活增减,叫做“动态内存分配”,对程序来说,内存看上去是连续的。

  1. 内存保护

给每个程序分配单独的内存,那当这个程序出现混乱时,它不会影响到其他程序的内存,同时也能有效地防止恶意程序篡改其他程序,这叫做内存保护。

  1. 多用户分时操作系统(Multics)

用来处理多用户同时使用一台计算机的情况,即每个用户只能用一小部分处理器,内存等,

  1. Unix

把操作系统分成两个部分,一个是操作系统的核心部分,如内存管理,多任务和输入/输出处理,这叫做“内核”,第二部分是一堆有用的工具,比如程序和运行库。

第19课 内存和储存介质(存储技术的发展)

  1. 纸卡 纸带

问题:读取慢 难修改 难存临时值

  1. 延迟线存储器

利用线的延迟在线里存储数据,又叫顺序存储器或者循环存储器。

存在问题:1 不能随意调出数据

​ 2 难以增加内存密度

  1. 磁芯

利用电磁感应原理

问题 成本高

  1. 磁带

问题 访问速度慢

  1. 磁鼓

与磁带相似

  1. 硬盘

与磁带相似

  1. 内存层次结构

在计算机中,高速昂贵和低速便宜的内存混合使用以取得一个平衡

  1. 软盘

除了磁盘是软的,其他都和硬盘一样,好处是便携

  1. 光盘

原理:光盘表面有很多小坑,造成光的不同反射,光学传感器会捕获到,并解码为 1 和 0

  1. 固定硬盘(SSD)

里面是集成电路

第 20 课 文件系统

0.为什么要采用文件格式:

可以随便存文件数据,但按格式存会更方便

  1. TXT 文本文件

用ASCII解码

  1. WAV 音频文件

记录的是振幅

  1. BMP 图片文件:

记录每个像素的红绿蓝 RGB 值

  1. 目录文件:

用来解决多文件问题,存其他文件的信息,比如开头,结尾,创建时间等

  1. 平面文件系统 - Flat File System

文件都在同一个层次,早期空间小,只有十几个文件,平面系统够用

  1. 解决文件紧密的排序造成的问题

  2. 把空间划分成一块块

  3. 文件拆分存在多个块里

  4. 碎片整理

文件的增删改查会不可避免的造成文件散落在各个块里,如果是磁带这样的存储介质就会造成 问题,所以需要碎片整理——计算机把文件内容调换位置

  1. 分层文件系统 - Hierarchical File System:

有不同文件夹,文件夹可以层层嵌套

第21课 压缩

0.压缩的好处

能存更多文件,传输也更快

  1. 游程编码 Run-Length Encoding

适合经常出现相同值的文件,以吃豆人游戏为例:

  1. 无损压缩 Lossless compression

没有损失任何数据的压缩。

  1. 霍夫曼树 Huffman Tree和字典编码 Dictionary coders

一种高效的编码模式,以压缩图片为例

  1. 感知编码 Perceptual coding和有损压缩 jpeg 格式

删掉人类无法感知的数据的有损压缩方法,叫做“感知编码”,如音频文件,人类听不到超声波,所以可以舍去,MP3就是音频的一种压缩形式。

有损压缩的一个例子就是jpeg模式,如图:image

  1. 时间冗余 Temporal redundancy

一个视频由很多图片构成,其中很多图片的背景一样,这就构成了时间冗余,很多视频编码格式,只存变化的部分。进阶的视频压缩模式会找到帧与帧的相似性,然后打补丁,MPEG-4 是视频压缩的常见标准。

第 22 课 命令行界面

  1. 人机交互 (Human-Computer Interaction)发展史

计算机早期同时输入程序和数据(用纸卡/纸带)

运行开始直到结束,中间没有人类进行操作,

原因是计算机很贵,不能等人类慢慢输入,执行完结果打印到纸上 (02:34)

到1950年代,计算机足够便宜+快,人类和计算机交互式操作变得可行

为了让人类输入到计算机,改造之前就有的打字机,变成电传打字机 (02:44~05:38)

到1970年代末,屏幕成本足够低,屏幕代替电传打字机,屏幕成为标配 (07:24)

  1. 人机交互工具的变化

1 早期输出数据是打印到纸上,而输入是用纸卡/纸带一次性把程序和数据都给进去

2 QWERTY 打字机的发展

3 电传打字机 Teletype machine

作用:用于发电报,使两人可以远距离沟通

  1. 命令行界面 Command line interface

输入命令,计算机会给予回应

第 23课 屏幕与 2D 图形显示

  1. PDP-1 计算机、键盘和显示器分开,屏幕显示临时值

  2. 阴极射线管 Cathode Ray Tube (CRT)

CRT 有两种绘图方式:

​ 矢量扫描 Vector Scanning

​ 光栅扫描 Raster Scanning

  1. 02:14 液晶显示器 Liquid Crystal Displays (LCD),像素 (Pixel)

随着显示技术的发展,出现了LCD,LCD 也用光栅扫描。在屏幕上显示的清晰的点,叫"像素"

  1. 03:32 字符生成器 Character generator,

相比于像素,为了减少内存,人们更喜欢使用字符,计算机需要额外硬件,来从内存读取字符,转换成光栅图形 \N 这样才能显示到屏幕上个硬件叫 "字符生成器",基本算是第一代显卡。它内部有一小块只读存储器,简称 ROM,存着每个字符的图形,叫"点阵图案",

  1. 屏幕缓冲区 Screen buffer

为了显示,"字符生成器" 会访问内存中一块特殊区域 这块区域专为图形保留,叫 屏幕缓冲区,程序想显示文字时,修改这块区域里的值就行。

  1. 05:09 矢量命令画图

概念非常简单:所有东西都由线组成,矢量指令可以画出线,把许多矢量指令存在硬盘上,就能画出很多由线组成的复杂图形。

  1. 06:34 Sketchpad, 光笔 (Light pen),位图显示和画矩形

Sketchpad ,一个交互式图形界面,用途是计算机辅助设计 (CAD)。

光笔,就是一个有线连着电脑的触控笔,有了它们,用户可以画出很完美的线条并进行缩放等操作。

位图显示,内存中的位对应着屏幕上显示的像素。

想画更复杂的图形,如画矩形,我们需要四个值,起点的x y坐标,高度和宽度。

第 24 课 冷战和消费主义

本课概括:政府和消费者推动了计算机的发展

早期靠政府资金,让技术发展到足够商用,然后消费者购买商用产品继续推动产品发展

冷战导致美国往计算机领域投入大量资源 (00:00~01:43)

范内瓦·布什 预见了计算机的潜力,提出假想机器 Memex

帮助建立 国家科学基金会,给科学研究提供资金 (01:43~03:43)

1950 年代消费者开始买晶体管设备,收音机大卖

日本取得晶体管授权后,索尼做了晶体管收音机,为日本半导体行业崛起埋下种子 (03:43~04:29)

苏联 1961 年把宇航员加加林送上太空,导致美国提出登月

NASA 预算大大增加,用集成电路来制作登月计算机 (04:29~06:27)

集成电路的发展实际上是由军事应用大大推进的,阿波罗登月毕竟只有 17 次

美国造超级计算机进一步推进集成电路 (04:29~07:11)

美国半导体行业一开始靠政府高利润合同活着,忽略消费者市场,1970年代冷战渐消,行业开始衰败

很多公司倒闭,英特尔转型处理器 (07:11~08:23)

第 25 课 个人计算机革命

本集概括:继续讲计算机发展史

00:18 1970年代初成本下降,个人计算机变得可行

​ RAM:random-access memory 随机访问存储器

​ ROM:read-only memory 只读存储器

01:51 Altair 8800 第一台取得商业成功的个人计算机

02:32 比尔·盖茨 和 保罗·艾伦写 BASIC 解释器,解释器和编译器类似,区别是解释器运行时转换,而编译器提前转换

03:45 乔布斯提议卖组装好的计算机,Apple-I 诞生

04:40 1977年出现3款开箱即用计算机:

"Apple-II","TRS-80 Model I","Commodore PET 2001"

06:26 IBM 意识到个人计算机市场

IBM PC 发布,采用开放架构,兼容的机器都叫 IBM Compatible (IBM 兼容)

生态系统产生雪球效应:

因为用户多,软硬件开发人员更愿意花精力在这个平台

因为软硬件多,用户也更乐意买 "IBM 兼容" 的计算机

08:44 苹果选封闭架构,一切都自己来,只有苹果在非 "IBM 兼容" 下保持了足够市场份额

第 26 课 图形用户界面 (GUI)

——GUI是“事件驱动编程”,代码可以在任意时间执行以响应事件,而不像传统代码一样自上而下。

01:10 图形界面先驱:道格拉斯·恩格尔巴特(Douglas Engelbart)——设想计算机成为未来知识性员工应对问题的工具,并发明了鼠标。

03:20 1970年成立 帕洛阿尔托研究中心(Palo Alto Research Center)

03:29 1973年完成 Xerox Alto(施乐奥托) 计算机——创立了桌面,窗口等计算机概念

06:38 1981年的 Xerox Star system(施乐之星系统)

​ 创建了文档概念

07:45 所见即所得 WYSIWYG——施乐打印出来的东西和计算机上一样,并发明了剪切 复制 黏贴等计算机概念

08:18 史蒂夫·乔布斯去施乐参观

09:15 1983年推出 Apple Lisa

09:31 1984年推出 Macintosh 成功

10:12 1985年推出 Windows 1.0,之后出到 3.1

10:43 1995年推出 Windows 95 提供新的图形界面,并有Mac没有的新功能,如多任务和受保护内存

11:08 1995年微软做失败的 Microsoft Bob——类似于房子的设计

第 27 课 3D 图形

1.线框渲染 Wireframe Rendering

有图形算法 负责把3D坐标"拍平"显示到2D屏幕上,这叫3D投影(包括正交投影和透视投影),所有的点都从3D转成2D后,就可以用画2D线段的函数来连接这些点,这叫线框渲染,

2.网格 Mesh

如果我们需要画比立方体复杂的图形,三角形比线段更好,在3D图形学中我们叫三角形"多边形"(Polygons),一堆多边形的集合叫 网格,网格越密,表面越光滑,细节越多,

3.三角形更常用因为能定义唯一的平面

4. 扫描线渲染 Scanline Rendering——填充图形的经典算法

​ 填充的速度叫做填充速率

抗锯齿——边缘羽化,如果像素在多边形内部,就直接涂颜色,如果多边形划过像素,颜色就浅一些

5.遮挡 Occlusion

用排序算法,从远到近排列,然后从远到近渲染,这叫画家算法

6. 深度缓冲 Z Buffering

另一种画遮挡的方法,简而言之,Z-buffering 算法会记录场景中每个像素和摄像机的距离,在内存里存一个数字矩阵,首先,每个像素的距离被初始化为"无限大",然后 Z-buffering 从列表里第一个多边形开始处理,也就是A,它和扫描线算法逻辑相同,但不是给像素填充颜色,而是把多边形的距离和 Z-Buffer 里的距离进行对比,它总是记录更低的值,因为没对多边形排序,所以后处理的多边形并不总会覆盖前面的。

07:45 Z Fighting 错误

采用深度缓冲算法,哪个图形在前将会变化

07:51 背面剔除 Back Face Culling

由于游戏角色的头部或地面,只能看到朝外的一面,所以为了节省处理时间,会忽略多边形背面,这很好,但有个bug是 如果进入模型内部往外看,头部和地面会消失

08:53 表面法线 Surface Normal

在3D图形上任取一小个区域,它面对的方向叫“表面法线”

09:33 平面着色 Flat Shading

基本的照明算法,缺点是使多边形边界明显,看上去不光滑

09:43 高洛德着色 Gouraud shading, 冯氏着色 Phong Shading

不只用一种颜色上色

10:06 纹理映射 Texture Mapping

纹理在图形学中指外观,纹理有多种算法来达到花哨效果,最经典的是纹理映射。

纹理映射示意图

11:24 图形处理单元 GPU, Graphics Processing Unit

方便并行处理多个图形,并把图形分成一个个小块来处理。

(28-30:介绍网络的发展和支撑他们的基础原理和技术)

第 28 课 计算机网络

1. 局域网 Local Area Networks - LAN

计算机近距离构成的小型网络,叫局域网(LAN),以太网是经典的局域网

2.媒体访问控制地址 Media Access Control address - MAC

用于确认局域网和WiFi传输的对象

3.载波侦听多路访问 Carrier Sense Multiple Access - CSMA

多台电脑共享一个传输媒介,叫做载波侦听多路访问,共享媒介又称载体,如WiFi的载体是空气,以太网的载体是电线。载体传输数据的速度叫带宽,

4.指数退避 Exponential Backoff

当多台计算机同时想要传输数据时,就会发生冲突,当计算机检测到冲突 就会在重传之前等待一小段时间,,这一段时间包括固定时间+随机时间,再次堵塞时固定时间将会指数级增加,这叫做指数退避。

5.冲突域 Collision Domain

载体和其中的设备总称为“冲突域”,为了避免冲突,可以用交换器

07:08 电路交换 Circuit Switching

缺点:不灵活且数量昂贵

6. 报文交换 Message Switching

报文的具体格式简称IP,每一个电脑都会有一个IP地址

好处,可以用不同路由,通信更可靠也更能容错。

坏处,当报文比较大的时候,会堵塞线路。解决方法是 将大报文分成很多小块,叫"数据包",来进行运输,这叫“分组交换”。路由器会平衡与其他路由器之间的负载 以确保传输可以快速可靠,这叫"阻塞控制"

消息沿着路由跳转的次数 叫"跳数"(hop count),看到哪条线路的跳数很高,说明出了故障,这叫跳数限制。

第 29 课 互联网

1。电脑连接互联网的过程

你所用的电脑首先要连接到局域网,家里WiFi路由器连着的所有设备,组成了局域网,局域网再连到广域网(WAN),广域网的路由器一般属于你的互联网服务提供商(ISP),再连更大的WAN,往复几次,最后连到互联网主干。

2.IP - 互联网协议 - Internet Protocol

IP负责把数据包送到正确的计算机

3. UDP - 用户数据报协议 - User Datagram Protocol

UDP负责把数据包传送到正确的程序,有端口号(哪个程序),校验和(数据是否损坏)

4.校验和 - Checksum

UDP校验和只有16位,超过这个数,弃高位。

5.TCP - 传输控制协议 - Transmission Control Protocol

如果要控制所有数据必须到达,就用传输控制协议

TCP的特点

1 控制发送的文件按顺序到达

2 要求接收方确认无误后发送确认码(ACK),确认码的成功率和来回时间可以用来推测网络的拥堵程度,TCP可以根据这个调整传输率。由于这个特点,TCP对时间要求高的程序不适用

6 DNS - 域名系统 - Domain Name System

计算机访问网站时需要两样,IP地址和端口号,但记数字很难,所以互联网通过域名系统把域名和IP地址一一对应。域名系统是树状结构

10:47 OSI - 开放式系统互联通信参考模型 - Open System Interconnection

第 30 课 万维网(WWW)

1.基本单位

万维网在互联网上运行,它的基本单位是页面

点超链接可以去到另一个页面,文字超链接又叫超文本

超链接工作过程中示意

3.状态码

状态码代表所访问网页的状态

4.URL - 统一资源定位器 - Uniform Resource Locator

网页的唯一网址

5.HTTP - 超文本传输协议 - HyperText Transfer Protocol

6.HTML - 超文本标记语言 - HyperText Markup Language

7.万维网发展史

1 第一个浏览器和服务器是 Tim Berners-Lee 花了 2 个月在 CERN 写的

2 1991年万维网就此诞生

3 Jerry 和 David 的万维网指南 后来改名成 Yahoo

4 搜索引擎 JumpStation

(包括爬虫 索引 用法)

5 搜索引擎 Google

改进排序方法,按照链接指向的多少来排序

8.网络中立性

平等地对待每个数据包

第 31 课 计算机安全

1. 保密性, 完整性, 可用性 Secrecy, Integrity, Availability

计算机为了安全,要实现三性

保密性:只有有权限的人,才能读取计算机系统和数据

完整性:只有有权限的人,才能使用和修改系统和数据

可用性:有权限的人,可以随时访问计算机系统和数据

2.Threat Model 威胁模型

为了实现这三个目标,安全专家会从 \N 抽象层面想象"敌人"可能是谁,这叫"威胁模型分析",模型会对攻击者有个大致描述:\N 能力如何,目标可能是什么,可能用什么手段,攻击手段又叫"攻击矢量","威胁模型分析"让你能为特定情境做准备,不被可能的攻击手段数量所淹没。

很多安全问题可以总结成两个:

你是谁?你能访问什么?

3.身份验证 (Authentication) 的三种方式:

What you know, 你知道什么 ex、用户名和密码

What you have, 你有什么

What you are, 你是什么

4.访问控制 Access Control

Bell LaPadula model 不能向上读取,不能向下写入

5.安全内核

安全内核应该有一组尽可能少的操作系统软件,和尽量少的代码。

6.独立安全检查和质量验证

最有效的验证手段

7.隔离 Isolation, 沙盒 Sandbox

优秀的开发人员,应该计划当程序被攻破后,\N如何限制损害,控制损害的最大程度,并且不让它危害到计算机上其他东西,这叫"隔离"。要实现隔离,我们可以"沙盒"程序,这好比把生气的小孩放在沙箱里,他们只能摧毁自己的沙堡,不会影响到其他孩子,方法是给每个程序独有的内存块,其他程序不能动。一台计算机可以运行多个虚拟机,如果一个程序出错,最糟糕的情况是它自己崩溃,或者搞坏它处于的虚拟机。

第 32 课 黑客与攻击

1.社会工程学 Social Engineering

欺骗别人获得信息,或让人安装易于攻击的系统

2.钓鱼 Phishing

3.假托 Pretexting

4.木马 Trojan Horses

5.NAND镜像 NAND Mirroring

——来避免输错密码后等待

6.漏洞利用 Exploit

7. 缓冲区溢出 Buffer Overflow

——一种常见的漏洞利用

9.边界检查 Bounds Checking和金丝雀

——防止缓冲区溢出的手段,金丝雀,留出一些不用的空间,当空间变少时,说明有攻击者乱来。

10. 代码注入 Code Injection

把代码注入到程序中,造成混乱

11.零日漏洞 Zero Day Vulnerability

当软件制造者不知道软件有新漏洞被发现了,这个漏洞被称为“零日漏洞”

12.计算机蠕虫 Worms

如果有足够多的电脑有漏洞,让恶意程序可以在电脑间互相传播,这种恶意程序叫做蠕虫

13.僵尸网络 Botnet

如果黑客掌握足够多电脑,那他们可以组成“僵尸网络”

第 33 课 加密

1. 加密 - Encryption,解密 - Decryption

01:11 凯撒加密 Caesar cipher——一种替换加密 Substitution cipher,把字母替换成其他字母

01:59 移位加密 Permutation cipher

列移位加密 Columnar transposition cipher

02:37 德国 Enigma 加密机 一种进阶的替换加密,每一次的映射都不同。

04:54 1977年"数据加密标准" - Data Encryption Standard (DES)

05:24 2001年"高级加密标准" - Advanced Encryption Standard (AES)

2. 密钥交换 - Key exchange

用颜色来举例"单向函数"和"密钥加密"的原理

实例:迪菲-赫尔曼密钥交换 - Diffie-Hellman Key Exchange

用模幂计算来得到秘钥

3. 非对称加密 - Asymmetric encryption

以上的例子,双方用一样的秘钥加密和解密信息,叫对称解密。也可以人们用公钥加密信息,只有有私钥的人能解密,或者反过来,这叫非对称解密。最有名的非对称加密算法是RSA

第 34 课 机器学习与人工智能

以区分飞蛾为例

1. 分类 Classification

2.做分类的算法 分类器 Classifier

3.用于分类的值是特征 Feature

4. 特征值+种类叫做标记数据 Labeled data

标记数据

5. 决策边界 Decision boundaries

虚线为决策边界

6.混淆矩阵 Confusion matrix

右下角表为混淆矩阵

7.03:49 决策树 Decision tree

8.支持向量机 Support Vector Machines

本质上是用任意线段来切分决策空间,不一定是直线。

9.人工神经网络 Artificial Neural Network

不用统计学的算法。模拟人类学习的过程,将数据进行加权求和修正等一系列处理。

10.深度学习 Deep learning

得名原因:有很多的隐藏层

  1. 弱AI, 窄AI Weak AI, Narrow AI

只能做指定内容的内容

12. 强AI Strong AI

通用的,和人一样智能的AI叫做强AI,目前没有人能做到。

14.强化学习 Reinforcement Learning

学习什么管用,什么不管用,自己发现成功的策略,这叫强化学习。

第 35 课 计算机视觉

1.颜色跟踪算法——跟踪一个像素

2. 检测垂直边缘的算法

物体的边缘有多个色素,不适合颜色跟踪算法。要识别边缘,可以判断其两边像素的颜色差异程度

3. 核/过滤器 kernel or filter

——用来检测垂直边缘的算法的数学符号,如下绿色的图。

核或过滤器图示

算法示例

4. 卷积 convolution

把核应用于像素块

5.Prewitt 算子 Prewitt Operators

水平和垂直边缘增强的核叫Prewitt 算子

  1. 维奥拉·琼斯 人脸检测 Viola-Jones Face Detection

7.卷积神经网络 Convolutional Neural Networks

用一层层不同的核来识别复杂场景,用脸来举例,先识别边缘,然后形状,器官...直至某一层把所有特征堆积在一起,识别出脸之后,可以进一步用其他算法定位面部标志,如眼睛和眉毛具体位置,从而判断心情等信息

第 36 课 自然语言处理 NLP

1.过程

通过词性 Parts of speech短语结构规则 Phrase structure rules构建分析树 Parse tree,并结合语言模型 Language Model来实现语音识别 Speech recognition

2.实现原理:

快速傅立叶变换 Fast Fourier Transform,把波形转换成频率

3. 音素 Phonemes

构成单词的声音片段

4.语音合成 Speech Synthesis

第 37 课 机器人

1.机器人发展中的例子

02:08 法国吃饭鸭 - Digesting Duck, Canard Digerateur

02:23 土耳其行棋傀儡, 下国际象棋(假的,有人控制)

02:43 第一台计算机控制的机器出现在1940年代晚期,叫数控机器, Computer Numerical Control(CNC)

03:32 1960年 Unimate,第一个商业贩卖的 可编程工业机器人

2.机器人控制的回路

04:08 负反馈回路 negative feedback loop

05:17 比例-积分-导数控制器 Proportional–Integral–Derivative controller PID 控制器

通过控制三个值,比例值——实际值和理想值差多少,积分值——一段时间误差的总和,前两者用来修正错误:导数值(微分值)——期望值和实际值之间的变化率,用来避免未来的错误,这也叫预期控制,来控制进程。

3. 机器人三定律 Three Laws of Robotics

——让机器人不要伤害人类

第38课 计算机心理学

0、计算机中用到的心理学原理

社会心理学 认知心理学 行为心理学 感知信息学

1、易用度

指人造物体,比如软件,达到目的的效率有多高

2、颜色强度排序和颜色排序

人类擅长给颜色强度排序,所以颜色强度很适合现实连续值;而人类不擅长给颜色排序,所以如果数据没有顺序,用不同颜色就很合适,如分类数据。

3、分组更好记

信息分块会更好记。分块是指把信息分成更小,更有意义的块,如电话号码分块,界面设计分块。

4、直观功能

直观功能为如何操作物体提供线索,如平板用于推,旋钮用来转,直观功能做得好,用户只需要看一眼就知道怎么搞,而不需要其他东西来说明。ex.门把手让人想拉开门,但如果门需要推开,那这就是个不好的直观功能,不如直接采用平板门来的好。

5、认出VS回想

和直观功能相关的一个心理学概念是认出和回想,这就是选择题比填空题简单的原因。一般来说,用感觉触发记忆会容易得多,比如文字、图片和声音,所以我们用图标表示功能,如垃圾桶表示回收站。但是,让所有菜单选项好找好记,有时候意味着用的时候会慢一些。这与另一个心理学概念冲突:"专业知识”,当你用界面熟悉之后,速度会更快一些,所以 好的界面应该提供多种方法来实现目标,一个好例子是复制粘贴,可以在"编辑"的下拉菜单中找到,也可以用快捷键,两者都不耽误,鱼与熊掌兼得。

6、让机器有一定的情商以及Facebook的研究

我们也希望电脑能有一点情商,能根据用户的状态做出合适地反应,让使用电脑更加愉快。因为情绪会影响日常活动,比如学习,沟通和决策,情感系统会用传感器,录声音,录像(你的脸)以及生物指标,比如出汗和心率,得到的数据和计算模型结合使用,模型会估算用户的情绪,给最好的回应用户。

7、用软件修正注视位

心理学研究也表明,如果想说服,讲课,或引起注意 ,眼神注视非常重要。为此,研究人员开发了计算机视觉和图形软件 来纠正头部和眼睛,看视频的人会觉得对方在直视他们

8、把机器人做得像人

人也喜欢像人的机器人。人机交互,简称HRI,是一个研究人类和计算机交互的领域。

​ 恐怖谷原理

9、开放性问题

计算机该不该对人类说谎等

第 39 课 教育科技

1. 通过调速,暂停等技巧,加强学习效率

2.大型开放式在线课程 - Massive Open Online Courses (MOOC)

3.智能辅导系统 - Intelligent Tutoring Systems

4.判断规则 - Production rule

5.域模型 - Domain Model

判断规则和选择算法,组合在一起成为域模型

6.贝叶斯知识追踪 Bayesian knowledge tracing

把学生的知识掌握当成隐藏变量,根据学生答题的正确度,更新学生掌握程度的估算值。具体而言,贝叶斯知识追踪有一组方程,会用这四个概率,更新学生模型,评估其掌握程度。

学生已经学会的概率

瞎猜的概率

失误的概率

做题过程中学会的概率

7.自适应性程序

一种算法,选择适合学生的问题,让学生学。

8. 教育数据挖掘 Educational Data Mining

看学生答题时停顿的时间,观察学生停顿和加速视频的时间段,看论坛问题,来评估学生的程度。

第 40 课 奇点,天网,计算机的未来

1. 普适计算 Ubiquitous Computing

计算机融入生活的方方面面

2.奇点 Singularity

——智能科技的失控性发展

3.把工作分为4个象限,讨论自动化带来的影响

4.机器人的存在时间可能长过人类,可以长时间探索宇宙

《计算机导论》课程学习的思维导图 如下:







补充:

posted @ 2023-02-16 19:34  桐岛夏也  阅读(63)  评论(1编辑  收藏  举报