自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LinJy

plant_tree

  • 博客(52)
  • 资源 (2)
  • 收藏
  • 关注

原创 向量检索优化与内容生成策略

本文探讨了向量检索优化的关键技术与策略。首先指出单纯依赖语义匹配的不足,提出结合BM25关键词检索与向量检索的混合方案,通过RRF算法融合两种检索结果。进一步介绍了重排序(reRank)的必要性,强调大模型在精细排序中的优势。最后详细分析了内容生成环节的Prompt设计要点,包括角色定义、任务明确、约束条件、输入结构化和输出格式要求,并通过法律咨询案例展示了优质Prompt的构建方法。全文系统性地阐述了从检索到生成的全流程优化策略,为构建高效准确的问答系统提供了实用指导。

2026-03-19 17:25:01 471

原创 向量数据库选型

摘要:向量数据库与相似性搜索技术 本文探讨了海量向量数据的检索问题,介绍了三种核心索引算法:暴力法(全量计算)、IVF(倒排文件索引)和HNSW(分层可导航小世界图)。重点分析了HNSW作为主流算法的高效性及其内存占用问题,并推荐了Milvus等专业向量数据库。针对不同数据规模(百万到十亿级),提出了索引算法选择建议,为大规模向量相似性搜索提供了实用解决方案。

2026-03-18 17:57:00 305

原创 Embedding是什么?从文本转向量

本文介绍了向量在文本语义理解中的作用及其应用。通过具体案例说明文本匹配的局限性,指出向量能够将文本语义转化为多维数值表示(如"苹果"和"香蕉"的向量示例)。文章解释了向量相似度的计算方法(余弦相似度),以及将文本转为向量的embedding技术,包括不同模型的特点和使用注意事项。最后概述了RAG(检索增强生成)的基本流程:从文件处理到文本分块、向量化存储,再到用户查询匹配的完整过程。核心观点是向量技术通过语义编码解决了传统文本匹配的不足,为智能问答系统提供了更精准的语

2026-03-18 11:40:42 213

原创 文本分块Chunk策略

文章摘要:文档分块是处理大文本输入的必要步骤,主要解决大模型处理长文本时的性能限制和上下文长度问题。核心参数包括分块大小(chunkSize)和重叠区域(overlap)。主流分块策略包括固定分块、重叠分块、递归分块、语义分块和混合分块,各适用于不同文档类型。递归分块适用于结构化文档,语义分块适合法律合同等精确文本,混合分块则适合企业级RAG系统。实际应用中需结合文档特点选择策略,并可能需要人工二次修正。分块后的文本还需进行向量化处理才能被机器识别。

2026-03-17 20:17:29 446

原创 Tika文档读取神器

摘要:Apache Tika作为RAG系统中的文档解析工具,能有效解决多格式文档处理难题。它支持近千种文件类型,通过MIME类型识别确保文件真实格式,提供文本内容提取和元数据读取功能,并支持OCR扩展。Tika提供两种集成方式:直接Java库集成(简单但资源消耗大)或独立部署Tika Server(更灵活可靠,支持多语言调用)。企业级应用推荐采用独立服务部署方案,以应对高并发和复杂文件处理需求。

2026-03-17 15:46:44 196

原创 从Vibe Coding到Spec Coding:AI编程的演进之路

文章摘要:本文探讨了AI编程的两种方法——Vibe Coding和Spec Coding。Vibe Coding通过自然语言描述让AI生成代码,适合小功能开发但存在幻觉、无状态等问题。Spec Coding则强调结构化需求定义,通过详细规格说明提升AI生成代码的质量,更适合复杂项目。作者推荐使用OpenSpec工具实现Spec Coding,并分享了大模型使用经验。最后提供了经济实惠的GPT5-codex中转服务推荐链接。全文展示了AI编程从简单辅助到系统化协作的演进路径。

2026-02-06 18:31:21 1307

原创 java本地实现mcp的服务器调用

