自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis学习20-缓存预热、穿透、雪崩、击穿

访问的 key 在 Redis 和数据库中都不存在。此时这样的 key 不会被放到 Redis 缓存上,后续如果仍然在访问该 key,依然会访问到数据库。这就会导致数据库承担的请求太多,压力很大。这种情况称为缓存穿透。短时间内大量的 key 在缓存上失效,导致数据库压力骤增,甚至直接宕机。本来 Redis 是 MySQL 的一个护盾,帮 MySQL 抵挡了很多外部的压力。一旦护盾突然失效了,MySQL 自身承担的压力骤增,就可能直接崩溃。相当于缓存雪崩的特殊情况。

2025-08-02 11:30:00 254

原创 Redis学习19-缓存

缓存 (cache) 是计算机中的一个经典的概念,就是把一些常用的数据放到访问速度更快的地方,方便随时读取。(这些数据属于热点数据,符合二八定律)举例:比如我需要去高铁站坐高铁正常来说,我的身份证是放在书包里的。但是每次刷身份证都需要开一次书包找身份证,不是很方便。因此我就可以把身份证先放到衣服口袋里。口袋虽然空间小,但是访问速度快。如此每次刷身份证只需要从口袋里掏身份证就行了“口袋” 就看作是 “书包” 的缓存,使用缓存能够提高访问效率。

2025-08-02 08:30:00 506

原创 Redis学习18-分布式锁

在分布式系统中,会涉及到多个节点访问同一个公共资源的情况Redis 分布式锁是使用一个公共的服务器,来记录加锁状态。这个公共的服务器可以是 Redis,也可以是其他组件(比如 MySQL 等),还可以是我们自己写的服务。

2025-08-01 18:00:00 1230

原创 Redis学习17-Redis集群故障处理、扩容

集群中的所有节点,都会周期性地使用心跳包进行通信这样设定是为了避免在节点很多的时候,心跳包也非常多(比如有9个节点,如果全发,就是9*8有72组心跳了,而且这是按照N²这样的级别增长的)当节点A给节点B发起ping包,B不能如期回应的时候,此时A就会尝试重置和B的tcp连接,看能否连接成功。如果仍然连接失败,A就会把B设为PFAIL状态(相当于主观下线)。A判定B为PFAIL之后,会通过redis内置的Gossip协议,和其他节点进行沟通,向其他节点确认B的状态。

2025-08-01 14:00:00 591

原创 Redis学习16-Redis集群概念、分片

哨兵模式,提高了系统的可用性。但是真正用来存储数据的还是 master 和 slave 节点。所有的数据都需要存储在单个 master 和 slave 节点中。如果数据量很大,接近超出了 master / slave 所在机器的物理内存,就可能会有严重问题。大量数据一台机器搞不定了,用多台机器来搞。就是在上述的思路之下,,每一组 Master / Slave存储数据全集的一部分 ,从而构成一个更大的整体,称为 Redis 集群 (Cluster)。

2025-08-01 09:30:00 1468

原创 Redis学习15-哨兵机制原理

Redis 主节点宕机,哨兵会将其中一个从节点提拔成主节点。当之前的主节点重启后,会被作为从节点加入监控。上述过程均为“无人值守”,Redis 自动完成,解决了主节点宕机后需人工干预的问题,提高了系统的稳定性和可用性。

2025-07-31 14:30:00 990

原创 Redis学习14-认识哨兵机制

Redis 的主从复制模式可以将主节点的数据改变同步给从节点,这样从节点就可以起到两个作用:第一,作为主节点的一个备份,一旦主节点出了故障不可达的情况,从节点可以作为后备 “顶” 上来,并且保证数据尽量不丢失(主从复制表现为最终一致性)。第二,从节点可以分担主节点上的读压力,让主节点只承担写请求的处理,将所有的读请求负载均衡到各个从节点上。但是主从复制模式遗留下几个问题:主节点发生故障时,进行主备切换的过程是复杂的,需要完全的人工参与,导致故障恢复时间无法保障。

