自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Windows 系统下 Android SDK 配置教程

本文介绍了在Windows系统中安装和配置Android SDK的步骤。首先提供两种安装方式:通过Android Studio安装或从百度网盘下载解压。重点讲解了环境变量的配置方法,包括新建ANDROID_HOME变量和编辑Path变量。最后通过测试adb version命令验证配置是否成功。配置完成后即可正常进行Android开发或Appium自动化测试。

2025-08-24 19:00:16 215

原创 Spring Boot 中 @Controller与 @RestController的区别及 404 错误解析

在开发Spring Boot应用时,使用@Controller注解返回JSON数据可能导致404错误。这是因为@Controller默认返回视图,而非JSON。解决方案有两种:1)在每个方法添加@ResponseBody注解;2)更推荐直接使用@RestController(组合了@Controller和@ResponseBody)。对于纯REST API开发,应统一使用@RestController以避免视图解析问题,而传统MVC页面渲染才使用@Controller。注意区分两者的使用场景,确保接口返回值

2025-08-24 11:44:31 117

原创 软件测试从入门到精通:通用知识点+APP专项实战

软件测试是保障软件质量的关键环节,主要包含测试基础、方法、流程和移动端专项测试四部分内容。测试基础阐述了测试的核心价值在于发现缺陷、保障质量,并介绍了按生产阶段(单元/集成/系统/验收测试)、代码可见度(黑盒/灰盒/白盒)等维度的分类方法。测试方法重点讲解了等价类划分、边界值分析和判定表法等实用技术。测试流程规范了从需求分析到报告输出的完整步骤,强调用例设计和缺陷管理的重要性。移动端专项测试则针对APP特有场景,分析了与Web测试的差异及测试重点。通过系统化的测试方法和工作流程,可以有效提升软件质量,降低产

2025-08-23 20:56:03 548

原创 如何在 Spring Boot 中安全读取账号密码等

本文介绍了Spring Boot项目中安全配置邮箱账号的方法。针对直接写入配置文件的安全隐患,提出通过环境变量存储敏感信息:1)在系统设置环境变量(Windows/Linux/macOS命令);2)在application.yml中使用占位符${MAIL_USERNAME}动态读取;3)通过@ConfigurationProperties注入配置类使用。这种方法避免了敏感信息泄露,同时支持多环境灵活切换,提升了系统安全性。

2025-08-23 17:26:55 274

原创 Spring Boot 整合网易163邮箱发送邮件实现找回密码功能

本文介绍了如何在Spring Boot项目中集成163邮箱实现邮件发送功能,主要用于用户密码重置场景。首先需要配置163邮箱的SMTP服务并获取授权码替代密码。然后在Spring Boot中添加邮件依赖,配置SMTP服务器信息。核心实现包括:生成6位随机验证码并存入Redis(设置过期时间),构建HTML格式邮件内容,通过JavaMailSender发送邮件。最后提供了REST接口供前端调用,并说明了验证码的存储和校验机制。该方案适合开发测试环境,注意163邮箱有每日发送量限制。

2025-08-23 17:18:11 415

原创 Spring Boot 拦截器返回中文乱码的解决方案(附全局优化思路)

摘要:Spring Boot拦截器中返回中文JSON提示信息时出现乱码,主要原因是HTTP响应未正确设置UTF-8编码。解决方案包括:1)临时方案:在拦截器中手动设置响应编码和Content-Type;2)优雅方案:使用统一的Result类和ObjectMapper生成JSON响应;3)根治方案:通过application.yml或全局消息转换器配置UTF-8编码。验证时确保返回的中文信息正常显示即解决成功。

2025-08-23 09:18:55 271

原创 unittest测试框架详解

本文介绍了使用Selenium进行Web自动化测试的基本方法,重点讲解了driver.find_element()的定位方式,包括ID、CSS选择器、XPath等。通过示例演示了如何定位用户名和密码输入框并输入内容。摘要还涵盖了元素操作方法(如send_keys())、浏览器操作(如最大化窗口、刷新等)以及常用鼠标操作。最后说明了XPath和CSS选择器的基本语法,包括精确匹配和模糊匹配等定位技巧。

