InnoDB 的4个特性
1插入缓冲,插入聚集索引一般是顺序的,不需要磁盘的随机读取。满足的两个条件索引是辅助索引;索引不是唯一的。
2两次写,第一次插入共享表空间,第二次插入表
3自适应哈希索引 InnoDB 存储引擎会监控对表上各索引页的查询 InnoDB 存储引擎会自动根据访问的频率和模式来自动的为某些热点页建立哈希索引
4异步 IO ( AIO )提高磁盘操作性能据库系统都采用异步 IO 的方式来处理磁盘操作
全文索引 fulltext
MySQL 5.6以前的版本,只有 MyISAM 存储引擎支持全文索引;
MySQL 5.6及以后的版本, MyISAM 和 InnoDB 存储引擎均支持
MyISAM 适合:(1)做很多 count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
InnoDB 适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且行锁定的机会比较大的情况。
联合索引最左匹配原则
对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥( publickey )和私有密钥( privatekey )
GC 是垃圾回收机制(垃圾回收器)
数据库隔离级别 读未提交 读已提交 可重复读 MySQL 默认隔离级别 可串行化
那些情况下不会使用索引? 数据唯一性差的字段不要使用索引 频繁更新的字段不要使用索引字段不在 where 语句数据量少的表不要使用索引
1、进程是资源分配的最小单位,线程是程序执行的最小单位
2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此 CPU 切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式( IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
4、多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
进程特点:动态 并发性 独立性 异步性 结构性
TCP 向上层提供面向连接的可靠服务, UDP 向上层提供无连接不可靠服务。
虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为
单点登录获取令牌 单点注销
abstruct
抽象类中可以定义方法体,也可以不定义方法体。未定义方法体的需要用 abstruct 定义为抽象方法,则子类必须去实现抽象类的抽象方法。不可被实例化,没有构造函数。
interface
接口中不可以定义方法体,子类实现接口时,必须实现里面的所有方法。不可被实例化,没有构造函数。
mysql 跨库事务怎么做
首先要确保 mysql 开启 XA 事务支持 SET innodb _ support _ xa = ON
分库分表技术方面考虑,什么时候该分库分表,怎么操作?
垂直分表,把不常用的字段拆分到另外一张表。
垂直分库,把不同业务的数据放在不同的库。服务化的拆分利于解耦和提高性能,也利于系统扩展。
水平分表,表中的数据(比如 user 表)按照一定规律(比如对 id 进行 hash 和取模后拆分)。可以一定程度缓解查询性能瓶颈。但还会有库级别 IO 瓶颈,因为数据在同一个库中。
水平分库分表,于水平分表类似,唯一不同是将这些拆分出来的表保存在不同的数据库中。在冷热数据分离的场景很适用。能有效缓解单机和单裤性能瓶颈压力,突破 IO 、连接数,硬件资源的瓶颈
聚簇索引在存储方式上的特点,跟主键 id 是否自增有没有关联:只要聚簇索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。如果主键不是自增 id ,那么可以想象它会不断地调整数据的物理地址、分页。比如,使用 UUID 作为聚簇索引会很糟糕:它使得聚簇索引的插入变得完全随机
mysql 的乐观锁、悲观锁区别:乐观锁用版本号方式来解决,悲观锁用阻塞其他 select 操作的方式解决问题。
$str ='13812345678';
$pattern = '/^139\d{8}$/';
preg _ match($pattern , $str , $macth);
循环文件目录
$dir = './test';
function loopDir($dir) {
$handle = opendir($dir)
while (false == ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
echo $file ."< br >";
if ( filetype($dir .'/'.$ file) == ' dir ') {
loopDir ($dir .'/' .$file );
}
}
}
}
echo $_SERVER['REMOTE_ADDR'];//客户端 IP
echo gethostbyname("www.baidu.com");//服务端 ip