通俗易懂的表格汇总,带你快速理解两者(或多者)的区别关系
持续更新~~~,如有遗漏可以评论区告诉我~
区别表格汇总
isset 和 empty
isset:检测变量是否已设置并且非 NULL
empty:判断变量是否为空,变量为 0/false 也会被认为是空;变量不存在,不会产生警告
变量的值($var) | isset($var) | empty($var) |
---|
“”(空字符串) | 布尔(true) | 布尔(true) |
" "(空格字符) | 布尔(true) | 布尔(false) |
false | 布尔(true) | 布尔(true) |
true | 布尔(true) | 布尔(false) |
array()(一个空数组) | 布尔(true) | 布尔(true) |
NUll值 | 布尔(false) | 布尔(true) |
“0”(0作为字符串) | 布尔(true) | 布尔(true) |
0(0为整数) | 布尔(true) | 布尔(true) |
0.0(0作为浮点数) | 布尔(true) | 布尔(true) |
public、protected、private(3p修饰符)
| 在类外 | 在子类 | 在本类 |
---|
public(公有) | ✔ | ✔ | ✔ |
protected(受保护) | ✖ | ✔ | ✔ |
private(私有) | ✖ | ✖ | ✔ |
cookie 和 session
| cookie | session |
---|
存储 | 客户端(浏览器) | 服务器端 |
安全 | 容易被更改 | 安全一些 |
性能 | 减轻服务器的性能 | 占用服务器的性能 |
Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)
get 和 post
请求方式 | get | post |
---|
本质 | 向服务器发索取数据的一种请求 | 向服务器提交数据的一种请求 |
服务器端获取值的方法 | $_GET | $_POST |
安全性 | 低 | 较安全 |
大小 | URL 的最大长度是 2048 个字符 | 没有大小限制 |
echo、print、print_r、var_dump
echo | print | print_r | var_dump |
---|
语言结构 | 语言结构 | 普通函数 | 普通函数 |
输出一个或多个字符串 | 输出字符串 | 打印关于变量的易于理解的信息 | 打印关于变量的易于理解的信息(带类型) |
Redis 和 Memcached
缓存 | Redis | Memcached |
---|
数据支持类型 | 常用的数据类型有5种:String、Hash、List、Set和ZSet | 仅支持简单的key-value结构 |
线程 | 单线程的IO复用模型 | 多线程,非阻塞IO复用的网络模型 |
是否支持事务 | ✔ | ✖ |
持久化 | ✔ | ✖ |
Nginx 和 Apache
web服务器 | Nginx | Apache |
---|
反向代理 | 非常好 | 好 |
Rewrite规则 | 非常好 | 好 |
FstCGI | 好 | 差 |
热部署 | ✔ | ✖ |
系统压力比较 | 很小 | 小 |
稳定性 | 非常好 | 好 |
安全性 | 一般 | 好 |
静态文件处理 | 非常好 | 一般 |
虚拟主机 | ✔ | ✔ |
内存消耗 | 非常小 | 很大 |
urlencode 和 rawurlencode
函数 | 对空格的处理 | 返回值 |
---|
urlencode | 处理成“+” | 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 » RFC3986 编码(参见 rawurlencode())不同 |
rawurlencode | 处理成“%20” | 返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 » RFC 3986 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱 |
函数 | urlencode | rawurlencode |
---|
返回值 | | |
对空格的处理 | 处理成“+” | 处理成“%20” |
include、require、include_once、require_once
| 处理失败方式 |
---|
include | 只产生一个警告级别错误,程序继续运行 |
require | 会产生一个致命级别错误,并停止程序运行 |
include_once | 同include,当所包含的文件代码已经存在时候,不在包含 |
require_once | 同require,当所包含的文件代码已经存在时候,不在包含 |
MyISAM 和 InnoDB
MySQL5.5 之前默认使用 Myisam,5.6 以后默认的为 Innodb
存储引擎 | MyISAM | InnoDB |
---|
| 默认引擎 | 需要指定 |
场景 | 适合查询以及插入为主的应用 | 适合频繁修改以及涉及到安全性较高的应用 |
是否支持FULLTEXT类型的索引 | ✔ | ✖ |
是否支持事务 | ✖ | ✔ |
是否支持外键 | ✖ | ✔ |
表的具体行数 | select count() from table,MyISAM只要简单的读出保存好的行数,注意的是,当count()语句包含 where条件时,两种表的操作是一样的 | InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行 |
锁 | 表锁 | 行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’) |
清空整个表时 | 重新建表 | 一行一行的删除 |
varchar 和 char
数据类型 | varchar | char |
---|
解释 | 变长 | 定长 |
定义长度 | 小于定义长度时,还是按实际长度存储,插入多长就存多长 | 如果插入的长度小于定义长度时,则用空格填充 |
存储的容量 | 最多能存放 65532 个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节。 | 最多能存放的字符个数 255,和编码无关 |
结束语
持续更新中~~~,如果有添加或者纠正的地方欢迎评论。
(你的每一个👍都是我更新的动力)