面试官:Redis过期key是怎么清理的?

2020-07-05
阅读 1 分钟
8.9k
redis 的 key 清理,也就是内存回收的时候主要分为:过期删除策略与 内存淘汰策略两部分。 过期删除策略 删除到达过期时间的 key 。 第一种:定时检查删除 对于每一个设置了过期时间的 key 都会创建一个定时器,一旦达到过期时间都会删除。这种方式立即清除过期数据,对内存比较好, 但是有缺点是:占用了大量 CPU 的资...

一文读懂 InnoDB 缓冲池(buffer pool) 工作原理

2020-05-26
阅读 4 分钟
6.5k
对于使用 InnoDB 作为存储引擎的表来说,不管是用于存储用户数据的索引,还是各种系统数据,都是以页的形式存放在表空间中的,而所谓的表空间只是 InnoDB 对文件系统上一个或几个实际文件的抽象,也就实际数据说到底还是存储在磁盘上的。

为什么 InnoDB 使用 B+ 树

2020-05-24
阅读 3 分钟
3.8k
每一种解决方案都是为了解决某一类问题而产生,所以在问为什么使用某种方案的时候,其本质就是在探索该方案是用来满足什么样的需求,解决什么样的问题。

浅析 PHP7 的垃圾回收机制

2019-09-01
阅读 3 分钟
2.3k
垃圾回收机制是一种动态存储分配方案。它会自动释放程序不再需要的已分配的内存块。 自动回收内存的过程叫垃圾收集。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻辑。 在现在的流行各种语言当中,垃圾回收机制是新一代语言所共有的特征。

PHP7 数组的底层实现

2019-08-24
阅读 4 分钟
4.4k
PHP 数组具有的特性 PHP 的数组是一种非常强大灵活的数据类型,在讲它的底层实现之前,先看一下 PHP 的数组都具有哪些特性。 可以使用数字或字符串作为数组健值 {代码...} 可按顺序读取数组 {代码...} 可随机读取数组中的元素 {代码...} 数组的长度是可变的 {代码...} 正是基于这些特性,我们可以使用 PHP 中的数组轻易...

PHP7 的基本变量

2019-08-15
阅读 5 分钟
2.4k
zval 的结构由一个保存变量类型的值或指针的 union 联合体 zend_value 以及两个 union 联合体 u1 和 u2 组成

PHP7 底层运行机制

2019-08-09
阅读 2 分钟
2.7k
Token 是 PHP 代码被切割成的有意义的标识。PHP7 一共有 137 种 Token,在zend_language_parser.h 文件中做了定义。

深入 Nginx 之配置篇

2019-03-01
阅读 5 分钟
13.3k
常用配置项 在工作中,我们与 Nginx 打交道更多的是通过其配置文件来进行。那么掌握这些配置项各自的作用就很有必要了。 首先,nginx.conf 的内容通常是这样的: {代码...} 我们依次看一下每个模块一般有哪些配置项: 核心模块 {代码...} 事件模块 {代码...} http 模块 {代码...} 配置项解析 worker_processes worker_pr...

深入 Nginx 之架构篇

2019-02-23
阅读 3 分钟
10.6k
Nginx 作为业界知名的高性能服务器,被广泛的应用。它的高性能正是由于其优秀的架构设计,其架构主要包括这几点:模块化设计、事件驱动架构、请求的多阶段异步处理、管理进程与多工作进程设计、内存池的设计,以下内容依次进行说明。

PHP-FPM 与 Nginx 的通信机制总结

2019-01-28
阅读 3 分钟
11.3k
每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通信。PHP 文件在服务器上的解析需要用到 PHP 解释器,再加上对应的 CGI 协议,从而使服务器可以解析到 PHP 文件。

深入解析 composer 的自动加载原理

2018-05-21
阅读 22 分钟
36.6k
PHP 自5.3的版本之后,已经重焕新生,命名空间、性状(trait)、闭包、接口、PSR 规范、以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言。PHP 的生态系统也一直在演进,而 composer 的出现更是彻底的改变了以往构建 PHP 应用的方式,我们可以根据 PHP 的应用需求混合搭配最合适的 PHP 组件。当然这也得益于 ...

关于RESTful API 设计的总结

2017-12-09
阅读 4 分钟
3.8k
RESTful 给我的最大感觉就是规范、易懂和优雅,一个结构清晰、易于理解的 API 完全可以省去许多无意义的沟通和文档。并且 RESTful 现在越来越流行,

观察者模式的总结

2017-12-03
阅读 3 分钟
2.2k
举个例子说明:假设一个这样的情景,当公司有一个新员工入职了,入职的当天,HR需要为他办理入职手续,网管需要给他配好电脑和办公用品,部门主管需要带他熟悉部门。传统的编程方式,就是在员工入职这个事件发生的代码之后直接加入处理逻辑,当后续我们需要增加处理逻辑时(比如员工入职后增加培训),代码会变得难以维护...

PHP代码简洁之道——SOLID原则

2017-10-22
阅读 9 分钟
7.4k
SOLID 是Michael Feathers推荐的便于记忆的首字母简写,它代表了Robert Martin命名的最重要的五个面对对象编码设计原则

PHP代码简洁之道——类和对象部分

2017-10-03
阅读 3 分钟
2.5k
在 PHP 中,通过为属性或方法设置 public, protected 和 private 关键字可以实现对属性或方法的可见性控制。不过,通过 getter 和 setter 也可以达到控制可见性的目的,并且在某些场景下它具备一些额外的好处。

PHP代码简洁之道——函数部分

2017-10-01
阅读 6 分钟
3.7k
限制函数的参数数量是非常重要的,因为它使你的函数更容易测试。超过三个参数会导致参数之间的组合过多,你必须对每个单独的参数测试大量不同的情况。

PHP代码简洁之道——变量部分

2017-09-27
阅读 3 分钟
2.7k
将代码写的简洁并且易读易懂是每一位优秀的coder所应该具备的基本功。 前几天在github上看到clean-code-php这个项目,感觉很有收获,于是在这里记录一下。 使用有意义并且可读的变量名称 Bad: {代码...} Good: {代码...} 对同一只类型的变量使用同样的词汇 Bad: {代码...} Good: {代码...} 使用易于查找的命名 Bad: {代...

通俗易懂的谈谈装饰器模式

2017-09-18
阅读 3 分钟
5k
装饰器模式( Decorator Pattern )允许向一个现有的对象添加新的功能,同时又不改变其结构。它能让我们在扩展类的时候让系统较好的保持灵活性。