目录
一、MySQL
1.数据库基础
显示数据库:
SHOW DATABASES;
创建数据库:
CREATE DATABASE IF NOT EXISTS 数据库名;
设置字符集:
CHARACTER SET UTF-8;
使用数据库:
USE 数据库名;
删除数据库:
DROP DATABASE IF EXISTS 数据库名;
查看表结构:
desc 表名;
创建表:
create table if not exists 表名; comment 增加字段说明
删除表:
drop table 表名;
2.CRUD
CRUD分别代表数据库操作的create(新增)、retrieve(查询)、update(更新)、delete(删除)。
2.1insert
新增一行:insert into 表名 values(字段名);
新增特定字段的信息:insert into 表名 (字段名)values(字段信息);
2.2select
全列查询:select * from 表名;
字段表达式查询:select 字段名,表达式 from 表名;
去重查询:select distinct 字段 from 表名;
查询后排序:select 字段名 from 表名 order by desc(降序)/asc(升序);
条件查询: select 字段名 from 表名 between 条件 and 条件;或 select 字段名 from 表名 in(具体数值);或 select 字段名 from 表名 like ' ';(%表示任意多个字符、_表示任意一个字符)
分页查询: select 字段名 from 表名 limit s,n ;(从s开始查询n条数据)
2.3update
update 表名 set 字段名的修改内容;
2.4delete
delete from 表名 where 条件;
3.数据库约束
NOT NULL:字段不能为空
UNIQUE:字段取值唯一
DEFAULT:默认值
PRIMARY KEY:主键约束
FOREIGN KEY: 外键约束 eg:foreign key (字段)references 表(字段);
4.聚合查询
COUNT:查询数据数量
SUM:查询数量总和
AVG:查询数据平均值
MIN:查询最小值
MAX:查询最大值
5.分组查询
group by:能够将数据按字段分组,查询字段中信息所对应的值,通常与having连用用来过滤信息和限制条件。
6.关键字优先级
from > on > join > where > group by > with > having > select > distinct > ordey by > limit
7.数据库索引
当数据库某个表需要频繁地进行条件查询时,我们可以用到索引。
索引是一种特殊的文件,包含表中所有信息的引用指针,可以对表中的一列或者多列创建索引,能够快速定位和检索数据,提高数据库的性能。
当创建主键约束、唯一约束和外键约束时会自动创建索引。
查看索引:
show index from 表名;
创建索引:
create index 索引名 on 表名(字段名);
删除索引:
drop index 索引名 on 表名;
8.数据库事务
为了保证两个sql语句要么全部执行成功要么全部执行失败。
开启事务:
start transastion;
rollback:全部失败 commit:全部成功
二、网络体系结构
1.OSI七层模型
应用层:提供网络服务,网络服务与用户的接口。
表示层:数据的表示、安全、压缩,将信息表示为一定形式的数据流。比如:URL加密、口令加密、图片解编码。
会话层:负责通信主机的会话建立和管理。比如服务器验证用户登录。
传输层:负责通信主机间端到端的连接。
网络层:负责将分组从源机送到目的主机,寻找最短最优的路径。
数据链路层:提供可靠的帧传递,提供差错控制。
物理层:比特流传输
每一层都完成特定的功能,并为上一层提供服务,使用下层提供的服务。
2.TCP/IP四层体系结构
应用层:为用户提供所需要的各种服务。
传输层:为应用层实体提供端到端的通信功能。
网络层:解决主机到主机的通信问题。
网络接口层:监视数据在主机与网络之间的交换。
3.OSI和TCP/IP的区别
首先是分层上,可以明显看出,TCP/IP四层模型是OSI七层模型的简化版,但是大致的核心内容是很类似的。虽然OSI跟容易开发和排除故障,但是相较于简洁的TCP/IP,显得庞大而笨拙。十分有趣的是,OSI虽然是官方提出的,但是由于一些原因,在它被完善之前,由民间开发的TCP/IP早已投入实际使用了,所以它几乎是只存在与教科书中,并没有大范围地投入使用。
4.五层协议体系结构
专门为网络原理而设计,与TCP/IP不同的是网络接口层划分为数据链路层和物理层。
5.体系结构总体理解
在OSI的上三层,信息被表示为一定格式和形式的数据流;
数据流被传到传输层,将其切割为适合传输的数据段,并加上段头,段头中包含定位应用进程的端口号等信息;
数据段传到网络层,添加分组头部形成分组,分组头部中包含寻址主机的IP地址和其他一些传输需要用到的信息;
分组再传到数据链路层,添加帧头形成帧,帧头中包含寻址主机所需的物理地址、校验等信息;
帧到了物理层,被转成可供传输的比特流。
三、网络协议
1.应用层协议
DHCP:动态主机分配协议,使用 UDP 协议工作,自动分配 IP 地址。
FTP:文件传输协议<端口号21>
SMTP:简单邮件传输协议 <端口号25> 用于发送邮件。
SNMP:简单网络管理协议
DNS:域名系统
TELNET:远程登录协议 <端口号23>
TFTP:简单文件传输协议
当然最重要的还是HTTP和HTTPS
TCP常用协议:
UDP常用协议:
2.HTTP与HTTPS
2.1概念
HTTP是超文本传输协议,主要是通过网络与服务器建立连接,该连接是通过 TCP 来完成的,一般 TCP 连接的端口号是80。TCP是可靠的连接传输过程中可以保证传输过程中不会传输错误。
HTTPS是超文本传输安全协议,是以安全为目标的 HTTP 通道,是 HTTP 的安全版。它建立在可靠的传输协议(如TCP)之上,传输过程中采用密文传输,安全性更高。
2.2两者的区别
①最显著的区别是在地址栏中http协议使用的是http://,而https使用的是https://
②http是未加密的协议,在传输过程中容易被攻击者监听、数据容易被窃取、发送方和接收方容易被伪造;而 HTTPS 是安全的协议,它通过 密钥交换算法 - 签名算法 - 对称加密算法 - 摘要算法 能够解决上面这些问题。
③http默认的端口是80,https默认端口为443.
2.3HTTP请求报文
HTTP请求报文主要有四部分组成:请求行、请求头部、空行、请求体。
请求行主要由请求方法、请求URL、HTTP协议版本组成。
请求方法最主要有两个get和post,后面讲。
请求头部也叫报文头,报文头包含若干个键值对,格式为“属性名:属性值”。
空行的作用是为了分割请求头和请求体。
请求体中保存的是真正的信息,通过param1=value1 param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。
2.4HTTP的get和post方法
get 方法一般用于请求,比如你在浏览器地址栏输入 www.baidu.com
其实就是发送了一个 get 请求,它的主要特征是请求服务器返回资源,而 post 方法一般用于 <form> 表单
的提交,相当于是把信息提交给服务器,等待服务器作出响应。
区别:
①报文上的不同
不带参数时,第一行的方法名不同,一个为get一个为post;
带参数时,get的参数存放在首行的URL中,post的参数存放在body请求体中。
虽然post的参数是在请求首行中不可见,看似post比get更安全,其实两个都不安全,因为都为http明文传输。
②用途
get:获取服务器上的某个资源
post:提交用户的数据给服务器。
③URL的query String不同
get的query String可以为空可以不为空,post的query String一般为空。
④多次请求结果
get多次请求结果相同,post多次请求结果不同。
2.5HTTP常用状态码
200:访问成功
301:永久重定向
302:临时重定向
403:访问拒绝没有权限
404:没有找到资源
405:方法不支持
500:服务器内部错误
504:超时
成功响应(200
–299
) 重定向(300
–399
) 客户端错误(400
–499
) 服务器错误 (500
–599
)
2.6cookie和session
-
1、数据存储位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。
-
2、安全性:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
-
3、服务器性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
-
4、数据大小:单个cookie保存的数据不能超过4K,session无限制。
-
5、信息重要程度:可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
3.传输层协议
传输层中最为常见的两个协议分别是传输控制协议(TCP)和用户数据报协议(UDP)。
3.1TCP
TCP是面向连接的,可靠的进程到进程通信的协议;
TCP提供全双工服务,即数据可在同一时间双向传输;
因为TCP是可靠且是全双工通信,所以在传输数据前,会建立双向数据通信通道,当保证双向数据传输的通道没有问题时,才会发送数据,起到保护数据的作用,这就是著名的“三次握手”。
3.2TCP“三次握手”
Seq序号,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
ACK:响应报文
SYN:发起一个新连接。
原理:客户端向服务器发送SYN同步请求,请求与服务器建立连接,服务器收到此SYN同步请求后,会针对客户端的SYN同步请求进行ACK响应的同时也会发送一个SYN同步请求,当客户端收到服务器发过来的SYN同步请求时,会给予一个ACK响应。
为什么握手需要三次?:TCP建立连接时之所以只需要"三次握手",是因为在第二次"握手"过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。
3.3TCP“四次挥手”
FIN:释放一个连接。
原理: 客户端向服务器发送FIN断开请求,服务器接收到此请求后,回复一个ACK。服务器向客户机发送FIN断开请求,客户机收到此请求后,回复一个ACK。
为什么挥手需要四次?:数据传输方向是双向的,一个方向的数据通道关闭需要一次请求和一次确认,因此需要断两次,而我们有两个数据方向,因此需要断四次。
TCP为什么存在半关闭状态?:客户端请求断开时服务器端响应了断开的请求,但可能服务器端还有数据没有传输完,因此服务器并没有向客户机立即发送FIN请求。此时客户端等待数据传输完的过程就是半关闭状态。
3.4UDP
UDP是基于IP的简单协议,不可靠的协议。
UDP的优点:简单,轻量化。
并不是所有使用UDP协议的应用层都是不可靠的,应用程序可以自己实现可靠的数据传输,通过增加确认和重传机制,所以使用UDP 协议最大的特点就是速度快。