自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

落地

学习总结,经验分享。

  • 博客(235)
  • 资源 (19)
  • 问答 (1)
  • 收藏
  • 关注

原创 从 AI 大模型流式输出说起:一篇彻底搞懂 SSE

基于 HTTP。GET就可以工作。SSE 是一种基于 HTTP 的服务端事件流机制:客户端建立连接后,服务器可以在同一 HTTP 响应中持续向客户端发送文本事件。普通 HTTP:请求 → 响应 → 结束SSE:请求 → 响应开始 → 数据 → 数据 → 数据 → …… → 结束User↓LLM↓Token↓SSE↓Browser↓实时渲染所以 SSE 并不是因为 AI 出现才诞生的技术。SSE 早就存在,只是 AI 大模型的流式输出,让它重新成为了非常重要的基础设施能力。

2026-09-13 15:00:00 173

原创 Java 版本演进

当前企业 Java 技术选型趋势:Java 8 继续维护存量业务,Java 21 成为新一代 Spring Boot 应用的推荐基线。对于新项目,直接选择 Java 21 + Spring Boot 3.x,可以减少未来再次升级成本。

2026-08-01 23:00:00 342

原创 Eclipse Temurin:企业级 Java JDK 发行版的最佳实践

Eclipse Temurin = 企业可直接使用的 OpenJDK 发行版。是一套成熟、稳定、低成本的生产技术组合。

2026-08-01 21:15:00 471

原创 AI Agent 幻觉问题的工程化解决方案

幻觉(Hallucination)是指大语言模型生成看似合理但实际错误的内容。它的危险之处在于:模型会用非常自信的语气,陈述完全错误的事实。│ Layer 1: Prompt 约束 │ ← 最简单,效果中等│ - 明确要求"不知道时说不知道" ││ - 要求标注信息来源 │↓│ Layer 2: RAG + 工具约束 │ ← 效果显著│ - 强制基于文档/数据回答 ││ - 禁止凭空生成事实 │↓│ Layer 3: 多 Agent 验证 │ ← 高可靠性场景。

2026-06-14 11:08:27 542

原创 从 Go Agent 实战到 Spring AI:Java 工程师的知识迁移指南

Go 手写代码 → 理解"第一性原理"Spring AI → 工程化"快速落地"比喻:├── Go 代码 = 手动挡汽车(理解每个齿轮)├── Spring AI = 自动挡汽车(踩油门就走)└── 学原理 = 遇到故障能自己修。

2026-06-13 23:08:18 420

原创 LLM-based Planning:从后端视角理解 Agent 规划层

Planning = 业务流程编排层,以前程序员写死if-else,现在 LLM 动态生成执行计划。维度说明本质业务流程编排层,动态生成执行计划实现ReAct 循环(Thought → Action → Observation)关键上下文传递,每步决策都能看到历史结果价值流程动态调整,无需写死所有分支后端类比Service 编排层,但由 LLM 动态决策Planning 让 Agent 从"执行固定流程"进化为"动态规划路径",是 Agent 自主性的核心来源。

2026-06-02 22:23:19 327

原创 SQLite 核心实战:后端工程师视角

SQLite = 零配置的单文件嵌入式数据库,适合小型应用、移动端、本地缓存。

2026-06-01 22:38:54 433

原创 RAG 核心实战:检索增强生成

RAG(检索增强生成)是一种结合向量搜索、Prompt拼接和LLM生成的技术方案,让大语言模型能够基于私有数据回答问题。其核心流程分为离线索引(文档分块、向量嵌入存储)和在线问答(问题检索、Prompt构建、LLM生成)两个阶段。文档分块策略(按段落/标题/业务规则)直接影响检索效果,需平衡语义完整性与检索精度。典型应用场景包括差标查询、机票规则问答等业务场景,通过混合检索(向量+关键词)和元数据过滤提升准确性。实现时需考虑分块优化、LLM选型及错误处理,最终构建可解释、可追溯的智能问答系统。

2026-05-31 22:37:02 297

原创 从后端视角理解 Agent 三层记忆系统

短期记忆 = 当前对话上下文(几秒~几分钟)中期记忆 = 会话行为记录(几天~几周)长期记忆 = 用户画像偏好(永久)

2026-05-29 02:00:00 391

原创 从后端视角彻底理解 MCP:别再把 Tool 和 MCP 搞混了

/ JSON-RPC 请求 - 协议层不关心业务JSONRPC string `json:"jsonrpc"` // 协议版本,固定 "2.0"ID interface{} `json:"id,omitempty"` // 请求ID,用于匹配响应Method string `json:"method"` // 方法名,如 "tools/call"Params interface{} `json:"params,omitempty"` // 参数,由具体方法解析// JSON-RPC 响应。

