博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 基础
阅读量:6073 次
发布时间:2019-06-20

本文共 3877 字,大约阅读时间需要 12 分钟。

面向对象

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

php 底层

  • php 运行原理

HTTP

  • HTTP的英文全称?
超文本传输协议(HyperText Transfer Protocol)复制代码
  • HTTP 常见状态码
200 – 请求成功301 – 资源(网页等)被永久转移到其它URL404 – 请求的资源(网页等)不存在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,则会有事直接说,不管我收没收到。复制代码
  • 状态码

数据库

  • MySQL的btree索引和hash索引的区别
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可 能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引也一样,虽然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。(1)Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样。(2)Hash 索引无法被用来避免数据的排序操作。由于 Hash 索引中存放的是经过 Hash 计算之后的 Hash 值,而且Hash值的大小关系并不一定和 Hash 运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算;(3)Hash 索引不能利用部分索引键查询。对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用。(4)Hash 索引在任何时候都不能避免表扫描。前面已经知道,Hash 索引是将索引键通过 Hash 运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个 Hash 表中,由于不同索引键存在相同 Hash 值,所以即使取满足某个 Hash 键值的数据的记录条数,也无法从 Hash 索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。(5)Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。对于选择性比较低的索引键,如果创建 Hash 索引,那么将会存在大量记录指针信息存于同一个 Hash 值相关联。这样要定位某一条记录时就会非常麻烦,会浪费多次表数据的访问,而造成整体性能低下。来源二hash索引查找数据基本上能一次定位数据,当然有大量碰撞的话性能也会下降。而btree索引就得在节点上挨着查找了,很明显在数据精确查找方面hash索引的效率是要高于btree的;那么不精确查找呢,也很明显,因为hash算法是基于等值计算的,所以对于“like”等范围查找hash索引无效,不支持;对于btree支持的联合索引的最优前缀,hash也是无法支持的,联合索引中的字段要么全用要么全不用。提起最优前缀居然都泛起迷糊了,看来有时候放空得太厉害;hash不支持索引排序,索引值和计算出来的hash值大小并不一定一致。https://www.jianshu.com/p/a58559f3fb48复制代码
  • 索引的工作原理
------复制代码
  • MyISAM 与 InnoDB 不同与优缺点
MyISAM 不支持事务。InnoDB 支持事务,支持行级锁,更好的恢复性,高并发下性能更好。InnoDB 不支持FULLTEXT类型的索引。对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。InnoDB优点1. 具有非常高效的缓存特性,能缓存索引,也能缓存数据2. 行级锁定对于高并发有很好的适应能力MyISAM引擎优点1.高性能读取2.因为它保存了表的行数,当使用COUNT统计时不会扫描全表InnoDB缺点1.因为它没有保存表的行数,当使用COUNT统计时会扫描全表MyISAM缺点1.锁级别为表锁,表锁优点是开销小,加锁快;缺点是锁粒度大,发生锁冲动概率较高,容纳并发能力低,这个引擎适合查询为主的业务2.此引擎不支持事务,也不支持外键3.INSERT和UPDATE操作需要锁定整个表复制代码
  • 优化SQL
------复制代码

队列

  • 队列怎么实现的
---------复制代码

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

----------复制代码

crontab 应用

  • crontab 命令
编辑定时任务crontab -e删除当前定时任务crontab -r复制代码
  • crontab 格式
*  *  *  *  *  command分 时 日 月 周   命令 第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重启apache30 21 * * * systemctl restart apache2.service复制代码
  • redis
redis是一个key-value存储系统,和Memcached类似支持存储的value类型: 包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)复制代码
  • zset 有序集合的特点
----复制代码
  • redis的优点:
性能极高 – Redis能支持超过 100K+ 每秒的读写频率。丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。复制代码
有哪些是php fpm方式运行Request header中那一部分是使 ngix 服务器知道, 类型:Host Request header中控制缓存是哪个标签: Cache-control, Exprireredis 特点redis zset 有序集合的特点除了json, xml还有哪些传输数据的类型: protocol buffers访问量大怎么优化静态化中嵌套动态的部分复制代码

转载于:https://juejin.im/post/5c7f9524518825787e6a1cd3

你可能感兴趣的文章
vue 按需加载
查看>>
OpenCV编程->ROI区域保存为图片
查看>>
SS哥的crontab教程
查看>>
python 面向对象
查看>>
兼职议会
查看>>
2012.12.18
查看>>
rpm包管理和yum的使用
查看>>
Linux tmux
查看>>
在此处打开命令窗口问题
查看>>
中国红××××××C
查看>>
深度探索I/O完成端口
查看>>
年夏天针对中国市场推出廉价版的iPhone—iPhone Mini
查看>>
我的友情链接
查看>>
超详细PXE批量部署Linux
查看>>
Java爬虫实战(一):抓取一个网站上的全部链接
查看>>
交互组件微创新
查看>>
10本 Groovy/Grails 的书籍
查看>>
3.3 bash详解2
查看>>
【Android游戏开发之三】剖析 SurfaceView ! Callback以及SurfaceHolder!!
查看>>
No UserDatabase component found under key UserData
查看>>