2025-08-21 19:04:20 1054

原创 软件测试selenium,uunittest学习笔记

该代码演示了Selenium WebDriver的基本元素定位和操作。使用find_element()方法通过ID和CSS选择器定位用户名和密码输入框,并分别输入"admin"和"123456"。主要展示了: 浏览器驱动初始化与页面访问 元素定位方法(By.ID和By.CSS_SELECTOR) 输入操作(send_keys) 基本流程控制(sleep暂停和quit退出) 文件路径处理(原始字符串表示法) 代码结构清晰,包含必要的注释和合理的操作顺序,是Web自动化测

2025-08-20 20:37:11 729

原创 软件测试面试题-测试用例设计

本文总结了多个常见功能的测试用例设计,主要包括: 微信消息发送测试:涵盖文本、图片、语音等消息类型,包括正常、异常、边界、性能等场景 直播间功能测试:包括视频播放、弹幕、支付等功能的测试要点 其他功能测试: 文件上传接口测试 短视频刷屏测试 购物车清空测试 兑奖系统测试 登录页面测试 身份证输入测试 微信红包功能测试 追剧广告测试 评论区功能测试 支付宝扫码支付测试 每个测试场景都设计了详细的测试点、操作步骤和预期结果,覆盖功能、边界、异常、性能等多个维度。

2025-08-20 20:17:48 267

原创 软件测试面试题真题分享

摘要: 本文涵盖测试工具与技术的核心知识点,包括: 工具对比:JMeter(性能测试)、Postman(API测试)、pytest与unittest(单元测试框架)的功能与差异; AI应用:ChatGPT与DeepSeek在测试场景的优劣势及使用建议; 测试设计:微信消息测试用例的典型场景,Redis主动/被动更新原理,等价类划分等设计方法; 实用技能:抓包工具(Fiddler/Wireshark)应用、Linux日志查看命令(grep -C/A/B)等实操技巧。 内容聚焦测试全流程关键环节,兼具理论深度与

2025-08-20 15:49:15 877

原创 软件测试(测试开发)面试题

本文总结了软件测试的关键原则与实务要点。测试原则包括尽早测试、有限覆盖、上下文依赖等五大要点,并提出了处理开发争议的方案。测试目的是发现缺陷、验证需求并降低风险,设计用例需注意全面性、可执行性等要素。文中列举了功能测试、性能测试等常见类型,并详细说明了如何描述难复现的bug。此外,还区分了支付场景的严重bug等级,以及缺陷优先级与严重级别的定义。最后提供了MySQL创建只读权限用户的具体SQL语句。全文系统性地涵盖了软件测试的核心概念和实用技巧。

2025-08-19 20:23:18 301

原创 软件测试-Selenium学习笔记

本文介绍了使用Selenium进行Web自动化测试的基本操作,主要包括: 元素定位方法 driver.find_element()的多种定位方式(ID、CSS、XPath等) By类提供的定位枚举常量 常用操作 send_keys()输入文本 click()点击元素 浏览器窗口操作方法(最大化、刷新等) 高级定位技术 XPath语法(标签、属性、文本定位) CSS选择器语法(id、class、属性选择) 其他功能 鼠标操作(需配合ActionChains) 元素信息获取方法(尺寸、文本、属性等) 代码示例展

2025-08-19 16:48:28 1189

原创 测试开发笔试题分享(比开发难度小)

文章摘要:本文介绍了三张图片的插入方法,每张图片通过图片描述格式和CSDN图床链接展示。图片链接格式为"https://i-blog.csdnimg.cn/direct/...",每张图片具有不同的哈希值标识。这种标准的图片插入方式适用于技术博客写作,通过规范化的图片描述和统一格式的URL实现了图片的稳定展示。摘要150字以内。

2025-08-18 20:47:17 87

原创 java 面试八股集锦