2025-07-31 11:30:00 867

原创 Redis学习13-主从复制03

单点问题。单个 redis 节点,可用性不高。单个 redis 节点,性能有限。主从复制的特点Redis 通过复制功能实现主节点的多个副本。主节点用来写,从节点用来读。这样做可以降低主节点的访问压力。复制支持多种拓扑结构,可以在适当的场景选择合适的拓扑结构。复制分为全量复制、部分复制和实时复制。主从节点之间通过心跳机制保证主从节点通信正常和数据一致性。主节点配置不需要改动。从节点在配置文件中加入slaveof 主节点ip 主节点端口的形式即可。从机多了,复制数据的延时非常明显。

2025-07-31 09:30:00 895

原创 Redis学习12-主从复制02

树形主从结构(分层结构)使得从节点不但可以复制主节点数据,同时可以作为其他从节点的主节点继续向下层复制。当主节点需要挂载等多个从节点时为了避免对主节点的性能干扰,可以采用这种拓扑结构。对于写并发量较高的场景,多个从节点会导致主节点写命令的多次发送从而加重主节点的负载。当应用写命令并发量较高且需要持久化时,可以只在从节点上开启 AOF,这样既可以保证数据安全性同时也避免了持久化对主节点的性能干扰。,当主节点挂了之后, 就需要让主节点从从节点这里获取到 AOF 的文件.再启动。

2025-07-30 18:00:00 273

原创 Redis学习11-主从复制01

如果某个服务器程序,只有一个节点(只有一个物理服务器,来部署这个服务器程序)引入,主要为了解决单点问题。在分布式系统中,有多个服务器来部署 redis 服务,从而构成一个 redis 集群,此时就可以让这个集群给整个分布式系统中其他的服务,提供更稳定/更高效的数据存储功能。

2025-07-30 11:00:00 604

原创 Redis学习10-事务

Redis 的事务和 MySQL 的事务概念上是类似的,都是把一系列操作绑定成一组,让这一组能够批量执行。Redis 事务本质上是在服务器上搞了一个 “事务队列”。每次客户端在事务中进行一个操作,都会把命令先发给服务器,放到 “事务队列” 中(但是并不会立即执行),而是会在真正收到 EXEC 命令之后,才真正执行队列中的所有操作。Redis 事务的意义就是为了"分类",。

2025-07-30 09:30:00 274

原创 Redis学习09-AOF-混合持久化

Redis 提供了两种持久化方案:RDB 和 AOF。RDB 视为内存的快照,产生的内容更为紧凑,占用空间较小,恢复时速度更快。但产生 RDB 的开销较大,不适合进行实时持久化,一般用于冷备和主从复制。AOF 视为对修改命令保存,在恢复时需要重放命令。并且有重写机制来定期压缩 AOF 文件。RDB 和 AOF 都使用fork创建子进程,利用 Linux 子进程拥有父进程内存快照的特点进行持久化,尽可能不影响主进程继续处理后续命令。RDB 本身的设计理念,就是用来“定期备份”的。

2025-07-29 21:00:00 673

原创 Redis学习08-持久化-RDB

Redis持久化是将内存数据保存到磁盘,防止服务器重启后数据丢失。支持RDB和AOF两种机制:RDB通过生成数据快照实现,触发方式包括手动(save/bgsave命令)和自动(配置修改频率或主从复制时)。bgsave通过fork子进程生成快照,减少阻塞。RDB文件可压缩保存,具有快速恢复的优点,但不适合实时持久化且存在版本兼容性问题。文件损坏时可使用redis-check-dump工具检测。AOF机制可补充RDB的数据实时性不足。

2025-07-29 15:55:29 981

原创 Redis学习07-Redis的过期策略

