- 博客(82)
- 资源 (1)
- 收藏
- 关注

原创 SpringCloud Feign 全局Fallback实现【SpringBoot2.7+】
在微服务架构中,服务之间的通信是至关重要的。随着微服务规模的扩大,服务调用的复杂性也在不断增加。Spring Cloud Feign作为Spring Cloud生态中的一个核心组件,提供了一种简洁、声明式的方式来进行服务间的调用。通过 Feign,开发者可以像调用本地方法一样调用远程服务,大大减少了编写复杂 HTTP 请求代码的工作量。Feign与Spring Cloud的其他组件(如Eureka、Ribbon)结合使用,能够实现更加高效、灵活的服务调用机制。
2022-12-22 21:12:59
2655
3

原创 SpringBoot2.7+ 动态数据数据源以及多数据源自动配置
内容包括动态数据源以及多数据源的自动配置包括jpa和mybatis,包含源码以及使用方法。动态数据源开关和jpa多数据源开关以及mybatis多数据源开关三者同时只能开启一个当三个开关都没开启时,默认会使用动态数据源模式jpa和mybatis的多数据源配置基本一样,引入不同的依赖就行了httpshttps。......
2022-08-19 18:25:17
3838

原创 解决springboot2.6版本以上使用默认的path_pattern路径匹配模式不兼容swagger问题
SpringBoot版本目前最新版3.4.x下个月即将发布3.5.x版本,由于springboot2.6版本以上路径匹配默认为path_pattern,而不是ant_pattern,这就与swagger产生兼容性问题,下面如何再不改源码的情况下,解决这个问题。使用BeanDefinitionRegistryPostProcessor接口替换已存在的WebMvcRequestHandlerProvider的Bean定义@Override@Override@Override。
2022-07-14 18:47:59
4157
2
原创 软件模块设计质量之内聚
在模块化软件设计中,衡量一个模块设计质量的重要指标之一便是内聚性(Cohesion)。高内聚的模块往往具有明确的职责边界、紧密的内部逻辑以及良好的可维护性和可重用性。随着软件规模和复杂度的增长,合理划分模块、提升内聚性已成为提高软件质量、降低维护成本的关键手段。内聚可分为多个层次,从最差的偶然内聚到最理想的功能内聚,每种类型都体现了模块内部组成元素之间的结合程度及其合理性。深入理解各种内聚类型的特点、适用场景以及它们在实际开发中的表现,有助于我们在架构设计和代码重构过程中作出更加科学的判断与优化。
2025-04-21 13:48:22
839
原创 软件测试-白盒测试
在当今软件系统日益复杂的背景下,软件质量已成为影响产品竞争力和用户满意度的关键因素。为了确保软件的可靠性、稳定性和安全性,软件测试作为质量保障的重要手段,在软件开发生命周期中扮演着至关重要的角色。软件测试不仅用于发现和纠正程序中的缺陷,还有助于验证软件是否满足用户需求和设计规范。随着测试技术的不断发展,测试方法逐渐从传统的黑盒测试扩展到白盒测试、灰盒测试,以及基于模型和自动化测试等更为高效的手段。合理选择并应用合适的测试策略,能够在保证测试覆盖率的同时,提高测试效率和测试结果的准确性。覆盖类型定义。
2025-04-21 13:36:07
928
原创 基于 Kubernetes 的现代化应用部署实践
在容器化浪潮席卷全球的软件开发领域,Kubernetes(简称 K8s)已经成为构建云原生应用的事实标准。它不仅提供了强大的容器编排能力,还带来了自动扩缩容、高可用、滚动更新、服务发现等现代化运维手段。随着企业 IT 架构从传统部署向微服务、DevOps 和云原生演进,Kubernetes 的学习和应用已经成为开发者与运维工程师的必备技能。
2025-04-16 10:01:00
687
原创 基于区块链的技术应用探索
随着数字化进程的加速和去中心化理念的兴起,区块链技术逐渐从比特币的底层支撑演变为一个广泛应用于各行各业的基础技术平台。从金融科技到供应链管理,从数字身份到数据存证,区块链正在重塑人们对“信任”的定义。本文将围绕区块链技术的核心特点及其典型应用场景进行探讨,帮助读者更清晰地理解区块链的现实价值与未来潜力。区块链不仅是一项技术,更是一种重新设计信任机制的方式。它所带来的透明性、公平性和安全性,正在为各行各业注入新的活力。
2025-04-16 09:46:44
1346
原创 软件架构设计风格
在软件系统的开发过程中,架构设计是决定系统可维护性、可扩展性、性能以及团队协作效率的关键环节。不同的架构设计风格为开发者提供了不同的组织方式和模块化策略,用以应对各种业务需求、技术挑战和演化目标。从传统的分层架构,到微服务、事件驱动、服务网格、黑板、无服务器架构等,每种架构风格都有其特定的适用场景与优势。理解这些架构风格的核心理念与适配条件,能够帮助我们更有策略性地做出技术选型,构建更加健壮、灵活和可演进的软件系统。
2025-04-14 14:05:08
1072
原创 Python Or Java
Python 和 Java 是当今最流行的编程语言之一,各有优势和适用场景。Python 在 AI 和大数据领域有绝对优势,不是因为它跑得快,而是因为它让开发更快、更轻松。下面我从多个角度来分析它们的区别,帮助你做出选择。你的目标/背景推荐语言编程新手 / 快速入门Python想从事 AI / 数据 / 科研Python想开发大型系统、企业后端Java关注高性能、并发、多线程Java想做移动端(Android)Java(或 Kotlin)快速做原型、写工具脚本Python。
2025-04-09 15:58:28
717
原创 Elasticsearch collapse 的使用场景及作用机制
在 Elasticsearch 查询中,collapse(字段折叠)用于对指定字段的值进行分组,每组只返回一个文档。它的作用类似于 SQL 里的 GROUP BY,但 collapse 不会聚合所有字段,而是仅折叠查询结果的显示方式。业务场景推荐使用只想展示每个分组的一个结果,如每家公司最多一个职位✅ collapse需要统计各分组的所有数据,如统计不同公司的职位总数❌ 使用 terms 聚合需要分页且分组后仍能正确分页❌ terms 聚合 或 search_after。
2025-04-02 09:10:08
734
原创 OSI 七层模型和四层模型(TCP/IP 模型)
OSI 七层模型更详细,理论性强,结构清晰,但应用较少。TCP/IP 四层模型更实际,直接应用于互联网协议栈,更符合现实的网络通信流程。高层设备(应用层 - 传输层):服务器、网关、负载均衡器、代理服务器等。中间层设备(网络层):路由器、防火墙等。底层设备(数据链路层 - 物理层):交换机、无线 AP、网桥、集线器、网卡等。在现代网络架构中,许多设备(如防火墙、多层交换机、路由器)都融合了多个网络层的功能,并支持智能流量管理。
2025-03-28 18:18:03
1312
原创 UML(统一建模语言)中总共有哪些图
结构图(Structural Diagrams) - 用于描述系统的静态结构行为图(Behavioral Diagrams) - 用于描述系统的动态行为类型UML 图作用使用场景结构图类图描述类及其关系系统设计、数据库设计对象图类图的实例化运行时快照、调试组件图模块化设计 软件架构、模块依赖部署图物理部署分布式系统部署复合结构图类的内部结构复杂类的细节设计包图组织 UML 模型大型系统的模块化配置文件图UML 扩展行业定制化建模行为图用例图功能需求。
2025-03-19 15:47:15
684
原创 结构化分析方法有哪些图
结构化分析方法主要使用一系列图表来直观地表示系统的功能、数据流、模块划分等。图表作用适用阶段数据流图(DFD)描述数据流需求分析ER图设计数据库结构数据库建模状态转换图(STD)描述状态变化需求分析、详细设计层次图(HIPO)展示系统功能层次需求分析、概要设计程序流程图逻辑流程控制详细设计、算法分析结构图(Structure Chart)模块调用关系详细设计。
2025-03-19 15:32:20
1172
原创 主要的软件开发方法
软件开发方法主要包括瀑布模型、敏捷开发、原型开发、面向对象开发方法、测试驱动开发(TDD)以及DevOps等。这些方法各有侧重点,适用于不同场景和需求,通过流程优化或技术创新提升软件开发的效率和质量。如何选择合适的方法?开发方法适用项目优点缺点瀑布模型需求明确、变更少的大型项目结构清晰、文档完善变更成本高、进度难调整敏捷开发互联网、初创项目快速迭代、适应需求变化需要高协作,文档可能不足Scrum团队协作开发透明度高、灵活调整需要良好Scrum Master管理看板。
2025-03-19 11:30:55
587
原创 PostgreSQL 和 MySQL 区别
PostgreSQL 和 MySQL 是两种流行的关系型数据库管理系统,它们在架构、功能、性能等方面各有优劣,具体选择要看你的业务需求。选 PostgreSQL,如果你的业务需要:✅ 复杂 SQL 查询、数据分析、大量 JSON 处理、GIS 计算、事务一致性高的金融/支付系统。✅ 可扩展性、插件支持强的数据库,例如多租户 SaaS、分布式数据库方案。选 MySQL,如果你的业务需要:✅ 轻量级、高并发、低延迟的小型 Web 系统、电商、社交媒体等互联网应用。
2025-03-14 11:27:53
1887
原创 Deepsearch 、Rag 、RraphRag
DeepSearch、RAG(Retrieval-Augmented Generation)和 GraphRAG 这三种技术在智能检索、信息增强和知识推理方面各有侧重,适用于不同的场景。下面分别介绍它们的特点、区别以及适用场景,并提供如何选择的建议。DeepSearch → 精准检索,适用于知识库、搜索引擎。RAG → 检索增强生成,适用于 AI 问答、文本总结。GraphRAG → 结合知识图谱,适用于复杂推理任务。
2025-03-13 11:50:51
1081
原创 jsonl与json区别
JSONL(JSON Lines) 和 JSON 都是 JSON(JavaScript Object Notation)格式的变体,但它们的结构和使用场景有所不同。✅ JSON 适用于:结构化、小规模数据,一次性加载解析。✅ JSONL 适用于:大规模数据、流式处理,每行是独立 JSON。如果你的数据量很大,或者是日志流式数据(比如 RAG 应用存储检索数据),建议使用 JSONL。
2025-03-13 10:59:58
521
原创 MongoDB Vs Elasticsearch
MongoDB 和 Elasticsearch 在存储、查询方式、使用场景等方面有较大区别,以下是它们的核心区别、各自优缺点以及实际使用中的选择建议。需求选择 MongoDB选择 Elasticsearch高频写入、实时存储✅ 适合❌ 写入较慢全文搜索、模糊匹配❌ 支持有限✅ 倒排索引更快数据一致性(事务)✅ 支持 ACID❌ 最终一致性高吞吐日志处理✅ 适合✅ 适合实时搜索❌ 查询慢✅ 毫秒级搜索向量搜索(AI 推荐)❌ 不适合✅ 支持 ANN单独使用 MongoDB。
2025-03-12 18:09:38
1914
原创 Go语言为什么运行比Java快
Go 和 Java 是两种广泛应用的编程语言,它们在语言特性、性能、生态、应用场景等方面存在显著区别。以下是它们的核心区别,以及在实际开发中的选择建议。需求选择 Go选择 Java高性能、高并发✅ Goroutine 更轻量,适合高并发适合 JIT 优化后长期运行的应用快速启动、轻量部署✅ 二进制文件可直接运行JVM 需要额外启动时间微服务架构✅ 云原生,轻量级✅ Spring Cloud,企业级微服务大数据处理❌ Go 生态较少✅ Spark、Flink 等生态完善。
2025-03-12 17:44:15
993
原创 常用开源MQ组件对比
常用的开源mq组件有RabbitMQ、Kafka、RocketMQ、ActiveMQ、Pulsar。RabbitMQ适合 事务、可靠性高、低延迟 的业务(如支付、订单)。Kafka适合 大规模日志收集、流式计算、高吞吐 的业务(如监控、日志)。RocketMQ介于两者之间,适合 高吞吐+事务(如电商、金融)。ActiveMQ适合 传统企业级 Java EE 项目(JMS 兼容)。Pulsar适合 云原生架构,低延迟+高吞吐(比 Kafka 易管理)。如果你的业务不确定,
2025-03-11 10:35:01
1005
原创 MySQL 与 MongoDB 的区别
在当今数据驱动的世界中,数据库技术扮演着至关重要的角色,它们为应用程序提供了存储、管理和检索数据的基础设施。MySQL 和 MongoDB 作为两种广泛使用的数据库管理系统,分别代表了关系型数据库(SQL)和非关系型数据库(NoSQL)的典型范例。MySQL 是一种成熟的关系型数据库管理系统(RDBMS),自1995年问世以来,凭借其稳定性、可靠性和易用性,成为了许多企业和开发者的首选。
2025-03-11 10:16:25
841
原创 如何选择开源向量数据库
选择开源向量数据库时,需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素,以下是关键的评估维度:选择开源向量数据库时,需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素,以下是关键的评估维度:
2025-03-09 13:25:17
572
原创 五大流程引擎对比
在复杂的业务系统中,如何清晰、灵活、可视化地编排各种业务步骤,成为系统架构设计的重要挑战。流程引擎(Workflow Engine)作为解决这一问题的核心组件,能够将传统“写死”的业务流程转化为可配置、可视化、可监控的工作流,大大提升了系统的可维护性与业务响应能力。无论是审批流、订单流程,还是自动化运维场景,流程引擎都扮演着中枢协调的角色,是现代企业数字化转型的关键工具之一。小型和中型企业:可以考虑Activiti或Flowable,由于其轻量级和易于集成的特点。大型企业或复杂流程:推荐Camunda或。
2025-02-18 11:48:25
515
原创 什么是蒸馏大型语言模型
蒸馏大型语言模型(Distillation of Large Language Models, LLMs)是一种知识压缩技术,用于将一个大型、计算量大、性能优秀的模型(通常称为“教师模型”)的知识迁移到一个较小、较高效的模型(称为“学生模型”)。目标是通过蒸馏过程使得较小的模型能够在性能上接近大型模型,同时显著降低计算和存储的需求。蒸馏大型语言模型的目的是在保持性能的同时减小模型的规模和计算需求,使得即便在资源有限的设备上也能够高效运行。
2025-02-10 18:33:53
918
原创 结构化布线系统分为六个子系统
结构化布线系统是一种用于现代建筑中的综合布线体系,通过标准化的设计和施工为各种通信和信息设备提供连接。它通常被划分为六个子系统,每个子系统都有特定的功能和用途。功能:负责终端设备(如计算机、电话、打印机等)与信息插座的连接。组成:信息插座(如RJ45接口)跳线或终端连接线特点:位于用户终端的物理区域内。提供灵活的设备接入点,便于设备的移动和更换。这些子系统共同组成了一个完整的结构化布线系统,各自承担不同的功能并相互协作。
2025-01-23 16:22:57
1439
原创 RAG与GraphRAG的区别
RAG (Retrieval-Augmented Generation) 和 GraphRAG (Graph-Based Retrieval-Augmented Generation) 是两种用于生成增强型问答的技术,但它们的核心数据结构和适用场景有所不同。GraphRAG 的适用性强于 RAG 的场景多跳推理:涉及多个实体和关系时(如知识图谱、社交网络)。多条件约束:需要同时满足多个条件或属性筛选(如推荐系统)。复杂关系查询:需要显式路径推理的场景,避免生成模型逻辑混乱。建议。
2025-01-23 10:39:50
1541
原创 时序数据库的使用场景
时序数据库(Time Series Database, TSDB)是一种专门设计用于存储和处理时序数据的数据库。时序数据是指按照时间顺序排列的数据,其中每个数据点通常包含时间戳和与之关联的多个指标(例如温度、压力、股票价格等)时序数据库是针对时间序列数据量大、写入频繁、查询按时间范围等特点进行优化的数据库。它在物联网、监控、金融、能源、网络、健康等领域有广泛应用,适用于存储、查询和分析大量实时产生的时间相关数据。
2025-01-21 14:30:14
1208
原创 什么是本体
随着人工智能、自然语言处理和知识图谱的快速发展,“本体(Ontology)”作为一种核心的知识表示方式,越来越受到学术界和业界的关注。无论是在语义理解、自动推理还是智能问答系统中,本体都扮演着至关重要的角色。它为我们提供了一种将复杂知识结构化、标准化的手段,使机器能够理解、推理并利用这些知识。本文将简要介绍本体的概念、构成要素以及它在人工智能领域的应用场景,帮助大家更好地理解这一重要工具。本体(Ontology),在人工智能和语义网领域中,是一种用于明确描述某个领域中概念及其关系的知识模型。
2025-01-21 11:00:51
501
原创 Big-endian(大端字节序)与Little-endian(小端字节序)区别
BIG_ENDIAN 和 LITTLE_ENDIAN 是两种不同的字节序(Byte Order)表示方式,用于指定数据在内存中存储的顺序。字节序指的是多字节数据类型(如int, long, float等)在计算机内存中的存储顺序。Big-endian(大端字节序):最高有效字节(Most Significant Byte, MSB)存储在内存的低地址,最低有效字节(Least Significant Byte, LSB)存储在内存的高地址。Little-endian(小端字节序)
2025-01-17 15:25:48
1169
原创 Rocksdb的原理及使用场景
高写入负载如果系统需要处理大量的写入操作并保持低延迟的响应,RocksDB是非常适合的选择。低延迟读取对于需要快速读取数据的系统,RocksDB可以提供低延迟的访问。大规模数据集当需要处理大规模数据集并进行高效索引和查询时,RocksDB能够提供良好的性能。嵌入式应用在需要嵌入式键值存储并具有持久化功能的场景下,RocksDB非常合适。
2025-01-17 10:53:39
1376
原创 Elasticsearch的function_score与rescore的区别
在 Elasticsearch 中,function_score 和 rescore 都是对查询结果进行评分调整的机制,但它们的用途、作用范围和执行阶段有所不同。function_score 更适合在查询阶段调整所有匹配文档的评分,用于基于字段或业务规则的动态评分调整。rescore 更适合在初步筛选后的精细排序,用于复杂的二次排序逻辑(例如短语匹配或基于机器学习的重新打分)。如果你需要动态调整所有文档的评分,使用 function_score。
2025-01-16 15:26:14
1256
原创 OpenID与oauth2.1有什么区别联系
OpenID和OAuth 2.1是两个不同但相关的协议,它们解决的需求和用途不同。OAuth 2.1谁在使用用户身份验证核心令牌ID Token(用户信息)构建目标验证身份使用关系基于 OAuth 2.0 扩展实际场景举例::用户通过 Google 登录你的应用,并获得用户的姓名和电子邮件。OAuth 2.1:你的应用请求访问用户的 Google Drive 文件,需要用户授权访问权限。
2025-01-14 16:18:59
878
原创 贪心、回溯、动态规划、分治算法的区别(附Java代码)
贪心、回溯、动态规划、分治算法都是常见的算法思想,主要区别在于它们解决问题的方式和适用的场景。
2025-01-10 15:06:50
1144
原创 PKCE(Proof Key for Code Exchange)六大使用场景
PKCE 的主要使用场景单页应用(SPA)移动应用(Native App)桌面应用第三方应用集成安全增强(在可信客户端中)符合 OAuth2.1 新规范通过 PKCE,可以显著提升 OAuth 2.0 授权码模式的安全性,特别是在无法安全存储 client_secret 的客户端中,是必不可少的机制。
2025-01-10 10:20:13
1226
原创 ×(笛卡尔积)、⋈(自然连接/连接) 的区别
笛卡尔积(×)和自然连接(⋈)是两种不同的关系操作符,广泛用于数据库和关系代数中。特性笛卡尔积 (×)自然连接 (⋈)操作方式将两个表的每一行配对,返回所有组合结果根据相同列名的值匹配行,并合并重复列结果行数行数是两个表行数的乘积 (m * p)只有两个表中具有匹配列值的行才会被返回结果列数列数是两个表列数的总和 (n + q)去除重复列,只保留一个匹配列典型用途用于组合所有可能的行对,例如在数据生成或分析时用于基于共享列进行的表连接,例如联合查询效率。
2025-01-10 10:17:57
2136
原创 SpringCloud Feign 全局Fallback的另一种实现方式(SpringBoot3.4+)
之前在SpringBoot2.7+中实现全局Fallback方式较为复杂,且是从Feign入手,现在从断路器入手,通过捕获异常方式实现。注意:这里基于SpringBoot3.4实现的,如果是2.7那么又会复杂一点,原因是内置的Resilience4JCircuitBreakerFactory实现的接口未返回接口CircuitBreaker而是实现Resilience4JCircuitBreaker,在3.4版本已修正为接口CircuitBreaker。
2025-01-08 18:08:26
620
原创 常用的排序算法(Java版)
排序算法有很多,这里列出最常用的一些,如选择排序、插入、冒泡等。稳定性:待排序数据中有相同的数,排序之后相同的数与排序前的前后位置关系不变,则成为稳定排序算法。比如我们有一组数据2,9,3,4,8,3;按照大小排序之后就是2,3,3,4,8,9;两个3的前后顺序在排序前后保持不变,即稳定。排序算法最佳时间复杂度平均时间复杂度最坏时间复杂度稳定性空间复杂度选择排序O(N^2)O(N^2)O(N^2)不稳定O(1)插入排序O(N)O(N^2)O(N^2)稳定O(1)
2025-01-08 17:15:03
659
原创 什么是算法
在我们解决问题的过程中,无论是生活中的流程操作,还是程序中的逻辑执行,本质上都离不开“算法”。从搜索引擎排序、导航路径规划,到电商推荐系统背后,算法几乎无处不在。它不仅是程序运行的基础,更是程序“聪明与否”的关键。对于每一个想深入理解编程和计算的开发者而言,掌握算法,不仅能写出更高效的程序,也能更深刻理解问题背后的逻辑本质。“算法”是计算机科学中的核心概念。简单来说,算法是一组用于解决特定问题的有序步骤或规则。只要按照这个步骤执行,就一定能在有限时间内得出问题的答案。
2024-09-09 21:00:24
200
原创 Zookeeper3.8.3 java client示例
在当今微服务架构和分布式系统快速发展的背景下,系统组件之间的协调与管理变得尤为重要。随着服务规模的扩大,节点之间的信息同步、主从选举、配置管理以及任务调度等问题逐渐浮现,传统的单体系统难以胜任这些复杂的协调任务。为了解决这一难题,Apache 推出了一个高性能、高可用的分布式协调框架 —— Zookeeper。Zookeeper 提供了一个强一致性的分布式协调服务,它通过简单的数据模型和 Watch 机制,帮助开发者在复杂的分布式环境中轻松实现服务注册与发现、主从选举、分布式锁等关键功能。
2023-12-21 15:48:36
520
原创 Nginx的location路径与proxy_pass匹配规则
若proxy_pass代理地址端口后无任何字符,则转发后地址为:代理地址+访问的pathlocationproxy_pass代理路径/api//api//api/api若proxy_pass代理地址端口后有目录(包括"/"),则转发后地址为:代理地址+访问的path去除location匹配的路径locationproxy_pass代理路径/api//api//api/api。
2023-12-21 15:39:16
1835
颜色拾取器颜色拾取器颜色拾取器
2017-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人