本文摘要: MySQL篇: 索引类型及特性(聚集/非聚集索引、B+树优势) 事务特性(ACID)与隔离级别 InnoDB存储引擎特点 SQL优化(索引失效、执行计划分析) 查询执行流程与连接方式 Redis篇: 缓存问题解决方案(穿透/击穿/雪崩) 数据结构应用场景(Set、Sorted Set) 持久化机制(RDB/AOF比较) 高可用方案(主从复制、哨兵机制) 分布式锁实现方式 Java集合: HashMap与Hashtable区别 HashMap底层实现(数组+链表+红黑树) ConcurrentHa

2025-08-16 15:46:55 971

原创 软件测试高频面试题

本文总结了软件测试的关键知识点,包括性能测试流程(需求分析、环境搭建、脚本开发、执行压测、结果分析)和关键指标(响应时间、吞吐量等)。测试用例设计需注重清晰性和覆盖度,提Bug要详细描述复现步骤。测试报告应包含版本、环境、结果等要素。区分前后端Bug可通过表现和工具分析。接口测试可使用Postman等工具,自动化框架包含配置、数据、请求等层级。还介绍了其他测试类型(安全、兼容性等)、AI测试应用、黑白盒测试区别、冒烟测试定义,以及通过测试左移等方法降低Bug逃逸率。

2025-08-16 10:17:17 511

原创 Lua 脚本在 Redis 中的应用

Redis在高并发场景下是实现分布式锁的关键组件,Lua脚本保障了原子性操作。常见实现方式包括SETNX命令和Redisson框架,但普通分步解锁存在并发安全问题。通过Lua脚本将判断锁持有者和删除锁合并为原子操作可解决该问题。Redisson已内置Lua脚本实现,支持可重入锁、自动续期等高级特性,简化了分布式锁的使用。Lua脚本是Redis分布式锁的核心技术保障。

2025-08-14 16:26:44 553

原创 为什么 Token 设置了 24 小时有效期,还要在用户访问时刷新有效期?

摘要:登录鉴权时为何要在访问时刷新Token有效期?固定24小时有效期会导致用户活跃时突然失效,影响体验。动态刷新机制则根据用户活跃状态延长有效期(持续使用时保持有效,停用后24小时过期),既保证了免登录便利性,又维持了安全性。C端产品更适合动态刷新,而内部系统可能只需固定有效期。两者结合实现了用户体验与安全的最佳平衡。

2025-08-14 15:58:02 348

原创 Java Record 类 — 简化不可变对象的写法

Java 14引入的record类型简化了不可变数据对象的创建,自动生成构造方法、equals()、hashCode()、toString()和getter(字段名即方法名),但不提供setter。虽然字段是final的不可变引用,但引用对象内部仍可修改(浅层不可变)。相比Lombok,record语义更明确,适合存储数据且无业务逻辑的对象,如DTO或返回值对象。如果需要深度不可变,需自行实现防御性拷贝。

2025-08-13 21:35:20 188

原创 FemalePower项目学习笔记

本文总结了Spring Boot+MyBatis-Plus开发中的关键功能点:1)使用@RestControllerAdvice实现全局异常处理;2)利用Knife4j生成接口文档;3)通过@TableLogic实现逻辑删除;4)@JsonIgnore忽略字段序列化;5)saveOrUpdate的智能更新机制;6)公共字段抽取优化;7)使用@EnumValue和@JsonValue处理枚举类型;8)@ConfigurationProperties实现配置批量绑定。这些注解和技巧能有效提升开发效率和代码质量,

2025-08-13 21:32:48 274

原创 Spring Boot 使用 @NotBlank + @Validated 优雅校验参数

Spring开发中推荐使用JSR-303校验注解(如@NotBlank、@NotNull)替代传统if判空,可显著减少代码量并提升维护性。通过@Validated注解触发DTO字段的自动校验,配合全局异常处理统一返回错误信息。相比手动判空,这种方式支持更丰富的校验规则(如正则、长度等),且将校验逻辑集中在DTO层,使代码更规范。但需注意复杂业务校验仍需自定义注解,并要配置全局异常处理器避免返回400错误页面。

