- 博客(127)
- 收藏
- 关注
原创 MySQL幻读是怎么出现的
幻读:在一个事务内,两次执行相同的范围查询,第二次查询却看到了第一次查询没有看到的新插入的行(像出现了"幻觉")。现象定义关注点脏读读到其他事务未提交的数据未提交数据不可重复读两次读同一行,值变了同一行的修改幻读两次范围查询,结果集行数变了结果集的新增/删除不可重复读针对单行值的更新,幻读针对结果集行数的增减。隔离级别快照读幻读当前读幻读读未提交 RU会会读已提交 RC会会可重复读 RR不会(MVCC)不会(间隙锁)*串行化 Serializable不会。
2026-09-19 14:47:32
174
原创 Linux服务器快速排查有问题的ip请求
哪个端口连接最多,就是被攻击的服务(80/443/3306...)。等 CF 段 → 流量走 CDN,真实 IP 在日志 XFF 里。UA 是 curl/python/scanner → 工具。3.1 通用取真实 IP(兼容 IPv4/IPv6)Referer 空、UA 伪装/多变 → 可疑。:1 秒内多次、持续几分钟 → 脚本行为。是 CF 回源 IP,不是真实用户。大量 403/404 → 扫描被挡。大量 499/502 → 压后端。第 1 列是不是真实 IP?有没有被 CF/代理覆盖?
2026-09-14 11:35:59
252
原创 API安全方案:动态Token + 服务端状态管理
本文提出了一种基于临时令牌的API安全方案,其核心思想是:客户端不可信,所有安全验证必须在服务端完成。方案通过三个关键步骤实现:1. 登录时服务端生成包含随机数的令牌并存入Redis;2. 后续请求通过查询Redis验证令牌有效性;3. 服务端仅信任自身存储的身份信息。文章详细阐述了工作流程,包括令牌生成、验证和吊销机制,并针对重放攻击、伪造攻击等常见威胁提出了防御措施,如Nonce机制、时效性控制和设备指纹绑定。最后强调必须使用HTTPS传输,避免令牌泄露,并给出了完整的代码架构设计建议。该方案的核心优势
2026-08-14 17:35:08
270
原创 基于 RabbitMQ 与 Hyperf 的消息顺序性保障方案
保证顺序性的本质"把无序的并发,转化为有序的串行"。具体到 RabbitMQ + Hyperf 场景,核心思想是"分区有序(Partition Order)"只保证同一个业务主键(item_id)的消息有序,不同主键之间可以任意并行。"一个进程拉取,内存里按 ID 分组,每组一个协程串行处理""生产按 ID 取模路由,每个 Queue 单消费者串行,Queue 多了并行度就高了"
2026-08-06 11:57:42
387
原创 InnoDB高并发之谜:揭开MVCC与快照读的面纱
本文深入解析了InnoDB存储引擎实现高并发的核心机制。从并发控制演进入手,分析了从普通锁到读写锁再到数据多版本的技术飞跃。重点剖析了InnoDB通过redo日志保证持久性、undo日志构建数据多版本的关键实现,以及MVCC机制中的隐藏字段和快照读原理。文章揭示了快照读如何通过读取回滚段中的历史版本实现不加锁一致性读,从而支撑InnoDB在高并发场景下的卓越性能表现。
2026-03-16 19:20:11
419
原创 组合索引一定要按顺序吗?现在mysql优化器会自动优化执行?
MySQL组合索引遵循最左前缀原则:索引定义顺序必须固定,但WHERE条件书写顺序可以任意,优化器会自动调整。关键区别在于索引结构是固定的B+Tree,优化器能重排查询条件但不能补全缺失的左侧列。5.6+的ICP特性只能在已使用左列时优化右列过滤,无法跳过左列。实际建索引应将高频等值查询列放最左,范围查询列放最后,且查询频率而非区分度决定左列顺序。总结:WHERE条件顺序可调换,但索引定义顺序必须严格遵循查询模式,优化器无法补救错误的索引设计。
2026-02-13 17:41:10
765
原创 《MySQL 索引失效 12 场景全解析》——为什么明明有索引,MySQL 就是不选?
MySQL索引失效12种常见场景解析,包括隐式类型转换、字符集转换、使用函数或计算、LIKE通配符在前、联合索引未用左前缀、OR条件非全索引、不等于查询、IS NULL判断、低区分度字段、ORDER BY与WHERE冲突、前缀索引排序等。文章指出索引失效本质是优化器基于成本的选择,提供了每种场景的原理分析和解决方案,强调理解数据分布和业务需求才是优化关键。掌握这些场景可预防90%的索引失效问题,但并非所有查询都需强制走索引。
2026-02-13 17:38:38
584
原创 MySQL EXPLAIN 完全解读:从执行计划到索引优化
MySQL性能优化必备:EXPLAIN执行计划详解 EXPLAIN是MySQL开发者最强大的SQL调优工具,它能清晰展示查询的执行计划。本文从实战角度解析EXPLAIN的关键字段: 核心字段分析 type:访问类型,从最优的system到最差的ALL key:实际使用的索引,NULL表示未走索引 rows:预估扫描行数,越小越好 Extra:包含性能陷阱的关键提示 优化判断标准 type=ALL且大表必须加索引 出现Using filesort/temporary需立即优化 相关子查询(DEPENDENT
2026-02-13 17:35:28
859
原创 Python 推导式
列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以if和for语句为上下文的表达式运行完成之后产生。规范这将对快速生成列表非常有用。有些人甚至更喜欢使用它而不是filter函数。列表推导式在有些情况下超赞,特别是当你需要使用for循环来生成一个新列表。规范。
2024-05-30 17:35:11
394
1
原创 python中的lambda函数用法
例如reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是'1, 2, 3, 4, 5, 6, 7, 8, 9'。例如,执行add(1,2),输出为3。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。
2024-05-30 16:06:47
891
原创 AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘
【代码】AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘
2024-04-30 18:02:13
156
原创 解决:pip is configured with locations that require TLS/SSL
【代码】解决:pip is configured with locations that require TLS/SSL。
2024-04-26 16:02:33
713
1
转载 数据库和缓存双写一致性
数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。今天这篇文章我会从浅入深,跟大家一起聊聊,数据库和缓存双写数据一致性问题常见的解决方案,这些方案中可能存在的坑,以及最优方案是什么。
2024-04-11 16:32:09
126
原创 PHP 配置Redis拓展及应用
下载源码包,如果下载速度过慢,建议从github镜像下载再上传到服务器。运行phpize,如果你的不在这个位置,可以用find命令找到。以下操作在/usr/local目录下。找到php.ini的位置。
2024-02-02 17:25:20
712
原创 centos7上安装redis
9、使用配置文件启动,并且再后台启动,配置文件的路径。5、进入解压后的文件夹下,编译安装。语言编写的,因此首先需要安装。2、官网上下载依赖包来安装,6、默认的安装路径是在。直接官网上下载,上传到。3、重新加载配置服务。
2024-02-02 14:34:10
395
原创 Centos7环境安装PHP8
在https://www.php.net官网中,查看安装包链接,选择上方“download”, Current Stable PHP 8。23.设置环境变量4.创建配置文件,并将其复制到正确的位置。
2024-02-01 17:20:09
2577
原创 Centos7安装Nginx-1.21
注释:执行./configure 会检查当前环境是否满足编译要求,检查当前的环境,并且生成makefile,这个Makefile就是编译的时候使用的,make install 把生成的模块拷贝到相应的目录。进入sbin目录,执行./nginx 启动nginx,在浏览器中访问机器ip,可以看到Welcome to nginx!conf 存放nginx配置文件,里面的nginx.conf是nginx的核心配置文件。sbin 存放nginx运行程序,控制nginx的启动,停止,配置重载等。
2024-01-31 17:36:11
1299
转载 VMware虚拟机安装和Centos7安装
VMware虚拟机安装(非常详细)从零基础入门到精通,看完这一篇就够了_虚拟机vmware-优快云博客
2024-01-31 16:02:58
115
原创 设计模式之工厂模式
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。工厂模式是一种通过工厂类来创建对象的设计模式,它隐藏了对象的创建逻辑,使得代码更加灵活和可维护。:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
2023-12-28 11:40:53
455
原创 设计模式之状态模式
首先,我们定义一个抽象状态类(State),这个类中定义了对象的不同状态下的行为接口。状态模式是一种行为型设计模式,它通过将对象的行为封装在不同的状态类中来实现对象的行为改变。一个对象在不同的状态下有不同的行为,而状态模式将每个具体状态封装成一个单独的类,对象在不同状态下只需要改变其内部状态,而无需改变其行为。以上代码中,抽象状态类(State)定义了统一的行为接口,具体状态类(ConcreteState1和ConcreteState2)继承抽象状态类并实现具体的行为。三、状态模式的应用场景。
2023-12-27 12:14:11
1017
原创 拖拽排序后端设计与实现-单表单列法
这种方式优点是,查询快,修改慢。而且,修改接口的逻辑较重,处理起来比较麻烦。在接口设计方面,我们让前端传给后端是一个偏移值(offset),offset = y - x。当元素向排序大的方向移动时,offset的为正值;若往排序小的方向移动时,offset`为负值。展示列表时,按照 index 字段进行排序即可。若需要查第n位元素时,元素位置为 index = n - 1。每个元素,都有一个字段index,表示元素的排序信息。新增元素时,序号为当前元素数据总量值。删除元素时,将大于该元素的序号,都减1。
2023-09-06 11:37:02
486
原创 Centos7安装Node环境
3,将tar.xz解压成tar文件。2,上传到linux 服务器。将tar文件解压成文件夹。6,查看是否安装成功。
2023-03-27 10:33:53
350
原创 PHP 如何保证接口的安全性
APP、前后端分离项目都采用API接口形式与服务器进行数据通信,传输的数据被偷窥、被抓包、被伪造时有发生,那么如何设计一套比较安全的API接口方案呢
2023-01-29 10:36:22
1277
原创 高并发下如何保证接口的幂等性?
对于给第三方调用的接口,有可能会因为网络原因而调用失败,这时,一般在设计的时候会对接口调用加上失败重试的机制。总之,当你去设计一个接口的时候,幂等都是首要考虑的问题,特别是当你负责设计转账、支付这种涉及到 money 的接口,你要格外注意喽!当消息被其他消费者重新消费时,如果没有幂等性,就会导致消息重复消费时结果异常,如数据库重复数据,数据库数据冲突,资源重复等。这几种实现幂等的方式其实都是大同小异的,类似的还有使用状态机、悲观锁、乐观锁的方式来实现,都是比较简单的。
2023-01-28 22:04:17
2342
1
原创 Centos7开启SSH连接配置
如果有信息说明已安装了openssh-server,如果输出没有任何结果,说明没有安装。放开端口以及监听地址,去掉#,如下图。
2023-01-10 16:31:39
4025
原创 安装Centos7 minimal后提示无法访问网络
进入/etc/sysconfig/network-scripts目录。从上图看出,系统网卡没有分配ip地址,网卡为ens33。安装好系统后,启动系统,输入用户名、密码,进入系统。并编辑ifcfg-ens33文件。
2023-01-10 16:25:27
560
原创 Laravel 事件(event)+ 队列(queue)基础
此时项目中,会多出两个目录 ,Events 和 Listeners。并会自行创建两个文件 , Demo.php 和 DemoListener.php 如下图所示。最后根目录会出现一个,logs.txt文件,内容和上面的一样。以上就是laravel事件的简单实用,仅供参考。
2022-11-02 18:07:12
1656
原创 laravel事件监听和job有哪些区别
Job关注与正在做的事情:正在注册、正在更新、正在发布、批量发放Event关注与做过的事情:注册完成、更新完成、发布完成、发送完成它们之间可以混合使用, 在 event 中添加 job 任务。
2022-11-02 15:53:14
487
原创 Laravel使用Queue队列的技巧汇总
每一种队列驱动的配置都可以在该文件中找到,包括数据库,Beanstalkd ,Amazon SQS,Redis,以及同步(本地使用)驱动。Laravel 队列为不同的后台队列服务提供统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。需要保证送达率的,比如发送短信,因为要调用别人的 api,总会有几率失败,那么为了保证送达,重试就必不可少了。使用队列的时候一定要想明白一个问题,这个任务到底是不是可以异步,如果因为异步会导致问题,那么就要放弃使用队列。
2022-11-02 15:48:59
4145
原创 springboot+quartz报错:Table ‘XXXX.QRTZ_TRIGGERS‘ doesn‘t exist
springboot+quartz报错:Table 'XXXX.QRTZ_TRIGGERS' doesn't exist
2022-09-17 12:07:29
6413
1
原创 彻底卸载清理MySQL
如何彻底卸载清理MySQL大体上分为三个步骤:1,卸载软件本身2,清除残留文件3,清理注册表1、第一步:卸载软件本身二、清除残留文件三、清理注册表regeditHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQLHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL..
2022-04-26 10:08:25
1410
原创 PHP 图片转base64编码 和 base64编码字符串转换成图片保存
1、图片转base64编码:/*图片转换为 base64格式编码*/$img = 'uploads/01.png';$base64_img = base64EncodeImage($img);echo '<img src="' . $base64_img . '" />'; function base64EncodeImage ($image_file) { $base64_image = ''; $image_info = getimagesize($image
2021-09-13 16:57:01
43370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