- 博客(181)
- 收藏
- 关注
原创 Seata 中 TC 二阶提交机制核心
Seata TC 的二阶提交是“先准备、后统一决策一阶做“业务执行 + 回滚准备 + 锁准备”,保证“能提交也能回滚”;二阶由 TC 统一调度“提交/回滚”,通过undo_log实现回滚、通过全局锁保证数据一致性;核心目标是在分布式场景下,实现“要么所有分支事务都成功提交,要么所有分支都回滚”的最终一致性。
2026-01-17 22:49:58
923
原创 Spring Cloud Gateway 路由表配置
Spring Cloud Gateway 的路由表是网关的核心配置,负责将请求转发到不同的服务 / 地址。
2026-01-13 22:38:03
367
原创 Sentinel 熔断规则 - 异常比例(order & product 示例)笔记
熔断触发后的30秒内,order 对 product 库存接口的所有请求都会被 Sentinel 拦截,不会真正发送到 product 服务,避免 product 服务在异常状态下被持续请求,减轻其压力。order 服务持续调用 product 的库存接口,若1秒内请求数不足5,或异常请求占比低于50% → 不触发熔断,请求正常发送。比如设为5,则1秒内 order 调用 product 接口的请求数不足5时,即使全部请求异常,也不会触发熔断。只有当时间窗口内的总请求数达到或超过该数值,才会计算异常比例。
2026-01-12 15:30:25
383
原创 流控关联模式踩坑实录:写接口刷多了,为啥被限的是读接口?
谁是 “资源名”,谁就会背 “自身 + 关联资源” 的流量锅。你想限谁,就把谁设为 “资源名”;关联资源是 “帮它分担流量计算的搭档”。这模式真的太容易搞反了,记不清的话,配完最好压测验证下 —— 别像我一样,以为是保护读接口,结果把读接口自己坑了。
2026-01-11 22:16:17
145
原创 Sentinel @SentinelResource:用 blockHandler 实现优雅的接口降级
的value和value负责标识资源,让 Sentinel 知道要保护谁;负责降级兜底,让系统在异常时能优雅返回,而不是直接崩溃。用这两个参数,只需要几行代码就能给接口加上 “流量防护盾”,是微服务稳定性建设中性价比极高的实践~
2026-01-07 14:45:57
371
原创 FeignClient 踩坑:@FeignClient 同时配 value 和 url 的 “无效服务名” 问题
的value/name和url用服务名→走注册中心、享负载均衡,只配value;用固定地址→调用第三方接口,只配urlvalue仅做标识)。同时配置两者,既浪费了 Spring Cloud 的能力,又会让代码可读性变低 —— 别让多余的配置成为维护的 “暗坑”!需要我帮你整理一份FeignClient 常用配置的速查表吗?
2026-01-06 20:56:06
288
原创 【SpringCloud】@EnableFeignClients 扫描范围:别再踩包扫描的坑!
EnableFeignClients 写法扫描范围适用场景无参数主启动类所在包及其所有子包Feign 接口分散在多个子包时basePackages = "指定包路径"仅指定包及其子包Feign 接口集中在单独包时Feign 接口一定要加注解,否则哪怕扫描到了也不会被识别哦~要不要我帮你补充一个 **“Feign 注入失败的排查步骤”**,放在博客末尾当扩展内容?
2026-01-06 16:47:26
133
原创 从 0 到 1:Spring Cloud OpenFeign 远程调用实战指南
写一个接口,用标注(指定要调用的服务名),再用 SpringMVC 的注解(等)定义请求规则:java运行// value:要调用的微服务名;fallback:降级处理类(熔断用)// 这里的@GetMapping不是“接收请求”,而是“发送请求”注意:Feign 接口上的 SpringMVC 注解,作用是描述 “要发送的 HTTP 请求”(和 Controller 上的注解逻辑相反)。
2026-01-05 23:08:21
329
原创 Maven 聚合工程打包报错:Unable to find main class 快速解决
这个报错的核心是插件配置范围不对,只需让只服务于有启动类的业务模块,就能彻底解决问题。
2026-01-04 21:28:31
242
原创 喜相逢集团有限公司面试经验
业务场景: 当用户填写车牌号其中的一位或者两位数的时候,如何直接从库中搜索到完整的车牌号。Linux 传递文件到远端命令 scp 以及各个参数的作用。Redis 分布式锁原理,watch dog 看门狗。线上经验如何排查,详细步骤。水资源无限,3L和5L水桶各一个,怎样取4L的水?要求: 在海量数据中高效查询出数据库中的数据。分布式远程调用中如何给每个请求加上请求头。回忆部分--------------自研业务租车平台#牛客AI配图神器#后端开发线下面试base 福州。一共两轮,一轮组长,一轮领导。
2026-01-01 11:50:44
207
原创 MySQL kill 命令实战:从 “终止 SQL” 到 “看清进程” 的避坑指南
定位目标:用找到要终止的 SQL,记好连接ID和Info;执行 kill:优先用kill query [连接ID];验证结果查,看目标连接的Info是否不再是被终止的 SQL;(可选)查通用日志,确认 SQL 已终止;观察数据库负载是否下降。最后提醒:线上环境用kill前,一定要确认Info里的 SQL 是 “异常 SQL”—— 别把核心业务的正常查询给终止了!
2025-12-30 23:07:56
342
原创 MySQL子查询性能优化:从10秒到1秒的改写技巧。
先看原始需求:从`e_cons_snap`表中删除满足“关联`c_cons`表中`status_code='9'`且`mr_sect_no='1'`”条件的数据。这意味着:子查询不是“先执行完得到结果,再和外表关联”,而是每遍历外表的一条数据,就执行一次子查询——相当于做了“百万次循环+子查询”,性能直接拉垮。1. 先执行`c_cons`表(b表),通过`status_code`和`mr_sect_no`的过滤条件,只得到**1条记录**;二、慢查询根源:执行计划的“依赖子查询”
2025-12-30 22:41:59
342
原创 DDD架构设计模块
摘要:DDD架构采用四层模块化设计:1)领域层(domain)封装核心业务规则与模型(如电商的订单模块);2)应用层(application)协调业务流程(如下单服务);3)基础设施层(infrastructure)提供技术支撑(数据库/MQ工具);4)接口层(interface)处理外部请求(REST接口)。各层职责明确,领域层保持业务纯粹性,应用层专注流程编排,技术实现下沉至基础设施层,实现业务与技术解耦。(149字)
2025-12-29 23:01:08
189
原创 Idea中Git切换分支,如何确保代码不丢失。
在Git Stach的时候填写消息备注好此次隐藏的主题,然后即可切换到别的分支。当别的分支任务处理完成后即可回来。切换回来分支后,可看见刚刚Git stash的记录,选择应用即可恢复原先的代码(并保留此次的的隐藏记录),如果选择弹出则删除之前的记录。(临时保存,后续回滚)适合 “修改未完成,不想提交但需要切分支” 的场景。最后进入搁置界面找到刚刚搁置的信息,选择取消搁置即可。
2025-11-18 22:44:58
218
原创 Jenkins + CICD流程一键自动部署Springboot项目(保姆级)
这里填写的地址就是刚刚jenkins中配置的URL,密码也是刚刚在Jenkins中生成的随机密码。采用docker部署jenkins,注意这里的命令,一定要映射docker路径,否则无法找到(ps:已踩坑)然后容器内要安装maven,注意这里需要更换镜像源,否则采用默认的源会很慢。然后再选择一个执行shell,并且将这个打包的环境执行成为一个镜像。然后是配置webhook,也是在刚刚的任务配置中配置。配置git仓库地址,然后选择刚刚创建的凭据。以上配置完成后,应用保存,然后执行构建即可。
2025-03-30 23:40:20
689
原创 Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)
这里填写的地址就是刚刚jenkins中配置的URL,密码也是刚刚在Jenkins中生成的随机密码。采用docker部署jenkins,注意这里的命令,一定要映射docker路径,否则无法找到(ps:已踩坑)然后配置jenkins中的用户名和密码即可。然后再选择一个执行shell,并且将这个打包的环境执行成为一个镜像。在这里指定一个node的版本号,其它的不用勾选。然后是配置webhook,也是在刚刚的任务配置中配置。配置git仓库地址,然后选择刚刚创建的凭据。以上配置完成后,应用保存,然后执行构建即可。
2025-03-29 22:22:06
1800
原创 解决 Gin Web 应用中 Air 热部署无效的问题
在使用 Go 语言开发 Web 应用时,Gin 框架因其高效和简洁深受开发者喜爱。为了提升开发效率,我们常常借助 Air 工具实现热部署,让代码修改后能实时生效,无需手动重启服务。然而,不少开发者在使用过程中遇到了 Air 热部署失效的情况,本文将结合实际案例,深入探讨可能的原因及解决方法。
2025-03-27 17:11:36
572
原创 Go 语言中使用 Swagger 生成 API 文档及常见问题解决
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它通过定义一种标准的接口描述语言(如 OpenAPI 规范),让开发者能够轻松地创建、维护和分享 API 文档。对于 Go 语言开发者而言,Swagger 提供了便捷的方式将代码与文档紧密结合,使得 API 的设计和使用更加透明、高效。通过使用 Swagger,Go 语言开发者能够高效地生成专业、详细的 API 文档。
2025-03-27 11:00:28
1345
原创 Java 通过原子类解决(面试)
如何不通过lock锁和synchronized来解决volatile的不可原子性。Java 通过原子类解决volatile的不可原子性(面试),详细代码如下。
2025-03-10 00:00:41
139
原创 3427. 变长子数组求和
返回为数组中每个下标定义的子数组中所有元素的总和。因此,输出为 13。因此,输出 11。),定义对应的子数组。是数组中的一个连续、
2025-03-05 23:38:18
270
原创 1014.最佳观光组合
个观光景点的评分,并且两个景点。返回一对观光景点能取得的最高分。)组成的观光组合的得分为。,也就是景点的评分之和。它们两者之间的距离。
2025-01-22 14:43:03
230
原创 1.两数之和
这个算法要解决的问题是找到一个数组里两个元素相加等于目标值的情况,并返回这两个元素的索引。然后遍历数组,对于每个元素,计算目标值减去该元素的值,将结果存为 `ans`。接着查看 `map` 里是否存在 `ans`,若存在则返回这两个元素的索引。若不存在,将当前元素和其索引存入 `map`。若遍历完数组未找到,返回空数组。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。
2025-01-19 20:21:37
228
原创 1343. 大小为 K 且平均值大于等于阈值的子数组数目
子数组 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分别为 4,5 和 6。其他长度为 3 的子数组的平均值都小于 4 (threshold 的值)。前 6 个长度为 3 的子数组平均值都大于 5。注意平均值不是整数。
2024-08-10 22:31:31
335
原创 1679. K 和数对的最大数目 --> 双指针解法
首先将数组排序方便采用双指针进行匹配,如果发现两个数之和大于k,则j--,否则i++,如果两数相加等于k,则两个指针同时移动,最后使用变量ans统计结果即可。Problem: 1679. K 和数对的最大数目。时间复杂度: O(nlogn)这些方法具体怎么运用?空间复杂度: O(1)
2024-07-25 11:00:08
468
原创 905. 按奇偶排序数组->双指针简单运用
4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
2024-07-22 11:21:15
315
原创 1957. 删除字符使字符串变好
从第一组 'e' 里面删除一个 'e' ,得到 "leetcode"。从第一组 'a' 里面删除一个 'a' ,得到 "aabaaaa"。从第二组 'a' 里面删除两个 'a' ,得到 "aabaa"。没有连续三个相同字符,所以返回 "leetcode"。没有连续三个相同字符,所以返回 "aabaa"。请你返回删除后的字符串。题目数据保证答案总是。没有连续三个相同字符,所以返回 "aab"。相同字符,那么它就是一个。的字符,使它变成一个。
2024-07-04 22:21:00
643
原创 2085. 统计出现过一次的公共字符串
"as" 在 words1 中出现了一次,但是在 words2 中没有出现过,不计入答案。- "is" 在两个数组中都出现过,但在 words1 中出现了 2 次,不计入答案。- "leetcode" 在两个数组中都恰好出现一次,计入答案。- "amazing" 在两个数组中都恰好出现一次,计入答案。所以,有 2 个字符串在两个数组中都恰好出现了一次。唯一在两个数组中都出现一次的字符串是 "ab"。没有字符串在两个数组中都恰好出现一次。,请你返回在两个字符串数组中。
2024-07-03 22:53:26
226
原创 2540. 最小公共值
两个数组中的公共元素是 2 和 3 ,2 是较小值,所以返回 2。两个数组的最小公共元素是 2 ,所以我们返回 2。,它们已经按非降序排序,请你返回两个数组的。如果一个整数在两个数组中都。没有公共整数,请你返回。,那么这个整数是数组。
2024-07-03 21:22:21
455
原创 1859. 将句子排序
将 s 中的单词按照初始位置排序,得到 "This1 is2 a3 sentence4" ,然后删除数字。指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。将 s 中的单词按照初始位置排序,得到 "Me1 Myself2 and3 I4" ,然后删除数字。个,请你重新构造并得到原本顺序的句子。我们可以给一个句子添加。,并且将句子中所有单词。,它包含的单词不超过。
2024-07-01 20:50:41
198
原创 2239. 找到最接近 0 的数字
1 和 -1 都是距离 0 最近的数字,所以返回较大值 1。如果有多个答案,请你返回它们中的。-4 到 0 的距离为 |-4| = 4。-2 到 0 的距离为 |-2| = 2。所以,数组中距离 0 最近的数字为 1。1 到 0 的距离为 |1| = 1。4 到 0 的距离为 |4| = 4。8 到 0 的距离为 |8| = 8。
2024-07-01 11:19:32
536
原创 2660. 保龄球游戏的获胜者
玩家 2 的分数为 is 10 + 2*10 + 2*10 + 2*10 + 2*1 + 2*1 + 1 = 75。玩家 1 的分数为 1 + 1 + 1 + 10 + 2*10 + 2*10 + 2*10 = 73。玩家 2 的分数为 8 + 10 + 2*10 + 2*2 = 42。玩家 1 的分数为 5 + 10 + 2*3 + 2*2 = 25。玩家 2 的分数为 6 + 5 + 7 + 3 = 21。玩家 1 的分数为 3 + 5 + 7 + 6 = 21。轮组成,每轮的瓶数恰好为。
2024-06-30 14:58:46
515
原创 2114. 句子中的最多单词数
第三个句子 "this is great thanks very much" 总共有 6 个单词。- 第一个句子 "alice and bob love leetcode" 总共有 5 个单词。- 第二个句子 "i think so too" 总共有 4 个单词。这个例子中,第二个句子和第三个句子(加粗斜体)有相同数目的单词数。所以,单个句子中有最多单词数的是第三个句子,总共有 6 个单词。以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。可能有多个句子有相同单词数。
2024-06-30 01:07:55
507
原创 2150. 找出数组中的所有孤独数字
10 是一个孤独数字,因为它只出现一次,并且 9 和 11 没有在 nums 中出现。- 8 是一个孤独数字,因为它只出现一次,并且 7 和 9 没有在 nums 中出现。- 1 是一个孤独数字,因为它只出现一次,并且 0 和 2 没有在 nums 中出现。- 5 是一个孤独数字,因为它只出现一次,并且 4 和 6 没有在 nums 中出现。- 5 不是一个孤独数字,因为 6 出现在 nums 中,反之亦然。因此,nums 中的孤独数字是 [1, 5]。- 3 不是一个孤独数字,因为它出现两次。
2024-06-29 12:07:56
274
原创 2535. 数组元素和与数字和的绝对差
nums 的数字和是 1 + 1 + 5 + 6 + 3 = 16。nums 的元素和是 1 + 15 + 6 + 3 = 25。nums 的元素和是 1 + 2 + 3 + 4 = 10。nums 的数字和是 1 + 2 + 3 + 4 = 10。元素和与数字和的绝对差是 |25 - 16| = 9。元素和与数字和的绝对差是 |10 - 10| = 0。
2024-06-28 20:23:35
242
原创 2215. 找出两数组的不同
由于 nums1[2] == nums1[3] ,二者的值只需要在 answer[0] 中出现一次,故 answer[0] = [3]。对于 nums1 ,nums1[1] = 2 出现在 nums2 中下标 0 处,然而 nums1[0] = 1 和 nums1[2] = 3 没有出现在 nums2 中。对于 nums2 ,nums2[0] = 2 出现在 nums1 中下标 1 处,然而 nums2[1] = 4 和 nums2[2] = 6 没有出现在 nums2 中。,请你返回一个长度为。
2024-06-28 15:01:39
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1