自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL性能优化

这是一个挺大的主题,一开始让人摸不着头脑,什么慢查询、索引等等凌乱不堪。但通过成体系的思考学习还是能够清晰的。当我们要进行数据库优化时,通常是查询慢、性能低、一条SQL要执行其实是通过了很多层的,首先由最上层的方法判断调用/Redis缓存调用——>SQL语句加载查询——>查询优化器找索引——>存储引擎如InnerDB锁和缓存的优化,最后才是硬件优化和扩容。我们这里就用到了从整体到细节的思维,不是聚焦一个小问题而是从整个结构去俯瞰SQL性能优化的方法。

2025-09-19 23:29:46 398

原创 25.9.19 Spring AOP

Spring AOP通过动态代理生成代理对象实现方法增强,是事务管理的核心。其核心概念包括:连接点(可被增强的方法)、切入点(通过@Around注解和表达式定位连接点)、通知(定义增强逻辑)和切面类(组合切入点和通知)。切面类需用@Aspect和@Component注解标记。环绕通知能获取方法返回值,常用于日志记录等功能实现。

2025-09-19 22:47:57 259

原创 如何避免惊群效应

惊群效应(Thundering Herd):当一个事件发生时,原本在等待同一资源/条件的大量线程或进程被同时唤醒,一起争抢同一把锁、同一连接、同一任务或同一数据,导致瞬时尖峰、上下文切换暴增、缓存抖动,整体吞吐反而下降。

2025-09-19 11:12:03 449

原创 25.9.16幂等性总结

摘要:幂等接口与防重提接口的核心区别在于前者保证重复请求结果一致,后者直接拒绝重复请求。事务幂等性主要解决网络延迟、RPC重试、消息重复投递等问题。常见解决方案包括:1)利用数据库唯一约束;2)状态机设计;3)唯一令牌机制;4)消息事件表;5)分布式锁(需注意锁粒度)。特别指出乐观锁/悲观锁仅解决并发冲突,@Transactional需配合编程式事务控制锁范围。高并发场景建议采用"分布式锁+基础方案"的组合策略。(150字)

2025-09-17 22:14:57 467

原创 form表达和实体类通常有什么不同

form表达和实体类通常有什么不同。

2025-09-02 14:20:45 491

原创 对象存储(Object Storage)服务快速启动

MinIO 是一个高性能、开源的,兼容,主要用于存储非结构化数据,比如图片、视频、日志、备份文件等。它在企业开发和云原生环境中非常常用,尤其是在需要或的场景。存储数据的最小单位是“对象”(Object),而不是传统的文件或块。对象由组成。

2025-08-27 18:29:02 369

原创 解决端口占用问题

也就是说,你的 Spring Boot 应用启动失败,是因为端口9091被其他进程占用了。

2025-07-28 11:43:00 274

原创 27.移除元素(快慢指针)

元素的顺序可能发生改变。

2025-07-08 22:54:08 186

原创 88.合并两个有序数组

逆向双指针,原地合并两个非递减数组

2025-07-03 12:05:53 195

原创 445. 两数相加 I

Deque<Integer> stack1 = new ArrayDeque<>();双端队列的详细使用(堆/栈)

2025-07-03 11:39:30 307

原创 2.两数相加(链表逆置版)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807.示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1]示例 2: 输入:l1 = [0], l2 = [0] 输出:[0]

2025-07-01 17:34:25 187

原创 206. 反转链表

头插法就可以逆置,创造一个新堆头(dummy)使用头插,current指针移动遍历,nextTemp临时存储后面的链表防止丢失。,请你反转链表,并返回反转后的链表。

2025-06-29 11:38:01 231

原创 21.合并两个有序链表

思路:这里使用的主要数据结构是单链表。该算法采用经典的双指针技术来合并列表。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2025-06-26 23:16:39 512

原创 Java 的强制类型转换

Java强制类型转换:自动提升和手动转换细节总结

2025-06-25 23:05:13 597

原创 50. Pow(x, n)快速幂算法

快速幂算法

2025-06-25 23:03:33 670

原创 43.字符串相乘

我们的任务是计算这两个数字的乘积并将结果作为字符串返回。约束是不允许我们使用任何可以处理大整数的内置库,也不能简单地将字符串转换为整数并以标准方式相乘。这要求我们思考如何手动执行乘法,模仿在纸上执行乘法的方式。在这个问题中,我们得到两个非负整数,表示为字符串。

2025-06-25 21:37:09 215

原创 67.二进制求和

加法模拟

2025-06-24 14:08:56 373

原创 1232.缀点成线

斜率,数学计算

2025-06-24 12:03:12 340

原创 976.三角形的最大周长

给定由一些正数(代表长度)组成的数组nums,返回由其中三个长度组成的、的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。只有当任意两条边的长度之和大于第三条边的长度时,三角形才能存在。这被称为三角形不等式定理。如果数组中不存在此类组合,则函数应返回 0。一个关键方面是要记住,我们正在寻找尽可能大的周长,这意味着我们应该关注数组中最大的数字,因为它们有可能对更大的周长做出贡献。5你可以用三个边长组成一个三角形:1 2 2。0你不能用边长 1,1,2 来组成三角形。

