自定义博客皮肤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)
  • 收藏
  • 关注

原创 一篇文章掌握雪花算法

Snowflake是Twitter开源的分布式ID生成算法,通过64位long类型数字实现全局唯一ID。其结构包含1位无用符号位、41位时间戳、10位机器标识(5位数据中心ID+5位机器ID)和12位序列号。相比数据库自增ID,Snowflake解决了分布式系统中ID重复、数据库性能瓶颈等问题,支持每秒百万级ID生成且基本保证有序递增。算法实现需考虑时钟回拨问题,通过自旋等待、时间偏移补偿等策略处理不同级别的时钟回拨异常。

2025-11-06 16:05:36 873

原创 软件测试基础理论

软件测试是确保软件质量的关键环节,包括功能、性能、兼容性等多方面验证。测试流程涵盖需求分析、计划制定、用例设计、执行测试及缺陷管理。测试方法分为黑盒、白盒和灰盒,工具包括Jmeter和Postman等。接口测试关注参数、结果、容错和权限,自动化测试框架如Pytest可提升效率。质量管理遵循ISO25010模型,通过缺陷管理流程和评审机制保障产品质量。完整的测试工作流程和规范化的文档编写是测试成功的基础。

2025-09-12 15:02:59 966

原创 Selenium

Selenium是一个开源的Web自动化工具,主要用于测试、爬虫等场景。它包含三大组件:WebDriver(核心组件)、IDE(已停更)和Grid(分布式扩展)。Selenium支持多语言、多浏览器和多操作系统,已成为W3C标准。环境搭建只需Python+pip安装即可,常见应用包括页面访问、点击输入、滚动缩放等操作。Selenium基于面向对象设计,主要操作WebDriver和WebElement两大对象,提供8种元素定位方式,支持强制/隐式等待。可与pytest框架集成,采用POM模型和KDT方法进行测

2025-08-23 11:29:59 1350

原创 JMeter(进阶篇)

本文介绍了JMeter性能测试中的三类核心组件应用。一、逻辑控制器:包括IF控制器(条件执行)、ForEach控制器(遍历集合)、循环控制器(固定次数执行);二、关联技术:XPath提取器(XML/HTML数据提取)、正则表达式提取器(文本匹配提取)、跨线程组变量共享;三、性能测试方法:1)高并发测试(同步定时器模拟多用户)2)高频率测试(常数吞吐量定时器控制QPS)3)分布式测试(控制机与执行机协作)。文中详细说明了各功能的实现步骤和配置要点,包括线程组设置、定时器配置、分布式环境搭建等关键技术环节。

2025-08-17 10:45:42 1198

原创 JMeter(入门篇)

JMeter是一款开源的Java测试工具,主要用于负载测试和功能验证。它支持多协议且跨平台,但需要配合Selenium测试Web UI。安装需Java环境,启动后通过线程组设计测试计划,支持并发/顺序执行。提供参数化、数据库直连和断言功能,其中参数化包括变量、CSV文件和函数;断言可验证响应内容、大小和时长。JMeter通过线程组管理测试流程,结合HTTP请求和监听器完成测试分析。

2025-08-17 10:31:42 840

原创 全面解析Spring事务的失效以及如何避免

本文系统梳理了 Spring 中 @Transactional 注解可能失效的常见场景,包括方法访问级别不当、类内自调用、异常处理不当、事务传播行为配置错误、数据源与事务管理器配置问题等。同时结合典型代码示例,深入剖析了 Spring 事务的底层实现机制,尤其是基于 AOP 代理的执行流程,阐明了为何某些场景下事务不会生效或不会回滚。通过这些分析,帮助开发者在使用 Spring 声明式事务时规避常见陷阱,确保事务管理的正确性与业务逻辑的一致性。

2025-07-20 13:32:52 1109

原创 在Spring中使用分布式锁时,为什么加了锁却仍然会在高并发下出现数据不一致的问题?

在Spring框架中,当分布式锁(基于Redisson实现)与事务注解同时作用于同一方法时,由于切面执行顺序问题(默认事务切面先于锁切面执行),会导致高并发场景下数据不一致。本文通过示例展示该问题,分析Spring切面排序机制(通过AspectJAwareAdvisorAutoProxyCreator的sortAdvisors方法),并提出两种解决方案:1)将锁移至Controller层;2)通过@Order(-10)调整锁切面优先级。特别指出直接在事务方法内部加锁的错误做法。