2025-08-13 20:45:06 464

原创 BCrypt 工作因子(Work Factor)设置指南:平衡安全性与性能的艺术

本文探讨了BCrypt加密算法中工作因子(Work Factor)的设置问题。工作因子通过2^n次迭代决定加密强度,推荐值在10-12之间:10适用于普通应用(10-50ms加密耗时),12适合高敏感业务(40-200ms)。不建议超过14,否则会导致秒级延迟和系统负载问题。建议通过性能测试确定最佳值(控制在100ms内),并按业务类型分级设置(金融类12,政务类13-14)。关键是要在配置文件中动态设置工作因子,便于未来调整。核心原则是平衡安全性与性能,使加密过程对用户透明同时保障账户安全。

2025-08-13 17:01:09 562

原创 公司项目用户密码加密方案推荐(兼顾安全、可靠与通用性)

本文总结了密码加密的核心原则与推荐方案。首选BCrypt算法,适用于大多数场景,具备自动盐值管理和可调计算成本等优势;高敏感场景推荐Argon2,抗硬件攻击能力更强;兼容性需求可选PBKDF2。严禁使用明文存储、弱哈希或可逆加密。实施建议优先集成框架加密模块,定期升级算法,并确保传输安全。核心原则是采用行业通用、成熟可靠的加密方案,避免自行设计加密逻辑。

2025-08-13 16:52:52 489

原创 Java后端面试题(含Dubbo、MQ、分布式、并发、算法)

本文汇总了Java高级、分布式系统、设计模式、算法数据结构及并发编程五大技术领域的核心面试题。主要内容包括:消息队列选型与消息积压处理方案(Kafka/RabbitMQ等)、Dubbo和Spring Cloud的微服务实现对比、分布式锁设计与分库分表方案;设计模式应用场景及JDK中的典型实现;链表/二叉树等数据结构算法题解;并发编程中Synchronized与ReentrantLock的区别、线程池配置及volatile内存可见性等。涵盖分布式系统设计、高并发处理等关键技术点,适用于中高级Java开发者面试

2025-08-13 09:08:53 1280

原创 MySQL,Redis重点面试题

本文摘要: 数据库索引部分介绍了聚集/非聚集索引等类型及B+树优势,分析了索引优缺点及失效场景; 事务与存储引擎部分详解ACID特性、隔离级别、InnoDB等存储引擎对比及SQL调优工具; Redis部分涵盖缓存问题解决方案、分布式锁实现、数据结构应用、性能优化、持久化机制、事务处理、过期策略及哨兵机制等核心知识点。全文系统梳理了数据库与Redis的关键技术要点及优化策略。

2025-08-11 20:39:47 854

原创 使用 Spring Boot 集成七牛云实现图片/文件上传

本文介绍了在Spring Boot项目中集成七牛云对象存储实现文件上传的方法。首先讲解了七牛云账号注册、创建存储空间和获取密钥等准备工作,然后详细说明了集成步骤:添加SDK依赖、配置参数、封装上传工具类以及编写控制器接口。最后对比了七牛云、阿里云OSS和MinIO等存储方案的适用场景。该方法解决了传统本地存储的容量限制和访问速度问题,适合个人博客和小型项目使用。

2025-08-09 10:02:59 366

原创 解决MinIO上传图片后返回URL无法访问的问题

**摘要:**文件上传接口返回访问路径但浏览器无法打开,显示权限拒绝。经查发现MinIO存储桶默认为私有权限,导致无法直接访问。解决方法是使用MinIO命令行客户端mc将指定桶设置为公共读权限:先配置服务别名,再执行mc anonymous set public命令设置权限。重启项目后问题解决。

2025-08-08 21:23:19 295

原创 解决 MinIO 上传文件时报 S3 API Requests must be made to API port错误

使用MinIO时遇到400错误,原因是S3 API请求发送到了Web控制台端口(9000)而非API端口(9005)。日志显示错误信息"Non-XML response from server",检查MinIO启动信息确认API端口后,修改application.yml中的endpoint为正确的API端口9005,问题解决。关键点在于区分MinIO的API端口和WebUI端口,确保代码配置使用API端口进行文件操作。