2025-06-24 11:41:06 256

原创 860.柠檬水找零

贪心算法,数学问题

2025-06-23 18:41:41 391

原创 1491. 去掉最低和最高工资的平均工资

数学问题,最值比较

2025-06-23 18:24:31 206

原创 2980.检查按位或是否存在两个零

其他按位或运算结果存在尾随零的可能选择方案包括:(2, 8), (2, 16), (4, 8), (4, 16), (8, 16), (2, 4, 8), (2, 4, 16), (2, 8, 16), (4, 8, 16), 以及 (2, 4, 8, 16)。如果选择元素 2 和 4,按位或运算结果是 6,二进制表示为 "110" ,存在一个尾随零。如果选择元素 2 和 4,按位或运算结果是 6,二进制表示为 "110",存在一个尾随零。如果可以选择两个或更多元素,其按位或运算结果存在尾随零,返回。

2025-06-23 18:09:42 309

原创 1532.在区间范围内统计奇数数目

奇数个数计算,位运算总结

2025-06-20 11:41:00 302

原创 73. 矩阵置零

空间度为1,用第一行第一列做标记

2025-06-17 23:19:19 334

原创 54.旋转矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

2025-06-17 21:55:25 336

原创 1572. 矩阵对角线元素的和

方阵matrix

2025-06-17 21:13:32 342

原创 1672.最富有客户的最大资产总量

特点内容函数名功能返回两个数中更大的返回值类型和参数类型一致(int、double、long...)优点简洁直观,代码更清晰。

2025-06-17 14:06:59 316

原创 增强for循环总结

增强 for 循环(也叫)是 Java 中对普通 for 循环的简化版本,写起来更简洁,但也有一些限制。我们来全面分析它的,还会举例说明~

2025-06-17 13:52:24 317

原创 1041. 困于环中的机器人

用表示方向,方便控制转向用distance[]记录在每个方向上的前进总步数用% 4保证方向编号始终在 0~3 范围内循环。

2025-06-16 22:52:39 965

原创 不同环境的配置文件

application.yml和application-dev.yml,application-prod.yml,application-test.yml,为什么不同阶段用不同的配置文件,又是怎么切换的呢

2025-06-12 17:55:48 694

原创 手动引入依赖到本地Maven仓库

构建/运行源码时,redisson包引入显示找不到,使用的仓库是阿里云镜像http://maven.aliyun.com/nexus/content/groups/public/已有依赖所需jar包报错显示:解决方法:这种方式比较符合 Maven 习惯,后续你也容易管理依赖。你可以按下:或者你直接在 IDEA 里打开终端 (Terminal) 也行。mvn install:install-file -Dfile=E:\JavaDev\resourse\redisson-spring-boot-star

2025-06-12 10:58:46 570

原创 1275.判断井字棋游戏中的获胜者

二维数组棋盘模拟

2025-06-09 20:11:18 994

原创 机器人返回原点

坐标场景模拟

2025-06-05 11:58:18 388

原创 682.棒球比赛计分

增强for循环,双端队列(Double Ended Queue)Deque, 堆栈应用

2025-06-03 11:40:56 611

原创 709.转换成小写字母

大小写字母转换,按位或运算

2025-06-03 11:19:00 391

原创 58.最后一个单词的长度

这个问题要求我们找到给定字符串s中最后一个单词的长度。字符串由英文字母和空格 (' ') 组成。单词可以看作是由一个或多个空格分隔的字符序列。重要的是,我们只对最后一个单词的长度感兴趣,而不是单词本身。这意味着我们需要遍历字符串以将最后一个单词与可能的尾随空格分开,然后测量其长度。5最后一个单词是“World”,长度为 5。4最后一个单词是“moon”,长度为 4。6最后一个单词是长度为 6 的“joyboy”。

2025-06-03 11:04:36 248

原创 6.1日项目构建过程中补充的一些小知识点

1.安装新版本的JDK时需要先创建一个目录(如jdk1.8)这样安装文件更有序。

2025-06-03 10:48:08 237

原创 初学内网穿透

内网穿透,就是想办法让本地这个只有内网IP的服务,

2025-06-01 12:30:53 199

原创 13.罗马数字转整数

罗马数字是古罗马的一种数字系统,基于拉丁字母(I、V、X、L、C、D、M)中的字母组合来表示数字。每个符号都有一个固定的数值,I 等于 1,V 等于 5,X 等于 10,L 等于 50,C 等于 100,D 等于 500,M 等于 1000。罗马数字中的数字是通过将这些符号组合并将它们的值相加而形成的。但是,当较小的数字位于较大的数字之前时,这表明应该从较大的数字中减去较小的数字,而不是相加(例如,IV 表示 4,而不是 6)。

2025-05-31 18:35:35 675

原创 896.判断是否为单调数列

两两比较,只需要满足单调递增和单调递减中的一个即可。

2025-05-31 13:40:46 132

空空如也

空空如也

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

TA关注的人

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