PHP 基础

349 阅读7分钟

面向对象

  • OOP 定义: Object Oriented Programming, 面向对象的程序设计
  • OOP的核心思想是对象、封装、可复用性、可扩展性
  • OOP的三大特性: 封装 - 继承 - 多态

MVC

blog.csdn.net/u010924897/…

PHP 设计模式

www.jianshu.com/p/8974445a9…

Apache 与 php 的通信原理

www.php.cn/blog/detail…

项目中遇到的挑战

数据量大的导出,改为异步导出

对称加密和非对称加密

对称加密: 加密和解密的秘钥使用的是同一个.一般用移动端接口数据签名加密。速度快效率高。 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

Redis各数据类型使用场景

blog.csdn.net/u011277123/…

php 底层

php 遍历目录

blog.csdn.net/nuli888/art…

什么是 JWT -- JSON WEB TOKEN

www.jianshu.com/p/576dbf44b…

Nginx

blog.csdn.net/ningyuxuan1… yq.aliyun.com/articles/19…

Nginx+Php-fpm运行原理详解

segmentfault.com/a/119000000…

HTTP协议与TCP、IP协议之间的关系

www.jianshu.com/p/9317c042f…

Redis和Memcached的区别

www.biaodianfu.com/redis-vs-me…

XSS 攻击(跨网站脚本攻击)

www.cnblogs.com/phpstudy201…

PHP排序算法

www.jianshu.com/p/a8cd6cbf7…

MySQL的四种事务隔离级别

www.cnblogs.com/huanongying…

MySQL锁总结

zhuanlan.zhihu.com/p/29150809 www.cnblogs.com/luyucheng/p…

SQL Explain 字段解释

blog.csdn.net/fuzhongyu2/… blog.csdn.net/wdjxxl/arti…

MySQL 之全文索引

blog.csdn.net/mrzhouxiaof…

MySQL索引

www.jianshu.com/p/a58559f3f…

www.jianshu.com/p/0d6c828d3…

www.cnblogs.com/luyucheng/p…

数据库建立索引常用的规则

  1. 主键、外键要有索引
  2. 经常使用条件的字段,要创建索引
  3. 表join的关联字段,要创建索引
  4. 小字段上创建索引,避免长文本字段

MySql在建立索引优化时需要注意的

  1. 创建索引要结合业务分析,不能创建大量无用的索引,也不能不创建索引
  2. 在创建复合索引时应该将最常用的限制条件放在最左边,依次递减。
  3. 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
  4. mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
  5. 一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。
  6. 不要在列上进行运算 select * from users where YEAR(adddate)

www.cnblogs.com/abcdwxc/p/9…

MySQL的btree索引和hash索引的区别

blog.csdn.net/zhaoliang83…

MySQL性能优化

www.jianshu.com/p/85a4d7b3e…

索引的工作原理

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

blog.csdn.net/qq_38789941…

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

www.cnblogs.com/phpstudy201…

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

blog.csdn.net/qq_40797605…

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
访问量大怎么优化
静态化中嵌套动态的部分