Dubbo 关键知识点解析:负载均衡、容错、代理及相关框架对比
1.Dubbo 负载均衡策略?
Dubbo 是一个分布式服务框架,它提供了多种负载均衡策略来分发服务调用。在 Dubbo 中,负载均衡的实现是基于客户端的,即由服务消费者(Consumer)端决定如何选择服务提供者(Provider)。以下是 Dubbo 支持的一些常见的负载均衡策略:
Random LoadBalance (随机)
默认情况下,Dubbo 使用的是加权随机算法。所谓加权随机,就是根据每个服务提供者的权重配置,按照比例随机选取服务提供者。
RoundRobin LoadBalance (轮询)
按照顺序循环调用,当有多个提供者时,每次请求会按序轮流调用不同的提供者,如果某个提供者不可用,则跳过。
LeastActive LoadBalance (最少活跃调用)
这个策略会选择当前活跃调用数最小的服务提供者。这里的“活跃调用”是指未完成的调用数量。对于权重较高的服务提供者,会有更高的几率被选中。
ConsistentHash LoadBalance (一致性哈希)
根据参数进行哈希,保证相同参数的请求总是发送到同一个提供者上。这对于需要保持会话状态的应用非常有用。可以通过指定hash.arguments参数来设置参与哈希计算的方法参数位置。
ShortestResponse LoadBalance (最短响应时间)
选择历史平均响应时间最短的服务提供者。这个策略不是默认提供的,可能需要通过扩展点机制自行实现。
使用这些策略时,可以在服务消费者的配置文件或代码中指定想要使用的负载均衡策略。例如,在 XML 配置文件中,可以通过 < dubbo:reference > 标签的loadbalance属性来设置。
<dubbo:reference id="demoService" interface="com.alibaba.demoservice.DemoService" loadbalance="leastactive"/>
此外,Dubbo 的负载均衡策略是可插拔的,这意味着你可以通过实现自己的负载均衡算法并注册为 Dubbo 的 SPI 扩展来添加自定义的负载均衡策略。
2. Dubbo 容错策略
Dubbo 提供了多种容错策略(Fault Tolerance Strategy)来确保服务调用的高可用性和稳定性。这些策略决定了当服务调用失败时,Dubbo 将如何处理。以下是 Dubbo 支持的主要容错策略:
Failover Cluster (重试)
这是默认的容错策略。如果调用失败,则会从注册中心获取的服务列表中选择其他服务提供者进行重试,直到达到最大重试次数(默认为2次)。对于幂等性操作来说,这是一个不错的选择。
Failfast Cluster (快速失败)
只发起一次调用,如果调用失败立即报错。适用于非幂等性的操作,如新增记录,避免重复执行带来的问题。
Failsafe Cluster (安全失败)
即使出现异常也不会抛出,而是直接忽略异常。适用于写入审计日志等操作,即使失败也不影响主流程。
Failback Cluster (失败自动恢复)
如果调用失败,它不会立刻抛出异常,而是在后台定时重试。通常用于消息通知、日志收集等场景,允许一定程度上的延迟处理。
Forking Cluster (并行调用多个服务器)
同时调用多个服务提供者,并发数可以指定(默认为2),只要一个成功即返回。适用于对响应时间敏感但又要求高可用性的场景。
Broadcast Cluster (广播调用所有服务器)
调用所有提供者,逐个调用,任意一台报错则报错。常用于需要将数据同步到所有节点的情况,例如缓存更新或配置更新。
这些策略可以在服务消费者的配置文件或代码中通过dubbo:reference标签的cluster属性来设置。例如:
< dubbo:reference id="demoService" interface="com.alibaba.demoservice.DemoService" cluster="failover"/>
除了上述内置策略外,Dubbo 还支持自定义集群容错策略。你可以通过实现com.alibaba.dubbo.rpc.cluster.Cluster接口,并通过 SPI 机制注册你的自定义策略。
选择合适的容错策略对于构建稳定可靠的服务非常重要,应根据具体的业务需求和场景来决定采用哪种策略。
3. Dubbo 动态代理策略有哪些?
Dubbo 支持多种动态代理策略,允许开发者根据需求选择最适合的代理方式。动态代理机制在 Dubbo 中主要用于创建服务接口的代理实例,以便在调用这些接口时可以透明地执行远程过程调用(RPC)。以下是 Dubbo 支持的一些主要动态代理策略:
Javassist 动态字节码生成
这是 Dubbo 默认使用的动态代理方式。Javassist 是一个用于编辑 Java 字节码的库,它可以在运行时生成新的类和方法,因此非常适合用来创建动态代理。
JDK 动态代理
JDK 自带的动态代理机制依赖于接口,通过反射机制为接口生成代理对象。如果服务提供者实现了接口,则可以使用此方式来创建代理。
CGLIB 动态代理
CGLIB(Code Generation Library)是一个强大的高性能代码生成库,它可以在运行时扩展 Java 类和实现接口。与 JDK 动态代理不同的是,CGLIB 不需要目标类实现接口即可生成代理。
ByteBuddy 动态代理
ByteBuddy 是另一个流行的字节码操作库,它可以用来生成、转换和加载 Java 类。它比 Javassist 和 CGLIB 更加现代,并且提供了更简洁的 API。
基于 SPI 的动态代理
Dubbo 通过 SPI(Service Provider Interface)机制支持自定义动态代理策略。用户可以通过实现 ProxyFactory 接口来自定义代理逻辑,并将其注册到 Dubbo 的扩展点中。
Spring AOP 动态代理
虽然这不是 Dubbo 内置的功能,但可以通过集成 Spring 框架利用 Spring AOP 来进行动态代理。这使得可以在不修改原有代码的情况下,通过拦截方法调用来实现额外功能。
基于注解的动态代理
Dubbo 支持通过注解指定代理方式。例如,可以使用特定注解如 @ProxyBean 或 @Service 来指示 Dubbo 使用 JDK 或 CGLIB 等方式进行代理。
选择哪种动态代理策略取决于具体的应用场景和技术要求。默认情况下,Dubbo 使用 Javassist 进行动态代理,因为它通常能提供较好的性能和灵活性。然而,在某些情况下,比如当项目已经广泛使用了 CGLIB 或者想要避免引入额外依赖时,可能会选择其他的代理方式。此外,通过 SPI 扩展机制,还可以轻松添加或切换不同的代理实现。
4.说说 Dubbo 与 Spring Cloud 的区别?
Dubbo 和 Spring Cloud 都是用于构建分布式系统和服务治理的框架,但它们在设计理念、架构背景、通信协议、服务调用方式、注册中心支持以及适用场景等方面存在显著差异。以下是两者的主要区别:
架构背景和定位
- Dubbo:起源于 SOA(面向服务的架构)时代,主要聚焦于服务的调用、流量管理和监控等功能。它旨在提供高效的 RPC(远程过程调用)解决方案。
- Spring Cloud:诞生于微服务架构时代,涵盖了微服务治理的方方面面,关注服务注册与发现、配置管理、断路器、路由等。它建立在 Spring 和 Spring Boot 的生态之上,提供了更全面的微服务解决方案。
通信协议和服务调用
- Dubbo:使用 Netty 等 NIO 框架,基于 TCP 协议进行通信,配合 Hessian 序列化实现高效的二进制传输。RPC 调用方式意味着服务消费者和提供者之间存在较强的代码依赖关系。
- Spring Cloud:通常基于 HTTP 协议和 REST 接口进行通信,虽然 HTTP 请求的带宽占用较大,但 REST 的灵活性使得服务提供者和消费者之间的依赖关系相对松散,依赖契约而非代码,这在强调快速演化的微服务环境下更为合适。
注册中心和支持
- Dubbo:最初仅支持 ZooKeeper 作为注册中心,后来扩展支持了 Nacos 等其他注册中心。它的设计更专注于服务治理功能。
- Spring Cloud:支持多种注册中心,如 Eureka, Consul, Zookeeper 等,并且通过 Spring Boot 提供了一套简化配置和使用的工具集。
生态系统
- Dubbo:由于其高性能和轻量级特性,适合对性能有高要求的应用场景,特别是在电商领域有着广泛的应用。
- Spring Cloud:拥有更加丰富的生态系统,包括但不限于配置管理、熔断机制、智能路由、微代理、控制总线、一次性 token、全局锁、选主、分布式会话和集群状态等,适用于广泛的微服务架构需求。
监控和管理
- Dubbo:提供了 Dubbo Monitor 等工具用于监控和管理微服务。
- Spring Cloud:除了上述提到的各种子项目外,还提供了 Spring Boot Admin 等工具用于监控和管理微服务。
总结
选择 Dubbo 还是 Spring Cloud 取决于具体的业务需求和技术栈偏好。如果项目需要高性能的远程调用并且对服务间的耦合度较高,Dubbo 是一个很好的选择;而对于那些追求灵活的服务定义、解耦的服务间通信以及完整的微服务治理方案,则 Spring Cloud 更具优势。在实际应用中,也可以根据项目的不同部分选择不同的框架组合使用,以达到最佳效果。
5.Zookeeper 和 Dubbo 的关系?
ZooKeeper 和 Dubbo 之间的关系主要体现在服务注册与发现上。Dubbo 是一个高性能的 Java RPC 框架,而 ZooKeeper 则是一个分布式协调服务,通常被用作 Dubbo 的服务注册中心。以下是它们之间关系的具体说明:
服务注册与发现
- 服务提供者注册:当一个服务启动时,它会将自己提供的服务接口信息(如服务名、版本号、地址等)注册到 ZooKeeper 中。这些信息会被存储为 ZooKeeper 中的节点(znode),并且可以设置为临时节点,以便在服务不可用或宕机时自动从注册表中移除。
- 服务消费者订阅:服务消费者启动后,会向 ZooKeeper 订阅它感兴趣的服务接口。一旦有新的服务提供者加入或已有提供者下线,ZooKeeper 会通知订阅了该服务的所有消费者,从而保证服务列表的实时更新。
动态路由和负载均衡
- 使用 ZooKeeper 作为注册中心,可以帮助实现动态路由规则和服务权重配置等功能。例如,可以根据不同的条件(如地理位置、服务器性能等)来调整流量分配策略,或者对某些服务提供者设置更高的权重以增加其被选中的概率。
配置管理
- ZooKeeper 还可以用来集中化管理配置信息。Dubbo 的一些配置项可以通过 ZooKeeper 来进行动态调整,比如超时时间、重试次数等,而无需重启应用。
高可用性
- ZooKeeper 自身具有高可用性和一致性保障,通过复制日志、选举机制等手段确保集群内所有节点的数据一致。这使得即使单个 ZooKeeper 节点出现故障,整个注册中心仍然能够正常工作,进而提高了基于 ZooKeeper 的 Dubbo 服务调用的可靠性。
版本控制
- 在某些情况下,ZooKeeper 可用于维护不同版本的服务定义,帮助实现平滑升级和回滚。例如,在新版本服务上线前,可以在 ZooKeeper 中预先发布新版本的服务信息,并逐步引导流量到新版本上来。
综上所述,ZooKeeper 在 Dubbo 架构中扮演着至关重要的角色,不仅实现了高效的服务注册与发现,还支持了诸如配置管理、动态路由等高级特性,增强了系统的灵活性和可扩展性。不过值得注意的是,虽然 ZooKeeper 是 Dubbo 默认的服务注册中心之一,但并不是唯一选择。随着技术的发展,Nacos、Consul 等其他注册中心也逐渐成为 Dubbo 生态的一部分,提供了更多的选择和功能。
相关文章:
Dubbo 关键知识点解析:负载均衡、容错、代理及相关框架对比
1.Dubbo 负载均衡策略? Dubbo 是一个分布式服务框架,它提供了多种负载均衡策略来分发服务调用。在 Dubbo 中,负载均衡的实现是基于客户端的,即由服务消费者(Consumer)端决定如何选择服务提供者(…...
仿生的群体智能算法总结之三(十种)
群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是30种常见的群体智能算法,本文汇总第21-30种。接上文 : 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swar…...
《量子比特大阅兵:不同类型量子比特在人工智能领域的优劣势剖析》
在科技的前沿,量子比特与人工智能的融合正开启一扇全新的大门。不同类型的量子比特,如超导、离子阱、光量子等,在与人工智能结合时展现出独特的优势与劣势。 超导量子比特 超导量子比特是目前应用较为广泛且研究相对成熟的量子比特类型。它…...
el-input输入框需要支持多输入,最后传输给后台的字段值以逗号分割
需求:一个输入框字段需要支持多次输入,最后传输给后台的字段值以逗号分割 解决方案:结合了el-tag组件的动态编辑标签 那块的代码 //子组件 <template><div class"input-multiple-box" idinputMultipleBox><div>…...
机器人领域的一些仿真器
模拟工具和环境对于开发、测试和验证可变形物体操作策略至关重要。这些工具提供了一个受控的虚拟环境,用于评估各种算法和模型的性能,并生成用于训练和测试数据驱动模型的合成数据。 Bullet Physics Library 用于可变形物体模拟的一个流行的物理引擎是 B…...
前端-动画库Lottie 3分钟学会使用
目录 1. Lottie地址 2. 使用html实操 3. 也可以选择其他的语言 1. Lottie地址 LottieFiles: Download Free lightweight animations for website & apps.Effortlessly bring the smallest, free, ready-to-use motion graphics for the web, app, social, and designs.…...
腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎
在当今数字化时代的汹涌浪潮中,数据已跃升为企业发展的关键要素,其高效、精准的处理成为企业在激烈市场竞争中脱颖而出的核心竞争力。腾讯云智能结构化 OCR 技术凭借其前沿的科技架构与卓越的功能特性,宛如一颗璀璨的明星,在交通、…...
【开源免费】基于SpringBoot+Vue.JS精品在线试题库系统(JAVA毕业设计)
本文项目编号 T 115 ,文末自助获取源码 \color{red}{T115,文末自助获取源码} T115,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
c# CodeFirst生成表字段加注释
前置:ORM框架工具使用的FreeSql 背景:开发环境中运行接口,所有的表字段以及备注会自动加上,但是在测试环境时运行就只生成了表,没有把每个字段的注释加上 问题检查: FreeSql CodeFirst 支持将 c# 代码内的注…...
MySQL8.0复制原理和部署配置步骤
1. mysql 主从复制原理 在从库上执行change master to;会将主库的信息保存到从库中的master.info文件中在从库执行start slave;开启io_thread, sql_thread线程;io_thread工作;io_thread通过master.info文件中主库的连接信息去连接主库;连接成…...
Unity热更新文件修改后缀并拷贝到指定路径的工具类
最近在学习Hybrid热更新。每次编译完,需要修改后缀名和拷贝到特定路径覆盖旧文件,就叫AI写了个工具类。现在记录一下,毕竟ai写完还需要修改。 代码如下,放到Assets/Editor/路径下即可。 可根据需求自行改变路径和文件名。 using…...
前端vue+el-input实现输入框中文字高亮标红效果(学习自掘金博主文章)
学习自掘金文章https://juejin.cn/post/7295169886177918985 该博主的代码基于原生textarea控件和js实现,基于该博主的代码和思路,在vue下实现了相应功能 思路 生成html字符串来实现文字高亮标红效果,但是input输入控件不能渲染html字符串…...
SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点
文章目录 前言一、SAP系统中的价格控制二、移动平均价、标准价是什么?三、S价(标准价)的优势四、S价(标准价)的劣势五、V价(移动平均价)的优势六、V价(移动平均价)的劣势…...
通往O1开源之路
“Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective”由复旦大学和上海人工智能实验室的研究者撰写。该论文从强化学习视角出发,深入分析了实现类似OpenAI o1模型性能的路线图,聚焦于策略初始化、奖…...
【QT】实现RestFul接口
在这个教程中,我们将介绍如何在 Qt 中使用 QHttpServer 类来创建一个简单的 HTTP 服务器。QHttpServer 是 Qt 6 引入的新类,用于提供 HTTP 服务。这个类非常适合快速开发restful接口。 准备工作 确保你的 Qt 版本是 Qt 6 或更高版本,因为 Q…...
ARP攻击的原理和实现 (网络安全)
ARP攻击的原理和实现 ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于在局域网内将IP地址映射到MAC地址。在以太网中,设备通过广播ARP请求来查询目标IP地址对应的MAC地址,从而建立通信…...
大脑特训,自信 “满格”
编辑:念小艺 在追求自信的漫漫长路上,诸多因素如同闪耀的星光,为人们指引着方向。保持良好的饮食习惯,让身体摄取充足且均衡的营养,为精神的饱满提供坚实后盾;持续投身于锻炼之中,在挥洒汗水的…...
如何备份和恢复 PostgreSQL 数据库 ?
对于数据库管理员和开发人员来说,在 PostgreSQL 中创建数据库副本是一项至关重要的任务。此过程对于测试、备份、数据分析等都是必不可少的。在本指南中,我们将深入研究创建 PostgreSQL 数据库副本的步骤,以确保数据完整性和系统性能。 必要…...
逆向入门(6)汇编篇-外挂初体验
代码分析部分 游戏里面还是体验了不少自己CV来的外挂的,自己编写的程序还是头一次体验,程序源码如下 void startAcctack() {printf("开始攻击\n");// 获取当前系统时间time_t now time(0); // 获取当前时间的时间戳struct tm *local_time …...
HTML——77.网页编码及乱码处理
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>网页编码及乱码处理</title></head><body><!--网页编码:指网页中特定的字符编码,通过解析编码成为我们知道的文字--><!-…...
(leetcode算法题)382. 链表随机节点
如果给你一个 智能记录 k行内容的小笔记本,从一本你也不知道有多少行的 C Primer 中进行摘抄,你应该怎么做才能让抄写的时候能让书中的每一行都等概率的出现在小笔记本中? 答:准备好一个公平的轮盘和一个巨大的摇奖机,…...
Git 如何在IDEA中进行使用
1. 2. 3....
【Pytorch报错】AttributeError: cannot assign module before Module.__init__() call
代码: import torch.nn as nnclass Model(nn.Module):def __init__(self, input_dim, output_dim):self.linear nn.Linear(input_dim, output_dim) def forward(self, x):out self.linear(x)return outmodel Model(1, 1)报错: --------------------…...
深入理解计算机系统—虚拟内存(一)
一个系统中的进程是与其他进程共享 CPU 和主存资源的。然而,共享主存会形成特殊的挑战。随着对 CPU 需求的增长,进程以某种合理的平滑方式慢了下来。但是如果太多的进程需要太多的内存,那么它们中的一些就根本无法运行。 为了更加有效地管理内…...
[Qt] 输入控件 | Line | Text | Combo | Spin | Date | Dial | Slider
目录 输入类控件 1、Line Edit 录入个人信息 使用正则表达式验证输入框的数据 验证两次输入的密码一致 切换显示密码 2、Text Edit 获取多行输入框的内容 验证输入框的各种信号 3、Combo Box 使用下拉框模拟麦当劳点餐 从文件中加载下拉框的选项 4、Spin Box 调整…...
【信息系统项目管理师】高分论文:论信息系统项目的风险管理(数字化联合审查管理系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、全盘考虑,编制项目风险管理计划二、务实高效,做好项目的风险识别三、客观严谨,进行定性风险分析四、客观严谨,进行定量风险分析五、未雨绸缪,做好规划风险应对六、控制执行,实施风险应对七、做好…...
设计模式 结构型 外观模式(Facade Pattern)与 常见技术框架应用 解析
外观模式(Facade Pattern)是一种结构型设计模式,它的核心思想是将一个复杂的子系统封装在一个外观类中,为子系统提供一个统一的接口。通过这个接口,客户端可以简化对子系统的访问,而无需直接与子系统中的各…...
《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记
1.LPI(Locality-specific Peripheral Interrupts)是一种基于消息的中断(Message Signaled Interrupt,MSI),由中断翻译服务(ITS)提供翻译。这是因为LPI的设计目标是为系统中大量的设备提供高效的中断管理&am…...
java 常量池详解
目录 java 常量池详解一 静态常量池(Static Constant Pool)1.1 概述1.2 存储内容1.3 特点1.4 示例 二 运行时常量池(Runtime Constant Pool)2.1 概述2.2 存储内容2.3 特点2.4 示例 三 基础类型常量池(Primitive Type C…...
aardio —— 虚表 —— 模拟属性框
写了个简单的属性框例程,抛砖引玉,期待你做出更丰富强大的功能。 可折叠行、可输入文本、可下拉选择、支持下拉选择图片、颜色等功能。 只有想不到,没有做不到,发挥你的想象力吧。 import win.ui; import godking.comboboxEx im…...
企业微信——智能表格学习
智能表格 应用限制条件 获取 token https://developer.work.weixin.qq.com/document/10013#%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4 开发步骤 你可以通过以下步骤,使用access_token来访问企业微信的接口。需要注意的是,所有的接口需使用Https协议、Js…...
2501d,jingo优化
原文 大家好,我重构和优化了一下jin.go这里: 我去掉了vibe.d依赖,因为它又慢又大,而且我无法与2版本交朋友.当仅运行1000个vibe纤程时,不仅应用崩溃,甚至图形系统驱动也崩溃一次,这需要重启笔记本电脑. 当前,我用小栈大小的本地流(4kb)解决. 我真很期待photon的稳定性,以恢复支…...
实景三维点云处理专业软件ArcGIS根据DSM生成地表点云集
常见的实景三维处理软件及其特色功能如下: 一、专业实景三维建模软件 Agisoft Metashape 高精度建模:能够生成高精度的三维模型,精度可以达到厘米级甚至毫米级,适用于需要详细测量和分析的项目,如文物保护和建筑测量。…...
山东大学人工智能导论期末复习概念汇总
人工智能概念汇总V2 —Nevertheless 简介 [!NOTE] 本文是在原版的基础上,面向期末而进行的删减版本 建议使用pdf版本,排版和图片显示完全。如有需要,可私信发送邮箱地址 PDF版本: 山东大学人工智能导论概念汇总pdf版 山东大学软…...
Ubuntu下安装Android Sdk
下载android sdk命令行工具 https://developer.android.com/studio?hlzh-cn#command-tools mkdir android-sdk cd android-sdk unzip commandlinetools-linux-11076708_latest.zip 添加环境变量到~/.bashrc export ANDROID_HOME$HOME/android-sdk export PATH$PATH:$ANDRO…...
c语言中GHashTable的使用
前言:最近在c代码中需要用到键值对的存储,由于没有map,需要自己实现或者使用库函数,g_hash_table_new是GLib中的库函数,但使用起来会有很多坑,记录一下 构建hash表g_hash_table_new GHashTable* g_hash_table_new(GH…...
Conda清理缓存
参考:1、2...
【每日学点鸿蒙知识】导入cardEmulation、自定义装饰器、CallState状态码顺序、kv配置、签名文件配置
1、HarmonyOS 无法导入cardEmulation? 在工程entry mudule里的index.ets文件里导入cardEmulation失败 可以按照下面方式添加SystemCapability;在src/main/syscap.json(此文件需要手动创建)中添加如下内容 {"devices": {"gen…...
【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写
文章目录 一、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSingle生成随机浮点数示例:生成随机浮点数 3、 生成随机字母或字符示例:生成随机字母示例:生成随机小写字母 二、…...
深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)
深入解析 Conda 安装的默认依赖包及其作用 当我们使用 Conda 创建新环境时,例如执行命令: conda create -n olmes python3.10Conda 会自动为我们安装一系列基础依赖包,保证 Python 环境能够正常运行。这些包不仅是我们开发的基础工具&#…...
《Vue3实战教程》35:Vue3测试
如果您有疑问,请观看视频教程《Vue3实战教程》 测试 为什么需要测试 自动化测试能够预防无意引入的 bug,并鼓励开发者将应用分解为可测试、可维护的函数、模块、类和组件。这能够帮助你和你的团队更快速、自信地构建复杂的 Vue 应用。与任何应用一…...
Mysql监视器搭建
Mysql监视器搭建 资源下载在:Mysql监视器资源包 查询问题:CPU、连接数、慢查询 --> 暴增 1、exporter进行Mysql信息采集 修改my.cnf [client] userroot password数据库密码 host:数据库URL port3306启动命令 mysqld_exporter.exe --config.my-c…...
Linux(centos)安装 MySQL 8 数据库(图文详细教程)
前言 前几天写了个window系统下安装Mysql的博客,收到很多小伙伴私信需要Linux下安装Mysql的教程,今天这边和大家分享一下,话不多说,看教程。 一、删除以前安装的MySQL服务 一般安装程序第一步都需要清除之前的安装痕迹ÿ…...
软件工程大作业——图书管理系统/图书个性化推荐与实现系统
目录 1 绪论 1.1研究背景 1.2研究现状 1.3研究内容 2 系统关键技术 2.1 Spring Boot框架 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2 系统性能分析 3.3 系统功能分析 3.4系统流程分析 3.4.1登…...
Linux下编译安装PETSc
本文记录在Linux下编译安装PETSc的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 1.1 安装oneAPI 参见:Get the Intel oneAPI Base Toolkit , Get the Intel oneAPI HPC Toolkit 1.2 安…...
检索增强生成
概述 检索增强生成(Retrieval-Augmented Generation,RAG)是一种将信息检索与语言模型相结合的技术。由Facebook AI Research于2020年提出,它把数据库的优势与语言模型的优势相结合。它能让模型从外部知识库中检索信息,…...
九、Vue 事件处理器
文章目录 前言一、基础事件绑定:v-on 指令二、方法调用:组织有序的交互逻辑三、事件修饰符阻止冒泡与默认事件捕获与自身触发单次触发与鼠标按键区分四、按键修饰符前言 在 Vue.js 的交互世界里,事件处理器起着举足轻重的作用,它让页面从静态展示迈向动态交互,精准捕捉用户…...
stm32内部flash在线读写操作
stm32内部flash在线读写操作 📍相关开源库文章介绍《STM32 利用FlashDB库实现在线扇区数据管理不丢失》 ✨不同系列,内部flash编程有所区别。例如stm32f1是按照页擦除,半字(16bit)或全字(32bit)数据写入;st…...
DuckDB:密钥管理器及其应用
密钥管理器(Secrets Manager)为所有使用密钥的后端提供了统一的用户界面。密钥信息可以被限定范围,因此不同的存储前缀可以有不同的密钥信息,例如允许在单个查询中连接跨组织的数据。密钥也可以持久化,这样就不需要在每次启动DuckDB时都指定它…...
每日一学——自动化工具(Ansible)
3.1 Ansible 3.1.1 Playbook编写指南 嘿,小伙伴们!你们知道吗,运维工作其实也可以变得像搭积木一样简单!今天我们要介绍的就是Ansible,一款非常流行的自动化运维工具。通过Ansible,我们可以用Playbook来描…...