使用 Nacos 的注意事项与最佳实践
📹 背景
Nacos 凭借其强大💪的服务发现、配置管理和服务管理能力,成为构建分布式系统的得力助手。然而,要充分发挥 Nacos 的优势,实现系统的高性能、高可用,掌握其使用过程中的注意事项和最佳实践至关重要。接下来,我们将深入探讨相关要点。
🧠 学习相关要点
这篇文章我们将探讨 Nacos 的注意事项与最佳实践🚨,我们希望达成以下具体的目标:
- ✅ 性能优化策略。
- ✅ 高可用部署方案。
- ✅ 常见问题解决方案。
一、性能优化策略
1️⃣ 合理设置心跳间隔
Nacos 依赖心跳机制来实时监测服务实例的健康状况,而心跳间隔的精准设置对系统性能有着直接且关键的影响🙀。我们可通过如下方式进行配置例子
@Bean
public NamingService namingService() throws NacosException {Properties properties = new Properties();properties.setProperty("serverAddr", "127.0.0.1:8848");// 将心跳间隔设为10秒properties.setProperty("heartBeatInterval", "10000");return NamingFactory.createNamingService(properties);
}
在实际应用场景中,若系统对稳定性要求极高,例如金融交易系统,建议将心跳间隔设置在 10 - 15 秒,以减少因网络波动等因素导致的误判,确保服务状态的稳定监测。对于那些对状态变化极为敏感的系统,像实时数据分析系统,可适当缩短心跳间隔至 5 - 10 秒,以便及时捕捉服务状态的动态变化。而在大型集群环境下,为降低网络请求压力,可考虑启用批量心跳上报功能,减少客户端与服务端之间的交互次数。
2️⃣ 优化缓存策略
Nacos 客户端为我们提供了配置缓存功能,通过合理设置缓存过期时间,能显著减少对远程配置的频繁请求。以下是 Java 客户端中设置缓存过期时间的示例:
@Bean
public ConfigService configService() throws NacosException {Properties properties = new Properties();properties.setProperty("serverAddr", "127.0.0.1:8848");// 将配置缓存过期时间设为5分钟properties.setProperty("configCacheTime", "300000");return ConfigFactory.createConfigService(properties);
}
为进一步提升缓存性能💪,可构建多级缓存体系。以自定义本地缓存为例,借ConcurrentHashMap实现快速读写,并添加精细的过期检查逻辑。当本地缓存中存在未过期的配置时,直接返回,避免不必要的远程请求😃;若缓存过期或不存在,则从 Nacos 服务器中获取最新配置并更新本地缓存 。代码例子如下
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;public class NacosConfigCache {// 配置项缓存private static final Map<String, String> CONFIG_CACHE = new ConcurrentHashMap<>();// 缓存时间戳,记录每个配置项的最后更新时间private static final Map<String, Long> CACHE_TIMESTAMP = new ConcurrentHashMap<>();// 默认缓存过期时间5分钟(300000毫秒)private static final long DEFAULT_CACHE_EXPIRE_TIME = 300000;/*** 获取配置项* @param dataId 配置ID* @return 配置值*/public static String getConfig(String dataId) {return getConfig(dataId, DEFAULT_CACHE_EXPIRE_TIME);}/*** 获取配置项(带自定义过期时间)* @param dataId 配置ID* @param expireTime 自定义过期时间(毫秒)* @return 配置值*/public static String getConfig(String dataId, long expireTime) {String cachedValue = CONFIG_CACHE.get(dataId);if (cachedValue != null && !isExpired(dataId, expireTime)) {return cachedValue;}// 从Nacos服务器获取最新配置String newValue = fetchFromNacos(dataId);if (newValue != null) {updateCache(dataId, newValue);}return newValue;}/*** 检查缓存是否过期* @param dataId 配置ID* @param expireTime 过期时间(毫秒)* @return true表示已过期,false表示未过期*/private static boolean isExpired(String dataId, long expireTime) {Long lastUpdateTime = CACHE_TIMESTAMP.get(dataId);if (lastUpdateTime == null) {return true;}long currentTime = System.currentTimeMillis();return (currentTime - lastUpdateTime) > expireTime;}/*** 更新缓存* @param dataId 配置ID* @param value 配置值*/private static void updateCache(String dataId, String value) {long currentTime = System.currentTimeMillis();CONFIG_CACHE.put(dataId, value);CACHE_TIMESTAMP.put(dataId, currentTime);}/*** 模拟从Nacos服务器获取配置* @param dataId 配置ID* @return 配置值*/private static String fetchFromNacos(String dataId) {// 这里应该是实际的Nacos客户端调用// 示例中返回模拟值System.out.println("Fetching fresh config from Nacos for: " + dataId);return "value_for_" + dataId;}/*** 清除指定配置项的缓存* @param dataId 配置ID*/public static void clearCache(String dataId) {CONFIG_CACHE.remove(dataId);CACHE_TIMESTAMP.remove(dataId);}/*** 清除所有缓存*/public static void clearAllCache() {CONFIG_CACHE.clear();CACHE_TIMESTAMP.clear();}
}
3️⃣ JVM 参数优化
Nacos 服务器基于 Java 运行,合理调整 JVM 参数能有效提升其性能表现。以下是推荐的 Nacos 服务器启动参数配置:
# 设置初始堆内存和最大堆内存
JAVA_OPT="${JAVA_OPT} -Xms2g -Xmx2g"
# 使用G1垃圾回收器
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC"
# 设置并行GC线程数
JAVA_OPT="${JAVA_OPT} -XX:ParallelGCThreads=4"
# 设置最大GC暂停时间目标
JAVA_OPT="${JAVA_OPT} -XX:MaxGCPauseMillis=100"
二、高可用部署方案
集群部署架构:为避免单点故障,提升系统可用性,Nacos 通常采用集群部署架构。典型的集群架构如下:
[负载均衡器]/ | \
[Nacos节点1] [Nacos节点2] [Nacos节点3]| | |
[MySQL主库] ←→ [MySQL从库]
1️⃣ 集群节点配置
在Nacos的conf目录下,需要配置cluster.conf文件,列出所有集群节点信息
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848
关键点:
- 至少需要3个Nacos节点才能构成集群。
- 各节点server-id必须唯一 。
- 生产环境建议将Nacos节点部署在不同物理机上。
2️⃣ 负载均衡配置
前端通过负载均衡器(如 Nginx 或云厂商提供的负载均衡服务)将请求均匀分发至各个 Nacos 节点,并配置健康检查机制,确保后端节点出现故障时能及时将流量切换至健康节点 。以下呢,是一个例子:
upstream nacos {server 192.168.1.101:8848;server 192.168.1.102:8848;server 192.168.1.103:8848;
}server {listen 80;server_name nacos.example.com;location / {proxy_pass http://nacos;}
}
3️⃣ 数据存储高可用配置
以 MySQL 数据库为例,在application.properties文件中可进行如下配置。
# 使用MySQL作为持久化存储
spring.datasource.platform=mysql
# 数据库数量
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=nacos@123
为保障数据库的高可用性,应配置 MySQL 主从复制,实现数据冗余备份和读写分离。合理设置数据库连接池参数,提升数据库连接的复用率和性能。定期执行数据库维护操作,包括优化表结构、定期备份数据等,以确保数据库的稳定运行和数据安全。
4️⃣ 客户端集群配置
Java客户端配置如下:
@Bean
public NamingService namingService() throws NacosException {Properties properties = new Properties();// 配置多个Nacos服务器地址properties.setProperty("serverAddr", "192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848");// 开启集群容错properties.setProperty("namingLoadCacheAtStart", "true");return NamingFactory.createNamingService(properties);
}
通过配置多个 Nacos 服务器地址,客户端在请求服务时可自动进行故障转移,提高服务发现的可靠性。开启namingLoadCacheAtStart属性,可使客户端在启动时加载缓存,避免首次请求服务时的延迟。此外,还可根据实际业务需求,在 Nacos 控制台为不同的服务实例设置权重 等。
三、💥 常见问题解决方案
✔️ 服务注册延迟问题
当遇到服务注册延迟问题时,可按以下步骤进行排查:
- ☑️ 首先,检查心跳间隔设置是否合理,若心跳间隔过长,可能导致服务注册延迟。
- ☑️ 其次,确认网络延迟情况,网络不稳定或延迟过高会影响服务注册的时效性。
- ☑️ 最后,检查 Nacos 服务器负载,若服务器负载过高,可能会导致服务注册请求处理缓慢。
- ☑️ 在代码层面,可通过设置获取服务实例的超时时间,优化服务注册逻辑,示例如下:
// 获取服务实例时设置超时时间为3秒
List<Instance> instances = namingService.getAllInstances("service-name", Arrays.asList("group-name"), true, 3000
);
✔️ 配置中心同步问题
- ☑️ 采取增加配置监听器的方式,实时监听配置变更,一旦配置发生变化,及时进行处理。
- ☑️ 同时,实现本地缓存降级策略,当配置中心出现故障或同步延迟时,可暂时使用本地缓存中的配置,保障业务的连续性。
示例如下:
configService.addListener("dataId", "group", new Listener() {@Overridepublic void receiveConfigInfo(String configInfo) {// 在此处理配置变更refreshConfiguration(configInfo);}@Overridepublic Executor getExecutor() {return null;}
});
四、🚀总结
Nacos 作为微服务架构中的核心组件,其性能、可用性直接关系到整个系统的可靠性。通过实施上述性能优化策略、构建高可用部署架构,开发者能够打造出更加健壮、稳定的微服务体系。关键要点总结如下:
- ✅ 性能优化:合理设置心跳间隔,优化缓存策略,精准调整 JVM 参数,提升系统整体性能。
- ✅ 高可用部署:采用集群架构,配置可靠的数据存储,实现客户端容错,保障系统持续可用。
相关文章:
使用 Nacos 的注意事项与最佳实践
📹 背景 Nacos 凭借其强大💪的服务发现、配置管理和服务管理能力,成为构建分布式系统的得力助手。然而,要充分发挥 Nacos 的优势,实现系统的高性能、高可用,掌握其使用过程中的注意事项和最佳实践至关…...
在Pytorch中使用Tensorboard可视化训练过程
【在Pytorch中使用Tensorboard可视化训练过程】 https://www.bilibili.com/video/BV1Qf4y1C7kz/?share_sourcecopy_web&vd_sourcef00bfb41b3b450c3767070ed82f30ac8 主要功能: 1.保存网络结构图 2.保存训练集的损失Loss,验证集的正确性Accuracy以…...
15.电感特性在EMC设计中的运用
电感特性在EMC设计中的运用 1. 共模电感与差模电感的差异2. 电感的高频等效特性3. 电感在EMC设计中的使用注意事项3.1 LC滤波计算3.2 并联型多级浪涌防护的电感退耦 1. 共模电感…...
代理设计模式:从底层原理到源代码 详解
代理设计模式(Proxy Pattern)是一种结构型设计模式,它通过创建一个代理对象来控制对目标对象的访问。代理对象充当客户端和目标对象之间的中介,允许在不修改目标对象的情况下添加额外的功能(如权限控制、日志记录、延迟…...
25、简述.NET程序集(Assembly)
.NET 程序集(Assembly) .NET 程序集(Assembly) 是 .NET 应用程序的基本部署单元,包含以下核心内容: 类型与代码: 存储类、接口等类型的定义及实现(以中间语言 IL 形式)。…...
JavaScript 笔记 --- part 5 --- Web API (part 3)
(webAPI part3) BOM 操作 JS 执行机制 javascript 是单线程的, 也就是说, 只能同时执行一个任务。 为了解决这个问题, 利用多核 CPU 的计算能力, HTML5 提出 Web Worker API, 允许 JavaScript 脚本创建多个线程, 并将任务分配给这些线程。 于是, JS 出现了同步和异步的概念。…...
HCIP(OSPF)(3)
OSPF 报文结构 公共头部:包含版本(8bit)、类型(8bit)、报文长度(16bit)、路由器 ID(32bit)、区域 ID(32bit)、校验和(16bit࿰…...
Docker:重塑应用开发与部署的未来[特殊字符]
Docker:重塑应用开发与部署的未来🚀 在数字化转型的浪潮中🌊,应用开发与部署面临着诸多挑战,如环境一致性差、资源利用率低、运维复杂等。而Docker,作为容器技术领域的明星产品🌟,凭…...
逻辑回归:损失和正则化技术的深入研究
逻辑回归:损失和正则化技术的深入研究 引言 逻辑回归是一种广泛应用于分类问题的统计模型,尤其在机器学习领域中占据着重要的地位。尽管其名称中包含"回归",但逻辑回归本质上是一种分类算法。它的核心思想是在线性回归的基础上添…...
如何改电脑网络ip地址完整教程
更改电脑的网络IP地址以满足特定的网络需求,本文将为您提供一份详细的步骤指南。其实,改变IP地址并不是一件复杂的事,能解决因为IP限制带来的麻烦。以下是操作指南: 方法一:Windows 系统,通过图形界面修改 …...
Scenario Dreamer:用于生成驾驶模拟环境的矢量化潜扩散模型
25年3月来自加拿大 Mila AI研究院、蒙特利尔大学、蒙特利尔理工、普林斯顿、加拿大 CIFAR AI Chair 计划和 Torc 机器人公司的论文“Scenario Dreamer: Vectorized Latent Diffusion for Generating Driving Simulation Environments”。 Scenario Dreamer,是一个完…...
# 基于PyTorch的食品图像分类系统:从训练到部署全流程指南
基于PyTorch的食品图像分类系统:从训练到部署全流程指南 本文将详细介绍如何使用PyTorch框架构建一个完整的食品图像分类系统,涵盖数据预处理、模型构建、训练优化以及模型保存与加载的全过程。 1. 系统概述 本系统实现了一个基于卷积神经网络(CNN)的…...
【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
引言 Model Context Protocol (MCP) 是一种开放标准,旨在规范模型与应用程序之间的交互方式。本文作为MCP TypeScript-SDK系列的第一篇,将详细介绍如何搭建MCP开发环境,包括Node.js与TypeScript环境配置、SDK安装、开发工具推荐以及项目结构设计,帮助你快速入门MCP应用开发…...
unity脚本-FBX自动化模型面数校验
根据目前模型资源平均面数预算进行脚本制作,自动化校验模型面数是否符合规范。 *注:文件格式为.cs。需要放置在unity资源文件夹Assets>Editor下。 测试效果(拖一个fbx文件进unity时自动检测): 以下为完整代码 us…...
压力容器的优化设计
1 优化设计概述 优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计”,指的是一种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应力,费用等)最小。也就是…...
在Windows上安装Git
一、安装 Git 下载 Git地址:Git - Downloads (git-scm.com) 1、在页面中找到适用于 Windows 系统的最新版本安装包(通常为.exe 格式文件),点击下载链接。 出于访问Git官网需要科学上网,不会的可以私信我要软件包&…...
python包管理器,conda和uv 的区别
python包管理器,conda和uv 的区别 以下是 conda 和 uv 在 Python 包管理中的深度对比,结合知识库内容进行分析: 1. 核心设计理念 conda 以“环境为中心”,强调跨语言支持(如 Python、R、Julia)和严格的依赖…...
Oracle在ERP市场击败SAP
2024年,甲骨文(Oracle)以87亿美元的ERP收入和6.63%的市场份额,首次超越SAP,成为全球最大的ERP应用软件供应商,结束了SAP自上世纪80年代以来在该领域的长期霸主地位。据APPS RUN THE WORLD的市场调研&#x…...
Kafka 消息积压监控和报警配置的详细步骤
Kafka 消息积压监控和报警配置的详细步骤示例,涵盖常用工具(如 Prometheus Grafana、云服务监控)和自定义脚本方法: 一、监控配置 方法1:使用 Prometheus Grafana kafka-exporter 步骤1:部署 kafka-ex…...
记录一次使用面向对象的C语言封装步进电机驱动
简介 (2025/4/21) 本库对目前仅针对TB6600驱动下的42步进电机的基础功能进行了一定的封装, 也是我初次尝试以面向对象的思想去编写嵌入式代码, 和直流电机的驱动步骤相似在调用stepmotor_attach()函数和stepmotor_init()函数之后仅通过结构体数组stepm然后指定枚举变量中的id即…...
QTextDocument 入门
一、QTextDocument QTextDocument 是 Qt 中用于处理富文本文档的核心类,支持文本格式、图片、表格等复杂内容。 1. QTextDocument 入门 1.1 基本概念 QTextDocument 是 Qt 中用于处理富文本内容的核心类,它提供了: 结构化文本存储(段落、列表、表格等) 文本格式支持(…...
Arthas进阶用法
目录 查看已加载的类反编译代码动态执行代码排查 HTTP 请求问题热更新代码获取 Spring Context 并操作查看 JVM 信息自定义命令Web Console重置与退出 查看已加载的类 sc 命令 :可以查找所有 JVM 已经加载到的类。如果搜索的是接口,还会搜索所有的实现类…...
三生原理与现有密码学的核心区别?
AI辅助创作: 三生原理与现有密码学的核心区别 一、哲学基础与设计逻辑 动态生成 vs 静态分析 三生原理以“阴阳动态平衡”为核心,通过参数化生成(如素数构造中的阴阳元联动公式)模拟系统演化过程,而现有密码…...
定义python中的函数和类
1.函数 在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回 1.1 定义函数 def showshow(sex):if sex1:return manelse:retu…...
明远智睿2351开发板四核1.4G Linux处理器:驱动创新的引擎
在科技日新月异的今天,创新成为了推动社会进步的核心动力。而在这场创新的浪潮中,一款性能卓越、功能全面的处理器无疑是不可或缺的引擎。今天,我们介绍的这款四核1.4G处理器搭配Linux系统的组合,正是这样一款能够驱动未来创新的强…...
【前端】【业务逻辑】【面试】JSONP处理跨域原理与封装
🧠 一、JSONP 是什么? 项目内容📌 全称JSON with Padding📍 用途跨域请求数据的一种方式,绕过同源策略📦 本质通过 <script> 标签加载远程 JS 文件,这个文件执行一个回调函数并传入数据 …...
深入探索RAG:用LlamaIndex为大语言模型扩展知识,实现智能检索增强生成
大型语言模型(LLM),如ChatGPT和Llama,在回答问题方面表现出色,但它们的知识仅限于训练时所获取的信息。它们无法访问私有数据,也无法在训练截止日期之后学习新知识。那么,核心问题就是……我们如…...
移远通信智能模组助力东成“无边界智能割草机器人“闪耀欧美市场
2025年4月21日,移远通信宣布,旗下SC206E-EM智能模组已成功应用于江苏东成电动工具有限公司旗下的DCK TERRAINA无边界智能割草机器人。 这款智能模组高度集成计算、通信、定位等多元能力,以小型化、低功耗、实时性强和低成本等综合优势&#…...
测试-时间规模化定律可以改进世界基础模型吗?
25年3月来自 UT Austin、UW Madison 和 Nvidia 的论文“Can Test-Time Scaling Improve World Foundation Model?”。 世界基础模型(WFM)通过根据当前的观察和输入预测未来状态来模拟物理世界,已成为许多物理智能(PI)…...
VMwaer虚拟机复制粘贴、ROS系统安装
一、VMwaer虚拟机复制粘贴设置:设置完记得重启VMwaer 1.首先确定 虚拟机设置-->选项-->客户机隔离-->勾选 启用拖放 启用复制粘贴 2.如果还是不能粘贴 可能是 没有 VMware Tools 可参考 怎么在linux安装vmware tools-CSDN博客 设置完记得重启VMwaer。…...
安装 vmtools
第2章 安装 vmtools 1.安装 vmtools 的准备工作 1)现在查看是否安装了 gcc 查看是否安装gcc 打开终端 输入 gcc - v 安装 gcc 链接:https://blog.csdn.net/qq_45316173/article/details/122018354?ops_request_misc&request_id&biz_id10…...
HCIP(综合实验2)
1.实验拓补图 2.实验要求 1.根据提供材料划分VLAN以及IP地址,PC1/PC2属于生产一部员工划分VLAN10,PC3属于生产二部划分VLAN20 2.HJ-1HJ-2交换机需要配置链路聚合以保证业务数据访问的高带宽需求 3.VLAN的放通遵循最小VLAN透传原则 4.配置MSTP生成树解决二层环路问题…...
机器学习第一篇 线性回归
数据集:公开的World Happiness Report | Kaggle中的happiness dataset2017. 目标:基于GDP值预测幸福指数。(单特征预测) 代码: 文件一:prepare_for_traning.py """用于科学计算的一个库…...
Spark-Streaming简介及核心编程
一、核心概念: 1.Spark-Streaming 是流式数据处理框架,基于 **DStream(离散化流)** 抽象,将实时数据划分为多个时间区间的 RDD 序列。 DStream 本质是RDD 序列,每个时间区间数据对应一个 RDD。 2.特点&a…...
优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论
优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论 目录 优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论信息论信息熵明确问题主题提供具体细节限定回答方向规范语言表达概率论最优化理论信息论 原理:信息论中的熵可以衡量信息的不确定性。…...
Sqlserver安全篇之_Sqlcmd命令使用windows域账号认证sqlserver遇到问题如何处理的案例
sqlcmd https://learn.microsoft.com/zh-cn/sql/tools/sqlcmd/sqlcmd-connect-database-engine?viewsql-server-ver16 sqlcmd -S指定的数据库连接字符串必须有对应的有效的SPN信息,否则会报错SSPI Provider: Server not found in Kerberos database. 正常连接 1、…...
基于华为云 ModelArts 的在线服务应用开发(Requests 模块)
基于华为云 ModelArts 的在线服务应用开发(Requests 模块) 一、本节目标 了解并掌握 Requests 模块的特点与用法学会通过 PythonRequests 访问华为云 ModelArts 在线推理服务熟悉 JSON 模块在 Python 中的数据序列化与反序列化掌握 Python 文件 I/O 的基…...
Graph Database Self-Managed Neo4j 知识图谱存储实践1:安装和基础知识学习
Neo4j 是一个原生图数据库,这意味着它在存储层实现了真正的图模型。它不是在其他技术之上使用“图抽象”,而是以您在白板上绘制想法的相同方式在Neo4j中存储数据。 自2007年以来,Neo4j已经发展成为一个丰富的工具、应用程序和库的生态系统。…...
【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:配置虚拟环境案例2:智能代码补全案例3:调试配置 运行结果…...
vscode:Live Server Preview插件
这个插件不用另外打开浏览器;它是直接在Vscode里面预览html的,并且是自动实时更新的,不用不停地CtrlS保存查看 使用方法:F1 -> 弹出一个窗口输入live,选择即可。 运行结果如下:...
关于在Springboot中设置时间格式问题
目录 1-设置全局时间格式1.Date类型的时间2.JDK8时间3.使Date类和JDK8时间类统统格式化时间 2-关于DateTimeFormat注解 1-设置全局时间格式 1.Date类型的时间 对于老项目来说,springboot中许多类使用的是Date类型的时间,没有用到LocalDateTime等JDK8时…...
双周报Vol.70: 运算符重载语义变化、String API 改动、IDE Markdown 格式支持优化...多项更新升级!
2025-04-21 语言更新 async 函数的调用处语法改为和 error 相同的 f!(..),原语法 f!!(..) 将触发警告 运算符重载的语义从基于方法迁移到了基于 trait,以后重载运算符需要通过给 moonbitlang/core/builtin 中对应的 trait 添加 impl 的形式。各个运算符…...
AI 技术发展:从起源到未来的深度剖析
一、AI 的起源与早期发展 人工智能(AI)作为计算机科学的重要分支,其诞生可以追溯到 20 世纪中叶。1943 年,艾伦・图灵提出图灵机的概念,为计算机科学和 AI 理论奠定了基础。1950 年,图灵又提出著名的图灵…...
【前端】【业务逻辑】 数据大屏自适应方案汇总
前端数据大屏自适应设计方案全解析 在前端数据大屏的开发中,自适应设计是关键环节,它能确保大屏在不同设备和屏幕尺寸上都能呈现出良好的视觉效果和交互体验。除了常见的 transform: scale、rem/vw、Flex/Grid 等方案外,还有其他有效的方法可…...
Java基础复习(JavaSE进阶)第六章 IO流体系
6-1 File类 01 122、File、IO流概述 02 123、File类:对象的创建 03 124、File类:判断、判断信息相关的方法 04 125、File类:创建、删除文件的方法 05 126、File类:遍历文件夹的方法 6-2 前置知识 01 127、前置知识:方…...
kvm下的ceph主机启动io请求统计
背景 假如一个主机存储在ceph里面,我们想统计下一次启动过程中的io读取的情况,那么可以通过下面的方法来统计 启动时间也可以通过在宿主机里面去查看,通过日志这边要方便一点,无需登录到虚拟机内部 日志开启 [global] fsid 406…...
go-Casbin使用
本次测试代码是基于单租户的RBAC鉴权 依赖 github.com/casbin/casbin/v2 github.com/casbin/gorm-adapter/v2文件存储规则文件 model.pml [request_definition] r sub, obj, act[policy_definition] p sub, obj, act[role_definition] g _, _ # 用户,角色[polic…...
基于YOLOv11的106种手语识别分析系统
基于YOLOv11的手语识别分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】多平台适配优化,支持Windows、macOS和Linux系统,确保中文字体正常渲染 【四】识别的类别数量:106种,具体类…...
CentOS创建swap内存
服务器版本为CentOS7 一、检查现有 swap 空间 sudo swapon --show如果系统中没有 swap 空间或者现有的 swap 空间不足,可以继续后续步骤来创建 swap 空间。 二、创建 swap 文件(推荐 2GB 作为示例) sudo dd if/dev/zero of/swapfile bs1M …...
OpenHarmony OS 5.0与Android 13显示框架对比
1. 架构概述 1.1 OpenHarmony OS 5.0架构 OpenHarmony OS 5.0采用分层架构设计,图形显示系统从底层到顶层包括: 应用层:ArkUI应用和第三方应用框架层:ArkUI框架、窗口管理API系统服务层:图形合成服务、窗口管理服务…...