2026-05-27 21:15:18 794

原创 用 Tool Calling 构建智能机票查询 Agent

后端需要预先定义可供 LLM 调用的工具,告诉 LLM“你有这些工具可以用”。// ===== Define Tool Interface(定义工具接口)=====// ToolInterface(工具接口):所有工具必须实现这些方法Name() string // Tool name(工具名称)Description() string // Tool description(工具描述)

2026-05-25 22:34:57 459

原创 ReAct Agent 让厨师教你写

Thought = LLM 思考「下一步做什么」Action = 工具执行「实际去做事」Observation = 结果反馈「做得怎么样」循环直到完成后端实现要点:工具注册表:统一管理所有工具及其参数定义Prompt 模板:引导 LLM 输出结构化 ThoughtLLM 调用层:调用 API,解析多种响应格式循环控制器:管理状态、终止条件、错误处理先想清楚要做什么(Thought)再动手去做(Action)看看做得怎么样(Observation)想想下一步做什么(循环)

2026-05-25 21:18:35 351

原创 从后端角度理解 AI Agent:理论 + Go 实战(附 MCP 服务器实现)

AI Agent = LLM(推理)+ 状态机(控制)+ 工具系统(执行)+ 记忆系统(上下文)一句话总结Agent 是一个"会用工具的循环推理系统"AI Agent 不是一个新技术,而是LLM(智能)+ 软件工程(控制)+ 系统设计(扩展)把"不稳定的 AI"变成"稳定可控的系统"并发能力强:天然适合多工具并行执行部署简单:单二进制文件,无需运行时性能优异:低延迟,高吞吐生态成熟:HTTP/JSON/数据库客户端完善。

2026-05-19 22:48:39 727

原创 Go 开发环境 安装

用系统包管理器把 Go 工具链下载安装到本机,并自动配置可执行环境路径。问题:您所在区域可能需要GOPROXY 才能正确集成 Go 模块。根据提示配置go支持和编辑器配置。2️⃣ install 是什么。⚙️ 执行全过程(真实流程)👉 动作:安装流程自动化。3️⃣ go 是什么。

2026-05-18 22:15:23 471

原创 前端发布流程总结(Vue + Element 项目)

本文介绍了一个基于Vue3和ElementPlus的前端自动化部署方案。项目通过自定义Node脚本实现SFTP自动化部署,提供开发环境(release-dev)和生产环境(release-prod)两种发布模式。开发环境采用直接覆盖方式,生产环境则先备份旧版本再部署新版本。文章详细说明了构建流程、部署脚本功能、环境变量管理注意事项,并提出了标准发布流程和回滚方案。最后指出了后续优化方向,包括引入CI/CD、环境变量管理、版本号发布等进阶功能。该方案实现了前端打包与服务器部署的自动化,提高了发布效率和安全性。

2026-05-18 21:58:16 456

原创 从后端视角学习 Vue3:核心知识与数据流实践

Vue3 核心机制(响应式、组件)路由与状态管理标准数据流(Component → Store → Service → API)前后端链路理解。

2026-05-17 22:19:19 373

原创 Go(也叫 Golang)

Go是一门专注于高并发后端开发的编译型语言,兼具简单性、高性能和易部署特点。核心语法包括包管理、函数定义和变量声明,关键数据结构有slice、map和struct。其核心竞争力在于goroutine轻量级并发和channel通信机制。开发Web服务可使用原生net/http或Gin框架,后者提供路由管理、参数解析和中间件支持。数据库操作推荐GORM框架,错误处理采用显式检查模式。典型项目结构分层清晰,适合构建API服务、高并发接口和微服务。Go语言通过精简的语法(struct+goroutine+Web服务

2026-05-17 11:00:00 444

原创 Arthas:Java生产环境问题排查利器,从入门到实战

Arthas的强大之处在于,它几乎可以解决你在生产环境中遇到的所有Java问题,从CPU飙升、内存泄漏到慢调用、死锁。掌握它,将极大提升你的线上问题排查效率。希望这篇文章能帮助你快速上手Arthas。如果你有任何问题或更好的使用技巧,欢迎在评论区留言交流!

2026-05-16 22:30:00 789

原创 Java 实现井字棋(Tic-Tac-Toe)

一个简单的井字棋游戏实现。使用3x3二维数组表示棋盘,通过枚举类型Result定义游戏状态(WIN胜利、CONTINUE继续、DRAW平局、ERROR错误)。核心方法placeMark包含边界检查、棋子占用判断、胜负条件判断等功能,确保游戏逻辑正确性和安全性。代码采用空指针安全设计,胜负判断清晰直观,并提供了基础测试用例。该实现结构清晰,易于扩展,可作为小型棋盘游戏的开发参考。

2025-09-12 00:29:27 532

原创 字符串大数相加:从初稿到优化的思路演进

字符串大数相加的优化实现过程。核心思路是模拟竖式加法:从字符串尾部开始遍历,处理每位相加和进位。关键点包括:1)正确处理字符到数字的转换('0'~'9'需减去'0');2)处理不同长度数字(短数补0);3)进位处理(sum%10和sum/10);4)最后反转结果。文中提供了Java实现代码,并特别提醒了字符转数字的常见错误。作者强调面试中解决问题的思路比完美代码更重要,需要展现出改进问题的能力。

