自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 收藏
  • 关注

原创 PGVector 检索性能优化完整指南

测试驱动:使用真实数据测试不同配置,关注 P99 延迟和召回率渐进优化:从默认参数开始,逐步调整关键参数监控先行:建立性能基准,持续监控查询延迟和索引使用混合架构:热数据用 HNSW,冷数据用 IVFFlat 或分区表事务级调优:对重要查询动态设置ef_search,平衡精度与性能通过以上优化策略,可在保持95% 以上召回率的同时,将查询延迟从秒级降至毫秒级,充分发挥 pgvector 与 PostgreSQL 生态融合的优势。

2025-11-21 09:51:41 1012

原创 知识图谱的解释

知识图谱就是把人类世界的事实拆成“主语-谓语-宾语”的海量网络,存进图数据库,供机器查询、推理、预测;它让 AI 不仅“认识字”,还“懂关系”,是大模型减少幻觉、实现可信推理的“外挂记忆”。

2025-11-20 23:06:57 604

原创 MCP的stdio和sse的区别

在 MCP(Model Context Protocol)框架里,→ 选 stdio;

2025-11-20 22:27:52 171

原创 PGVector

PGVector 是 PostgreSQL 的一个开源扩展,它把“向量数据库”能力直接集成到 Postgres 里:既能存传统关系数据,也能存高维向量,并在 SQL 内完成近似/精确相似度搜索,不需要再部署一套专用向量库。下面按“安装-建表-导入-查询-调优”五步给出最小可运行示例,所有命令在 psql 里直接执行即可。你仍用熟悉的 SQL、事务、备份、权限体系,就能把 Postgres 当成企业级向量数据库使用,适合 RAG、推荐、语义搜索等场景。四、相似度查询(SQL 原生)内积(负内积最小=最相似)

2025-11-20 22:22:16 188

原创 RAG 的幻觉问题详解

RAG(Retrieval-Augmented Generation,检索增强生成)的。—— 即使给了参考答案,它还是会自由发挥。"2023年,特斯拉在上海工厂的产能达到了100万辆。(Hallucination)是指模型在生成回答时,"2023年,特斯拉在上海工厂的产能达到了。:关键信息被截断,模型基于不完整上下文猜测。:多篇文档信息冲突或零散,模型强行整合。,产生看似合理但与事实不符的信息。检索内容,加入训练数据中的偏见。检索内容,即使内容有误,或者。:返回的文档与问题相关性低。

2025-11-20 11:11:46 373

原创 费曼学习法

"想象你在排队,你想知道自己排第几位。可以问前面的人'你是第几位',他也不知道,于是他又问更前面的人...直到问到第一个人'你是第1位'。然后这个答案往回传,每个人加1,最后你就知道自己是第5位了。"递归是一种在函数定义中使用函数自身的方法,它包含基准条件和递归条件,通过不断缩小问题规模来求解..."选择你要学习的知识点(比如"冒泡排序算法"),通过阅读、看视频等方式初步理解它。:现在找一张纸,写下你最近学到的一个概念,开始你的第一次费曼练习!: "没有索引就像翻书找内容,有索引就像查目录直接翻到页码"

2025-11-19 18:06:06 848

原创 Java 中 DTO 和 VO 的区别详解

DTO(Data Transfer Object)和 VO(Value Object / View Object)是 Java 开发中用于不同层次间数据传递的对象,但它们的。:Service 层查询用户和订单数据,打包返回给 Controller。:Service 层返回数据给 Controller 层、微服务间调用。,再反推 DTO 需要聚合哪些数据,最后确定 DO 的数据库设计。:Controller 层转换 DTO 为 VO,适配前端展示。的数据对象,封装页面需要的数据。

2025-11-19 17:47:44 768

原创 Rest软件架构

用于设计分布式系统中的网络应用程序。它不是标准或规范,而是一组约束条件和设计原则。:Spring Cloud Gateway 或 AOP。:资源的具体表现形式(JSON、XML、HTML):POST 创建成功(返回 Location):DELETE、PUT 成功(无返回体):一切皆为资源(用户、订单、文章等):通过 HTTP 动词改变资源状态。:多次执行同一操作,结果相同。:GET、PATCH 成功。:使用 JWT(无状态):不修改服务器资源。:从 V1 开始设计。

2025-11-19 13:34:52 604

原创 CQRS(命令查询职责分离)详解