Redis采用定期删除+惰性删除的过期策略组合。定期删除每秒运行10次,随机抽取部分键检查并删除已过期的键;惰性删除则在键被访问时才检查并删除。此外还提供多种内存淘汰策略,如LRU、随机淘汰等,在内存不足时主动淘汰键。这种策略平衡了CPU资源占用和内存释放效率,确保Redis高效运行。

2025-07-29 14:24:30 416

原创 Redis学习06-渐进式遍历

一种处理数据的机制,是指通过多次命令,每次命令只获取到一部分,进而解决直接使用 keys 获取键时可能出现的阻塞问题。

2025-07-21 17:38:45 343

原创 Redis学习05-Redis基本数据结构

Redis数据结构详解:String、Hash和List String类型是Redis最基本的数据结构,支持丰富操作命令如SET/GET/INCR等,时间复杂度多为O(1),还提供批量操作和特殊选项。Hash类型是嵌套键值对结构,适合存储对象属性,常用命令包括HSET/HGET/HINCRBY等,但HGETALL在大数据量时需谨慎使用。List类型是有序可重复集合,能实现栈/队列功能,特点包括元素索引访问、区分读写操作,并支持阻塞版本的POP命令。三种数据结构各有特点,适用于不同场景的需求。

2025-07-19 18:11:29 695

原创 Redis学习04-Redis基本全局命令

Redis全局命令摘要: KEYS命令通过模式匹配查找key,支持通配符如?、*、[]等,时间复杂度O(N)。EXISTS检查key是否存在,DEL删除key,均支持多key操作,时间复杂度O(1)。EXPIRE设置key过期时间(秒级),TTL查询剩余时间,另有毫秒版本PEXPIRE/PTTL。TYPE返回key的数据类型,包括string、list、set等。这些基础命令自Redis 1.0.0起支持,为key管理提供了基本操作。时间复杂度多为O(1),KEYS命令因全量扫描需谨慎使用。

2025-07-18 09:30:00 142

原创 Redis学习03-重要文件及作用、Redis 命令行客户端

Redis重要文件及作用、Redis命令行客户端

2025-07-17 22:15:00 458

原创 Redis学习02-安装Redis(Ubuntu版本)、开启远程连接

本文介绍了在Ubuntu系统上安装和配置Redis的详细步骤:1)更新系统包后安装Redis;2)验证安装版本并启动服务;3)修改配置文件支持远程连接,包括绑定0.0.0.0地址和禁用保护模式;4)重启服务使配置生效;5)使用ss或netstat命令检查Redis监听状态。全文通过命令行示例和截图指导完成Redis的基础安装与网络配置,帮助用户实现Redis的远程访问功能。

2025-07-17 17:35:29 530

原创 Git未检测到文件更改

Git检测不到文件修改

2025-07-15 15:42:23 729

原创 自动化测试报告优化:jenkins+jmeter定制化HTML报告生成

摘要 本文介绍了如何通过Shell脚本实现JMeter测试报告的定制化生成。针对JMeter默认HTML报告存在关键信息不突出的问题,提出在Jenkins中执行Shell脚本的方案,实现报告的个性化展示。脚本主要包含8个功能模块:日志记录、旧资源清理、JMeter测试执行、JTL结果解析、成功率计算、失败/成功详情提取以及HTML报告生成。通过配置区参数和模块化函数设计,脚本实现了测试结果的统计分析和可视化展示,最终生成包含测试详情和统计数据的定制化HTML报告。该方案解决了默认报告可读性问题,便于团队快速

2025-07-09 18:15:26 404

原创 Jenkins-Email Extension 插件插件

Editable Email Notification 是 Jenkins 的 Email Extension 插件的核心功能,用于自定义邮件通知,包括邮件主题、内容、收件人、发件人等。项目回复地址,设置邮件的回复地址,即收件人点击“回复”时默认发送的地址。Attach Compressed Build Log:附加压缩后的构建日志(.zip格式,适合大日志,节省邮件空间)设置邮件的默认正文模板(显示在邮件内容中),支持HTML 标签和Jenkins 环境变量(动态插入数据)