2025-09-11 22:29:44 394

原创 遇到 Dubbo 和 Spring Cloud怎么选?

Dubbo与Spring Cloud是企业级分布式系统的两大主流方案,但定位不同。Dubbo专注于高性能RPC调用和基础服务治理,采用二进制协议,适合内网高并发场景;Spring Cloud提供完整的微服务生态,支持HTTP/REST跨语言调用,适合快速落地微服务。Dubbo强调CP特性,适合金融等高一致性场景;Spring Cloud偏向AP特性,适合互联网高可用需求。实际应用中,可混合使用:Dubbo处理内部高性能调用,Spring Cloud管理网关等外部服务。选型需结合性能要求、技术栈和业务场景。

2025-09-10 00:28:13 878

原创 【分布式架构】Dubbo是什么?能做什么?

Dubbo是阿里巴巴开源的高性能Java RPC分布式服务框架,现由Apache基金会维护。它专为分布式/微服务系统设计,提供远程服务调用、负载均衡和服务治理等核心功能。其特点包括:基于NIO的高效通信、多种序列化支持、软负载均衡策略(随机+权重)、服务自动注册发现(通过ZooKeeper等注册中心)、以及自定义的二进制协议实现高性能传输。Dubbo特别适用于大型分布式系统如电商平台,支持服务间的透明调用和动态调整,相比传统HTTP协议和硬件负载均衡方案更具灵活性和成本优势。

2025-09-09 23:46:15 566

原创 【算法】四大基础数据结构

复杂数据结构和算法最终可归结为数组、链表、树和图四大基础类型。数组用于连续存储,衍生出字符串、动态数组等;链表通过节点指针实现顺序存储,演变为栈、队列等结构;树具有层次关系,发展出二叉树、B树等多种变体;图由顶点和边组成,广泛应用于网络等场景。这四类基础结构相互关联,共同构成了计算机数据结构的核心体系。

2025-09-09 22:13:47 928

原创 【算法题】单机 2G 内存下大数据年龄统计:如何统计全国人口中每个年龄的人数

针对大规模人口年龄统计问题,提出基于数组计数的高效解决方案。在单机2G内存限制下,利用年龄范围固定(0-150岁)的特点,使用151个元素的long数组进行计数。该方法时间复杂度O(n),空间占用仅1.2KB,避免使用复杂数据结构。通过逐行读取文件并累加对应数组元素,可高效处理几十亿条数据,在SSD环境下预计10秒左右完成13亿条记录统计。该方案尤其适合统计范围固定的整数型大数据场景。

2025-09-09 18:28:42 692

原创 数据结构与算法基础:时间复杂度与空间复杂度

本文介绍了算法的基本特征、设计原则和评价指标。算法应具备有穷性、确定性、可行性、有输入和有输出等特征。设计时需遵循正确性、可读性、健壮性及高效低存储原则。评价算法主要看时间复杂度和空间复杂度,前者衡量运行效率(理想为O(1)),后者衡量内存消耗。常见时间复杂度类型包括常数O(1)、对数O(log n)、线性O(n)等,优化目标是降低复杂度。空间复杂度分析主要关注内存对象和变量占用。最后强调现代AI工具可辅助算法开发,但需注意验证和多场景测试。

2025-09-09 16:56:25 903

原创 算法联系-判断一个数是否是 2 的 N 次方

判断一个数是否为2的N次方的两种方法。第一种是循环除以2的直观解法,通过不断除以2直到结果为1来判断;第二种是利用位运算的高效解法,通过n & (n-1)是否等于0来判断。两种方法各有优缺点:循环除法简单易懂但效率一般,位运算高效巧妙但可读性稍差。文章通过数字示例和二进制图解直观展示了两种解法的原理和实现过程。