CQRS(Command Query Responsibility Segregation)是一种架构模式,将**写操作(命令)客户端命令处理器领域模型事件存储事件总线查询处理器事件消费者。:简单项目 → 传统 CRUD + MyBatis-Plus。读操作(查询)**分离成两个独立的模型。社交媒体(读多写少,动态 feed):DDD 实践,需要保护业务不变量。电商订单系统(高并发查询订单列表):读操作是写的 100 倍以上。:读写逻辑简单,没有复杂度。:报表、搜索、多维度统计。:查询需要毫秒级响应。

2025-11-19 13:27:58 882

原创 事件驱动架构

的异步、松耦合架构模式,系统组件通过发布和订阅事件进行通信,而非直接调用。:设备数据上传 → 实时分析 → 告警通知 → 存储。:订单 → 库存 → 支付 → 发货,各环节松耦合。:交易事件 → 风险计算 → 决策 → 阻断/放行。:事件是"已发生的事实",命令是"请求执行的操作":收集 → 过滤 → 分析 → 告警。:日志收集、大数据处理、流式计算。:实时通知、轻量级消息、缓存更新。:完整审计、时间旅行、调试方便。:读写分离、性能优化、视图灵活。:企业应用、复杂路由、事务消息。:高吞吐量、分布式日志。

2025-11-19 13:18:21 583

原创 高效阅读与理解文章的实用技巧详解

阅读后,用自己的话总结文章核心内容,尝试讲解给他人听。这不仅考验你的理解力,还能发现未掌握的部分。高效阅读和理解文章,不是天生的能力,而是可以通过科学方法训练出来的技能。希望上述方法能为你的学习和工作带来帮助。

2025-11-13 17:19:34 344

原创 如何高效利用上下文信息生成文章

生成文章时,有效利用上下文信息是关键。上下文信息提供了背景和相关内容,帮助确保文章的相关性和准确性。通过上述步骤,能够高效生成内容严谨且切合实际的文章。如果您有特定主题或更多具体内容需求,欢迎继续提问。

2025-11-13 17:12:47 263

原创 常用Google的collect下的API方法

看到 new HashMap / ArrayList 前先想想 Guava 有没有现成的” —— 基本就能少写一半样板代码。com.google.common.collect 把 不可变、并发、多维、区间、双向、比较器、工具类 一网打尽;3️⃣ 集合工具类(比 Apache Commons 更顺手)2️⃣ 新集合类型(解决 JDK 没有的痛点)4️⃣ 比较器工厂(再也不用写一堆 if)1️⃣ 不可变集合(最常用,线程安全)6️⃣ 不可变集合建造者(链式写法)5️⃣ 缓存视图(不额外引包)

2025-09-08 13:37:52 221

原创 动态线程池中修改核心线程数比当前线程数要少,会不会影响正在执行的线程任务

不会。在里调把核心线程数设得比当前活动线程数小时,中断或回收任何正在执行的任务。getTask()nullrun()因此,,只是当这批任务完成后,线程池会逐步把总线程数收缩到新的核心线程数。

2025-09-08 13:33:14 244

原创 写时复制(Copy-on-Write)模式

通过这种方式,可以避免多个线程同时访问同一个共享数据造成的竞争和冲突。不可变对象的写操作往往都是使用 Copy-on-Write 方法解决的,当然 Copy-on-Write 的应用领域并不局限于 Immutability 模式。Copy-on-Write 才是最简单的并发解决方案,很多人都在无意中把它忽视了。它是如此简单,以至于 Java 中的基本数据类型 String、Integer、Long 等都是基于 Copy-on-Write 方案实现的。

2025-09-08 13:20:10 378

原创 异步编程CompletionService

是 Java 并发包()里的一个。它把「提交任务」和「拿结果」两件事解耦:你只管往里扔任务;它帮你盯着谁先跑完,让你取结果,而不是按提交顺序。

2025-09-08 11:51:58 179

原创 ImmutableMap

是提供的实现,,在或场景下能显著替代HashMap,既省内存又省同步开销。

2025-09-05 16:39:25 413

原创 JDK21虚拟线程

Java 虚拟线程(Virtual Threads)是 Java 21 正式推出的革命性并发特性,由 Project Loom 孵化而来。

2025-09-02 09:34:17 482

原创 Elasticsearch中的设置refresh_interval

在 Elasticsearch 中,是一个的设置,用于控制。

2025-08-26 23:31:41 519

原创 Elasticsearch中的协调节点

协调节点 = 请求入口 + 结果合并器不存数据但很关键,生产大集群建议独立出来,小集群可共用。

