logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

ArrayList扩容机制深度解析(附时序图详细讲解)

ArrayList底层采用动态数组实现,默认初始容量为10。扩容机制核心流程:当添加元素时检测容量不足,会按1.5倍(原容量+原容量/2)进行扩容,首次扩容会直接设为10。扩容过程通过Arrays.copyOf()复制元素到新数组,时间复杂度O(n)。关键点包括:使用modCount实现fail-fast机制,空数组首次扩容直接到10,批量添加时若1.5倍仍不足则直接采用所需容量。建议预估容量以避

文章图片
#数据结构#数据库#windows +3
千问点奶茶活动故障启示:AI Agent 从实验室到生产级,只差一套高并发重构方案

阿里千问APP"春节30亿免单"活动因80万QPS流量峰值导致系统崩溃,暴露了AI系统从工具转向服务入口时的工程化短板。故障源于五层架构全链路失效:流量预判不足、分层瓶颈叠加、AI与业务强耦合、跨平台风险无预案、应急能力缺失。重构方案采用"五层架构"设计:1)接入层智能调度;2)业务层微服务解耦;3)AI推理资源池化;4)数据层多级缓存;5)容灾层主动防御。

文章图片
#服务器#后端#人工智能
从零起步学习AI大模型应用开发 || 第一章:AI应用开发核心技术栈全解析(从工具调用到智能Agent)

本文系统梳理了AI应用开发的6大核心技术:1. Prompt Engineering作为底层基础,通过结构化提示词精准引导LLM;2. FunctionCall和MCP实现LLM与外部系统的工具调用;3. RAG技术结合向量数据库解决知识时效性和幻觉问题;4. Agent框架集成各项技术,实现复杂任务的自主执行。文章以Java开发者视角,详细阐述了每项技术的定义、作用、实现方式及相互关系,构建了从

文章图片
#人工智能#数据库#java +1
一文详解 LangChain4j AiServices:自动代理实现大模型交互

LangChain4j的AiServices通过动态代理简化大模型交互,开发者只需定义接口(如@AiService标记的Assistant)并配置模型(如QwenChatModel),即可实现自动消息转换。传统方式需手动处理UserMessage/AiMessage等复杂数据结构,而AiServices代理能自动完成输入输出转换,减少60%代码量,支持无缝切换模型。该方案提供类型安全、扩展灵活的A

#语言模型#人工智能#微服务 +2
Java微服务AI集成指南:LangChain4j vs SpringAI

本文对比了Java生态中两大AI集成框架LangChain4j与SpringAI的技术特点。LangChain4j作为轻量级框架,通过模块化设计和@AiService注解实现快速多模型接入;而SpringAI作为企业级解决方案,提供统一抽象层和结构化输出等特性。实战部分分别演示了二者集成OpenAI的步骤,并指出:轻量级应用适合LangChain4j,复杂系统推荐SpringAI。文章预测未来两大

#人工智能#开发语言#后端 +2
从零起步学习MySQL || 第十一章:MySQL中常见的索引失效情况原因分析及解决方案

MySQL索引失效常见场景包括:左模糊查询(LIKE '%x')、索引列使用函数/表达式、隐式类型转换、违反联合索引最左前缀原则、WHERE中使用OR连接条件等。根本原因是这些操作破坏了B+树索引的有序性,导致无法使用索引定位数据。解决方法包括:避免前导%模糊查询、使用生成列、保证类型一致、合理设计联合索引、将OR改写为UNION等。通过EXPLAIN可检测索引使用情况,重点关注type、key和

文章图片
#mysql#数据库#后端 +2
从零起步学习MySQL || 第八章:索引深入理解及高级运用(结合常见优化问题讲解)

数据库索引优化指南 索引是提高查询效率的"目录",但不当使用会降低性能。适用场景:主键、查询条件列(WHERE)、排序(ORDER BY)、分组(GROUP BY)、连接(JOIN)字段。避免索引:小表、高频更新、低区分度(如性别)、未参与查询的列。 优化技巧: 前缀索引:对长字符串取前N字符(如email(10)),节省空间。 覆盖索引:查询字段全在索引中,避免回表(如SEL

文章图片
#mysql#数据库#后端 +2
从零起步学习MySQL || 第八章:索引深入理解及高级运用(结合常见优化问题讲解)

数据库索引优化指南 索引是提高查询效率的"目录",但不当使用会降低性能。适用场景:主键、查询条件列(WHERE)、排序(ORDER BY)、分组(GROUP BY)、连接(JOIN)字段。避免索引:小表、高频更新、低区分度(如性别)、未参与查询的列。 优化技巧: 前缀索引:对长字符串取前N字符(如email(10)),节省空间。 覆盖索引:查询字段全在索引中,避免回表(如SEL

文章图片
#mysql#数据库#后端 +2
Java线程中的sleep、wait和block:区别与联系详解

Java多线程中sleep()、wait()和阻塞的区别:1) sleep()是Thread类方法,不释放锁,线程进入TIMED_WAITING状态;2) wait()是Object方法,必须在同步块调用,会释放锁,线程进入WAITING/TIMED_WAITING状态;3) 阻塞(BLOCKED)是被动状态,发生在竞争同步锁失败时。关键区别在于锁的行为和线程状态变化,sleep()持锁休眠,wa

#java#开发语言#后端 +1
Java并发编程:sleep()与wait()核心区别详解

文章摘要:本文详细对比了Java并发编程中sleep()和wait()方法的区别。主要差异包括:sleep()是Thread类静态方法,不释放锁;wait()是Object类实例方法,会释放对象锁。sleep()自动唤醒,wait()需notify()/notifyAll()唤醒。wait()必须在同步块中使用,sleep()则无此限制。文章通过代码示例展示了两种方法在独占锁和线程协作场景下的不同

#java#开发语言#数据结构 +1
    共 14 条
  • 1
  • 2
  • 请选择