2025-09-09 09:43:52 595

原创 JVM 性能调优命令

本文介绍了JVM性能调优常用的5个工具:jps、jinfo、jstat、jstack和jmap。jps用于查看Java进程;jinfo可查看/修改JVM参数;jstat监控GC和内存使用情况;jstack分析线程堆栈;jmap生成堆转储文件。文章详细说明了各工具的常用命令和参数,并提供了线上应用案例,帮助开发者快速定位内存泄漏、GC问题和线程阻塞等问题。这些工具是JVM性能调优的核心手段,能有效诊断和优化Java应用性能。

2025-09-09 00:48:31 971

原创 深入理解 AbstractQueuedSynchronizer (AQS):Java 并发的排队管家

AQS(AbstractQueuedSynchronizer)是Java并发编程的核心框架,为同步工具(如ReentrantLock、CountDownLatch等)提供底层支持。其核心通过state变量(表示同步状态)和FIFO队列(管理阻塞线程)实现资源控制。AQS采用模板方法模式,子类只需实现tryAcquire/tryRelease(独占模式)或tryAcquireShared/tryReleaseShared(共享模式)定义资源获取规则,而线程排队、阻塞/唤醒由AQS统一处理。

2025-09-08 23:53:11 635

原创 CAS和乐观锁

乐观锁是并发编程中的一种轻量级同步机制,核心思想是CAS(比较并交换)。它通过比较内存值(V)与期望值(A),若相等则更新为新值(B),否则重试。相比悲观锁直接加锁,乐观锁在无冲突时效率更高。Java中通过AtomicXXX类实现,适用于计数器等场景,但存在ABA问题(可通过版本号解决)和自旋开销大的缺点。其典型应用包括并发容器底层实现、自旋锁等。

2025-09-08 00:27:30 648

原创 垃圾回收算法详解

本文系统梳理了JVM中的四种垃圾回收算法:1)复制算法适用于新生代,效率高但内存利用率低;2)标记清除算法简单但会产生内存碎片;3)标记整理算法通过移动对象解决碎片问题,适合老年代;4)分代收集策略根据对象生命周期采用不同算法,是JVM垃圾回收的核心思想。文章通过示意图和优缺对比,清晰呈现了各算法的适用场景与实现原理,为理解JVM内存管理提供了结构化参考。

2025-09-05 21:54:54 951

原创 JVM 运行时数据区域

梳理了JVM内存区域结构,基于JDK8详细解析了五大核心区域:堆(存放对象实例)、元空间(存储类信息)、虚拟机栈(线程私有方法执行区)、本地方法栈(Native方法服务)和程序计数器(指令地址存储)。重点分析了各区域的功能特点、组成结构及常见异常,如堆内存GC机制、元空间溢出风险、栈的深度限制等。通过对比JDK版本差异(如永久代取消),帮助开发者深入理解JVM内存管理机制。

2025-09-04 23:26:18 570

原创 Java 双亲委派机制解析和破坏双亲委派的方式

本文系统梳理了Java类加载机制与SPI(服务提供接口)原理。类加载器采用双亲委派机制保证核心类安全,但在插件化等场景下可通过自定义类加载器或SPI机制突破限制。SPI通过META-INF/services配置文件实现服务发现,典型案例包括JDBC驱动动态加载。文章详细解析了MySQL驱动SPI实现、ServiceLoader源码及破坏双亲委派的场景,揭示了SPI如何实现接口与实现解耦、动态扩展及绕过类加载限制。该机制广泛应用于JDBC、日志框架等需要插件化扩展的场景。

2025-09-04 23:05:07 971

原创 JVM 类加载全过程

梳理了JVM类加载的七个生命周期阶段:加载、验证、准备、解析、初始化、使用和卸载。重点解析了前五个核心阶段:加载阶段读取字节码生成Class对象;验证阶段确保代码安全合法;准备阶段为静态变量分配内存;解析阶段替换符号引用;初始化阶段执行静态赋值和代码块。文章通过类比数据处理流程,形象说明了各阶段作用,并详细阐述了各阶段的工作机制和触发条件,帮助理解JVM类加载原理。

2025-09-04 19:17:44 1125

原创 高并发系统设计方案(直播场景)