2025-08-26 23:29:16 531

原创 Nginx 负载均衡和缓存配置

根据客户端的 IP 地址将请求分发到固定的后端服务器,适用于需要会话保持的场景。代理缓存是 Nginx 缓存后端服务器响应的一种方式,适用于动态内容的缓存。:将请求分发到当前连接数最少的服务器,适用于处理时间较长的请求。:定义缓存的存储路径、层级结构、缓存区域名称、最大缓存大小等。:为每个服务器分配不同的权重,权重越高,分配到的请求越多。:在某些情况下使用过期的缓存,如后端服务器错误或超时。:定期检查缓存命中率,评估缓存策略的有效性。:部署新版本时,预先加载缓存,避免缓存穿透。

2025-08-20 23:49:22 669

原创 Nginx 的完整配置文件结构、配置语法以及模块详解

核心模块,提供了基本的 HTTP 功能,如请求处理、响应生成等。这些模块和配置指令可以组合使用,以满足各种复杂的服务器配置需求。Nginx 配置文件的语法由指令和参数组成,每条指令以分号。配置文件由多个块组成,每个块由一对大括号。指令可以包含在块中,块由大括号。Nginx 的配置文件通常位于。

2025-08-20 23:30:34 544

原创 Dubbo 的 Java 项目间调用的完整示例

假设项目分为三个模块:api:定义服务接口provider:服务提供者consumer:服务消费者在 中添加 Dubbo 和注册中心(如 Nacos)的依赖:3. 定义服务接口(api 模块)创建一个服务接口:4. 服务提供者(provider 模块)4.1 实现服务接口4.2 配置 Dubbo在 中配置 Dubbo 和注册中心:properties5. 服务消费者(consumer 模块)5.1 引用服务接口在 中配置 Dubbo 和注册中心:prop

2025-08-20 23:20:05 347

原创 分布式事务DTP模型

DTP(Distributed Transaction Processing)模型是由 X/Open 组织(现已并入 The Open Group)提出的分布式事务处理标准框架,旨在解决分布式系统中跨多个资源管理器的事务一致性问题。该模型定义了分布式事务的核心组件及交互协议,是 2PC(两阶段提交)等经典分布式事务方案的理论基础。DTP 模型是分布式事务处理的理论基石,其定义的组件架构和 XA 协议为传统分布式系统提供了强一致性保障。

2025-08-13 17:12:48 770

原创 JDFrame

JDFrame 是一个JVM 层级的仿 DataFrame 模型工具,旨在简化 Java 8 的 Stream 流式处理,并提供更加语义化的 API。它借鉴了 Spark 和 Pandas 等大数据框架中的 DataFrame 模型,提供了类似 SQL 的操作,例如复杂数据筛选、分组聚合、窗口函数和连接矩阵代码地址Maven依赖地址。

2025-08-13 10:52:20 317

原创 java长事务的@Transactional 详解

如果我们出现了耗时的操作,比如第三方接口调用,业务逻辑复杂,大批量数据处理等就会导致我们我们占用这个connection的时间会很长,数据库连接一直被占用不释放。当 Spring 遇到该注解时,会自动从数据库连接池中获取 connection,并开启事务然后绑定到 ThreadLocal 上,对于@Transactional注解包裹的整个方法都是。注解的声明式事务是通过spring aop起作用的,而spring aop需要生成代理对象,直接在同一个类中方法调用使用的还是原始对象,事务不生效。

2025-08-04 21:27:14 470

原创 undo Log

Undo Log 是 MySQL 中用于事务回滚和数据版本控制的逻辑日志,记录了事务执行过程中对数据的修改前状态,确保事务失败或回滚时能恢复到操作前的状态。‌。

2025-07-16 14:17:56 222

原创 Kafka 与 RocketMQ 消息确认机制对比分析

Kafka 的 ACK 机制还受到 ISR(In-Sync Replicas,同步副本集合)的影响。ISR 是与 Leader 保持同步的 Follower 副本集合,当 Leader 故障时会从 ISR 中选举新的 Leader‌12。两者在消息确认机制上的差异反映了它们不同的设计哲学:Kafka 更注重吞吐量和水平扩展,而 RocketMQ 更注重消息的可靠传递和事务支持。Kafka 提供了三种级别的生产者确认机制(ACK 机制),通过。Kafka 的消费者确认是通过‌。

2025-07-16 13:57:39 1173

原创 线程池拒绝策略执行之后的补偿案例