本文介绍了如何配置一个基于Spring Boot的MCP服务器项目,主要内容包括: 前期准备:申请DeepSeek API Key,创建SpringBoot项目并安装Cline插件 项目配置:提供了完整的pom.xml依赖配置,包含Spring Web MVC和AI相关依赖 服务实现:通过WeatherService示例展示了@Tool注解的使用方法,实现天气预报功能 回调配置:使用MethodToolCallbackProvider注册带有@Tool注解的方法 应用配置:设置MCP服务器相关属性,包括启用

2026-01-30 12:18:19 295

原创 AI大模型原理概述

模型的训练通常包含三个关键阶段:预训练(无监督学习,奠定通用知识基础)、监督微调(SFT,教会模型遵循指令执行特定任务)以及基于人类反馈的强化学习(RLHF,使模型输出更安全、可靠且符合人类偏好)。文章还阐释了Token、向量嵌入、Transformer架构(特别是自注意力机制)等技术细节,说明了模型如何理解上下文、处理一词多义,并逐词生成文本。最后,文章也客观讨论了当前大模型可能产生“幻觉”(即看似合理实则荒谬的内容)等局限性。

2026-01-27 12:49:40 772

原创 ai时代下的RPC传输——StreamObserver

StreamObserver是现代RPC框架中的关键设计,通过异步和流式能力解决传统RPC的痛点。相比传统RPC的同步阻塞模式,StreamObserver支持多种流式通信,实现数据分块传输、实时处理和全双工异步通信。它特别适用于大模型输出、数据流处理等场景,通过长连接复用提高性能,底层基于Netty实现HTTP/2协议栈。流式RPC在单个流上进行持续双向对话,与普通RPC的独立请求-响应模式形成鲜明对比,显著提升了通信效率和灵活性。

2026-01-24 14:39:20 900

原创 SOFAServerless架构的意义

摘要 SOFAServerless架构通过"基座+模块"的拆分方式解决传统微服务的痛点。纵向拆分为基座(基础设施)和模块(业务逻辑),横向拆分业务为独立模块,实现并行开发。核心技术包括:轻量模块构建(排除基座依赖)、类隔离机制(SOFAArk框架)、热部署技术(秒级更新)。该架构使发布效率提升10倍(30秒vs6分钟)、资源利用率提高10倍(多模块共享基座)、变更风险大幅降低。其核心价值在于让开发者专注业务,屏蔽基础设施复杂性,同时支持架构平滑演进。

2026-01-24 14:36:45 987

原创 支付宝架构是怎么支撑每秒几十万笔交易的——LDC(逻辑数据中心)

LDC(逻辑数据中心)是一种将业务组件封装为独立单元的新型架构,每个单元能独立处理业务。其核心驱动力是解决异地容灾的数据访问延迟问题,以及突破数据库连接数瓶颈。传统架构在业务量激增时会出现主库压力过大、连接数暴增等问题。通过单元化改造,将路由逻辑前置到网关层,实现用户、应用和数据库的精准绑定。支付宝的CRG架构将单元分为RZone(用户私有数据)、GZone(全局数据)和CZone(城市缓存),有效解决了数据访问效率和连接数问题。这种架构虽能显著提升性能,但在跨单元交易(如转账)时仍需进一步优化。

2026-01-24 14:34:54 722

原创 算法题型整理—双指针

算法-双指针整理

2024-12-21 16:25:14 802

原创 亚服战网安装卡45%的解决方案

解决方案先ping cn.patch.battlenet.com.cn这个域名,正常来说是一定会失败的,如果成功就不卡45%了然后ping tw.patch.battle.net 这个域名,这个域名应该是能成功的。去该网址解析一下这个域名的ip,https://site.ip138.com/tw.patch.battle.net/将得到的ip修改host再ping一次 tw.patch.battle.net 这个域名 应该成功了然后重新打开安装就行。

2024-04-25 21:50:24 1543 1

原创 mac M1上的效率工具——Alfred(附M1配置workflows)

mac效率神器alfred介绍,m1版本的workflows推荐下载

2022-10-19 21:04:33 4824

原创 Mybatis学习、使用和代码解析(一)

