自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Dockerfile与docker-compose容器编排(Docker系列第3章,共3章)

假设需要在新的centos上安装ifconfig和vim,启动容器后,进入根目录,并添加/test:/test的容器数据卷(Dockerfile添加不生效,试了20次+)docker build -t 镜像名:tag .记得把中文注释去了。

2024-04-15 02:44:08 1095

原创 万字长文深入理解Docker镜像分层原理、容器数据卷、网络通信架构(Docker系列第2章,共3章)

docker的UFS管理了最上面的3层,利用写时复制(Copy-on-Write)的机制,当容器需要修改文件时,UFS 会在容器层中进行写操作,而不会直接修改镜像层中的文件。RootFS:在 Linux 中,rootfs(root file system)是指操作系统启动后的根文件系统,它包含了整个文件系统的目录结构和文件,提供了用户空间程序运行所需的基本文件和资源,例如根目录下的几个目录。容器层:可写的,当容器启动时,一个新的容器层被加载到容器的顶部,用来支撑数据变化的存储。

2024-04-14 07:35:41 767 3

原创 近万字详解Docker常用功能合集(Docker系列第1章,共3章)

etc/docker/daemon.json 文件是 Docker 使用的配置文件,用于指定 Docker 守护进程的各种选项和设置。登录阿里云之后,搜索容器镜像服务,进入专题页面后到控制台,点击个人版,点击镜像工具,然后点击镜像加速器。docker run 镜像名称 [-it] [shell类型] [/bin/bash]docker exec [-it] [-d] 容器id [/bin/bash]docker rmi [-f] [镜像id或镜像名] […docker pull 镜像名[:版本]

2024-04-14 07:01:47 1222

原创 深入理解PHP+Redis实现布隆过滤器(亿级大数据处理和黑客攻防必备)

算法:普通开发者缺少算法思维,做出来的布隆过滤器概率不可控,或者容易冲突。为了防止哈希函数的值转化为数字后位数过长(例如md5(1) 为c4ca4238a0b923820dcc509a6f75849b,转10进制是261578874264819908609102035485573088411),需要对数据长度进行取模,不取模还好,取模后极大减少了布隆过滤器的长度。例如10000条数据,设定3种哈希算法,设置3万个比特位,取模后的值大多小于3万,所以冲突的概率增加了很多。

2024-04-08 23:18:38 567

原创 万字详解PHP+Sphinx中文亿级数据全文检索实战(实测亿级数据0.1秒搜索耗时)

这个也好办,直接在csft.conf配置文件内source段和index段复制粘贴,根据上文的两段文章,该创建索引的创建索引,该重启的重启。夜里小郎君的博文:https://blog.csdn.net/b876143268/article/details/53771310。mingaixin的博文:https://www.cnblogs.com/mingaixin/p/5013356.html。不需要引入多个文件,就和MySQL一样,只需要一个/etc/my.cnf就行了,相加配置,接着往下续就行了。

2024-03-29 17:04:04 5420 2

原创 高并发下数据幂等问题的9种解决方案

分析:为了保证防重,事务b insert时需要先查询有没有相同的数据,如果没有再进行插入,此时事务a还没有提交,事务b也就查询不到数据(能查到就是脏读,MySQL RR的隔离级别不会出现),于是进行了inset操作,结果导致事务b被阻塞(受事务a的行级X锁排斥),等事务a提交后,事务b插入失败。在用户写操作成功逻辑代码区的下游中,添加,用redis的setex命令,将模块名拼接用户id作为key,设置3秒过期,1作为value,用不上value,所以随便尝试。分布式锁对于PHP而言,不常用。

2024-03-23 14:57:03 840

原创 深入理解PHP+Redis实现分布式锁的相关问题

对于非PHP而言,重入问题,还需要再维持一个redis hash,key为锁名,field为节点的唯一标识,value为重入次数,重入1次次数加1。因为重入相当于重新获取锁,但是不会新增锁资源,如果这个时间被删掉,那么重入时会加锁成功,但锁资源被强制释放,此时重入后的业务逻辑还不一定执行完毕。就算是redis事务(multi)也是弱事务,仍旧会出现并发安全问题,最好使用Lua+Redis的方式去实现原子性的分布式锁,这会把一些指令集当做一个任务队列去处理,保证原子性。

2024-03-23 14:12:06 1087

原创 深入理解高并发下的MySQL与Redis缓存一致性问题(增删改查数据缓存的一致性、Canal、分布式系统CAP定理、BASE理论、强、弱一致性、顺序、线性、因果、最终一致性)

一些小型项目,或极少有并发的项目,这些策略在无并发情况下,不会有什么问题。

2024-03-20 14:54:19 655

原创 MySQL性能优化盲区(高并发情况下,事务内的数据先更新还是先查询?)

仅70秒的视频,深感学问太深,但是海哥讲的有待补充,于是写下了这篇文章,作为补充。鸣谢:前阿里资深开发极海Channel的技术分享。

2024-03-15 10:52:19 827

原创 MySQL锁(读锁、共享锁、写锁、S锁、排它锁、独占锁、X锁、表锁、意向锁、自增锁、MDL锁、RL锁、GL锁、NKL锁、插入意向锁、间隙锁、页锁、悲观锁、乐观锁、隐式锁、显示锁、全局锁、死锁)

在 MySQL 中,当发生死锁时,MySQL 使用一种叫做"最小成本回滚"(InnoDB 中称为"最小编号事务回滚")的策略来选择一个事务作为牺牲者并进行回滚,最小成本回滚策略是 MySQL 的默认行为,它会自动选择牺牲者并回滚事务。最小成本回滚策略的原理是选择最小成本的事务作为牺牲者。

2024-03-09 09:52:14 1113

原创 MySQL事务(4种事务隔离级别、脏写、脏读、不可重复读、幻读、当前读、快照读、MVCC、事务指标监控)

当前读读的就是数据最新的记录,需要保证当前读的数据不能被修改,修改了就不是最新的记录了(脏写),因此需要加锁,select for update、select lock in share mode以及DML(insert、update、delete)获取的数据都是当前读的数据。串行化的隔离级别,强制事务串行执行,也不存在快照读和当前读的区分,因为读取的都是事务执行过后的最新数据。因为读未提交,就算事务未提交,可以直接读取最新的数据(脏读),相当于当前读,那就不分快照读和当前读了。显式的声明事务,或者声明。

2024-03-09 09:51:06 999

原创 一文读懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

重做日志,记录了数据库中发生的每次修改,如增、删、改、对数据页的更改。这些修改被记录在 redo 日志中,以便在数据库崩溃或意外关闭时能够恢复到最近的一致状态。回滚日志,用于记录事务所做的更改,以便在事务回滚或发生回滚操作时能够撤销事务中的修改。如果使用undo log回滚,这个回滚的动作,也会产生redo log,用于保证数据的高可用。二进制日志,记录所有DDL、DML的日志,用于主从服务器之间的数据同步。也可用于MySQL意外停止情况下的数据恢复。

2024-03-09 09:50:18 999

原创 MySQL索引底层原理相关问题自总结(难度对标18K-25K薪资,已总结80+,持续更新中)

链表是一种线性数据结构,由节点组成,每个节点包含两部分:数据和指向相邻节点的指针。链表分单向和双向。单向:节点只有一个指针,指向下一个节点双向:每个节点有两个指针,一个指向前一个节点,一个指向后一个节点。根据对链表的操作,又可以分为队列和栈。队列:先进先出(LPush->RPop,或Ppush->Rpop)。栈:先进后出(LPush->LPop,或RPush->RPop)。

2024-03-09 09:48:44 1145

原创 MySQL查询优化方案汇总(索引相关)

如果只select仅需字段,可能会触发覆盖索引机制,不用回表,提高性能。减少大字段查询,避免使用*,不说磁盘io的损耗,连网络带宽都跟着损耗。避免使用函数或表达式,尽量只让数据库做纯粹的增删改查。避免join,适用于大表关联小表。大数据深度分页,用主键。避免使用MySQL函数。避免使用不等值做排除法。

2024-03-08 11:43:42 334

原创 MySQL Server架构概述

MySQL Server架构可抽象为3层。连接层:验证用户名密码,认证成功后,获取当前账号的权限并缓存,并分配TCP连接池和线程池资源。处理层:实现核心的处理功能。存储层:将处理后的数据高性能安全的写入磁盘,或从磁盘中正确的读取。

2024-03-08 10:42:04 1078

原创 MySQL的页与行格式

页是指存储引擎使用的最小的数据存储单位。当 MySQL 执行读取或写入操作时,是以页为基本单位来进行操作的。即使读写一条数据,MySQL 也会按页操作。MySQL 的存储引擎会将数据分成多个页,并根据需要将这些页加载到内存中进行处理。通过使用页来组织数据,MySQL 能够更高效地管理存储空间,减少读取数据时的硬盘 I/O 次数,从而提高数据库的性能。行数据量超出所能容纳的最大值。

2024-03-08 09:16:45 1025

原创 MySQL explain

mysql explain(或desc)用于分析SQL语句的执行计划,多用于测试查询性能。语法:explain sql…

2024-03-07 11:02:22 989

原创 简单搭建MySQL主从复制

个人认为,90%的公司的数据体量和并发量压根用不上从服务器,结合Redis,一台性能强劲的云MySQL服务器,做好日常备份。足够了。

2024-03-07 10:51:21 400

原创 SQL语句执行顺序相关问题

SQL语句执行顺序相关问题

2024-02-12 10:48:37 973

原创 3种策略巧妙化解PHP Trait成员属性冲突

3中策略巧妙化解PHP Trait成员属性冲突

2024-02-09 11:58:44 401

原创 可控概率抽奖算法

可控概率抽奖算法

2024-02-04 23:43:07 575

原创 抢红包随机金额算法(均衡随机)

抢红包随机金额算法(均衡随机)

2024-02-03 14:06:31 408

原创 CSRF攻防

CSRF攻防

2024-01-30 00:29:44 875

原创 MySQL死锁

MySQL死锁

2024-01-24 19:56:28 991

原创 MySQL乐观锁与悲观锁

MySQL乐观锁与悲观锁

2024-01-23 21:48:31 966

原创 快速理解ASCII、GBK、Unicode、UTF-8、ANSI

文章大部分内容来源于非官方说明,且无法用逻辑推理出结果,准确性仅供参考。

2023-12-29 17:50:06 1068

原创 从安全、开发、产品三个角度反对用refresh_token续期access_token的观点

从安全、开发、产品三个角度反对用refresh_token续期access_token的观点

2023-12-22 00:02:49 832

原创 你写的防止任意文件上传漏洞的代码,不一定安全

你写的防止任意文件上传漏洞的代码,不一定安全

2023-12-15 00:27:55 414

原创 十几个冷门还好用的PHP写法(冷门的让人震惊)

十几个冷门还好用的PHP写法(冷门的让人震惊)

2023-12-14 21:53:51 423

原创 谨防利用Redis未授权访问漏洞入侵服务器

谨防利用Redis未授权访问漏洞入侵服务器

2023-11-24 20:17:19 1455

原创 深入理解Laravel(CVE-2021-3129)RCE漏洞(超2万字从源码分析黑客攻击流程)

深入理解Laravel(CVE-2021-3129)RCE漏洞(超2万字从源码分析黑客攻击流程)

2023-11-21 02:07:14 632

原创 浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应该是全网首发)

浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应该是全网首发)

2023-11-03 15:58:02 204

原创 封装一个PHP可控限速下载文件的方法

【代码】封装一个PHP可控限速下载文件的方法。

2023-10-26 01:57:28 389

原创 基于Laravel封装一个强大的请求响应日志记录中间件

基于Laravel封装一个强大的请求响应日志记录中间件

2023-10-23 23:08:25 549

原创 Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置

Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置

2023-10-13 11:54:23 88

原创 PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错)

PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错)

2023-10-12 14:32:48 314

原创 浅谈PHP结合JavaScript SSE(Server Sent Events)实现服务器实时推送功能

浅谈PHP结合JavaScript SSE(Server Sent Events)实现服务器实时推送功能

2023-09-23 02:39:33 1274

原创 用PHP封装一个强大且通用的cURL方法

【代码】用PHP封装一个强大且通用的cURL方法。

2023-08-09 10:30:14 266

原创 PHP用Swoole的WebSocket功能编写聊天室Demo

"WebSocket 已断开连接""WebSocket 错误:"'进入聊天室</p>''离开聊天室</p>'

2023-06-24 17:01:18 233

原创 浅谈PHP设计模式的访问者模式

浅谈PHP设计模式的访问者模式

2023-01-27 22:36:53 87

空空如也

Laravel,laravel

2024-02-08

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

TA关注的人

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