知识点

  • GBK字符编码,汉字占用2字节。UTF-8,3个字节。
  • 硬件由大量IC(集成电路)组成,上的引脚,有的用于输入,有的用于输出。
  • 编译:把编程语言编写的文件(源文件)转换成机器语言编写的文件。
  • .NET是微软提出的技术。
  • 2种编程方法:面向组件编程、面向对象编程。
  • GUI(图形用户界面)

算法

  • 字符串的末尾用0表示,链表的末尾用-1,这些特殊字符是哨兵。
  • 辗转相除法,机械求解最大公约数。2种方式,减法和除法。减法:2数中大数减去小数,直到两数相等,相等的这个数就是最大公约数。
  • 典型算法。
名称 用途
辗转相除法 求最大公约数
埃拉托斯特尼筛法 判定素数
顺序查找、二分查找、哈希查找 检索数据
冒泡排序、快速排序 数据排序
  • 最小公倍数。2数乘积除以最大公约数。
  • 埃拉托斯特尼筛法,用待判定的数除以比它小的所有正整数,余数为零,可以整除,不是素数。利用的是计算机的处理速度,同样适用于计算鸡兔同笼问题。
  • 执行时间短的算法更优秀。如,判定素数,只需要从2到待判定数的平方根即可。
  • 线性搜索,从头到尾依次查找。哨兵,多用于此。加个特殊元素,减少判定次数。
  • 数字间的规律,如石头剪刀布游戏判定输赢,0、1、2表示三情况,B+1除以3的余数与A相等,就是B获胜。

数据结构

  • 栈和队列,栈存取形式是LIFO(后进先出),队列是FIFO(先进先出)。
  • 每个存储单元,8比特数据。
  • 数组应用于线性搜索、冒泡排序。
1
2
3
4
5
6
7
8
9
for (i = 999; i > 0, i--) {
for (j = 0, j < i, j++) {
if(x[i] > x[j]) {
tmp = x[i];
x[i] = x[j];
x[j] = tmp;
}
}
}
  • 典型数据结构
名称 特征
小山堆积一样
队列 排成一队
链表 任意改变数据排列顺序
二叉树 把数据分为两路排列
  • 二叉树是链表的特殊形态。
  • 数组可以转化为栈或队列。
  • 栈需要一个数组,一个变量。变量是索引,指向栈顶数据,是栈顶指针。数组、栈顶指针、入栈函数、出栈函数组成了栈。注意:栈顶指针指向的不是栈里顶端上的数据的地址,实际上是这个数据上面的地址。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char Stack[100];
char StackPointer = 0;

/*入栈函数*/
void Push(char Data) {
Stack[StackPointer] = Data;
StackPointer++;
}

/*出栈函数*/
char Pop() {
StackPointer--;
return Stack[StackPointer];
}
  • 队列。数组、存放队头数据索引的变量、存放队尾数据索引的变量、存取函数。尾部存储满到最后,会折回数组的开头。逻辑结构变成圆环,循环利用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char Queue[100];
char SetIndex = 0;
char GetIndex = 0;

void Set(char Data) {
Queue[SetIndex] = Data;
SetIndex++;
if (SetIndex >= 100) {
SetIndex = 0;
}
}

char Get() {
char Data;
Data = Queue[GetIndex];
GetIndex++;
if (GetIndex >= 100) {
GetIndex = 0;
}
return Data;
}
  • 链表。c语言中用自我引用的结构体组成的数组表示链表。
1
2
3
4
5
6
struct TestResult {
char Chinese;
char Math;
char English;
struct TestResult* Ptr;
};
  • 二叉树。有2个自我引用结构体的链表。用于搜索数据的算法,如二分查找,更快。
1
2
3
4
5
6
7
struct TestResult {
char Chinese;
char Math;
char English;
struct TestResult* Ptr1;
struct TestResult* Ptr2;
};

面向对象编程

  • 缩写为OOP。C++在C的基础上增加了面向对象的机制。Java、C# 是对C++进一步改良。
  • 结构体,操作数据的函数在外部。而面向对象编程可以把函数也放在内部。技巧有封装、继承、多态。
  • 面向对象编程和面向过程编程是一对反义词。
  • 多态指的是,针对同一消息,不同对象可以进行不同的操作。
  • .NET支持C#

数据库

  • DBMS缩略语。一张表由行和列组成,列被称为字段、属性,行被称为记录、元组。
  • SQL,结构化查询语言。
  • 关系型数据库。
  • 客户端、服务端。
  • 主键和复合主键(多个字段组成)
  • CRUD.插入(CREATE)获取(REFER)更新(UPDATE)删除(DELETE)

TCP/IP网络

  • LAN(局域网)
  • 传输控制协议和网际协议(TCP/IP)
  • MAC地址:网卡编号
  • WAN(广域网)
  • 集线器连接计算机,路由器连接互联网。
  • 以太网网卡
  • CSMA/CD 带冲突检测的载波监听多路访问,是连接LAN计算机的方法。多路复用,是多个设备同时访问传输介质。
  • MAC地址由厂商编号和产品编号组成,每个都独一无二。
  • IP地址是软件上的编号。TCP/IP中传输数据都要带MAC地址和IP地址。IP地址是32比特的整数,8个一组,分4段。IP地址的范围,0.0.0.0~255.255.255.255.前三段是网络地址,后一段是主机地址。子网掩码就是标识出网络地址和主机地址。子网掩码转换的二进制数中,值为1表示网络地址,0的表示主机地址。与MAC地址一样,IP地址也是唯一的。
  • DHCP(动态主机设置协议)服务器获取IP地址和子网掩码。
  • 默认网关存放路由器的IP地址。
  • DNS(域名系统),解析域名为IP地址的服务器。其中记录着域名和IP地址的对应表。
  • ARP(地址解析协议),把IP地址转换为MAC地址。使用广播的形式。也有缓存表,记录对应表。
  • IP协议指定目标IP地址和路由器转发。TCP协议是双方相互回应确认信号,可靠传输数据。称作握手。通过包这种数据单元。
MAC信息 IP信息 TCP信息 数据 错误检查信息
  • 网卡-设备驱动程序-IP协议程序-TCP协议程序-应用程序。层级结构。
  • TCP端口号识别上层的应用程序。web使用80,发送邮件25,接收邮件使用110.

数据加密

  • 秘钥,用于加密和解密的数字。
  • XOR,逻辑异或运算。二进制,同则0,不同则1.
  • 对称密钥加密技术,特征是加解密密钥相同。密钥的通知不安全,不适用于互联网。
  • 公开密钥加密技术。加密密钥公开,解密密钥私有。公钥和私钥。
  • RSA,实现公开密钥加密技术的算法,三个字母代表三个三个发明者。
  • 数字签名。MD5,信息摘要。

XML

  • 可扩展标记语言。元语言。
  • HTML,超文本标记语言。
  • < > & “ ‘ 5个特殊字符用&lt &gt &amp &quot &apos 表示。 括起来就可以直接使用上述5种特殊字符了。 表示注释。
  • W3C(万维网联盟)
  • CSV,只记录了信息,没有给信息赋予意义,比XML差一筹。
  • XML命名空间。xmlns=命名空间 的形式。
  • SOAP(简单的对象访问协议)用于分布式计算。分布式就是把程序分散在网络连接起来的计算机上。