我们在技术选型的时候,为了认识各类技术栈在各个场景下的优劣,往往需要两者作比较。常见的就是A vs B的文章。为了快速查询,这里收集web开发相关概念的比较列表。
(MySQL)主键和唯一索引的区别
主键 |
唯一索引 |
不能为空 |
可以为null |
主键是行记录的编号,一般为自增id,auto_increment |
唯一索引,一般用来保证数据的唯一性,去重目的 |
主键是每一张表都必要,没有的话会报语法错误 |
唯一索引不是必要的 |
一张表只能有一个主键 |
可以有多个 |
主键可以被其他表引用为外键 |
无此特性 |
主键是一种约束,保证实体的完整性 |
辅助查询的索引 |
Mysql中的实现是聚簇索引 |
无此特性 |
Redis和Memcached的区别
Redis |
Memcached |
定位为NoSQL数据库 |
缓存中间件 |
可以持久化,支持追加和快照两种持久化方式 |
无此特性 |
支持五种数据类型 |
只有字符串类型 |
字符串类型可以保存二进制数据 |
二进制数据不安全的类型 |
支持主从复制 |
不支持 |
主键可以被其他表引用为外键 |
无此特性 |
单进程单线程 |
多线程 |
可以设置密码,实现访问控制 |
不能设置密码 |
TCP和UDP的区别
TCP |
UDP |
面向连接的协议 |
面向报文的协议 |
具有拥塞控制、失败重试功能保证可靠性 |
无此特性 |
只能一对一建立连接 |
支持广播 |
由于建立连接需要三次握手,断开连接需要四次挥手,速度较慢 |
速度较快 |
包体较大 |
包体较小 |
报文接收的顺序和发送的顺序一致 |
报文的发送无序 |