写在前面说到mybatis,那可太熟悉了,几乎是所有的java开发从业者的必备框架之一。面试也非常喜欢的mybatis的内部实现和组成。我们在使用mybatis的时候往往都是配合SpringBoot一起。SpringBoot的自动配置会为我们日常的开发提供极大的便利,包括mybatis的配置,SpringBoot都为我们配置好了,我们只需要写写mapper就能优雅的请求到mysql的数据,而不需要走建立连接,配置sql,请求数据,处理结果等复杂流程。所以本文想尽可能的从最初的起点开始,看看mybatis是

2022-01-03 21:11:10 863

原创 mysql binlog使用基础及无法关闭问题的排查和解决

mysql 8.0binlog关闭的解决方法可以直接看总结引言binlog是mysql的一个二进制日志,会记录对数据进行更改或者潜在更改的语句进行一个记录,并且存储在磁盘上,在mysql主从复制时也是使用binlog进行数据的同步,以及修改数据行的后续操作都可以监听binlog来进行操作。所以今天想对binlog进行一个基础的使用,结果引发了一系列的问题,特此进行记录。基础使用只讲问题不讲怎么出现问题就是耍流氓。我的配置是使用homebrew进行安装的mysql@8.0。开启binlog的方法很简单

2021-06-17 18:15:22 1384 2

原创 java开发手册 - 码出规范 - 要点整理

文章目录编程规约命名风格常量定义代码格式OOP规约集合处理并发处理控制语句注释规约其他异常日志异常处理日志规约单元测试安全规约Mysql数据库规范索引规约SQL语句ORM映射工程结构应用分层二方库依赖服务器设计规约编程规约命名风格代码的命名不能以下划线或美元符号,也不能以下划线或美元符号结束代码的命名禁止使用中文拼音和英文混用的形式,更不允许直接使用中文的方式,纯中文拼音的方式尽量避免采用,使用英文命名。注:国际通用拼音可以使用,如renminbi,alibaba类名应当使用Upper

2021-04-11 13:51:30 1286

原创 一起来写个SpringBoot[8] — — 整合系统-完结

项目地址:https://github.com/xiaogou446/jsonboot使用branch:feature/buildComponentScan命令行:git checkout feature/buildComponentScan系统整合在最初的系统设计中,我们对扫描的包都是手动进行设置,这节设置@ComponentScan注解来自定义扫描包。@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documente

2021-04-05 18:57:23 371

原创 一起来写个SpringBoot[7] — — 实现AOP

项目地址:https://github.com/xiaogou446/jsonboot使用branch:feature/implementAop命令行:git checkout feature/implementAop实现AOP切面定义在正式开始实现AOP之前,我们得先了解并定义AOP的相关注解以及信息,本地定义的注解有 @Aspect,该注解标注的类代表是一个切片,如果一个方法满足切面中的切入点的匹配规则,将会用于切面拦截器的拦截实现。@Pointcut代表是一个切入点,切入点定义了匹配的规则

2021-04-05 16:33:11 542 1

原创 一起来写个SpringBoot[6] — — 拓展IOC的实现

项目地址:https://github.com/xiaogou446/jsonboot使用branch:feature/expandIOC命令行:git checkout feature/expandIOC拓展IOC在上一节中,我们简单的实现了IOC容器。我们通过遍历扫描到类文件,生成未完成的bean,后遍历未完成的bean进行依赖注入。这种做法也有许多的问题。比如在将所有的class类文件都实例化后,再进行依赖注入,如果一个依赖注入的过程出现了问题,导致后续的依赖注入无法进行,那么最终使用的则都是

2021-04-05 11:20:12 390

原创 一起来写个SpringBoot[5] — — 实现一个简单的IOC

项目地址:https://github.com/xiaogou446/jsonboot使用branch:implementIOC命令行:git checkout implementIOC构建IOC容器书接上节,我们大致完成了SpringMVC的相关功能,通过外部的请求进入到处理完请求的链路已经打通,但是还是有着不少的问题。比如在最后通过反射执行请求时,每执行一次,都需要newInstance创建一个对象,那足以造成资源的浪费,以及如果需要在一个类中引用另一个类的方法呢,再创建一次引用类对象?显然不合