2025-07-04 18:18:18 518

原创 Jenkins-Publish HTML reports插件

摘要:Publish HTML Reports 插件是 Jenkins 工具,用于发布和归档 HTML 报告。主要功能包括:1) 发布测试/性能等 HTML 报告到 Jenkins 界面;2) 自动归档报告及相关资源;3) 跨节点支持,将报告从从节点自动复制到主节点。该插件解决了分布式环境中报告访问问题,支持历史报告查看,无需额外配置即可实现报告共享。(100字)

2025-07-04 17:33:13 422

原创 Redis学习01-认识Redis、Redis特性

Redis是一款开源高性能内存数据库,核心采用键值存储,支持字符串、哈希、列表等多种数据结构。其速度快的主要原因是将数据存储在内存中,并使用C语言单线程实现。Redis适用于缓存、排行榜、计数器、消息队列等场景,具有键过期、发布订阅、Lua脚本等功能。特性包括:内存操作带来的高性能、丰富数据结构、简单稳定架构、RDB/AOF持久化、主从复制、以及高可用和分布式支持(哨兵和集群)。Redis 6.0引入多线程仅处理网络IO,命令执行仍保持单线程模式。

2025-06-20 11:15:00 855

原创 Premature end of chunk coded message body: closing chunk expected

该异常 org.apache.http.ConnectionClosedException: Premature end of chunk coded message body: closing chunk expected 表示在读取 HTTP分块传输编码(Chunked Transfer Encoding) 的响应时,客户端期望读取到最后的结束标识(0\r\n\r\n),但服务器提前关闭了连接或未正确发送结束标识。

2025-06-20 08:30:00 966

原创 sh 步骤处理数据-生成html页面

摘要:本文介绍了一个处理JMeter自动化测试3.0生成的JTL文件的Shell脚本方案。该脚本主要功能包括:清理旧测试文件、运行JMeter测试生成JTL结果文件、解析JTL统计成功/失败数量、计算成功率、提取失败和成功详情,最终生成美观的HTML测试报告。脚本采用模块化设计,包含日志记录、文件清理、测试执行、数据分析等多个函数,并支持自定义报告路径和字段映射配置,可灵活适应不同项目的测试需求。

2025-06-19 17:10:20 405

原创 JMeter-SSE响应数据自动化3.0

摘要 本次JMeter脚本改动主要针对JSR脚本进行调整,重点优化jtl文件输出数据的处理方式。通过设置threadName变量为"appName^xxx"格式来控制输出数据,并处理响应信息中的换行符(\n),将其替换为"-"或空字符串以避免影响后续jtl文件处理。新增了白名单过滤功能、错误响应处理逻辑,以及重置变量的方法确保每次测试的独立性。改动涉及响应类型判断(流式/非流式)、JSON/非JSON格式错误处理、断言参数设置等功能,但不影响JMeter的HTML报告

2025-06-19 16:52:13 384

原创 JMeter-SSE响应数据自动化2.0

之前是用正则来捕获简单的json格式的响应,响应的格式是固定的。此次更新后使用的是String的spilt()方法来进行信息截取,易读性相较于正则表达式稍好一些。根据csv文件的数据来更新一些HTTP请求中的参数,比如文件、入参等…只在线程组的第一次HTTP请求的预处理程序中更新。增加了白名单变量,目标值变量,必须参数变量。主要是做一些兼容性处理,降低耦合度。便于后续维护或者更新,兼容性更好。主要处理响应的信息来进行断言操作。更新了一些新添加的变量。对之前的脚本进行优化。只写了一些更新的结构。

2025-06-07 16:45:25 583

原创 JMeter-SSE响应数据自动化

