- 博客(33)
- 收藏
- 关注
原创 Prompt 不只是提问:大模型的“输入程序”机制解析
实际开发中,模型对输入文本的敏感度远超预期,细微的措辞变化可能引发完全不同的响应模式。这种现象源于语言模型的概率生成机制——模型并非“理解”问题,而是基于上下文概率分布生成最可能的续写。将 Prompt 视为程序代码时,其设计需遵循明确的结构化逻辑。例如,在代码生成任务中,包含技术栈声明、代码风格要求的 Prompt 比简单提问“写一个排序函数”产出更优。这种机制类似于 SQL 查询,精心设计的 Prompt 能精准“查询”模型知识库中的特定部分,而模糊提问则可能触发泛化响应。
2026-03-19 17:35:26
338
原创 大模型为什么会“忘记上下文”?从 Token 机制讲起
对于不同的场景Token其实有不同的解释,在我们平常使用大模型对话中:Token 是模型处理文本的最小单位,而不是简单的“单词”。例如一句话:可能被拆分为多个 Token:"Chat""G""PT"" is"不同模型的切分方式不同,因此 Token 数量也不同。而对于大模型应用开发工程师来说,Token是API的计费单位,通过合理控制token数量和优化分词策略,工程师能显著提升模型性能与经济效益。
2026-03-19 17:17:23
274
原创 Redis缓存预热实践
缓存预热:在系统正式对外提供服务前,提前把热点数据加载到 Redis 中。问题说明缓存冷启动Redis 里没有数据数据库瞬时高压大量请求同时查 DB接口响应变慢首次查询都走数据库雪崩风险增加热点 Key 同时过期。
2026-02-04 10:53:00
72
原创 从 ACK 到事务裁决:Spring Boot 中 RocketMQ 事务消息的完整工作机制解析
RocketMQ事务消息通过"半消息+本地事务裁决+事务回查"机制解决分布式事务问题。核心流程:生产者先发送半消息(对消费者不可见),Broker持久化后立即触发本地事务执行,生产者根据事务结果返回COMMIT/ROLLBACK裁决,Broker据此投递或删除消息。若状态未知,Broker会发起回查确保最终一致性。关键点在于事务监听器由RocketMQ客户端直接调用,而非ACK回调驱动,且建议通过Service层执行业务逻辑。该机制将消息提交决定权交给生产者,确保本地事务与消息投递的最终
2025-12-30 19:24:56
979
原创 Spring Boot 中基于线程池的订单创建并行化实践
摘要:本文针对订单创建接口在高并发场景下的性能问题,提出基于线程池和CompletableFuture的并行化解决方案。通过分析订单创建流程,将无依赖的校验任务(库存、用户、价格)并行执行,依赖任务串行处理。采用Spring管理的ThreadPoolTaskExecutor线程池(核心8/最大16线程),配合任务编排和拒绝策略实现自然限流。压测显示系统在200并发下初期RT约288ms,虽随负载上升会增至1888ms,但能保证系统稳定性。相比@Async和parallelStream,该方案更利于精细化控制
2025-12-23 23:40:06
1032
原创 从「知道死锁」到「真正理解死锁」:一次 MySQL 锁机制的学习记录
文章摘要:作者分享了对MySQL死锁机制的理解过程。从最初只能复述定义,到通过简单SQL示例和InnoDB状态分析,发现死锁本质是加锁顺序问题而非单纯的锁问题。关键认知包括:死锁源于不一致的加锁顺序形成的环形等待,数据库无法预知后续锁请求,以及通过SHOW ENGINE INNODB STATUS观察锁状态。最终收获不是解决技巧,而是形成了分析锁顺序、等待关系等核心问题的系统性思维。这是一次从现象记忆到机制理解的认知升级。
2025-12-13 19:17:32
494
原创 彻底讲清 MySQL InnoDB 锁机制:从 Record 到 Next-Key 的全景理解
MySQL性能问题多与锁机制相关。本文系统解析InnoDB三种核心锁:记录锁(精确命中唯一索引)、间隙锁(防止幻读,锁定区间)、Next-Key锁(组合锁,RR隔离级别默认方式)。通过具体SQL案例展示不同查询触发的锁类型及锁定范围,指出无索引查询会导致全表锁冲突。掌握索引与锁的对应关系,能准确判断锁范围、解释死锁原因,有效解决实际业务中的锁相关问题。
2025-12-12 21:52:21
533
原创 MySQL 深分页查询优化实践与经验总结
本文总结了企业级项目中深分页SQL查询的优化经验。针对订单表orders的深分页查询场景,分析了原始SQL的执行计划问题:使用单列索引导致额外排序(Using filesort)和大偏移量扫描效率低下。提出复合索引优化方案,创建(user_id, create_time DESC)索引同时覆盖WHERE和ORDER BY条件,大幅提升性能。进一步建议采用游标分页替代传统LIMIT OFFSET,通过记录最后一条数据的create_time作为游标,避免扫描前面大量行。实践表明,复合索引结合游标分页能实现稳定
2025-12-12 21:48:37
917
原创 线程池介绍
本文系统介绍了线程池的核心概念、实现原理及最佳实践。首先阐述了线程池的必要性,包括降低创建开销、控制并发度等优势,其本质是"线程工厂+队列系统"的组合。重点解析了ThreadPoolExecutor的核心参数与执行流程,包括线程数控制、队列选择及拒绝策略等关键机制。文章对比了不同队列类型和拒绝策略的适用场景,指出无界队列和线程数的潜在风险。最后强调了线程池监控的重要性,列举了关键指标如线程数、队列积压等异常表现及应对措施。总体而言,合理配置线程池参数、选择适当队列和拒绝策略,并建立监控机
2025-12-07 19:35:28
664
原创 Prometheus指标入门详解
本文摘要:监控系统常见指标分为counter(累积量)、gauge(实时值)、histogram(分桶统计)和summary(百分位)。CPU指标包括各状态时间统计、上下文切换和负载值;内存指标涵盖总内存、可用内存及缓存等;磁盘IO监控文件系统空间、读写吞吐量和等待时间;网络指标则关注流量、包速率、错误率和丢包情况。每个指标都配有典型计算公式和告警阈值,如CPU负载超过核数1.5倍需严重告警。通过rate()函数可将累计值转为变化率,便于实时监控系统性能。
2025-12-06 21:17:23
612
原创 数据库系统概论
摘要:本文总结了数据库系统概论的核心知识点,包括:1) 数据库基本概念(数据、数据库、DBMS、DBS);2) 数据独立性(物理独立性和逻辑独立性);3) 三大数据模型(层次、网状、关系模型);4) 三级模式结构(模式、外模式、内模式)及两级映像;5) 关系模型的核心概念(候选码、主属性等)和完整性约束;6) SQL语言分类(DDL、DQL、DML、DCL);7) 数据库安全性控制(存取控制、审计);8) 数据库设计六个阶段。重点阐述了关系模型的特性、完整性约束规则以及SQL操作语法。
2025-12-02 20:40:45
886
原创 springboot日志实现
本文分享了系统观测的实现方法,主要包括三部分:1)观测维度(事件记录、系统状态数字化、全链路追踪);2)日志配置(使用Logstash实现JSON格式日志输出);3)异常处理机制(统一响应结构、错误码枚举、全局异常处理器)。进阶部分介绍了增强日志功能(添加traceId追踪)、线程池监控等实现方案,帮助开发者全面掌握系统运行状态,快速定位问题。通过完善的观测体系,可以有效提升系统稳定性和可维护性。
2025-12-02 20:36:47
369
原创 【LeetCode 142】环形链表 II:寻找环的入口
环的入口节点:指链表中开始进入环的第一个节点。若有环,它们一定会在环内某个节点相遇。,如果链表中存在环,返回环的。141 只需要判断是否有环。它们最终会在环的入口相遇!链表头到环入口的长度为。环入口到相遇点的长度为。表示快指针多绕的圈数。给定一个链表的头节点。142 要求返回环的。一个指针从头开始走。一个指针从相遇点走。
2025-09-26 20:21:15
304
原创 【LeetCode 21】合并两个有序链表:迭代与递归的经典实现
合并两个升序链表 该算法通过归并思想实现两个升序链表的合并。使用dummy节点作为新链表头,比较两个链表当前节点的值,将较小节点接入结果链表尾部。当其中一个链表遍历完后,直接将剩余链表接到结果尾部。时间复杂度O(m+n),空间复杂度O(1),其中m、n为两链表长度。
2025-09-25 16:22:30
242
原创 【LeetCode 120】三角形最小路径和:自底向上的动态规划思路
摘要:本文介绍用动态规划解决三角形最小路径和问题。自底向上计算,定义dp[i][j]为从(i,j)到底部的最小和,转移方程为当前值加上下一层相邻节点的最小值。边界条件是最后一行等于节点值。实现时使用一维数组优化空间复杂度,从倒数第二层向上迭代更新,最终返回dp[0]即为最小路径和。
2025-09-25 12:42:20
430
原创 【LeetCode 141】环形链表:快慢指针的判圈法
如果链表中存在环,快指针最终会追上慢指针(类似于在操场跑步,快的人总能追上慢的人)。时间复杂度 O(n),空间复杂度 O(n)。指针再次到达自己,则链表中存在环。遍历链表,用哈希表存储访问过的节点。给定一个链表,判断其中是否存在环。如果某个节点再次出现,说明有环。如果某个节点可以通过连续的。缺点:需要额外空间。
2025-09-24 22:27:34
502
原创 【LeetCode 166】分数到小数:如何检测循环小数
如果某个余数重复出现,说明从这里开始进入循环。如果分子和分母异号,结果需要加上负号。给定两个整数,分别表示分数的分子。,返回该分数对应的小数字符串表示。为了避免溢出,先把分子和分母转成。,则将循环的部分用括号括起来。在结果字符串对应的位置插入。保证输出结果长度小于。
2025-09-24 16:16:52
441
原创 【ERDAS】:遥感图像增强实验
摘要:本实验通过ERDAS Imagine软件实现RGB与IHS色彩空间的正逆向变换。实验步骤包括加载多波段影像进行RGB→IHS转换(生成强度、色调、饱和度三波段),再进行逆向变换恢复RGB图像。结果显示逆向变换图像与原始图像存在合理差异,主要源于软件加权亮度计算、数据拉伸量化等处理过程。实验表明IHS变换主要用于图像增强而非严格可逆运算,建议通过直方图对比或RMSE计算量化差异。实验还提供了无拉伸处理、全色波段替换等拓展技巧,适用于遥感图像融合应用。
2025-09-23 19:59:17
705
原创 【LeetCode 54】螺旋矩阵:方向切换与边界收缩的模拟题
这是一个很直观的写法,相当于“顺时针转圈走路”。表示方向(0=右,1=下,2=左,3=上)。记录当前方向走了多少步,走满后切换方向。记录剩余的行和列,随着遍历收缩。(右 → 下 → 左 → 上)。循环直到所有元素都被访问。返回矩阵中的所有元素。每次走完一整条边后,
2025-09-19 20:43:33
172
原创 【LeetCode 73】矩阵置零:从思路到优化(java)
给定一个m * n 的矩阵,如果一个元素为。,则将其所在行和列的所有元素都设为。,记录每一行和每一列是否需要置零。这样,就能保证最终矩阵满足要求。,直接将整行替换为全 0。,就把该列所有元素置为。
2025-09-19 20:40:53
218
原创 LeetCode 238:除自身以外数组的乘积(Product of Array Except Self)
你必须编写时间复杂度为 O(n) 且不使用除法的算法。的情况下,计算每个位置的“除自身以外的乘积”。保证任何前缀或后缀的乘积都能装进 32 位整数。这道题是数组类的经典题目之一。这是一道面试高频题,能很好地检验候选人对。时间复杂度 O(n²),不符合要求。(输出数组不算额外空间)。之外其余各元素的乘积。四、代码实现(Java)
2025-09-17 16:12:22
233
原创 LeetCode 189:轮转数组(Rotate Array)
轮转数组”是数组操作中常见的一类题目,看似简单,其实隐藏了很多实现技巧。每次移动需要 O(n),总时间 O(n*k),在 k 很大时会超时。,这就限制了我们不能只用“复制数组”的简单方法。题意很直观:给定一个数组,将数组向右轮转。简单直接,但不满足 “原地修改” 的要求。每次向右移动一位,重复 k 次。时间 O(n),空间 O(n)。时间 O(n),只需常数次翻转。面试时建议优先写这个解法。空间 O(1),原地修改。这样,就得到了最终结果。对于原数组的每个元素。
2025-09-17 16:10:43
296
原创 题解:56. 合并区间
这样能保证后面的区间只可能跟前一个区间重叠,不会“跳跃重叠”。要求把所有重叠的区间合并,并返回一个。小于等于结果集最后一个区间。,能够覆盖所有输入的区间。来存放合并好的区间。否则没有重叠,直接将。中就是合并好的区间。
2025-09-15 16:02:45
181
原创 LeetCode 53:最大子数组和(Maximum Subarray)
本题是动态规划的经典模板,也是 Kadane 算法的核心应用。它的思路还可以扩展到:最大子数组乘积(LeetCode 152)二维矩阵最大子矩阵和(经典进阶题)股票买卖问题(LeetCode 121, 122, 123 等)
2025-09-13 15:50:40
459
原创 LeetCode 76:最小覆盖子串
最小覆盖子串问题要求找出字符串s中包含t所有字符的最短子串。典型解法是滑动窗口:用双指针维护窗口,右指针扩展直到满足条件,左指针收缩优化解。关键是用哈希表记录字符需求,并验证窗口有效性。时间复杂度O(n),空间O(C)。该题是滑动窗口的经典应用,类似题目包括字符串排列、字母异位词等。
2025-09-13 10:30:15
508
原创 redis内存持久化机制和淘汰策略
Redis作为内存数据库,需要持久化机制保证数据安全,并提供淘汰策略管理内存。持久化包括RDB快照(全量备份)、AOF日志(增量记录)和混合模式(结合两者优势)。淘汰策略可分为不淘汰、仅淘汰过期键和淘汰所有键三类,常用算法有LRU(最近最少使用)和LFU(最低访问频率)。生产环境推荐使用混合持久化+合适的LRU/LFU策略,在保证数据安全的同时优化内存使用。
2025-09-12 15:50:13
668
原创 NO.239:滑动窗口最大值 最蠢分享
我主要使用了一个索引值记录当前最大值的索引,如果当前最大值没有过期,则直接比较下一个新进入数组的值,如果最大值过期了则重新遍历数组获得一个最大值。整体解法比较暴力,比较有意思的是,原本是会超出时间限制的,后来小小优化了下,遍历数组的时候取最大值的最新索引,就侥幸过了。(小白刚开始刷题,没学过算法,不喜勿喷)很庆幸能做出来,这是我第一次没用ai就写出来困难的题目(虽然感觉这题没到),也很走运,一直修改原来的代码,居然最后逃过了时间限制的制裁。
2025-09-11 17:17:36
214
原创 Redis:常用模式解析
哨兵模式解决了主从模式无法自动故障转移的缺陷。部署时应保证多个哨兵实例,避免单点故障。虽然哨兵能保证高可用,但写能力仍受单 Master 限制。模式优点缺点适用场景主从模式部署简单,读写分离无法自动故障转移,写扩展性差读多写少,对高可用要求不高哨兵模式高可用,自动切换写扩展性差,依赖 Sentinel中小规模,高可用为主分片模式水平扩展,高可用部署复杂,事务受限海量数据,高并发场景。
2025-09-06 22:21:34
959
原创 springmvc学习分享
在本篇文章中将简单讲述一下springmvc中的过滤器,拦截器和异常处理。在spingmvc中,过滤器(Filter)和拦截器(Interceptor)都用于拦截请求和响应,但它们的作用和使用方式略有不同。
2024-11-28 15:22:44
1009
原创 ssm整合配置
SSM 是由三个流行的开源框架组合而成,它们分别是:Spring:一个全面的 Java 企业应用框架,提供了灵活的依赖注入(DI)和面向切面编程(AOP)功能,简化了企业应用的开发和维护。Spring 是一种轻量级的容器,能够管理 Java 对象的生命周期和依赖关系。它主要负责应用的业务逻辑和事务管理。Spring MVC:是 Spring 框架中的一个 Web 层模块,用于处理 HTTP 请求和响应。
2024-11-21 17:10:58
325
原创 springmvc学习总结
这是一篇针对于初学者学习springmvc的文章,大致介绍了springmvc框架,常用注解和参数绑定。SpringMVC是Spring框架提供针对于web开发的组件,从名字来看,显然易见我们要学习的就是MVC,那什么是MVC呢?MVC是一种软件架构的思想,全称为。它把web开发分为了三个层次,也就是Model,View,Controller,下面简单介绍一下:Model:通常指JavaBean对象或者POJO,表示应用程序的数据对象,通过Dao层和数据库进行交互来操作数据。
2024-11-19 19:54:07
753
原创 spring学习总结
Spring是一个具有IOC和AOP的框架。我对此最有体验的是spring框架的出现使得代码之间耦合性大大下降。Controller层:接受前端请求,并封装响应方法进行处理。Service层:进行业务逻辑的处理,从Dao层获取对象后在Service层进行处理。Dao层:进行数据访问,封装一些操作数据的方法。1.Controller 层位于最上层,负责处理用户请求、控制流程,并返回响应结果。它是系统和外部用户或系统(如 Web 浏览器、API 客户端)之间的桥梁。
2024-11-13 13:35:40
1087
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