2025-08-08 20:52:55 169

原创 解决苍穹外卖项目中 MyBatis - Plus 版本冲突问题

《MyBatis-Plus版本冲突问题解决记录》摘要:在开发黑马苍穹外卖项目时,因MyBatis-Plus不同模块版本不匹配(3.5.11与3.5.3.1)导致启动时出现NoSuchFieldError: IGNORED异常。通过统一各模块MyBatis-Plus依赖版本为3.5.3.1,并执行mvn clean install清理构建缓存后问题解决。经验表明:使用MyBatis-Plus需严格保持各模块依赖版本一致,避免因版本差异引发兼容性问题。(150字)

2025-08-08 19:04:12 461

原创 在SpringBoot项目中使用MinIO进行文件存储

本文介绍了三种文件存储方案,并选择MinIO实现分布式文件存储。方案对比显示:本地存储简单但扩容难;分布式系统易扩容但复杂;第三方服务便捷但需付费。实现步骤包括:1)引入MinIO依赖;2)配置application.yml;3)创建MinioProperties属性类;4)通过MinioConfiguration配置MinioClient;5)开发Controller接收上传请求;6)实现Service层逻辑,包含Bucket检查创建、唯一文件名生成、文件上传及访问URL返回功能。代码示例完整,可直接集成

2025-08-08 10:25:10 327

原创 如何使用 pnpm创建Vue 3 项目

本文介绍了pnpm这一高效的Node包管理工具,并演示了用它创建Vue项目的完整流程。pnpm相比npm/yarn具有安装更快、节省磁盘空间等优势。使用步骤包括:全局安装pnpm、通过pnpm create vue创建项目并配置选项、进入项目目录安装依赖及运行开发服务器。文章还对比了pnpm与npm的常用命令,如pnpm add替代npm install等。通过pnpm可以更高效地管理Vue项目依赖。

2025-08-07 18:16:10 451

原创 Vue2博客项目笔记(完结)

【Vue组件通信与核心功能摘要】 组件通信:子组件通过$emit('load')触发父组件方法,父组件监听并执行对应逻辑 模板特性: ref="scroll"用于DOM引用(this.$refs.scroll) <slot>实现内容分发,父组件内容将插入子组件指定位置 滚动处理:通过documentElement.scrollTop获取滚动高度,兼容不同浏览器 数据操作:concat()合并数组实现分页加载 请求封装: 使用axios统一配置baseURL 接口返回数据格式为

2025-08-06 18:54:35 505

原创 Java异常讲解

本文介绍了Java异常处理的基本概念和用法。主要内容包括:1) 异常分类:运行时异常(RuntimeException)和非运行时异常(检查异常);2) 异常处理方式:JVM默认处理和使用try-catch捕获;3) 捕获异常的注意事项:多个catch语句的顺序和父子类异常关系;4) 异常常用方法,如printStackTrace;5) 自定义异常的实现方法:通过继承Exception创建检查异常或继承RuntimeException创建非检查异常。文章通过代码示例展示了异常的实际应用场景和处理技巧。

2025-08-05 21:27:09 206

原创 Java set集合讲解

Java Set集合摘要:Set是基于双向链表实现的无序集合(除LinkedHashSet和TreeSet外),具有不可重复特性,常用于去重操作。主要实现类包括HashSet(无序哈希表)、LinkedHashSet(有序哈希表)和TreeSet(红黑树排序)。遍历方式支持迭代器、增强for循环和Lambda表达式。HashSet底层采用哈希表存储,JDK8后优化为数组+链表+红黑树结构,具有O(1)查询效率。TreeSet提供两种排序方式:实现Comparable接口自然排序或Comparator定制排序

2025-08-05 21:03:56 306

原创 蓝桥杯常用java API