2021-04-04 16:02:37 401 2

原创 一起来写个SpringBoot[4] — — 实现@PathVariable注解

项目地址:https://github.com/xiaogou446/jsonboot使用branch:feature/buildPath命令行:git checkout feature/buildPath设置@PathVariable注解在SpringMVC中,我们能了解到 @PathVariable注解的作用,比如设置的路由为"user/{name}",外部传入的path为"/user/qinghuo",那么在name参数用 @PathVariable标注时,会自动映射到{name}对应的"qi

2021-04-04 14:08:57 1387

原创 一起来写个SpringBoot[3] — — 完成Post请求

项目地址:https://github.com/xiaogou446/jsonboot使用branch:feature/adjustHttpResponse命令行:git checkout feature/adjustHttpResponse设置失败响应在我们之前的实现中,不管系统是否成功处理请求,不管是否返回正确的结果,系统都会一致的返回数据,这并不能很好的反应当前系统执行的状况,也无法判断具体出现的问题。为此我们需要对响应进行一层封装,区分处理成功的响应与失败的响应。如果请求处理成功,那我们直

2021-04-02 15:37:12 727

原创 一起来写个SpringBoot[2] — — 设置请求路由

项目地址:https://github.com/xiaogou446/jsonboot本节延续第一节的内容,branch:feature/annotatedClassScanner命令行:git checkout feature/annotatedClassScanner设置请求路由上节写到请求从Netty建立到Http服务器中进入,并通过Handler请求处理器分别处理Get请求与Post请求,可是Get请求有很多,对应处理的Get方法也有很多,我们需要找到对应请求的请求处理器,再对请求进行处理。

2021-04-02 12:02:22 2406

原创 一起来写个SpringBoot[1] — — 使用Netty实现Http服务器

项目地址:https://github.com/xiaogou446/jsonboot本节从第一个branch开始:feature/addNecessaryDependency命令行: git checkout feature/addNecessaryDependency 即可构建maven依赖在正式开始搭建项目之前,先得把依赖捋一捋,我们通过maven来构建项目,首先先创建好一个maven项目,后将依赖导入到pom文件中。<?xml version="1.0" encoding="UTF-

2021-04-01 16:31:41 1943

原创 一起来写个SpringBoot[0] — — 开篇

前沿先附上项目地址: github - jsonboot大概是去年七月开始,就有想写一个SpringBoot项目的念头,其一是为了能够更好了解SpringBoot的设计思想,提升自己的编码技术。其二是可以当作一个不错的个人项目,在找工作时也有底气在面试官面前…咳咳…懂得都懂。奈何当时事务缠身,计划一直搁浅到现在,才抽出空闲时间来完成这个目标。在网上找了很多关于SpringBoot的搭建教程,但总是没有能符合心意的项目,后来在guide哥的公众号内找到了guide哥搭建的SpringBoot项目,我就以

2021-04-01 13:47:34 568 1

转载 Skipped breakpoint because it happened inside debugger evaluation

在debug项目时总是会莫名其妙的多出system.out的数据,莫名其妙,搜到这篇文章,帮助很大,转载一下    解决Skipped breakpoint at %code reference% because it happened inside debugger evaluat

2021-03-31 11:42:07 2051

原创 IDEA多款主题颜色推荐!炫酷经典!

前言本人近期换了新电脑,也重新安装了Idea,奈何Idea的原装主题配色看的不是很舒服,要知道一个好的主题可以直接的提升工作的效率和每天的快乐值!(程序员的快乐来的就是如此简单)所以就花了点时间在网上找了几个不错的主题,顺便分享一下~几款比较经典好看的主题第一款 IntelliJ Light Theme 主题地址我比较喜欢白底比较简约的主题,虽然这款主题和原装主题很像,但真的深得我心呐!现在使用的就是这一款。第二款 Cyan Light Theme 主题地址...

2021-03-16 12:12:48 35591 2

原创 拿到macbook m1后该做的事(java版 附m1 jdk资源)

