- 博客(11)
- 收藏
- 关注
原创 2021-PHP面试*3.1
1 合合信息难度 5/10d轮公司,环境还可以,团队不小,位置有点远,995PHP数据类型?INT最大值?最大值和什么相关?int,string,array,object,bool盲猜有个INT_MAX(果然有)系统位数相关linux查看文件命令vi,cat,less,more查看进程ps -ef|gerpXSS,防御…事务隔离级别老生常谈了innodb索引类型老生常谈myisam和innodb都支持事务吗innodb支持innodb如
2021-03-05 21:46:52
1367
原创 Redis过期键删除策略
常见过期删除策略定时删除概念在设置过期键时,创建一个定时器,让定时器在过期时间达到时删除此键优劣保证了所有键在过期时及时删除,内存友好占用cpuredis实现时间事件为无序链表,查找的时间复杂度为O(n)惰性删除概念放任键过期,再使用此键时检查键的过期时间,已过期就删除,未过期正常返回优劣未被使用的过期键一直放在内存中,类似内存泄漏,对内存不友好cpu友好,只在取出键时才检查定期删除概念每隔一段时间,服务器检查一次所有键,删除过期的键。其实是定时删除和惰性删除的折中
2020-10-30 18:33:47
330
原创 缓存淘汰算法LRU
基本概念Least Recently Used,即最近最少使用,是内存管理的一种页面置换算法。算法的核心是:如果一个数据在最近一段时间内没有被访问到,那么它在将来被访问的可能性也很小。换言之,当内存达到极限时,应该把内存中最久没有被访问的数据淘汰掉。一般实现理论上只需要一个列表,数据被使用时,不在LRU列表中就放到头部,在就提到头部,相应淘汰尾部的数据即可。或者数据使用时记录使用时间戳,每次比对时间戳,最小的淘汰。使用hashmap可以使时间复杂度由O(n)降低至O(1)。使用python 双向链
2020-10-16 17:50:01
187
1
原创 Innodb缓冲池
缓冲池 buffer pool缓冲池的出现,是因为磁盘速度拖了cpu速度的后腿,而将部分数据放到内存加入缓存,可以一定程度上解决此问题缓冲池的组成缓存的数据页类型有数据页data page插入缓冲 insert buffer锁信息 lock info索引页 index page自适应哈希索引数据字典信息占大头的当然是索引页和数据页缓冲池如何更新缓冲池数据更新算法基于LRULRU(Last Recent Used)算法算(法)如其名,即将使用最频繁的页在LRU列表前端,最少使用
2020-09-09 16:31:24
277
原创 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
827
原创 简单了解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
246
原创 回表与innodb和myisam索引的差异
简单了解两种引擎的索引的结构myisam索引非聚集索引MyISAM的索引与行记录是分开存储的。叫做非聚集索引(UnClustered Index)。myisam索引使用b+tree储存主键索引和普通索引结构相同(所以myisam可以没有主键索引)索引的叶子节点储存数据记录的地址/指针innodb索引聚集索引InnoDB的主键索引与行记录是存储在一起的,故叫做聚集索引(Clustered Index),也由此提升主键查询速度索引同样使用b+tree储存聚集索引叶子节点直接储存相应记
2020-07-15 15:46:00
1131
原创 单条SQL性能分析
show profileshow status慢查询日志explain使用 explain select * from User如果from子句中包含子查询,explain时会执行执行子查询的sql只解释select语句explain中的列id标识符,标识select所属的行。select_type显示对应行是简单还是复杂sqlsimple 不包括子查询和unionprimay 如果查询有复杂的子部分,最外层标记subquery 包含在select列表中的子查询中的
2020-07-09 18:49:52
246
1
原创 阿里开源项目Canal
场景开发中,因为各种各样的原因,难免会遇到同时使用数据库和redis、elasticsearch这样中间件的地方。使用时,最为关心的便是数据的一致。业务中使用过代码保证、脚本同步等方式,都难以解决痛点,最后使用canal完美解决。数据同步方式比较同步方式优点缺点代码实时、易实现维护成本高、同步开销大定时脚本异步、易实现数据同步不及时,同一时间有差异Canal简介canal 是阿里巴巴的一个开源项目,基于java实现,整体已经在很多大型的互联网项目生产环境中使
2020-06-30 11:29:18
990
1
原创 初识OPcache
PHP opcacheOPcache概念PHP执行流程在有OPcache进行缓存之后的PHP执行流程OPcache配置测试性能OPcache的一些函数链接OPcache概念OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销(引自PHP官网)。总而言之,就是两个字,缓存。PHP执行流程...
2019-06-05 16:53:50
510
原创 laravel paginator 接口使用分页/自定义分页
laravel paginator接口使用分页/自定义分页在使用laravel开发后端接口时,需要分页。但是paginator()无法传递当前页面值,只能传一个展示条数;在使用laravel开发后端接口时,需要分页。但是paginator()无法传递当前页面值,只能传一个展示条数;查看paginatorIlluminate\Pagination;class Paginator extend...
2019-04-30 17:30:48
5114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人