本文介绍了如何使用JMeter进行自动化测试,重点是通过接口调用并处理响应数据,包括错误信息的输出。文章首先介绍了SSE(Server-Sent Events)技术,适用于单向数据流的实时场景。接着,详细阐述了实现思路,包括使用用户自定义变量组件管理环境变量、HTTP信息头管理设置请求头、CSV数据文件设置参数,以及HTTP请求组件的配置。特别强调了JSR223预处理程序和后置处理程序的作用,前者用于处理请求中的消息体数据,后者用于处理SSE响应数据并判断请求是否成功。通过逐行匹配和逐个处理SSE事件,确保

2025-05-23 11:38:06 1829

原创 JMeter-Websocket接口自动化

本文介绍了如何使用JMeter进行WebSocket接口自动化测试。首先,需要安装JMeter Plugins Manager,并通过插件管理器安装必要的组件,如JSR断言和WebSocket Open Connection。测试流程包括通过HTTP请求获取token、设置循环控制和断言变量、建立WebSocket连接、读取CSV文件数据、设置WebSocket请求体数据、循环接收响应并进行数据处理。通过JSR223后置处理脚本和断言,可以解析响应数据并与预期结果进行对比,确保测试的准确性。最后,进行安全处

2025-05-22 16:57:00 1142

原创 引用拷贝、浅拷贝、深拷贝

引用拷贝、浅拷贝、深拷贝的理解

2025-03-02 14:29:35 405

原创 封装、继承、多态

关于封装、继承、多态的简单理解

2025-03-02 13:06:05 409

原创 福禄抽-自动化测试

对福禄抽系统开展自动化测试,以不同页面为维度来编写测试用例,根据测试用例,结合Selenium来设计自动化代码。同时采用junit进行单元测试,避免不同测试方法之间造成干扰,影响测试结果。成功打开登录页面以后,在登录页面,模拟用户登录,输入用户名和密码,模拟输入设计好的测试,以登录成功跳转到首页为标志例判断能否登录成功。判断能否正确打开登录页面,以登录页面特有的元素是否成功获取到作为判断打开登录页面的标志。判断点击"去注册"按钮能否正确打开登录页面,以注册页面特有的元素是否存在到作为判断标志。

2025-02-23 21:22:27 408

原创 福禄抽-测试报告

基于 Spring 前后端分离版本的抽奖项目,由登录页面、注册页面、管理员页面组成,管理员页面又拥有活动列表、新建抽奖活动、奖品列表、创建奖品、人员列表、注册用户,可以由管理员进行活动、奖品、用户的添加,进行抽奖活动,分享中奖结果,用户可以收到短信、邮箱通知,查看中奖结果页面。3.奖品名称为空,奖品图片不为空,奖品价格不为空,奖品描述不为空。4.奖品名称不为空,奖品图片为空,奖品价格不为空,奖品描述不为空。5.奖品名称不为空,奖品图片不为空,奖品价格为空,奖品描述不为空。

2025-02-23 21:18:21 1013

原创 synchronized

synchronized

2024-12-22 09:46:58 908

原创 CAS以及ABA问题

CAS及ABA

2024-12-21 14:59:34 683

原创 锁的基本概念

锁的基本概论

2024-12-21 14:36:59 1667

原创 多线程-线程池

线程池基本了解

2024-12-11 17:39:02 684

原创 多线程-指令重排序、synchronized、volatile关键字

线程状态,指令重排序,synchronized 、volatile 关键字,wait 和 notify

2024-12-09 18:35:11 1901

原创 多线程-Thread类

有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。例如,张三只有等李四转账成功,才决定是否存钱,这时我们需要一个方法明确等待线程的结束。使用 Thread.interrupted() 或者 Thread.currentThread().isInterrupted() 代替自定义标志位.Thread.currentThread().isInterrupted() 相当于按下开关之后, 开关弹不起来, 这个称为"不清除标志位".否则,只是内部的一个中断标志被设置,thread 可以通过。

2024-12-07 18:35:34 604

空空如也

空空如也

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

TA关注的人

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