POST和GET的区别
跟POST与GET同级的请求还有PUT和DELETE
GET请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,如果是英文字母,原样发送,如果是空格,转换为+,如果是中文或者其他字符,则直接把字符串用BASE64加密
POST是把提交的数据放在HTTP包的包体中。
POST的安全性要比GET高
- GET用户向服务器获取数据,但是实际操作中它也可以用来插入和修改、删除数据,这是GET的不安全性,当然如果只用来获取数据的话,是安全的
- GET的不安全性还体现在:比如通过GET提交数据,用户名和密码将明文出现在URL上,因为登陆页面可能被浏览器缓存,或者其他人也可以查看浏览器的历史记录,那么别人就可以拿到你的账号密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
总结:Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!
Mysql优化
1、为什么要进行mysql优化?
假设我们设置一个数据量超过10万条记录的表,来进行我们经常做的查询操作比如:select * from 表名,服务器很慢甚至卡死,需要我们重启数据库服务器,这说明我们的表或者查询SQL是有问题的,所以我们要进行mysql优化
2、数据库优化的目标?
通过各种对数据库的优化方法,获取最高的查询和加载性能,达到查询性能的提高和加载性能的提高。
3、掌握优化的方式和途径
建表、索引、配置、SQL语句都需要优化
4、掌握建表和分表优化?
①数据库表设计符合范式要求:
第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项
第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一的区分
第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
②数据库字段的设置要合理
介绍常用数据类型的特点及如何选择合适的数据类型:
int 4个字节
char
varchar
text 存储文件
decimal 存金钱
enum(枚举)只适合存字符串
float4个字节
③为什么要分表?
数据库中的数据量不一定是可控的,在未进行分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。
④什么是分表?
原本存储于一个表的数据分块存储到多个表上
5、掌握数据库的查询优化
①关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。
解释输出列的含义(备注):
select title from article where title like '菲律宾%';
②数据库的优化查询主要有以下几个规则:
避免全表扫描 eg:select * from 表名;(不可取)
尽量使用索引查询 eg:select age from user where age>10;
避免使用select *
尽量使用数字型字段(把包含数值信息的字段设计为字符型,会降低查询和链接的性能,引擎在处理查询和链接会逐个比较字符串中的每个字符 ,而对于数字型而言只需要比较一次就够了)
避免向客户返回大量数据
避免大的事务性操作,提高系统并发能力
一个插入500万行的事务,有索引2个
导致别的操作缓慢,如果改成每次 插入5万行,插100次,这样别的操作会受影响小吗?
5、掌握MySQL数据库的索引优化
6、掌握数据库的配置优化
7、掌握数据库的查询优化