面向对象
- OOP 定义: Object Oriented Programming, 面向对象的程序设计
- OOP的核心思想是对象、封装、可复用性、可扩展性
- OOP的三大特性: 封装 - 继承 - 多态
MVC
PHP 设计模式
Apache 与 php 的通信原理
项目中遇到的挑战
数据量大的导出,改为异步导出
对称加密和非对称加密
对称加密: 加密和解密的秘钥使用的是同一个.一般用移动端接口数据签名加密。速度快效率高。 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
Redis各数据类型使用场景
php 底层
php 遍历目录
什么是 JWT -- JSON WEB TOKEN
Nginx
blog.csdn.net/ningyuxuan1… yq.aliyun.com/articles/19…
Nginx+Php-fpm运行原理详解
HTTP协议与TCP、IP协议之间的关系
Redis和Memcached的区别
www.biaodianfu.com/redis-vs-me…
XSS 攻击(跨网站脚本攻击)
PHP排序算法
MySQL的四种事务隔离级别
MySQL锁总结
zhuanlan.zhihu.com/p/29150809 www.cnblogs.com/luyucheng/p…
SQL Explain 字段解释
blog.csdn.net/fuzhongyu2/… blog.csdn.net/wdjxxl/arti…
MySQL 之全文索引
MySQL索引
数据库建立索引常用的规则
- 主键、外键要有索引
- 经常使用条件的字段,要创建索引
- 表join的关联字段,要创建索引
- 小字段上创建索引,避免长文本字段
MySql在建立索引优化时需要注意的
- 创建索引要结合业务分析,不能创建大量无用的索引,也不能不创建索引
- 在创建复合索引时应该将最常用的限制条件放在最左边,依次递减。
- 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
- mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
- 一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。
- 不要在列上进行运算 select * from users where YEAR(adddate)
MySQL的btree索引和hash索引的区别
MySQL性能优化
索引的工作原理
www.imooc.com/article/704… www.cnblogs.com/zqw111/p/10…
MyISAM 与 InnoDB 不同与优缺点
blog.51cto.com/txidc/15712… www.cnblogs.com/fanguangdex…
Mysql主从同步的实现原理与配置
zhuanlan.zhihu.com/p/133130991
优化SQL
HTTP
- HTTP的英文全称?
超文本传输协议(HyperText Transfer Protocol)
HTTP 头
blog.csdn.net/sinat_34166… www.cnblogs.com/poissonnote…
- HTTP 常见状态码
200 – 请求成功
301 – 资源(网页等)被永久转移到其它URL
403 –请求资源的访问被服务器拒绝
404 – 请求的资源(网页等)不存在
500 – 内部服务器错误(服务器端在执行请求时发生了错误)
-
TCP协议对应于传输层,而HTTP协议对应于应用层,http是基于tcp协议的
-
TCP三次握手和四次挥手?
三次握手
客户端–发送带有SYN标志的数据包–一次握手–服务端
服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端
客户端–发送带有带有ACK标志的数据包–三次握手–服务端
四次挥手:
客户端-发送一个FIN,用来关闭客户端到服务器的数据传送
服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号
服务器-关闭与客户端的连接,发送一个FIN给客户端
客户端-发回ACK报文确认,并将确认序号设置为收到序号加1
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。 这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机 A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
- TCP和UDP的区别?
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
用TCP协议来聊天,要经过--在吗?--在--巴拉巴拉,才能成功的传递信息。
而如果对方使用UDP,则会有事直接说,不管我收没收到。
php 常用数组函数和字符串函数
array_search 在数组中搜索某个键值,并返回对应的键名
array_map 数组元素每一个值经过自定义函数
array_walk 数组键值作为自定义函数的参数,循环一遍
array_merge
array_pop 删除数组最后一个元素,并返回
array_shift 删除数组第一个元素,返回删除
in_array
array_key_exsists
array_reverse 数组元素颠倒
explode 把字符串根据指定字符打散成数组
implode 根据指定字符把数组中的元素拼接成字符串
strcasecmp 忽略大小写比较字符串
strrev 字符串反转
strpos 字符串位置
strlen
substr 截取字符
trim 去空格
strtolower 转小写
strtoupper 转大写
htmlspeciachars 预定义的字符转换为 HTML 实体
Docker
crontab 应用
- crontab 命令
编辑定时任务
crontab -e
删除当前定时任务
crontab -r
- crontab 格式
* * * * * command
分 时 日 月 周 命令
m h dom mon dow command
{minutes} {hour} {day of month} {month} {day of week} {full path of script}
第1列表示分钟1~59, 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令(命令可以是ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)
- 例子
每晚的21:30重启apache
30 21 * * * systemctl restart apache2.service
- redis
redis是一个key-value存储系统,和Memcached类似
支持存储的value类型: 包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)
- zset 有序集合的特点
有序集合保留了集合不能有重复成员的特性,有序集合的元素可以排序,但是它和列表使用索引下标作为排序不同,有序集合给每个元素设置一个分数score 作为排序的依据。
- redis的优点:
性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
grep
grep INFO | grep DEBUG log-2020.log
grep -E 'INFO|DEBUG'log-2020.log
egrep 'INFO|DEBUG' log-2020.log
grep -Ei 'INFO|debug'log-2020.log
temp
有哪些是php fpm方式运行
Request header中那一部分是使 ngix 服务器知道, 类型:Host
Request header中控制缓存是哪个标签: Cache-control, Exprire
redis 特点
redis zset 有序集合的特点
除了json, xml还有哪些传输数据的类型: protocol buffers
访问量大怎么优化
静态化中嵌套动态的部分