- 博客(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
原创 对象存储(Object Storage)服务快速启动
MinIO 是一个高性能、开源的,兼容,主要用于存储非结构化数据,比如图片、视频、日志、备份文件等。它在企业开发和云原生环境中非常常用,尤其是在需要或的场景。存储数据的最小单位是“对象”(Object),而不是传统的文件或块。对象由组成。
2025-08-27 18:29:02
369
原创 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
原创 43.字符串相乘
我们的任务是计算这两个数字的乘积并将结果作为字符串返回。约束是不允许我们使用任何可以处理大整数的内置库,也不能简单地将字符串转换为整数并以标准方式相乘。这要求我们思考如何手动执行乘法,模仿在纸上执行乘法的方式。在这个问题中,我们得到两个非负整数,表示为字符串。
2025-06-25 21:37:09
215
原创 976.三角形的最大周长
给定由一些正数(代表长度)组成的数组nums,返回由其中三个长度组成的、的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。只有当任意两条边的长度之和大于第三条边的长度时,三角形才能存在。这被称为三角形不等式定理。如果数组中不存在此类组合,则函数应返回 0。一个关键方面是要记住,我们正在寻找尽可能大的周长,这意味着我们应该关注数组中最大的数字,因为它们有可能对更大的周长做出贡献。5你可以用三个边长组成一个三角形:1 2 2。0你不能用边长 1,1,2 来组成三角形。
2025-06-24 11:41:06
256
原创 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
原创 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
原创 58.最后一个单词的长度
这个问题要求我们找到给定字符串s中最后一个单词的长度。字符串由英文字母和空格 (' ') 组成。单词可以看作是由一个或多个空格分隔的字符序列。重要的是,我们只对最后一个单词的长度感兴趣,而不是单词本身。这意味着我们需要遍历字符串以将最后一个单词与可能的尾随空格分开,然后测量其长度。5最后一个单词是“World”,长度为 5。4最后一个单词是“moon”,长度为 4。6最后一个单词是长度为 6 的“joyboy”。
2025-06-03 11:04:36
248
原创 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