自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-PHP面试*3.1

1 合合信息 难度 5/10 d轮公司,环境还可以,团队不小,位置有点远,995 PHP数据类型?INT最大值?最大值和什么相关? int,string,array,object,bool 盲猜有个INT_MAX(果然有) 系统位数相关 linux查看文件命令 vi,cat,less,more 查看进程 ps -ef|gerp XSS,防御 … 事务隔离级别 老生常谈了 innodb索引类型 老生常谈 myisam和innodb都支持事务吗 innodb支持 innodb如

2021-03-05 21:46:52 1425

原创 Redis过期键删除策略

常见过期删除策略 定时删除 概念 在设置过期键时,创建一个定时器,让定时器在过期时间达到时删除此键 优劣 保证了所有键在过期时及时删除,内存友好 占用cpu redis实现时间事件为无序链表,查找的时间复杂度为O(n) 惰性删除 概念 放任键过期,再使用此键时检查键的过期时间,已过期就删除,未过期正常返回 优劣 未被使用的过期键一直放在内存中,类似内存泄漏,对内存不友好 cpu友好,只在取出键时才检查 定期删除 概念 每隔一段时间,服务器检查一次所有键,删除过期的键。 其实是定时删除和惰性删除的折中

2020-10-30 18:33:47 372

原创 缓存淘汰算法LRU

基本概念 Least Recently Used,即最近最少使用,是内存管理的一种页面置换算法。算法的核心是:如果一个数据在最近一段时间内没有被访问到,那么它在将来被访问的可能性也很小。换言之,当内存达到极限时,应该把内存中最久没有被访问的数据淘汰掉。 一般实现 理论上只需要一个列表,数据被使用时,不在LRU列表中就放到头部,在就提到头部,相应淘汰尾部的数据即可。或者数据使用时记录使用时间戳,每次比对时间戳,最小的淘汰。 使用hashmap可以使时间复杂度由O(n)降低至O(1)。 使用python 双向链

2020-10-16 17:50:01 278 1

原创 Innodb缓冲池

缓冲池 buffer pool 缓冲池的出现,是因为磁盘速度拖了cpu速度的后腿,而将部分数据放到内存加入缓存,可以一定程度上解决此问题 缓冲池的组成 缓存的数据页类型有 数据页data page 插入缓冲 insert buffer 锁信息 lock info 索引页 index page 自适应哈希索引 数据字典信息 占大头的当然是索引页和数据页 缓冲池如何更新 缓冲池数据更新算法基于LRU LRU(Last Recent Used)算法 算(法)如其名,即将使用最频繁的页在LRU列表前端,最少使用

2020-09-09 16:31:24 325

原创 laravel Pipeline管道 与middleware中间件

在laravel中,middleware是用管道实现的,要理解middleware,首先要了解Pipeline。 下文会对代码做一定简化方便理解 Pipeline 管道 以全局中间件为例,首先在kernel中定义middleware数组 protected $middleware = [ \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, \App\H

2020-08-19 18:24:47 908

原创 简单了解redis分布式锁

redis分布式锁 项目中的分布式锁代码 我们先来观察一个分布式锁的代码 加锁 public function addExclusiveLock($lockName, int $lockExpire = 3) { $lockName = 'exclusivelock:' . $lockName; $retryTimes = 0; $maxRetryTimes = $lockExpire > 10 ? 10 : $lockExpire;

2020-08-11 15:59:45 298

原创 回表与innodb和myisam索引的差异

简单了解两种引擎的索引的结构 myisam索引 非聚集索引 MyISAM的索引与行记录是分开存储的。叫做非聚集索引(UnClustered Index)。 myisam索引使用b+tree储存 主键索引和普通索引结构相同(所以myisam可以没有主键索引) 索引的叶子节点储存数据记录的地址/指针 innodb索引 聚集索引 InnoDB的主键索引与行记录是存储在一起的,故叫做聚集索引(Clustered Index),也由此提升主键查询速度 索引同样使用b+tree储存 聚集索引叶子节点直接储存相应记

2020-07-15 15:46:00 1194

原创 单条SQL性能分析

show profile show status 慢查询日志 explain 使用 explain select * from User 如果from子句中包含子查询,explain时会执行执行子查询的sql 只解释select语句 explain中的列 id 标识符,标识select所属的行。 select_type 显示对应行是简单还是复杂sql simple 不包括子查询和union primay 如果查询有复杂的子部分,最外层标记 subquery 包含在select列表中的子查询中的

2020-07-09 18:49:52 288 1

原创 阿里开源项目Canal

场景 开发中,因为各种各样的原因,难免会遇到同时使用数据库和redis、elasticsearch这样中间件的地方。使用时,最为关心的便是数据的一致。业务中使用过代码保证、脚本同步等方式,都难以解决痛点,最后使用canal完美解决。 数据同步方式比较 同步方式 优点 缺点 代码 实时、易实现 维护成本高、同步开销大 定时脚本 异步、易实现 数据同步不及时,同一时间有差异 Canal简介 canal 是阿里巴巴的一个开源项目,基于java实现,整体已经在很多大型的互联网项目生产环境中使

2020-06-30 11:29:18 1041 1

原创 初识OPcache

PHP opcacheOPcache概念PHP执行流程在有OPcache进行缓存之后的PHP执行流程OPcache配置测试性能OPcache的一些函数链接 OPcache概念 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销(引自PHP官网)。总而言之,就是两个字,缓存。 PHP执行流程...

2019-06-05 16:53:50 591

原创 laravel paginator 接口使用分页/自定义分页

laravel paginator接口使用分页/自定义分页在使用laravel开发后端接口时,需要分页。但是paginator()无法传递当前页面值,只能传一个展示条数; 在使用laravel开发后端接口时,需要分页。但是paginator()无法传递当前页面值,只能传一个展示条数; 查看paginator Illuminate\Pagination; class Paginator extend...

2019-04-30 17:30:48 5246

空空如也

空空如也

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

TA关注的人

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