本文系统梳理了微服务架构下的高并发解决方案,涵盖微服务拆分、部署扩展、缓存策略、消息队列、数据库优化等核心模块。关键点包括:按功能模块拆分服务并独立部署;Kubernetes弹性伸缩保障高可用;多级缓存+应用锁防击穿;MQ实现削峰解耦;分库分表+读写分离突破数据库瓶颈;ES支撑复杂查询;限流熔断保障系统稳定。通过缓存、MQ、分库分表、ES和K8s弹性扩容的组合策略,构建高并发、高可用的分布式系统架构。

2025-09-04 13:38:00 643

原创 分布式系统的 CAP 原则与 BASE 原则理解

分布式系统设计中,CAP原则和BASE原则是两个核心概念。CAP原则指出一致性(C)、可用性(A)和分区容错性(P)三者不可兼得,通常需在C和A间权衡。而BASE原则作为实践方案,通过基本可用、软状态和最终一致性,在保证高可用的同时接受短时数据不一致。二者关系可概括为:CAP是理论基础,BASE是工程实现。这些原则为分布式系统设计提供了重要的理论指导和实践框架。

2025-09-03 22:43:52 422

原创 Redis 集群模式与高可用机制

Redis集群模式通过哈希槽(16384个)实现数据分片,支持多Master节点(建议奇数)和Slave备份。它采用心跳检测和多数投票机制实现高可用,当Master故障时自动切换Slave为Master。适用于写密集型场景,但数据同步会占用带宽,常规场景下哨兵模式可能更合适。集群模式有效解决了单节点瓶颈问题,但节点过多会增加心跳开销(O(N²))。

2025-09-03 18:50:43 419

原创 Redis 哨兵模式(Sentinel Mode)

哨兵模式在Redis主从架构中引入哨兵机制,提升高可用性。其核心是自动故障转移:通过主观/客观下线机制检测Master故障,基于Raft算法选举Leader Sentinel执行切换。新Master按优先级、复制偏移量等规则选出,确保数据完整性。故障转移完成后,自动重配从节点并更新客户端连接,实现服务持续可用,适用于读多写少场景。

2025-09-03 14:02:47 575

原创 Redis 主从复制模式

Redis主从模式是入门级分布式部署方案,通过主节点写、从节点读实现读写分离和数据备份。核心特点包括部署简单、成本低,支持PSYNC2协议优化增量同步,可采用主从从结构分担复制压力。但存在主节点性能瓶颈、无自动故障转移、数据延迟等局限性,仅适合低并发场景或测试环境。实际生产通常需配合哨兵或集群模式实现高可用。该方案适合业务初期,但对高可用要求严格的场景需升级架构。

2025-09-03 00:19:11 395

原创 Redis 持久化机制详解

• RDB 适合对恢复速度要求高、能容忍少量数据丢失的场景。• AOF 适合对数据可靠性要求极高的场景。之前互联网工作经常用到的。• 混合持久化结合了 RDB 和 AOF 的优点,是 Redis 4.0 及以上版本的推荐方案。当下工作使用的,技术一直在发展这个优势更大。

2025-09-02 21:54:56 652

原创 Elasticsearch 深分页限制与解决方案

遇到Elasticsearch导出超1万条数据时出现"Result window is too large"报错,原因是默认的index.max_result_window限制为10000条。解决方案包括:1)临时调大该参数(有性能风险);2)改用Scroll API(适合批量导出)。经验表明:from+size分页仅适合小数据量,大数据导出应使用Scroll API,实时分页推荐Search After。通过改用Scroll API成功解决了全量数据导出问题。

2025-09-02 18:23:24 674

java email发送测试

这个demo主要针对QQ邮箱做的,其他类型邮箱需要改写地方,看下SendEmail注释 相关介绍地址:http://blog.csdn.net/u012012240/article/details/52171449

2016-08-10

阿里巴巴Java代码规范IDE插件下载

阿里巴巴Java代码规范IDE插件,IDEA可以正常使用,结合阿里巴巴Java开发手册(纪念版)非常好用

2018-05-07

springMvc配置mongo数据库

可以参考下,项目实战用到的!分享帮助你,也帮助了我!欢迎补充!

2015-12-15

webMagic爬虫抓取某个博客全部文章名称

webMagic爬虫抓取某个博客全部文章名称,简单列子,可以做参考

2016-09-05

jQuery生成二维码包

jQuery生成二维码包,页面生成方式http://blog.csdn.net/u012012240查找jQuery生成二维码有文章的

2015-12-17

img MyBatisCodeHelper-Pro-1.9.4-IDEA173-IDEA182.zip

idea maven插件img MyBatisCodeHelper-Pro-1.9.4-IDEA173-IDEA182.zip

2018-10-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除