本文总结了Java中常用的数值处理、字符串转换和数组操作方法。主要包括:1)使用Math.min/max比较数值大小;2)进制转换方法(二进制、八进制、十六进制);3)4种整型转字符串方式的优缺点比较;4)Arrays类常用数组操作如填充、查找、复制和排序;5)String类的字符串处理方法;6)StringBuilder/StringBuffer的主要API;7)Character.digit()方法用于字符到指定进制数字的转换,相比直接减'0'能正确处理各种进制字符。这些方法覆盖了Java编程中常见的基

2025-08-05 20:58:53 425

原创 蓝桥杯java常用集合操作

本文对比了Java中常用的集合类型及其适用场景。当需要有序存储、允许重复元素或频繁遍历时使用ArrayList;当需要快速查找、去重或频繁增删时使用HashSet。对于键值对存储,单线程推荐HashMap(允许null),多线程推荐ConcurrentHashMap(比Hashtable更高效)。HashSet基于哈希表无序存储,TreeSet基于红黑树有序存储,LinkedHashSet保持插入顺序。文中提供了各类集合的代码示例和核心方法说明,帮助开发者根据实际需求选择合适的集合类型。

2025-08-05 20:57:03 212

原创 Vue2博客项目笔记(第一天)

本文介绍了Vue.js开发中的核心概念和实用技巧。主要内容包括:1) App.vue作为根组件的基础作用;2) 选项式API的结构详解,涵盖props、data、computed等核心配置项;3) 语法糖模式<script setup>的使用注意事项;4) 过渡动画transition的应用场景;5) 组件通信通过props实现;6) 路由跳转的编程式导航方法;7) 模板字符串插值和v-bind的对象展开绑定技巧;8) 全局过滤器的数据格式化应用。这些内容涵盖了Vue开发中从组件设计到状态管理、

2025-08-05 20:54:56 267

原创 vue环境的搭建

本文介绍了创建Vue项目的完整步骤:首先确保安装Node.js和npm,建议使用淘宝镜像源加速安装过程;然后全局安装Vue CLI脚手架工具;接着通过vue create命令创建项目,详细说明了项目配置选项的选择(包括Vue 2.x版本、Babel、Router等);最后针对可能出现的PowerShell执行策略错误提供了解决方案,并指导如何启动开发服务器。

2025-08-05 11:04:40 518

原创 Vue3学习笔记

本文总结了Vue3的重要特性和使用技巧:1)频繁切换显示时使用v-show而非v-if;2)v-bind简写为冒号;3)setup语法糖简化组件编写,Vue2/3语法可混用但数据流向有限制;4)响应式工具:ref处理基本类型(需.value访问),reactive处理对象(避免直接赋值);5)toRefs保持解构后响应性;6)计算属性缓存优化性能;7)watch监听四种数据源,支持深度监听;8)watchEffect自动追踪依赖;9)模板ref获取DOM/组件实例。

2025-08-04 17:12:03 1164

原创 Java计算机网络面试题

本文摘要了网络通信中的核心概念:1) HTTP方法(GET/POST等)和状态码(200/404等);2) Cookie/Session及GET/POST区别;3) TCP/UDP特性对比;4) TCP/IP四层和OSI七层模型;5) HTTPS混合加密原理;6) TCP三次握手/四次挥手流程;7) CDN加速原理;8) 网页访问的全过程解析。内容涵盖HTTP协议、网络模型、传输协议、安全机制等关键技术要点,适用于快速回顾网络基础知识点。(150字)

2025-08-04 17:07:56 387

原创 Java Collections工具类

Java的Collections类提供了一系列静态方法用于操作集合,主要包括:排序(sort)、查找(binarySearch)、反转和洗牌(reverse/shuffle)、获取极值(max/min)、计算频率(frequency)、替换元素(replaceAll)、创建不可变集合(unmodifiableList)、生成单例集合(singleton)、空集合(emptyList)以及线程安全集合(synchronizedList)等。这些方法简化了集合操作,如示例中对列表进行排序、打乱顺序、查找极值、替

2025-08-03 08:56:12 123

空空如也

空空如也

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

TA关注的人

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