补偿方法适用场景优势与风险重试机制临时性资源不足简单易实现,但可能加重系统负担‌降级处理必须保证最终一致性的业务避免业务中断,但需设计补偿逻辑‌备用线程池高优先级任务资源隔离,但增加复杂度‌持久化存储允许延迟处理的批量任务可靠性高,但引入额外存储依赖‌注:实际选择需结合业务容忍度和系统资源情况‌。

2025-07-11 12:02:47 468

原创 系统设计中取舍

然而,设计和维护它需要更多的工作,因为模式和解析函数可能会变得复杂。GraphQL 提供了更精确的数据检索,但实现和维护的复杂性更高。它实现简单,并能确保顺序上的正确性,但可能导致性能瓶颈。指的是收集数据后一次性处理。这提高了系统效率和响应能力,但增加了并行任务管理和故障处理的复杂性。取舍: SQL 提供一致性和强关系支持,而 NoSQL 提供灵活性和可扩展性,通常以处理关系和事务的复杂性为代价。取舍: 读穿缓存的读取速度较快,但可能提供过时数据,而写穿缓存确保数据一致性,但代价是写入时的延迟增加。

2025-07-10 14:04:55 416

原创 死锁是什么以及如何排查和避免

线程死锁是指 ‌两个或多个线程因相互等待对方释放资源而永久阻塞‌ 的状态。当多个线程同时持有资源并请求其他线程持有的资源时,若形成循环等待链,系统将无法继续推进执行。‌死锁的四大必要条件‌互斥‌:资源一次只能被一个线程占用(如锁)‌持有并等待‌:线程持有资源同时等待其他资源‌不可剥夺‌:资源只能由持有者主动释放‌循环等待‌:线程间形成环形等待链// 线程1 // 线程2// 操作1 // 操作2} }} }‌策略‌‌适用场景‌‌关键实现‌‌统一锁顺序‌多锁协作场景。

2025-07-09 23:47:11 949

原创 Happens-Before

若 A Happens-Before B,且 B Happens-Before C,则 A Happens-Before C‌。单线程中代码的书写顺序决定执行顺序,前面的操作 Happens-Before 后续操作‌。线程所有操作 Happens-Before 其他线程检测到该线程终止(如。变量的写操作 Happens-Before 后续对该变量的读操作‌。前的操作 Happens-Before 该线程的任何操作‌。)操作 Happens-Before 后续对同一锁的加锁(

2025-07-09 23:21:48 667

原创 JMM内存模型

JMM 是 Java 并发编程的‌基石‌,通过定义内存访问规范,平衡性能与正确性。开发者需深入理解其三大特性(可见性、有序性、原子性)及实现机制(volatile、锁、Happens-Before),才能写出高效、可靠的多线程代码‌。

2025-07-09 23:17:03 957

原创 ConcurrentHashMap

是 Java 并发包(

2025-07-09 23:06:16 474

原创 ConcurrentSkipListMap

ConcurrentSkipListMap 是 Java 并发包()中基于跳表(SkipList)实现的线程安全、有序的哈希表,适用于高并发场景。

2025-07-09 22:52:37 354

原创 PriorityBlockingQueue

是 Java 并发包 () 中基于‌。

2025-07-09 22:35:12 433

原创 LinkedBlockingQueue

凭借‌双锁分离机制‌和‌动态链表结构‌,成为高并发场景下高性能阻塞队列的首选;但需警惕默认配置的无界风险,‌务必显式设置合理容量‌并评估 GC 影响。

2025-07-09 22:26:28 323

原创 ArrayBlockingQueue

适合需要‌严格控制队列容量‌且‌吞吐量要求适中‌的场景(如任务分发、流量整形)。其简洁的锁模型和数组结构在低至中并发下表现高效可靠,但需注意容量规划与锁竞争问题。

2025-07-09 22:23:20 442

原创 Condition

Lock锁中的Condition提供了比传统synchronized+wait/notify更强大、更灵活的线程间通信机制。它支持多个等待队列、精确唤醒、超时等待等特性,特别适合实现复杂的线程协作场景,如生产者-消费者模型、线程交替执行等。正确使用Condition可以编写出更高效、更健壮的并发程序‌。

2025-07-08 22:09:08 555

原创 分布式事务你们如何解决的?为什么当时不考虑TCC呢?TCC有什么缺点?

参与者没执行Try(或结果未上报),却收到了Cancel指令。

2025-07-08 09:25:09 1398

空空如也

空空如也

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

TA关注的人

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