2025-07-16 13:29:08 791

原创 如何解决缓存击穿

缓存击穿是微服务架构中Redis缓存常见问题,指高并发下热点数据失效时大量请求直接冲击数据库。主要原因包括缓存过期或首次查询未命中。解决方案有:1)设置热点数据永不过期;2)使用分布式锁确保单线程回源;3)双重检测优化减少锁竞争;4)非阻塞锁机制(tryLock)提升并发处理能力。各种方案需权衡安全性与性能,根据业务场景选择合适方案。最终推荐采用带双重检查和有限等待时间的分布式锁方案,在保证数据一致性的同时提高系统吞吐量。

2025-07-13 11:08:42 610

原创 布隆过滤器+缓存穿透

布隆过滤器是一种高效的概率型数据结构,通过位数组和多个哈希函数实现快速元素存在性判断。其核心优势在于空间效率高(O(k)时间复杂度)和适合大规模数据处理,但存在误判可能且不支持删除操作。典型应用包括缓存穿透防护、爬虫去重等场景。实现方式上,既可通过Guava本地实现,也可基于Redis(如Redisson)构建分布式方案。通过合理配置预期数据量和误判率,可以有效平衡内存占用与查询准确性。在解决缓存穿透问题时,相比缓存空对象和分布式锁方案,布隆过滤器能更高效地拦截无效请求,保护后端数据库。

2025-07-08 16:31:24 902

原创 分库分表

随着数据量激增,传统关系型数据库面临性能瓶颈。本文探讨了分库分表作为主流解决方案,对比了分布式数据库的优缺点。详细介绍了垂直拆分(按业务模块)和水平拆分(按数据量)的具体策略,并推荐使用ShardingSphere中间件实现。重点分析了分片键选择的重要性,提出"基因法"解决多条件查询难题,通过二进制位替换确保关联数据分布一致。该方案有效避免了全路由查询,提升了系统性能和扩展性。(149字)

2025-07-05 14:16:05 888

原创 一篇文章掌握Docker

Docker是一种开源的容器技术,通过打包应用及其依赖环境实现跨平台部署。文章介绍了Docker的核心概念(镜像、容器、仓库)、架构(客户端-服务器模式)及安装配置方法(包括镜像加速设置)。重点讲解了常用命令(如docker run、docker ps)、数据卷管理、镜像构建(Dockerfile编写)和网络配置。最后演示了Java/前端项目部署流程,并引入Docker Compose工具简化多容器管理。全文系统性地呈现了Docker从基础到应用的全套技术栈。

2025-07-03 21:35:53 924

原创 轻松搞定ThreadLocal

在多线程编程中,变量共享常常会引发线程安全问题。传统的做法是通过加锁机制来控制并发访问,但这往往会带来性能瓶颈与复杂的同步逻辑。为此,Java提供了 ThreadLocal 类,作为一种轻量级的线程隔离机制。它通过为每个线程提供独立的变量副本,巧妙地绕过了同步的复杂性,成为在高并发场景中提升程序健壮性与性能的重要工具。本文将详细介绍ThreadLocal,让大家轻松搞定ThreadLocal。

2025-06-22 14:13:25 1090

原创 Git——分布式版本控制工具

本文介绍了版本控制系统的基本概念和应用场景,重点对比了集中式(SVN)和分布式(Git)版本控制的区别。详细讲解了Git的环境配置、基本操作指令(如add、commit、push等)、分支管理以及远程仓库操作。同时提供了解决Git使用中常见问题的方法,如配置别名、乱码处理、冲突解决等。文章还介绍了Git工作流程和开发中的分支使用原则,并说明了如何通过码云等平台创建和管理远程仓库。最后,对合并冲突的处理进行了具体说明。

2025-06-20 20:44:53 1328

原创 【面试题003】HashMap四连问

