自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 PHP-数组实现

文章目录PHP数组底层实现数组的语义数组的概念PHP5数组实现PHP5数组痛点PHP7Bucket结构Zend_Array结构数组访问随机读顺序读散列函数散列冲突拓容hash表重建PHP数组底层实现​ PHP数组在初始化的时候,不必指定大小和存储数据的类型,在赋值的时候可以通过数字索引,也可以通过字符串索引的方式。基于 PHP 数组的强大特性,我们可以轻易实现更加复杂的数据结构,比如栈、队列、列表、集合、字典等。PHP 数组功能之所以如此强大,得益于底层基于散列表实现。https://www.cnb

2021-03-07 23:12:48 423

原创 PHP-JIT优化

JIT原理以java为例,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。​ 在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以接近以前纯编译技术。下面我看看,JIT的工作过程。JIT编译过程​ 当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT

2021-03-07 00:05:45 486

原创 PHP-Opcache优化

目前为php提供opcode缓存的扩展有很多,比如:Zend Opcache,xcache,eAccelerator,apc等等。但是目前其他产品都逐渐被淘汰Zend Opcache为官方产品,保证版本的兼容和持续更新Zend Opcache适配php5,且在5.5后都自带了opcache,无须额外安装Zend Opcache性能最为优越下文讨论的均是Zend自带的opcache拓展Opcache原理编译器把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行的时候直接以机器语

2021-03-07 00:04:30 244

原创 Redis持久化原理

文章目录内存淘汰策略内置的淘汰策略按策略来分按范围来分Redis的近似LRU算法原生LRU算法近似算法的原理实现逻辑删除策略定时删除(立刻删除)惰性删除定期删除源码惰性删除定期删除参考文献内存淘汰策略当我们对Redis设置了maxmemory,那么当Redis的内存达到了这个阈值后,就可以对内存中的内容进行淘汰,直到Redis的内存控制在maxmemory内。Redis会使用某种策略对存储的数据进行清理,释放内存。称之为Redis内存淘汰策略内置的淘汰策略redis.conf中可配置Redis的最

2021-03-06 23:53:48 158

原创 内存淘汰策略 && 删除策略

内存淘汰策略当我们对Redis设置了maxmemory,那么当Redis的内存达到了这个阈值后,就可以对内存中的内容进行淘汰,直到Redis的内存控制在maxmemory内。Redis会使用某种策略对存储的数据进行清理,释放内存。称之为Redis内存淘汰策略内置的淘汰策略redis.conf中可配置Redis的最大内存量 maxmemory,如果配置为0,在64位系统下则表示无最大内存限制,在32位系统下则表示最大内存限制为 3 GB。# redis.conf 最大内存配置示例# 不带单位则 单

2021-03-06 23:52:23 582

原创 Redis缓存失效问题

redis作为内存数据库,其数据总会有失效的时候,数据失效引起的问题主要有三个缓存穿透缓存击穿缓存雪崩缓存穿透key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。解决方法一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储

2021-03-06 23:50:16 578

原创 Docker项目部署

作者趁着五一尝试使用swoole更新一下之前的毕业项目,这里稍作记录之前尝试在云服务器上使用Nginx的vhost做请求转发,配合修改本地host文件做DNS的映射,发现host添加的域名很快会失效,不得不找到其他的方法来进行开发Nginx基于端口的vhost项目部署到docker中购买合法域名由于作者十分贫穷,只能舍弃第三种方法。这里就第二种方式进行尝试和记录Docker容器构建构建一个存放项目的docker容器,docker容器的选择和组合有多种方式为nginx、php、mysql

2020-05-12 14:52:21 302

原创 Swoft Rpc调用(一) Rpc服务初始化

Swoft Rpc调用(一) Rpc服务初始化Swoft框架的初始化Swoft初始化有六个步骤ENV环境文件初始化注解信息扫描收集配置初始化注册类到bean容器收集事件监听器启动console控制台,启动相应的服务官方文档而Rpc作为Swoft提供的基础模块之一,其初始化流程也与框架的初始化一致Rpc服务调用Rpc的本质也是一个请求的发送和处理,所以会有发送请求的Cl...

2020-04-07 10:56:17 809

原创 初探Swoft -- Swoft docker环境搭建

初探Swoft – Swoft docker环境搭建在docker中搭建swoft的开发环境,swoft项目运行在docker中网上提供了好几种搭建docker镜像的方法,下面采用的是使用DockerFile直接构建主要有下面几个步骤编写Dockerfilecomposer 安装 swoft项目构造docker镜像,并把swoft项目共享到docker中下面介绍每个步骤的详细操作...

2020-03-27 21:33:48 355 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除