文章目录引言收货后开机后下载软件常用软件java开发常用软件jdkmavenideacharles 花瓶postman 发送http请求sequerl progas masksublime Text放在最后引言记2021年3月8日,拿到人生中的第一台macbookpro,内心激动无以言表,特来记录一番。自身作为名java程序员,也会分享一些平时开发工作中经常使用的软件~收货后在拿到电脑时不要立刻急冲冲的打开电脑激活,应当先检查一下快递运送时包装是否完整,发票是否在,对应的版本是否是你购买的款式。以

2021-03-10 13:15:10 11429 8

原创 记一次项目构建时的依赖版本冲突

文章首发于有间博客,欢迎大伙光临! 自定义注解校验–ConstraintValidator近日在项目线下构建的时候出现依赖版本冲突的问题,特此记录一下解决的方法。在我们进行项目构建的时候,查看项目中导入的依赖是否正确是必不可少的。当我们需要使用项目中的公共服务的时候,就可以导入该服务的jar包依赖,以此来调用该公共服务。问题项目构建时的问题大意是一个jar包被更新升级了,而我们项目中的该jar包还是老旧的jar包,在重新部署的时候错误提示所需要的依赖版本为1.5.2,而项目中的依赖版本为1.3.2。

2020-11-23 12:11:11 375

原创 自定义注解校验--ConstraintValidator

文章首发于有间博客,欢迎大伙光临! RabbitMQ三个阶段保证消息投递的可靠性我们在进行接口编写的时候,往往需要对VO传入的参数进行一个校验。但在业务逻辑中每次都对参数进行校验显得复杂且多余,如果校验参数较多使用AOP会显得逻辑杂乱,所以我们往往使用注解的方式对传入的参数进行一个格式的校验,但已有的注解不是万能的,我们在实现当前业务逻辑判断时会遇到已有注解不能校验的逻辑,我们则需要自己自定义校验注解进行对参数的校验。创建项目前期工作:创建一个maven的项目,传入Springboot的依赖,建立实体

2020-10-28 10:35:39 12630 4

原创 RabbitMQ三个阶段保证消息投递的可靠性

文章首发于有间博客,欢迎大伙光临! RabbitMQ三个阶段保证消息投递的可靠性本文建议结合github代码一同观看,更加清晰明了 地址:rabbitmq-message-reliability文章目录消息可靠性发布确认机制ConfirmCallback 回调确认消息举例ReturnCallback 处理进入队列的情况队列消息持久化机制队列持久化消息持久化交换机持久化消费方确认机制SimpleMessageListenerContainer确认机制死信队列总结消息可靠性在我们平时开发的过程中往往会有

2020-10-17 18:02:07 388

原创 【资源共享】nacos-server-1.1.4.zip | nacos-server-1.3.1.tar.gz | sentinel-dashboard-1.7.0.jar | linuxJDK8

官方下载慢,设置了网盘直接下载,客官请食用!nacos-server-1.1.4.zip链接:https://pan.baidu.com/s/1AYCJjJULgUcUc06NvSePgQ提取码:4kgnnacos-server-1.3.1.tar.gz链接:https://pan.baidu.com/s/1WR0jSJW-Bc2YTKJSwd2bkg提取码:zwolsentinel-dashboard-1.7.0.jar链接:https://pan.baidu.com/s/16YdzoNB

2020-10-14 14:00:46 2651 1

原创 Redis分布式锁业务没执行完但锁超时了怎么办? --Redisson

文章首发于有间博客,欢迎大伙光临Redis分布式锁业务没执行完但锁超时了怎么办? --Redisson问题前言这个问题的思考源自JD的面试题,因为项目中有使用分布式锁,切切实实的被问到了这个问题,在面试中也没有答得很好,现在有空了来对问题进行一个解决思考和整理。在项目中如果使用redis原生的分布式锁,setnx设置并使用expire定义超时时间,就有可能出现锁的时间到了但业务没有执行完毕的情况。那如果不设置超时时间,万一服务宕机没来得及解锁呢,那这个分布式锁就再也不能访问了。Redisson由

2020-10-08 17:04:10 10194 5

原创 死磕ReentrantLock同步机制

