以下是超级简略版的要点,比较零碎,主要是用来唤起记忆、辅助理解~
计算机组成
(1)三个根本原则
- 计算机是执行输入、运算、输出的机器
- 程序是指令和数据的集合
- 计算机的处理方式有时和人的思考习惯不同
(2)汇编
机器码:二进制,是唯一能被CPU直接理解的语言
汇编语言:只有一个语法,一行包括:标签、操作码(指令)、操作数(指令的对象)
(3)软硬件
计算机硬件:CPU(其中有各种寄存器,其中PC寄存器指向下一条执行的程序)、内存、I/O
程序
(1)有三种流动方式:顺序、分支、循环
(2)结构化程序:只用顺序、分支、循环,不用Gogo语句
(3)其他特殊的程序流程:
- 中断处理:是一种特殊的条件分支,计算机硬件上支持中断
- 事件驱动:应用于GUI环境中的应用程序
(4)可以使用的工具:FlowChart、状态转化表
算法和数据结构
(1)程序=数据结构+算法
(2)算法的原则:步骤明确&有限
(3)一些经典的算法:
- 求最大公约数:辗转相除法
- 判定素数:埃拉托斯特尼筛法
- 查找
- 排序
(4)一些编程技巧:线性搜索中可以使用哨兵
(5)数据结构
- 变量:程序中数据存储的最小单位
- 声明变量:分配内存中的物理空间
- 赋值:给这个空间中填充一个值
- 存储的位置:内存中
- 数组:数据结构的基础
- 会分配连续的内存空间,反映了内存的物理结构
- 是一种直接利用内存的物理结构的最基本的数据结构
- 可以利用数组构建栈和队列
- 栈:数组;栈顶指针;入栈函数、出栈函数
- 队列:数组;队头、队尾索引变量;入队函数、出队函数
- 其他数据结构
- 栈Stack:LIFO:先进后出
- 队列Queue:FIFO:先进先出,和栈都是将不能立即处理的数据先暂存起来
- 链表ListNode
- 二叉树:链表的特殊形态
- 结构体:可以利用结构体构建链表和二叉树
面向对象
(1)C++在C的基础上实现了面向对象
发展历程:C——C++——Java/C#
(2)对象:表示事物的抽象名词
构成:属性+操作
好处:利于复用、提高效率;便于维护
一些概念:
- 类库:组件集合
- 接口:规定类看起来是什么样子的,对于类的规范描述
(3)面向对象的一些外延:
- 面向对象就是把类拼装在一起:类就是程序的组件
- 就是对于现实世界建模(建模就是一个组件化的过程),可以借助UML
- 程序的执行方式:
- 面向对象:在对象间传递消息驱动程序
- 非面向对象:面向过程,叫做“过程型语言”,可以用流程图表示
- 封装、继承、多态:
- 类和对象之间的关系:类是对象的定义,对象是类的实例
- 类需要创建对象实例之后才能被使用
(4)Java和.Net都是位于操作系统上的程序集,也被叫做框架
框架包含两个部分:执行引擎:负责安全执行程序;类库:一个组件集合
数据库
(1)类别:
- 卡片式数据库:小型
- 关系型数据库:大型
(2)组成
应用程序—(请求操作数据)—DBMS—(实际操作数据)—数据文件
- 独立系统(小型):三要素齐全
- 文件共享系统(中型):服务器(存储数据文件)被多个客户端(包含DBMS和应用程序)共享
- 客户端/服务器系统:数据文件+DBMS在服务端上,程序在客户端上运行
- Web系统:数据文件和DBMS在服务器上,通过浏览器进行访问
(3)DBMS
- 概念:数据库管理系统
- 实例:Access、Oracle、SQL Server
- 两种机制:
- 安全存储:主键上不能存储相同的值
- 检查参照完整性:删除的时候会拒绝那些会导致表不完整的操作
- 高级功能:事物控制
- 开启、提交、回滚
- 记住银行转账的例子
(4)表
- 组成:一条记录:元组、行;一列:字段、属性
- 规范化处理:将大表分割成小表,再在小表之间建立关系,要点是避免存储相同的数据
- 字段——键——主键
- 键:反映表和表之间关系的字段
- 主键:能标识唯一一条记录的键
- 索引:
- 和键完全不同的概念
- 为某个字段设置索引——DBMS自动创建索引表(字段值+字段对应的记录的位置)
- 设置之后查询数据的流程:先在索引表中进行检索排序;然后再去取完整的记录
- 设置索引的效果:
- 检索速度提高
- 但是插入和更新的速度降低了
(5)操作:CRUD:插入、获取、更新、删除
TCP/IP网络
(1)概念
- 种类:
- WAN:广域网
- LAN:局域网
- TCP/IP:同时包含这两个协议,其中传输的数据包含IP地址和MAC地址
- MAC地址:Media Access Control,也被叫做物理地址,是网卡的ROM中预先烧录的,标识网卡的编号。指定电信号的接收者。
(2)网络系统组成
- 组建系统:Server、Client、Hub(集线器)、Router(路由器)
- 所需硬件:网卡、网线、集线器、路由器
(3)网络传输中的信息查询
- DHCP服务器:获取IP地址和子网掩码
- 路由器:决定数据传输路径的设备,路由器传输的信息是路由表
- DNS:将主机名解析成IP地址
- FQDN:完整限定域名 = 主机名+域名
- ARP:Address Resolution Protocol 地址解析协议,将IP地址转换为MAC地址
查看网络相关内容的命令行代码:
下图展示查看打开51CTO网页的路由过程案例:
其他的内容涉及到太多的隐私信息就不展示效果了,大家可以自己输入之后试试。
(4)TCP/IP的层级模型:
- TCP:通过两者来回确认来安全传输信息,以包作为传输的数据单元,包:MAC、IP、TCP、数据、错误检查信息
- IP:指定目的地的IP地址——通过路由器转发数据
- 网卡发送数据的层级:网卡—(硬件驱动程序)—程序——IP——TCP——应用程序(Web、邮件等有不同的端口号,web80、邮件25)
数据加密
(1)概念
- 信息摘要:从作为数字签名对象的文件中计算出的数值
- 加密&解密:明文转换成密文;密文转换成明文
(2)类型
- 对称加密(秘密密钥加密):例如:后移三位、将编码和密钥做异或运算;前提是发送者和接收者都知道密钥且保护好了
- 公开密钥加密:可以直接传输密码,例如用RSA算法,公钥用来加密,私钥用来解密
(3)生成数据签名的过程
- 发送者:
- 选取一段明文
- 计算出明文内容的信息摘要
- 用私钥进行加密
- 将第三步骤的值附加在明文后发送
- 接收者:
- 用公钥进行解密
- 计算出明文部分的信息摘要(常用的生成公式:MD5(Message Digest 5))
- 如果步骤1和步骤2的内容相同,那么接收的信息就是有效的
(4)意义
- 签名的两层约束:内容完整有效、发送者是本人
- 合理的密钥:长度适中、能反复使用、可以通过某种手段发给接收者、通信双方以外的其他人难以解密
XML
(1)概念
- XML —— Extensible Markup Language
- 标记:通过添加标签赋予数据意义
- 标记语言:定义标记规则的语言
- XML中的标签可以随意创建,仅限定了书写格式,所以被称为元语言
(2)标准
- W3C制定了推荐标准之后,XML跨越了厂商和应用程序的差异
- 格式良好的XML文档:遵循XML约束;正确标记了
- 文档结构:
- XML声明:开头
- XML实例:中间内容
- DTD:Document Type Definition,文档类型描述,定义必须要包含的内容