- 博客(142)
- 收藏
- 关注

原创 CodeTop 100
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是
2024-02-21 21:56:24
1275
原创 响应式编程:SubmissionPublisher的使用
是 Java 9 引入的响应式编程 API()的核心实现类,它实现了接口,提供了发布元素给多个订阅者的能力,基于和,是响应式编程的基础组件。
2025-06-03 13:30:44
304
原创 Java 8+ 内置函数式接口:从入门到精通
Java 8函数式接口是函数式编程的核心组成部分,包含四大核心接口:Consumer消费型接口用于执行操作无返回值、Supplier供给型接口用于生成值、Function函数型接口用于转换数据类型、Predicate断言型接口用于条件判断。这些接口支持lambda表达式和方法引用,通过@FunctionalInterface注解标识,可应用于集合遍历、对象创建、类型转换等场景,显著提升代码简洁性和可读性。文章详细解析了每个接口的基本用法、链式调用和实际应用案例,展现了Java函数式编程的现代特性。
2025-06-03 12:15:56
748
原创 Spring Boot中WebSocket从入门到精通:常用方法详解
WebSocket是一种网络通信协议,于2011年被IETF定为标准RFC 6455,并被HTML5所支持。与HTTP协议不同,WebSocket在建立连接后,通信双方可以随时主动发送和接收数据,无需像HTTP那样每次通信都要建立新的连接,从而减少了开销,提高了实时性。本文从WebSocket的基础概念出发,详细介绍了Spring Boot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消息收发、点对点消息发送、消息拦截与认证,以及不使用接口而是基于注解的WebSocket实现方式。
2025-06-03 12:11:08
441
原创 ElasticSearch简称ES基础语法使用大全
本文介绍了Elasticsearch的常用操作,包括查询、修改和新增三个部分。查询部分详细讲解了匹配查询、精确匹配、空值查询、多条件组合、范围查询、前缀/通配符/正则查询、模糊查询和ID查询等9种查询方式,提供对应语法示例。修改部分涵盖按ID修改、条件修改、字段增减和计数器原子操作等5种更新方法。新增部分包含单文档添加、批量导入和自动ID生成3种数据插入方式。全文通过具体JSON语法示例,系统展示了Elasticsearch的核心数据操作功能,可作为快速查阅参考手册。
2025-05-27 10:07:00
895
原创 Spring AI整合MCP:构建智能多云应用的全解析
在企业数字化转型中,多云战略与人工智能技术的结合为应用提供了更强大的智能决策能力。本文探讨了如何将Spring AI与多云编排平台(MCP)整合,构建智能、灵活且可扩展的多云应用架构。Spring AI简化了大语言模型与Spring应用的集成,而MCP则用于协调跨多个云服务提供商的资源管理。通过整合,企业可以实现智能资源调度、故障恢复、成本优化和安全增强。文章详细介绍了整合架构设计,包括分层架构和关键组件,并提供了Spring AI与阿里云ACK Multi-Cluster的实战整合示例,展示了如何通过AI
2025-05-22 15:59:42
94
原创 SpringBoot集成LangChain4j:构建智能AI应用全解析
本文介绍了如何将大语言模型(LLM)能力集成到企业级Java应用中,重点探讨了LangChain4j与SpringBoot的结合。LangChain4j是一个专为Java设计的开源框架,提供了链式调用、工具集成、记忆管理、向量存储和函数调用等核心功能,简化了LLM与Java应用的集成。SpringBoot则提供了企业级支持,简化开发流程,并与Java生态系统无缝兼容。文章从基础概念入手,详细讲解了如何快速构建一个集成LLM的SpringBoot应用,包括添加依赖、配置API密钥、创建智能服务接口和REST控
2025-05-22 15:56:44
209
原创 Spring AI从入门到精通:构建智能Spring应用的全面指南
随着人工智能技术的快速发展,将大语言模型(LLM)与企业应用集成已成为趋势。Spring AI作为Spring官方推出的AI集成框架,为开发者提供了便捷、标准化的方式来构建智能应用。本文将从基础概念到高级应用,全面介绍Spring AI的核心功能与实践技巧。Spring AI 是 VMware 于 2023 年推出的开源框架,旨在简化大语言模型(LLM)与 Spring 应用的集成。它提供了统一的 API 抽象,支持多种 LLM 供应商,包括 OpenAI、Azure OpenAI、Hugging Face
2025-05-22 15:52:16
251
原创 Spring Boot与Record:简化数据模型的完美组合
Record 是 Java 14 引入的一种特殊类,用于表示不可变的数据载体。它是一种声明式所有字段的私有 final 属性匹配字段的规范构造函数所有字段的访问器方法(getterequals()hashCode()和toString()方法// 实体类// DTO虽然 Record 是不可变的,但可以添加额外的方法和构造函数。// 计算面积的方法// 自定义构造函数throw new IllegalArgumentException("宽和高必须为正数");
2025-05-22 15:00:02
648
原创 Spring WebClient实现多LLM接口智能切换:保障AI服务高可用
本文基于Spring WebClient实现了多个LLM接口的智能切换,有效提升了AI服务的可用性。通过合理运用WebClient的响应式特性与重试机制,结合清晰的接口切换逻辑,能够在复杂网络环境下保障服务的连续性。在实际应用中,可根据具体需求进一步优化认证管理、日志监控等功能,让多LLM接口切换方案更加完善和健壮。希望本文能为从事AI应用开发的开发者提供有益参考,若在实践过程中有任何疑问或新的想法,欢迎在评论区交流讨论!
2025-05-22 13:50:32
928
原创 Spring WebClient 完全指南:从入门到精通
非阻塞与响应式:基于 Reactor 框架,支持异步非阻塞 I/O,适合高并发场景函数式 API:提供流畅的链式调用,代码更简洁易读支持多种 HTTP 客户端:可基于 Reactor Netty、Apache HttpClient 等不同底层实现与 Spring 生态深度集成:无缝集成 Spring Security、Spring Cloud 等Spring WebClient 作为现代响应式 HTTP 客户端,为微服务通信提供了高效、灵活的解决方案。
2025-05-22 13:34:22
690
原创 Spring Boot 集成 Reactor:实现响应式流式输出
Reactor 是 Pivotal 开发的基于 Reactive Streams 规范的响应式编程库,是 Spring WebFlux 的核心依赖。Flux:表示 0…N 个元素的异步序列Mono:表示 0…1 个元素的异步序列Server-Sent Events(SSE)是一种允许服务器主动向客户端发送实时更新的 Web 标准。与 WebSocket 不同,SSE 是单向通信,更适合服务器主动推送场景。Sinks.Many:用于生成 Flux 流Sinks.One:用于生成 Mono 流。
2025-05-21 11:20:12
775
原创 深入探索 Reactor 中的 Flux:构建响应式数据流的基石
Flux是 Reactor 框架中用于表示异步数据流的核心类,它可以发送 0 到多个元素,并且支持发送完成信号和错误信号。与传统的集合不同,Flux是惰性求值的,只有当有订阅者订阅时,数据流才会开始执行,这种特性使得它在处理大量数据和异步操作时具有高效性和低资源消耗的优势。同时,Flux遵循响应式流规范,能够很好地处理背压(Backpressure)问题,确保上下游处理速度不一致时,数据不会丢失或堆积,从而保证系统的稳定性。Flux。
2025-05-21 11:09:20
637
原创 深入理解 Reactor 中的 Sink:构建响应式数据流的关键
Sink是 Reactor 框架中用于向响应式流(Flux或Mono)推送元素、错误或完成信号的接口。它就像是数据流的“源头”,开发者可以通过它主动控制流的内容和状态。根据不同的使用场景,Reactor 提供了多种类型的Sink,主要包括Many和OneMany类型:适用于向Flux推送多个元素,支持多订阅者场景,例如Sinks.Many。One类型:用于向Mono推送单个元素、错误或完成信号,对应Sinks.One。Sink。
2025-05-21 11:02:47
490
原创 Spring Boot中使用Redisson实现分布式锁切面
本文介绍了如何在Spring Boot项目中使用Redisson实现分布式锁切面。首先,通过引入Redisson依赖并配置Redis连接信息,确保项目能够与Redis进行交互。接着,自定义@DistributedLock注解,用于标识需要加锁的方法,并配置锁的前缀、SpEL表达式、等待时间、释放时间等属性。最后,通过实现DistributedLockAspect切面类,利用Redisson的RLock接口实现分布式锁的获取与释放逻辑。该切面类通过解析SpEL表达式动态生成锁的key,并在方法执行前后自动加锁
2025-05-21 10:44:25
439
原创 C盘空间清理大全
当C盘空间不足时,系统化清理方案可有效释放空间。快速清理包括使用磁盘清理工具、删除临时文件、压缩休眠文件,通常可释放5-20GB。深度清理则通过识别大文件、清理系统保留空间、转移虚拟内存和卸载无用软件,针对性释放更大空间。专业级清理涉及禁用系统还原点、清理WinSxS文件夹和压缩系统文件,但需谨慎操作。长期管理策略包括更改默认存储位置、使用符号链接转移文件夹和设置自动清理规则。注意事项提醒避免删除关键系统文件,并建议操作前创建系统还原点。综合上述步骤,通常可释放20-50GB空间,若仍不足,可考虑扩容SSD
2025-05-14 21:57:18
677
原创 Linux grep命令多条件查询
grep 命令支持通过多种方式实现“与”(AND)和“或”(OR)的逻辑查询。对于“或”查询,可以使用 \| 或 -E 选项,如 grep -E 'error|warning' file.txt。对于“与”查询,可以通过管道串联多个 grep 命令,如 grep 'error' file.txt | grep 'failed'。还可以结合“与”和“或”逻辑,如 grep -E 'error|warning' file.txt | grep -E 'failed|critical'。此外,grep 提供了 -
2025-05-14 17:26:43
398
原创 如何进行SQL调优?
每个优化场景都需要结合具体的执行计划分析、业务特点和数据库监控数据来制定最合适的方案。建议建立完善的SQL审核机制和性能监控体系,实现持续优化。:适当反范式化减少JOIN。:对索引列使用函数或运算。严格避免SELECT *:对复杂JOIN先过滤。:对LOB字段单独查询。:将大字段拆分到单独表。:确保小表作为驱动表。
2025-04-25 14:51:58
584
原创 如果让你实现一个RPC框架,你会考虑哪些方面?
设计一个生产级RPC框架需要权衡性能、易用性和扩展性,建议参考成熟框架(Dubbo/gRPC/Thrift)的设计理念,根据实际业务需求进行裁剪和扩展。
2025-04-25 14:40:45
837
原创 如何实现查找”附近的人“的功能?
选择方案时应考虑:用户规模、精度要求、实时性需求和团队技术栈。对于大多数社交应用,Redis GEO方案已经足够。将二维经纬度编码为一维字符串,前缀匹配越多的位置越近。
2025-04-25 14:38:11
319
原创 如何使用Redis实现排行榜?(含同分按时间排序)
Redis的ZSET(有序集合)是实现排行榜的理想数据结构,但当分数相同时,默认会按字典序排序。要实现同分按时间排序,需要特殊设计。
2025-04-25 14:35:30
422
原创 库存扣减怎么防止超卖和少卖?
库存管理是电商和零售系统的核心问题之一,超卖(卖出的数量超过实际库存)和少卖(实际有库存但未能卖出)都会带来严重问题。
2025-04-25 14:22:37
447
原创 springboot 结合ES实现向量化存储与检索
核心组件Spring Boot:提供应用框架和 REST APIElasticsearch:存储向量数据和执行相似性搜索Spring Data Elasticsearch:简化 ES 操作向量模型:Sentence-BERT、OpenAI embeddings 等什么是BERT?实现功能文本向量化存储向量相似性搜索混合搜索(结合关键词和向量)
2025-04-23 13:33:59
924
原创 什么是transformer?
Transformer 是一种完全基于注意力机制自注意力(Self-Attention)机制:动态计算序列中所有元素间的关系并行化处理:摆脱了RNN的时序依赖,可并行计算位置编码(Positional Encoding):通过数学方法注入位置信息。
2025-04-23 13:32:22
1041
原创 Spring Boot 结合 Flink 实现风控监测
数据采集层:收集用户行为数据实时处理层:Flink 进行实时计算和分析规则管理层:Spring Boot 提供规则配置和管理告警与响应层:对风险事件进行告警和处理风控规则有哪些?// 用户行为事件@Data// 用户ID// 事件类型:登录、支付、浏览等// 事件时间戳// IP地址// 设备ID// 其他信息// 风险检测结果@Data// 触发规则ID// 规则名称// 风险等级// 风险描述// 检测时间。
2025-04-23 13:07:58
1162
原创 如何设计一个秒杀系统?
设计一个高并发、高可用的秒杀系统需要从架构设计、性能优化和异常防护三个维度综合考虑。系统采用分层架构,包括CDN静态化、API网关、秒杀服务集群、Redis集群、MQ削峰和订单服务等核心模块,确保百万级QPS的处理能力。库存管理通过预热、预扣和异步落库机制防止超卖。流量控制采用分层限流和请求合法性校验,保护系统不被恶意请求拖垮。订单创建通过异步化和分库分表策略提高性能。容灾与降级策略包括熔断、降级和数据恢复,确保系统在异常情况下的可用性。监控体系通过核心监控项和全链路压测,实时掌握系统状态。技术选型建议包括
2025-04-22 22:01:55
1072
原创 如何设计一个购物车功能?
中小应用:Redis + MySQL双写中大型电商:分片Redis + 异步MQ落库 + 本地缓存国际化平台:多Region Redis + 数据同步服务通过以上设计,可支持日均千万级购物车操作,保证99.95%的可用性。实际开发中需根据业务特点调整存储策略和一致性级别。
2025-04-21 19:04:49
912
原创 如何设计一个订单号生成服务?
设计一个高效的订单号生成服务需要满足唯一性、可扩展性、可读性和高性能等核心需求。基础设计原则包括全局唯一、趋势递增、可读性、高性能和安全性。经典方案对比中,数据库自增ID存在性能瓶颈,UUID无序且可读性差,雪花算法(Snowflake)因其有序、高性能和可扩展性被推荐,而分段缓存(Leaf-Segment)通过预分配ID段减少数据库交互。生产级方案设计中,订单号通常由业务类型、时间、机器ID、序列号和校验位组成,结合分布式实现和容灾设计,确保系统稳定。性能优化包括本地缓冲和多级缓存,业务适配案例涵盖电商订
2025-04-21 18:33:24
1028
原创 如果你的接口突然提升了100倍QPS,你会怎么做?
当接口QPS突然提升100倍时,系统可能面临崩溃风险。以下是分阶段的应对策略: 紧急止血(5分钟内):立即启用限流(如Guava RateLimiter或Redis+Lua),降级非核心功能(如关闭日志记录或返回缓存数据),并快速扩容(如Kubernetes紧急扩容Pod)。 系统诊断(30分钟内):使用工具(如top、jstack、slowlog)定位瓶颈,分析关键指标(如CPU使用率、数据库连接池等待、Full GC频率),并通过日志与链路追踪筛选高频请求。 性能优化(1~24小时):优化缓存(如Caf
2025-04-21 18:30:12
676
原创 每天100w次登录请求,4核8G的机器怎么做JVM调优
在4核8G的机器上,针对每天100万次登录请求(峰值50~100次/秒)的场景,JVM调优需平衡吞吐量、延迟和内存占用。建议堆内存设为4GB,新生代1.5GB,使用G1垃圾回收器,目标暂停时间200ms,并限制线程栈大小以减少内存占用。优化对象分配速率,调整Young区比例,监控Full GC频率,避免老年代溢出。使用工具如jstat、Grafana等监控JVM性能,确保Young GC频率≤5次/分钟,Full GC频率≤1次/天。特殊优化包括缩短Session超时、静态化密码加密实例、缓存验证码到Red
2025-04-21 18:12:52
897
原创 设计原则有哪些?
设计原则是软件开发和系统设计中的核心指导思想,用于提高代码的可维护性、可扩展性、复用性和灵活性。:根据具体问题权衡原则(如性能 vs 可维护性),避免教条化。
2025-04-20 15:44:09
887
原创 Rocketmq timer实现延时消息的原理?
通过这种设计,RocketMQ 在保证高性能的同时,实现了可靠的延时消息投递。如需进一步分析源码细节(如时间轮扫描的并发控制),可以深入。表示延时 1s),RocketMQ 不会立即将消息写入目标 Topic,而是先存入。通过时间轮算法检查消息是否到期,到期后重新投递到目标 Topic。的机制,将消息暂存并在指定时间后投递。RocketMQ 实现延时消息的核心原理是通过。发送消息(delayLevel=3,即10s)消费者从目标 Topic 获取已到期的消息。(内部 Topic)。3. 定时扫描发现到期。
2025-04-17 10:10:59
760
原创 undo log、redo log和binlog
在数据库系统中,和是三种核心日志,分别服务于不同功能。fill:#333;执行UPDATE(修改数据页)记录旧值(事务开始前)记录数据页变更(事务执行中)提交事务后写入逻辑操作崩溃恢复时重放回滚时恢复旧值。
2025-04-16 22:35:15
1027
现代贪吃蛇游戏:HTML5 + Tailwind CSS 实现
2025-05-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人