在开发的过程中,许多并发的场景下,有可能会出现线程不安全的实例,我们可以使用Synchronized与ReentrantLock进行互斥同步的调用,相信大家Synchronized已经很熟悉了。今天主要详细介绍的是J.U.C包下的ReentrantLock,相对于Synchronized,ReentrantLock能够实现的功能会更多一些~

2020-09-29 12:02:20 353

原创 渣渣本科的2021届秋招总结-泪目

引言今年的秋招仿佛开始的格外的早,大概从7月开始就能在牛客上看见一些大厂的提前批开始的贴子,到了8月中下旬,秋招正式批也开始了,在牛客最直观的感受就是大佬们已经收割掉提前批的offer了,而菜鸡只能看着流口水。好在9.22拿到了自己想要的意向书,基本可以提前结束掉秋招了。秋招一般10月底才会结束,在没有offer的时候不要慌张,坚持就是胜利。接下来介绍下秋招所需要的准备以及一些面经的分享。个人情况学校不是很好,三本,在学校成绩还可以,没有拿过什么重量级的奖(如acm)。大概是从2020年的2月正式进入

2020-09-23 21:09:07 10593 12

原创 关于线程池,你所要了解的一些东西(二)

上一篇关于线程池,你所要了解的一些东西(一)大体介绍了多线程以及线程池在什么场景下会有其作用,并且介绍了内部的一些核心参数,这篇文章将具体介绍线程池的运行机制。话不多说,直接上代码!execute() public void execute(Runnable command) { if (command == null) throw new NullPointerException(); /* * Proceed in 3

2020-09-20 22:36:47 208

原创 关于线程池,你所要了解的一些东西(一)

线程池简介在介绍线程池之前,我们先来了解一下为什么要使用多线程,比如我们每天放学回家,都要去写作业,并且有好几门作业如:语文、数学、英语…如果我们一门一门的去写,只能是写完语文再去写数学…那写完估计也就晚上了,这是单线程单核执行的情况,如果我们使用多线程,那就变成了我们需要同时写好几门的作业,语文写一点,然后再数学写一点,再回到语文继续写,加上作业换来换去的情况,效率说不定比单线程的时候更慢,这是多线程单核执行的情况。那如果是多核呢,那就相当于我们拥有了分身的功能,能在写语文的同时,另一个分身替我们写数学

2020-09-14 21:32:22 258

原创 它来了,栈底层(Vector)源码解析

栈介绍栈在java编程中算是用的比较多的一种数据结构了,栈是一种数组型态的数据结构,具有先进先出的特点,也就是后来进入的元素,在弹出的时候是优先弹出的。所以栈也经常被用作逆序输出,括号匹配等情况。从内部的结构来看,栈是vector的子类,说道vector,大家可能比较熟悉,确实接触的不多,但是平时它常常拿来与ArrayList作比较,而比较的原因大部分也是因为ArrayList是线程不安全的,而vector是线程安全的。Stack在Vector的基础上主要做了以下方法的增加 //stack的添加功能

2020-09-01 22:16:19 670

原创 HashMap主要源码详解,一行行大白话解析,附学习中思考的问题

虽然网络上有非常多的hashMap的源码教程,但是不自己深入去研究一遍,终究不是自己的。get()方法 //get和put方法可能是大伙在平时中用的最多的方法了,接下来来详细解读下 //get方法,传入对应的key值,取出对应的value值 public V get(Object key) { //生成一个node值接收 Node<K,V> e; //调用下方的getNode(hash, key)方法获取到node值,如果不为null,

2020-08-22 22:51:28 360

nacos-server-1.3.1.tar.gz

linux版 nacos1.3.1 下载资源,免积分,欢迎下载!如果要积分,来这里下 https://blog.csdn.net/qq_41762594/article/details/109071811

2020-10-10

nacos-server-1.1.4.zip

nacos 1.1.4版本 windows版本,欢迎下载~ 搭建SpringCloud Alibaba的时候可以使用,免积分~~ 如果要积分,来这里下 https://blog.csdn.net/qq_41762594/article/details/109071811

2020-10-10

空空如也

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

TA关注的人

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