编程知识总结
2022-04-27 10:19:55 5 举报
AI智能生成
PHP总结
作者其他创作
大纲/内容
时间复杂度
冒泡排序
快速排序
https://www.cnblogs.com/onepixel/articles/7674659.html
十大排序
算法
http
https
面向连接
三次握手/四次挥手
tcp/ip
无连接状态传输协议
upd
成功
200
重定向
3xx
服务端拒绝访问
403
没找到
404
4xx
服务器错误,一般就是bug
500
已到达网关,fpm执行超时或进程数不足
502
服务暂时不可用
503
Nginx超时,请求没有到fpm
504
5xx
http状态码
协议
nginx
FastCGi
worker
Master
PHP-fpm
服务器
数组
字符串
对象
布尔
资源
null
变量类型
变量传值和引用传值
变量
trim去除两边空格
字符转义
字符匹配
strtolower小写
strtoupper大写
ucwords 将每个字符串首字母转大写
ucfirst首字母转大写
大小写转换
chr() 字符串转换ASCII码
echo() 输出字符串
md5()、md5_file() MD5加密
字符操作
字符串函数
sort 按照数组值升序 rsort降序
ksort 对关联数组按照值升序 krsort降序
asort 对关联数组 按照key名升序 arsort降序
usort自定义函数排序
数组排序
array_sum 求和
注意merge与+的区别
array_merge合并数组
array_map自定义函数操作数组每个单元
array_rand随机取数组
array_diff取差集
array_unique数组去重
array_flip 反转数组 重复值取最后一个
数组操作
数组函数
preg_replace
正则表达式
文件引用
PHP基础
一种编程范式
特性
概念
继承使用extend
类名定义 abstract class A
子类必须实现该方法
子类方法可见性必须大于或等于抽象方法的定义
抽象类方法 abstract public function say();
抽象类 abstract
继承使用implements
类名定义 interface
子类必须使用所有 接口方法
接口 可以使用多继承
全部方法都为抽象方法,方法可见性为public
可以定义常量
function func1();
接口方法
接口类 interface
多继承Traits
__construct 构造函数
__destruct 析构函数
__clone 克隆
魔术方法
调用非静态属性
this
调用当前类的静态方法
self
可以动态绑定,调用最新类的方法
static
类引用
一个类只有一个实例
单例模式
由静态方法创建
简单工厂
工厂方法
提供一个创建一系列或相互依赖对象的接口
抽象工厂
工厂模式
观察者模式
门面模式
设计模式
__aotuload由于是全局函数只能定义一次,不够灵活
__autoload
可以按需多次写spl_autoload_register注册加载函数
spl_autoload_register
自动加载机制
变量名称
变量值
是否使用的 &取地址符强制引用
is_ref
引用该变量的数量,当为零时进行销毁
引用计数ref_count
普通变量
复合类型变量(数组和对象)
zval变量容器
根缓存区
GC机制
垃圾回收机制
引擎
缓存区
map结构?
数据库优化
字符串使用单引号
页面静态化
异步处理任务
Redis缓存
PHP优化
服务器分布式集群
高并发优化
执行过程
IOC控制反转
laravel
进阶
php
不允许null值
主键索引
唯一可为空
唯一索引
普通索引
联合索引
全文索引
索引类型
聚簇
innodb叶子节点存储的是主键的值
myisam叶子节点存储的是数据的指针地址
非聚簇
B+树
通过hash算法匹配到数据地址
制定查询效率高
hash
索引结构
索引
myisam
支持事务
聚簇索引
mvcc多版本并发控制
innodb
存储引擎
要么全部成功,要么全部回滚失败
原子性
事务前后的数据必须一致性
一致性
即多个事务之间不能被干扰,多个事务要相互隔离
隔离性
即事务提交后,数据的改变是永久性的
持久性
事务的特性
事务A读取到事务B未提交的数据
脏读
事务A变更数据时,事务B插入或修改提交事务,造成有数据未修复的现象 成为幻读
幻读
一个事务多次读取,查询到的数据不一致
不可重复读
产生的影响
数据已更改,但未提交,基于排他写锁,不排除读锁。会造成脏读
读未提交
允许其他事务读写,会造成不可重复读。事务A读取,事务B更新并提交,事务A再次读取,发现数据已改变
读已提交/不可重复度
可重复读
事务隔离级别最高的一种,读写多进程都会产生阻塞
串行化
隔离级别
事务隔离级别
用来解决读-写冲突的无锁并发控制
事务ID
回滚指针(上一版本)
隐式主键
flag字段
隐式字段
读试图
快照读
当前读
事务
二阶段提交?
red log?
读锁/共享锁
写锁/排它锁
意向锁是在加读写锁之前加上意向锁
读写意向锁
行锁模式
记录锁/Record Lock
封锁索引记录中的间隔
间隙锁/Gap Lock
是记录锁与间隙锁的组合,它的封锁范围,既包含索引记录,又包含索引区间
临键锁/Next-key Locks
行锁的类型
行锁
DDL操作也会触发表锁
修改列类型删除PK转换字符集添加全文索引
DDL锁表情况
表锁
锁
索引不存储null值
重复值较多的列 例如枚举数据
like '%xx'
联合索引 未包含第一列
order by
group by
违反最左原则
or条件包含非索引项
索引列进行 运算/函数/类型转换
避免隐式类型转换
innodb count(*) where条件二级索引比主键查询快主键与数据存储在一起 全表扫描较慢
索引优化
查询优化
子查询避免使用<> in not in null和函数运算
子查询优化
all全表扫描
index遍历索引树
range范围查询
查询类型
type
可能会使用的索引
possible_keys
使用的索引 必然在possible_keys中
key
use index非回表查询
use where 回表查询
extra
explain
利用小表驱动大表
主从/读写分离
分区分表
优化
mysql
string
列表
有序集合
无序集合
Redis数据类型
设置集合存储空key
缓存不存在,热点数据多次请求数据库,导致负载过高
缓存穿透
缓存时效范围随机
缓存雪崩
缓存失效,查询期间 加锁处理
缓存击穿
缓存问题
分布式锁实现机制
redis
编程知识
0 条评论
回复 删除
下一页