- 博客(52)
- 收藏
- 关注
原创 http常见状态码
HTTP状态码分类概览:1xx(信息性)表示请求已接收需继续处理(如100继续上传);2xx(成功)如200请求成功、201资源创建;3xx(重定向)如301永久跳转、304缓存有效;4xx(客户端错误)如400参数错误、404资源不存在;5xx(服务器错误)如500内部错误、503服务不可用。常见状态码还包含401未授权、403禁止访问等,用于不同业务场景。
2025-07-14 22:36:06
231
原创 森仁医药测试用例
本文介绍了森仁医药系统测试用例设计,采用xmind工具对系统各模块进行了功能测试点提取。测试覆盖了登录模块、员工管理、药品管理、分类管理、药品组合包管理和订单模块等核心功能,并包含非功能测试内容。文中展示了部分测试用例示例,包括登录验证和药品管理功能测试,通过图片形式直观呈现了测试用例的设计细节。该测试方案旨在全面验证医药系统的功能完整性和系统稳定性。
2025-07-08 00:27:31
285
原创 业务测试用例
业务测试是对完整业务流程的验证,测试各功能模块间的关联性。与单功能测试不同,它关注从开始到结束的整个流程正确性。例如电商下单流程包括登录、搜索、加购、下单、支付等环节。业务测试步骤为:1)确认业务流程图;2)将完整流程作为一条测试用例。所有主业务流程测试均为P0优先级,需覆盖所有可能路径。通过业务流程图的每个节点验证系统各模块协同工作的正确性。
2025-07-07 00:11:05
297
原创 缺陷追踪流程
缺陷追踪流程摘要: 测试发现bug后标记为"激活"并指派开发。开发确认是否为有效缺陷:若无效则关闭;若有效则修复并标记为"已解决"。随后进行回归测试,通过则关闭,失败则重新激活bug。该流程确保缺陷从发现到解决的闭环管理,通过状态流转和回归验证保障修复质量。
2025-07-06 22:20:08
237
原创 如何使用xmind编写测试用例
摘要:使用XMind编写测试用例有助于梳理测试思路,分为功能分析和测试点提取两个阶段。以注册功能为例,先分析账号、密码等各功能点的有效/无效情况,然后组合测试:有效用例尽量覆盖多条件,无效用例每次只测一个错误点。文中以6项注册需求为例,展示了如何用XMind设计测试用例(附思维导图示例),强调错误隔离原则避免问题模糊。(149字)
2025-07-06 22:00:57
821
原创 bug缺陷定级,p0p1p2p3p4
本文介绍了软件测试中Bug严重程度的分级标准(P0-P4)。P0为致命问题,如系统崩溃或核心功能失效;P1为严重问题,影响主要功能但系统仍可运行;P2为一般问题,涉及次要功能或UI问题;P3为轻微问题,主要是界面小瑕疵;P4则是建议性优化。文章通过电商系统和社交App的实例,展示了不同级别Bug的具体表现及其影响程度,帮助测试人员准确评估和优先处理Bug。
2025-07-06 15:04:42
402
原创 对称非对称加密,https和http,https通讯原理,Charles抓包原理
本文主要介绍了网络安全中的加密技术与通信协议。首先对比了对称加密(使用相同秘钥)和非对称加密(公钥/私钥配对)的特点;其次分析了HTTP与HTTPS的区别,重点说明HTTPS如何通过混合加密保障安全;然后详细解析了TCP三次握手建立连接和四次挥手断开连接的过程;接着阐述了HTTPS通信的完整流程,包括TLS握手和密钥协商;最后揭示了Charles抓包工具的工作原理,即通过中间人攻击方式拦截和篡改HTTPS通信。全文涵盖了从基础加密原理到实际网络通信安全机制的核心知识点。
2025-06-30 16:43:35
651
原创 Package ‘Google Play Intel x86 Atom_64 System Image,Android API R, revision 2‘ depends on ‘SDK 问题
Package 'Google Play Intel x86 Atom_64 System Image,Android API R, revision 2' depends on 'SDK Platform Android R Preview, revision 2' 问题。安装 Android SDK 出现问题,一直打XX也install不了,以为是什么问题,搞了好久,换来换去。看教程是点一下accept就可以了,我点完之后其他的还是X。后面发现下面的也需要accept。
2025-06-22 22:50:50
237
原创 MySQL EXPLAIN 命令详解
MySQL EXPLAIN命令详解 EXPLAIN是MySQL中用于分析SQL查询执行计划的关键命令,帮助开发者优化查询性能。其输出包含12个重要字段: id:查询标识符,表示查询顺序 select_type:查询类型(SIMPLE、PRIMARY、SUBQUERY等) table:涉及的表名 type:访问类型(const、eq_ref、ref等),反映查询效率 possible_keys/key:可能/实际使用的索引 rows:估计需要检查的行数 Extra:额外信息(如Using index、Usin
2025-06-04 16:11:01
762
原创 HashMap 的底层原理
HashMap 是 Java 中最常用的基于哈希表的Map实现,它存储键值对(key-value),具有 **O(1) 平均时间复杂度** 的查询、插入和删除性能。其底层实现涉及 **数组 + 链表 + 红黑树** 的结构,并在 Java 8 中进行了优化(链表转红黑树)。下面详细分析其核心机制:
2025-06-03 22:26:47
1131
原创 java常见集合有什么
Java集合框架分为Collection和Map两大类。Collection接口包含List(有序可重复,如ArrayList查询快、LinkedList增删快)、Set(无序不可重复,如HashSet快速去重、TreeSet自动排序)和Queue(如PriorityQueue优先级队列)。Map接口存储键值对,包括无序的HashMap、有序的LinkedHashMap/TreeMap,以及线程安全的ConcurrentHashMap。工具类Collections和Arrays提供集合操作辅助功能。不同集合
2025-06-03 15:33:57
959
原创 Redis事务详解:原理、使用与注意事项
Redis事务详解:原理、使用与注意事项 Redis事务通过MULTI、EXEC、DISCARD命令实现一组命令的打包执行,具有以下特点:1) 无隔离级别概念;2) 不保证原子性,错误命令不会影响后续执行;3) 无自动回滚机制。事务错误分为入队错误(导致事务终止)和执行错误(不影响其他命令)。WATCH命令可实现乐观锁机制,监控键值是否被修改。Redis事务存在不支持回滚、命令受限等局限性,建议保持事务简短,复杂场景可使用Lua脚本实现原子操作。与关系型数据库不同,Redis事务更侧重命令的批量执行而非AC
2025-05-31 21:44:22
956
原创 OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景
摘要 在微服务架构中,OpenFeign和MQ是两种典型的服务通信方式,各有适用场景。OpenFeign采用同步HTTP调用,适合需要实时响应和强一致性的业务(如支付、登录),但存在耦合性高和性能瓶颈问题。MQ通过异步消息队列实现解耦,适用于事件驱动、耗时操作和高并发场景(如订单处理、秒杀),但需处理消息可靠性和延迟问题。实际项目中常组合使用,如核心业务用OpenFeign确保实时性,非关键流程用MQ异步处理。选择时需权衡实时性、一致性与系统解耦需求。
2025-05-29 22:26:56
1381
原创 接口幂等性和防止请求重复区别
摘要: 幂等性与防止请求重复处理本质相通,但侧重点不同。幂等性确保多次请求结果一致(如支付扣款一次),而防重复处理聚焦避免同一请求多次执行(如用户重复提交)。两者共用技术方案(Token、乐观锁等),但选择需结合场景:用户交互场景适用Token+限流,数据一致性场景需乐观锁+分布式锁,高并发场景推荐MQ+Token。实际应用中,防重复处理常作为实现幂等性的手段。
2025-05-29 14:41:54
818
原创 对称加密与非对称加密在 JWT 中的应用详解
JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在各方之间安全地传输声明(Claims)。JWT 通常由三部分组成:Header(头部)、Payload(载荷) 和 Signature(签名)。其中,签名 是 JWT 的核心,用于确保数据的完整性和真实性。本文详细介绍了 对称加密(如 HS256) 和 非对称加密(如 RS256/ES256) 在 JWT 中的应用,包括它们的定义、特点、常见算法及应用场景。重点讲解了两种加密方
2025-05-18 21:46:28
1145
原创 The bean ‘XX‘, could not be registered. A bean with that name has already been defined in null and
The bean '1.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.在使用Spring Cloud Feign时,可能会遇到FeignClientSpecification无法注册的问题,原因是存在多个同名的Feign客户端Bean。默认情况下,Spri
2025-05-18 21:01:20
605
原创 MyBatis-Plus 映射配置详解(含数据库表、实体类、配置),resultMap,association,collection,n+1,一对一,一对多,嵌套查询,嵌套结果
本文详细介绍了 MyBatis-Plus 的映射配置,涵盖了数据库表设计、实体类定义、MyBatis 配置、XML 映射参数详解,以及一对一、一对多关系的处理方式。首先,通过 SQL 语句创建了用户表、用户详情表和订单表,并定义了对应的实体类。接着,配置了 MyBatis-Plus 的驼峰映射和基础 Mapper。在 XML 映射配置部分,详细讲解了基础 resultMap 和包含一对一、一对多关系的完整 resultMap,并提供了嵌套结果和嵌套查询两种方式的 SQL 配置。最后,文章解释了 N+1 查询
2025-05-15 15:45:46
1122
原创 hashCode()和equals(),为什么使用Map要重写这两个,为什么重写了hashCode,equals也需要重写
在Java中,hashCode()和equals()方法在对象比较和存储中起着关键作用。默认情况下,hashCode()返回对象内存地址的int值,而equals()比较对象的内存地址。在HashMap中,存储规则依赖于这两个方法:首先通过hashCode()确定存储位置,若发生哈希冲突,则使用equals()判断对象是否相同。若未重写这两个方法,属性值相同的对象可能因内存地址不同而被视为不同对象,导致重复存储。仅重写equals()或hashCode()也会导致类似问题。因此,为了确保HashMap正确存
2025-05-12 20:29:24
751
原创 lua入门语法,包含安装,注释,变量,循环等
一种脚本语言,设计的目的是为了能够在一些应用程序提供灵活的扩展功能和定制功能。全局变量,在任意一个地方都可以看到,本地变量,在当前的文件,在代码块中才可以看到-- 全局变量赋值a=1-- 局部变量赋值local b=2如果变量没有初始化:则 它的值为nil 这和java中的null不同。
2025-05-12 15:24:02
1283
1
原创 SPU SKU
Standard Product Unit,即标准化产品单元。SPU可以理解为一个大类别的产品集合,它代表的是一组具有共同特征的商品。以手机为例,“苹果iPhone 14”就是一个SPU。不管它是蓝色、白色,128GB存储还是256GB存储,只要是“苹果iPhone 14”这个型号的手机,都可以归到“苹果iPhone 14”这个SPU下面。简单来说,SPU就是对一类产品的统称,它强调的是产品的共性,不涉及具体的规格、颜色、配置等细节差异。
2025-05-07 17:29:54
263
原创 FastDFS,分布式文件存储系统,介绍+配置+工具类
随着文件逐渐增多,单台计算机已经存储不下这么多数据,需要用多台计算机存储不同的数据或进行备份,这样就需要有一个管理系统管理不同的计算机节点,这就是分布式管理系统。是一款轻量级的分布式文件存储系统,可以对文件进行管理,功能包括文件存储,文件访问,文件同步等,解决了发容量存储和负载均衡的问题。tracker:追踪者服务器,任务是协调调用,起到负载均衡的作用。group:组,相同的组提供冗余备份,不同的组提供扩容。storage:存储节点,提供文件管理的服务。FastDFS的下载流程。fastDFS的角色。
2025-05-07 16:50:05
583
原创 idea使用lombok错误,找不到符号,明明编译没问题,运行报错
问题找不到方法经常遇到这样的小伙伴看到这个是不是一头雾水,明明我编译没有我问题,运行就出现问题,真的很生气。下面介绍解决这个问题的几种方法。
2025-05-06 17:17:19
965
1
原创 git push问题,通用解决方法,Push failed unable to access ‘https://github.com: Couldn‘t connect to server
使用git提交时,明明刚刚提交还是好好的,突然就提交不了了,例如下面这种情况。如果 fetch也失败,说明是网络问题,而非 push 特有的问题。这样就可以清除 Git 的代理设置,让其直接连接网络进行操作。如果ping不同,说明是网络问题,检查自己的网络和vpm。如果不成功说明是说明是仓库 URL 或网络问题。排除自己网络的问题,可能是代理问题。
2025-05-06 16:57:12
394
原创 idea更换jdk版本操作
有时候我们有更换jdk版本的问题,自己电脑可能有多个版本,下面来介绍修改jdk版本修改修改什么地方。再修改pom即可,还有环境变量即可,希望有帮到大家!
2025-05-06 16:44:50
891
原创 设计模式(二):结构型设计模式,组合模式,适配器模式,外观模式,桥接模式
抽象部分定义控制逻辑,我要实现什么样的东西,需要依赖于实现部分,但是不需要知道他的具体实现,只需要去依赖一个具体实现不需要关心它怎么实现。对象结构型模式:对象结构型模式关心对象和类之间的组合,在一个类中,应用另一个类的对象,形成更大的结构。类结构型模式:类结构型模式关心类和类之间的组合,通过继承来组合类,形成更大的结构。组合模式的核心思想是将对象构建成树形结构,叶子节点是树形结构的基本元素,没有子节点,组合节点是树形结构中的容器,可以有子节点。复用性:可以复用现有的类,而不需要修改它们的代码。
2025-04-01 09:34:00
954
原创 redis使用快速入门,依赖,测试,序列化配置,客户端选择
在Spring Date Redis的RedisTemplate,能够将任何类型的对象转换成redis能够接收的字节,但是一般默认采用的序列化方式是JDK的序列化方式,这种序列化的缺点是占用空间大,难看懂,一般使用redis需要自己指定序列化方式,key一般是String类型的,value一般是Object类型的,所以key使用的序列化器是StringRedisSerializer,value使用的序列化器是GenericJackson2JsonRedisSerializer。pool有默认值,可以配置。
2025-03-29 15:07:30
1191
原创 redis主从同步,全量同步,增量同步
repl_baklog:循环缓存数组,记录主机写的操作命令,主机和从机进行数据同步,主机将循环数组的数据发送给从机,从机执行同步数据。在主从节点进行第一次数据同步的时候,或者从节点宕机,主机数据覆盖了从机未同步的数据。在第一次同步之后,大部分的同步做增量同步,第一次同步之后,增量同步也是持续的。全量同步生成RDB文件,在将文件通过网络传输到从机,消耗太大。replid:数据集的id,表示是哪一个数据集的。offset:偏移量,记录服务同步数据到哪个地方。同步主节点和从节点之间差异的部分。
2025-03-26 17:58:55
571
原创 linux系统,Redis安装说明,最详细
如果客户端连接不了redis,可能是防火墙没有开,开启端口即可,如果不知道怎么开启,可以参考着篇文章,怎么查看防火墙状态,怎么开启指定端口,怎么删除端口等,都有详细说明。大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(Redis的官方网站地址:https://redis.io/在官网下载一个版本的redis的tar包,上传到虚拟机中。,会阻塞整个会话窗口,窗口关闭或者按下。
2025-03-25 22:29:20
2395
原创 linux,防火墙,firewall,常用命令
• 安全性考虑 :仅开放必要的端口,并限制访问来源,以减少潜在的安全风险。例如,可以指定允许的 IP 地址或子网访问特定端口。• 检查服务名称 :如果使用服务名称开放端口,确保服务名称正确。如果你需要开放一个端口范围,可以使用 CIDR 表示法。• 说明 :此设置在防火墙重启后会恢复,除非同时进行了永久删除。为了使端口开放设置在防火墙重启后依然有效,需要添加。• 说明 :此设置在防火墙重启后会失效。,但需要确认你的系统中是否已定义该服务。),但不希望重启防火墙,可以使用。
2025-03-25 22:15:01
1014
原创 分布式锁,rediss,redisson,看门狗,可重入,可重试
分布式锁是一种锁机制,用户解决同一个共享资源被多个线程并发访问的问题,使用分布式锁可以避免并发安全,数据不一致的情况。
2025-03-24 22:23:08
1545
原创 分布式锁,redisson,redis
分布式锁是一种锁机制,用于在分布式环境下,解决多个线程并发访问同一共享资源的问题,避免了并发冲突和数据不一致的问题。
2025-03-24 10:41:26
365
原创 Session和Cookie
• 定义 :Session 是一种服务器端的机制,用于在服务器上存储用户的状态信息。它通过一个唯一的标识符(Session ID)来区分不同的用户会话。• 特点 :• 数据存储在服务器端。• Session ID 通常通过 Cookie 传递给客户端。• 适合存储敏感信息(如用户登录状态、购物车内容等)。• 生命周期由服务器控制,通常会设置超时时间。特性CookieSession存储位置客户端(浏览器)服务器端安全性较低,容易被窃取或篡改较高,数据存储在服务器端。
2025-03-23 17:42:05
886
原创 设计模式(一):创建型设计模式,工厂模式,建造者模式,单例模式
例如我要配置一台电脑,我有好几个方案,方案一是配置为(4060显卡,32G内存,1T硬盘空间),方案二是配置为(3050显卡,16G内存,512G硬盘空间),我根据我的需要告诉装机师傅,我要按照什么方案配置,按照方案一配置一台性能好的电脑,按照方案二配置一台性能弱一点的电脑,我的电脑就是产品,方案就是具体建造者,师傅就是指挥者,这个过程实现了构建与表示分离,可以根据不同的构建方案出现不同的表示(电脑)。角色·······························
2025-03-23 11:37:20
889
原创 @PathVariable 和 @RequestParam
•用于从 URL 路径中提取变量,适用于标识资源的唯一性,如用户 ID、订单 ID 等。•用于从查询字符串中提取参数,适用于过滤、排序、分页等动态查询条件。• 根据具体的业务需求选择合适的注解,可以使代码更加清晰和易于维护。
2025-03-21 08:30:42
480
原创 Java Stream流,史上最全,玩转Stream流,过滤,分组,规约,集合等
forEach方法用于对流中的每个元素执行指定的操作。这是一个终端操作,意味着在调用forEach后,流的处理将结束,不会再进行后续的操作。方法也用于对流中的每个元素执行指定的操作,但与forEach不同的是,保证按照流的顺序依次处理每个元素。这在并行流中尤其有用,可以确保元素按原始顺序被处理。peek方法用于在流的每个元素上执行某些操作,但不会改变流中的数据。它主要用于调试或记录日志等场景,因为它允许你在流的中间操作中插入副作用操作(如打印),而不影响流的处理。Stream 的执行模型。
2025-03-13 23:09:48
2871
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人