- 博客(27)
- 收藏
- 关注
原创 你熟悉多线程,请举例说明你在项目中如何正确使用线程池,以及遇到过哪些线程安全问题?
线程安全问题:多个线程同时更新同一个用户的积分余额时,会出现数据不一致。解决方案:使用AtomicInteger或ConcurrentHashMap的原子操作,或者对关键代码块加ReentrantLock。更彻底的是将更新操作放到Redis中通过Lua脚本保证原子性。在项目中,需要批量处理用户积分变动(如每日积分汇总)。我创建了自定义线程池,使用CallerRunsPolicy拒绝策略,避免任务丢失。
2026-06-28 17:06:38
185
原创 【基础算法精讲 13】二叉树的层序遍历
(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。(即逐层地,从左到右访问所有节点)。假设二叉树中至少有一个节点。
2026-06-28 17:03:23
178
原创 你在简历中写到“熟悉MySQL索引优化、慢SQL处理”,请举例说明你在项目中遇到过的一个慢查询,以及你是如何定位和解决的。
定位:开启MySQL慢查询日志,发现一条SELECT * FROM points_log WHERE user_id =?ps:ALL、index、range、ref、eq_ref、const 这几个常见 type 的优先级。type=ref 是 MySQL 执行计划里的访问类型,代表非唯一索引的等值匹配。解决:创建联合索引(user_id, create_time),并改写查询只返回必要字段(避免SELECT *)。优化后type=ref,扫描行数下降到几十行,响应时间降到50ms。
2026-06-25 20:50:13
214
原创 【基础算法精讲 12】二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
2026-06-25 20:48:12
368
原创 在项目中使用了Nutz框架,能说一下它相比MyBatis的优势和不足吗?你们为什么选它?
选型原因:当时项目组对开发周期要求紧,Nutz能快速完成CRUD,且团队成员有使用经验。后来新项目逐步迁移到MyBatis-Plus。优势:Nutz是轻量级全栈框架,Dao层无需XML配置,通过注解自动建表、支持链式查询,开发效率高。适合中小型项目快速迭代。不足:生态不如MyBatis丰富,动态SQL灵活性稍弱,社区较小。
2026-06-24 21:05:33
196
原创 【基础算法精讲 10】如何灵活运用递归?
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。输入:root = [1,2,3,null,5,null,4],编写一个函数来检验这两棵树是否相同。给定一个二叉树,判断它是否是平衡二叉树。给你两棵二叉树的根节点。给你一个二叉树的根节点。, 检查它是否轴对称。
2026-06-23 21:09:26
1126
原创 Redis除了做缓存,还能做什么?
通过 Redis 及其扩展(如 Redisson)提供的数据结构,我们可以很方便地完成很多复杂业务场景,比如通过 Bitmap 统计活跃用户、通过 Sorted Set 维护排行榜、通过 HyperLogLog 统计网站 UV 和 PV。:多个消费者可以同时处理,通过 Redis 的原子操作保证任务不被重复消费。来实现分布式限流,其底层实现就是基于 Lua 脚本+令牌桶算法。通常情况下,我们都是基于 Redisson 来实现分布式锁。:基于 Redis 持久化,任务不会丢失。score=执行时间戳。
2026-06-22 20:39:32
197
原创 【基础算法精讲 08】删除链表重复节点
注意,删除节点并不是指从内存中删除它。删除原始链表中所有重复数字的节点,只留下不同的数字。删除所有重复的元素,使每个元素只出现一次。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。,我们想删除它其中的一个节点。不是链表中的最后一个节点。给定一个已排序的链表的头。给定一个已排序的链表的头。给你一个需要删除的节点。,并且保证给定的节点。
2026-06-22 20:30:57
325
原创 MCP由哪几个部分组成?
消息格式统一用JSON-RPC2.0,传输方式支持stdio(本地子进程通信)和Streamable HTTP(远程HTTP连接)两种,早期的HTTP+SSE双端点方案在2025年3月的规范更新里被标记为 deprecated。:Host是AI应用本身(比 Claude Desktop),Client 是Host 里负责和 Server 通信的模块,Server是工具提供方实现的独立进程,一个Host可以同时连多个Server。这三层合在一起,就是MCP的完整组成。
2026-06-16 17:26:20
225
原创 【基础算法精讲 07】环形链表II
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。来表示链表尾连接到链表中的位置(索引从 0 开始)。如果链表中有某个节点,可以通过连续跟踪。,返回链表开始入环的第一个节点。,请你找出并返回链表的中间结点。仅仅是为了标识链表的实际情况。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。,判断链表中是否有环。,则在该链表中没有环。
2026-06-16 17:22:30
178
原创 前端的技术结构有哪些?
前端技术结构主要包括:基础三件套 HTML/CSS/JS,主流框架如 Vue 或 React,构建工具如 Webpack/Vite,包管理 npm/yarn,以及状态管理、路由、请求库等。它们负责模块打包、代码压缩、热更新、兼容性处理(babel)等。:除了原生 CSS,还有预处理器如 Sass/Less、以及原子化 CSS 如 Tailwind CSS,还有 CSS-in-JS 方案。:TypeScript(类型安全)、ESLint/Prettier(代码规范)、Jest/Vitest(单元测试)等。
2026-06-15 22:14:10
216
原创 【基础算法精讲 06】反转链表
是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。,请你反转链表,并返回反转后的链表。
2026-06-15 22:11:44
420
原创 AI应用八股文1
抓住一个核心词就行:「自主闭环」。我理解Agent本质上是一个能自主完成目标的AI系统,跟传统AI最核心的区别在于「自主性」和「能行动」。传统AI是你问一个问题它回答一个问题,每次都是独立的,被动响应;而Agent有自己的规划能力,你给它一个复杂目标,它会自己把任务拆成多步,通过调工具、访问记忆、感知环境来一步步执行,直到完成。它不只是输出文字,而是真的能做事。我理解这三个概念是粒度从小到大的三层结构。
2026-06-11 10:57:06
192
原创 索引失效的场景
当表数据量很小,或者查询要返回超过 20%~30% 的数据时,MySQL 可能放弃索引直接扫全表。这两种操作符通常会导致索引失效,因为范围太大,优化器可能认为全表扫描更优。如果确实需要排除少数值,可以用。两边有一个不是索引列,或者两个字段没有组合索引,可能会导致索引失效。,MySQL 会隐式地把字符串转成数字,导致索引失效。)之后的字段也会失效。所以写 SQL 时要注意顺序。无法匹配前缀,索引失效。强制使用索引,但最好还是从业务角度优化查询。,这会导致索引失效。类型,但传入的是数值,比如。
2026-06-11 10:51:49
188
原创 面试算法题:给你两根不均匀的绳子,每根烧完需1小时,如何测出45分钟?
这个思路的关键是利用两端同时点燃来获得一半的时间,然后错时点燃来得到四分之一的时间。
2026-06-10 16:12:31
226
原创 AI Coding 笔试:思路 + 提示词
目标:不写代码,先让 AI 帮你理解题目、明确交付物、硬约束、风险点。提示词先不要写代码,也不要给实现方案。请根据我提供的题目(见 requirements.md),把任务整理成一份可执行的问题定义。
2026-06-10 16:09:11
3726
原创 解决springcloud的跨域问题
spring: gateway: routes: - id: admin_route uri: lb://renren-fast predicates: - Path=/api/** filters: - RewritePath=/api/?(?<segment>.*), /renren-fast/$\{segment} #以下为 跨域配置 default.
2022-01-21 21:42:30
507
原创 服务熔断和服务降级的区别
1.服务降级:不管在什么情况下,服务降级的流程都是先调用正常的方法,再调用fallback的方法。2.服务熔断:假设服务宕机或者在单位时间内调用服务失败的次数过多,即服务降级的次数太多,那么则服务熔断。 并且熔断以后会跳过正常的方法,会直接调用fallback方法,即所谓“服务熔断后不可用”。...
2022-01-04 19:48:32
11843
1
原创 导出文件时,报错:java.lang.NoClassDefFoundError: XXX InputStreamStatistics
原因:1.org.apache.commons依赖版本低,换成相应的高版本即可<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.19</version></dependency>2.没有导入此依赖,需要导入org.
2021-12-24 09:24:15
1117
原创 The dependencies of some of the beans in the application context form a cycle(重复注入自身的接口)
这是因为在当前的类中,仍然还注入本类的接口。所以去掉就行
2021-12-23 16:19:25
304
原创 MyBatis-Plus updateById方法的更新不了字段为NULL的数据
因为MyBatis-Plus updateById方法的更新策略默认为 DEFAULT解决方式:1.全局配置(application.yml)mybatis-plus: global-config: db-config: update-strategy: ignored2.在实体类中,属性值上加上注解(最好点击源码进行查看)@TableField(updateStrategy = FieldStrategy.IGNORED)private Long p
2021-12-22 17:05:15
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