本文详细剖析了HashMap的关键实现机制:1) 扩容机制在元素数量达到负载因子(默认0.75)与容量的乘积时触发,0.75是空间利用率和哈希冲突的平衡点;2) 采用链式寻址法解决冲突,链表长度超过8且数组大于64时转为红黑树;3) 通过右移16位的异或运算提升哈希值散列度;4) 与HashTable相比,HashMap采用更高效的散列算法,支持null键值,初始容量16,但非线程安全。这些设计保证了HashMap的高效查询和存储性能。

2025-06-20 11:32:17 501

原创 【面试题002】synchronized和lock的区别

synchronized引入了偏向锁、轻量级锁、重量级锁以及锁升级的机制去实现锁的优化。lock则用到了自旋锁的方式去实现锁的优化。以上就是我对synchronized和lock的解析,其中同时也提到了关于公平/非公平锁、偏向锁、自旋锁等核心知识,也是面试中常常会被问到的问题,同样也值得大家深入学习掌握。的经典面试题,接下来我将从三个方面来系统性的对synchronized和lock进行比对分析。synchronized和lock都是java中解决线程安全问题的一个工具。

2025-06-19 22:20:48 358

原创 【面试题001】生产环境中如何排查MySQL CPU占用率高达100%?

生产环境中如何排查MySQL CPU占用率高达100%?

2025-06-18 22:41:11 1335

原创 JVM(基础篇)

jvm的组成、发展历史、字节码文件、类加载器、运行时数据区、垃圾回收算法、垃圾回收器

2025-03-23 17:30:18 1735 2

原创 软件测试

软件测试流程,软件质量模型,测试用例编写,测试用例方法,Bug,接口测试,冒烟测试,单元测试,系统测试,集成测试,用例评审

2025-03-10 13:37:42 1366

原创 MybatisPlus

mybatisPlus详细讲解,从起步依赖到核心功能,扩展功能,插件功能

2024-10-24 22:38:45 1167 1

原创 Web——HTML

HTML简介,常用表签,表格,表单

2024-03-08 09:38:57 1169

原创 MySQL(基础篇)——事务

事务是一组操作的集合,他是一个不可分割的单位,事务会把所有的操作作色一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

2024-02-29 20:33:34 390

原创 MySQL(基础篇)——多表查询

多表关系,多表查询

2024-02-29 19:34:48 1085

原创 MySQL(基础篇)——函数、约束

字符串函数、数值函数....约束,外键约束

2024-02-28 19:40:04 692

原创 数据结构(队列)

队列的定义,特点,队列的基本操作实现

2024-01-25 15:28:52 946 1

原创 数据结构(栈)

栈的基本定义,顺序栈,链栈的介绍代码实现,力扣经典题分享

2024-01-25 14:30:45 1638

原创 泛型

什么是泛型,泛型类,泛型方法,泛型接口

2024-01-24 15:15:41 506

原创 数据结构(数组)

数组的基本概念,特点,封装数组

2024-01-24 14:05:44 1769

原创 MySQL(基础篇)——基本概念

数据库简介

2024-01-23 11:38:10 438

原创 MySQL(基础篇)——SQL

SQL(DDL、DML、DQL),表操作,查询

2024-01-23 11:37:53 1647

原创 数据结构算法(单调栈)

单调栈,数据结构算法

2024-01-22 11:46:18 1131

原创 线程

线程的创建、多线程、线程同步、线程通信

2023-12-18 17:24:24 1175

原创 日期类

日期类,第三代日期类,时间戳

2023-11-12 23:08:26 122

原创 网络编程

网络编程摘要,UDP,TCP

2023-11-11 11:12:22 271

原创 IO流(part01)

javaIO流入门基本框架

2023-10-15 23:24:36 125

原创 异常

异常概述、体系、处理,自定义异常

2023-10-15 17:32:20 215

原创 API-常用类

Object类,基本数据包装类

2023-09-09 11:17:30 115 1

原创 final关键字、接口

final关键字、接口

2023-09-08 10:39:20 434 1

原创 抽象类,多态

抽象类,多态

2023-09-06 20:02:33 198 1

原创 继承(java三大特点之一)

继承相关重点知识

2023-09-05 11:30:32 115

原创 访问权限修饰符,封装(java三大特点之一)

访问权限修饰符,封装

2023-09-04 08:50:08 119 1

空空如也

空空如也

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

TA关注的人

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