20250106面试
rabbitmq如何保证消息不丢失
my:
持久化,包括消息持久化和队列持久化,重启不丢失。持久化到磁盘中的。
消息确认
死信队列:消费失败(业务异常/未确认,重试后,会放死信队列),TTL,满了
集群+队列镜像,即使一个节点挂了,其他节点还有数据,不会丢失。
重试
---
在 RabbitMQ 中,确保消息不丢失通常涉及多个层次的配置和实践,主要包括消息持久化、队列持久化、确认机制以及合理的高可用配置。下面是确保消息不丢失的几种常见方法:
1. 消息持久化(Message Durability)
RabbitMQ 默认情况下将消息存储在内存中,这意味着如果 RabbitMQ 守护进程崩溃,消息可能会丢失。为了避免这种情况,你需要将消息持久化到磁盘。
-
消息持久化:在发送消息时,设置消息的
delivery_mode
属性为2
,表示消息应该被持久化到磁盘。python
channel.basic_publish( exchange='', routing_key='queue_name', body='Hello World!', properties=pika.BasicProperties( delivery_mode=2 # 使消息持久化 ) )
-
队列持久化:即使消息本身被持久化,如果队列本身没有设置持久化,RabbitMQ 在重启时仍然会丢失队列。为了避免这种情况,你需要确保队列本身也是持久化的。
创建持久化队列的示例(使用
durable=True
):python
channel.queue_declare(queue='queue_name', durable=True)
这确保了即使 RabbitMQ 重启,队列也不会丢失。
2. 交换器持久化(Exchange Durability)
为了确保交换器不丢失,在创建交换器时,也需要将其持久化。你可以通过将 durable=True
设置为交换器的属性来确保其持久化:
python
channel.exchange_declare(exchange='my_exchange', exchange_type='direct', durable=True)
3. 消费者确认机制(Message Acknowledgement)
消费者需要显式确认消息已经被正确处理,否则消息会被重新投递。如果消费者没有确认消息,而 RabbitMQ 又没有收到 ACK 确认,则消息会在队列中保留,直到消费者处理完并确认。
-
自动确认:如果
auto_ack
设置为True
,RabbitMQ 会认为消息已经被消费者处理,无论消费者是否处理成功。这会导致消息丢失的风险。python
channel.basic_consume(queue='queue_name', on_message_callback=callback, auto_ack=True)
上面的设置是不安全的,因为它不能保证消息已经被处理。
-
手动确认:最安全的做法是关闭
auto_ack
,并在消费者处理完消息后手动发送ack
确认消息。python
def callback(ch, method, properties, body): print(f"Received message: {body}") ch.basic_ack(delivery_tag=method.delivery_tag) # 手动确认消息
使用
basic_ack
进行消息确认,确保消息在消费者成功处理后才从队列中移除。你还可以设置
basic_nack
来拒绝消息并让它重新入队,避免消息丢失。
4. 未确认消息的处理(Dead Letter Exchange, DLX)
RabbitMQ 支持死信队列(Dead Letter Queue, DLX),即如果某个消息无法被消费者处理,可以将它放到另外一个队列,避免丢失。
配置死信队列(DLX)示例:
python
channel.queue_declare(queue='main_queue', durable=True, arguments={ 'x-dead-letter-exchange': 'dlx_exchange' }) channel.queue_declare(queue='dlx_queue', durable=True)
如果消息在主队列中被拒绝或过期,消息将会被送到 dlx_queue
中。
5. 高可用集群(Mirrored Queues)
为了避免单点故障,RabbitMQ 提供了集群和镜像队列(Mirrored Queues)功能,可以将消息复制到多个节点上。即使一个节点发生故障,消息也不会丢失,因为它已经被镜像到其他节点。
- 镜像队列:镜像队列可以确保消息在多个 RabbitMQ 节点之间保持同步,这样即使一个节点崩溃,其他节点仍然可以提供服务。
python
channel.queue_declare(queue='queue_name', durable=True, arguments={ 'x-queue-type': 'quorum' # 使用 Quorum 队列提高消息可靠性 })
quorum
队列比传统的镜像队列提供更高的可靠性,适用于需要高可靠性的场景。
6. 事务机制(Transactional Publisher)
虽然事务机制可以确保消息在提交之前不丢失,但它的性能较低,一般不推荐用于高吞吐量的生产环境。可以通过将消息发布到事务中来确保消息的持久化。
python
channel.tx_select() # 开始事务 try: channel.basic_publish(...) channel.tx_commit() # 提交事务 except: channel.tx_rollback() # 回滚事务
7. 消息重试(Message Retry)
如果消费者无法处理消息(比如遇到临时问题),可以使用 消息重试机制(例如通过延时队列)来确保消息最终能够被处理,而不是直接丢失。
RabbitMQ 本身不直接提供消息重试功能,但你可以通过将消息重新发送到队列、设置消息的 x-delayed-message
属性,或者使用死信队列和延时插件来实现消息的重试机制。
总结
在 RabbitMQ 中,要保证消息不丢失,通常需要结合以下几个方面的配置:
- 持久化消息:设置消息
delivery_mode=2
使其持久化。 - 持久化队列和交换器:确保队列和交换器也都是持久化的。
- 消费者确认:确保消费者在处理完消息后发出确认(
ack
)。 - 高可用架构:使用镜像队列和集群来防止单点故障。
- 死信队列(DLX)和消息重试:使用死信队列和延时队列来确保消息不会因为暂时的处理失败而丢失。
通过结合这些策略,可以显著降低消息丢失的风险,并提高 RabbitMQ 系统的可靠性。
jvm调优,内存怎么分配,8G内存
在JVM调优过程中,合理分配内存是关键。Java应用的性能往往受到JVM内存分配策略的影响,尤其是当内存资源有限时。对于一个8GB的物理内存系统,如何合理配置JVM内存参数,可以有效避免内存溢出、频繁GC、长时间停顿等问题。
JVM内存的主要区域
JVM内存主要分为以下几个区域,每个区域的大小和管理方式都需要合理配置:
-
堆内存(Heap Memory)
- 负责存储对象实例、数组等动态分配的内存。
- 年轻代(Young Generation):用于存放新创建的对象。大部分对象在年轻代中迅速死亡,经过垃圾回收后会被清除。
- 老年代(Old Generation):存放存活较长时间的对象。当年轻代无法容纳更多对象时,存活的对象会被晋升到老年代。
- 永久代(PermGen) / 元空间(Metaspace):用于存放类的元数据(如类的结构信息)。在JVM 8以后,永久代被元空间取代,元空间使用本地内存而非JVM堆内存。
-
非堆内存(Non-Heap Memory)
- 包括方法区、代码缓存、JVM内部的数据结构等。
8GB内存系统的JVM内存分配方案
对于一个总内存为 8GB 的物理内存系统,我们需要合理地分配给JVM的内存,确保既能提供足够的内存空间,又能避免超出物理内存限制导致的系统负载过高。
通常,8GB内存的机器可以将 JVM堆内存 配置为 4GB-6GB,留出一部分内存给操作系统和其他进程。以下是一个常见的配置方案:
JVM内存调优示例(假设使用8GB内存的机器)
-
最大堆内存:
- 设置最大堆内存为4GB。
bash
-Xmx4g
-
初始堆内存:
- 设置初始堆内存为2GB。这有助于提高程序启动时的性能,但过大的初始堆可能会浪费内存。
bash
-Xms2g
-
年轻代内存设置:
- 年轻代内存大小可以通过
-Xmn
参数设置,建议设置为堆内存的 1/3 左右,具体可以根据应用的实际需求调整。例如,将年轻代大小设置为1GB:
bash
-Xmn1g
- 年轻代内存大小可以通过
-
老年代内存设置:
- 老年代内存的大小是通过调整堆的总大小和年轻代的大小来间接控制的。通常,老年代内存占堆的剩余部分。例如,设置最大堆内存为4GB,年轻代为1GB,那么老年代将是3GB。
-
PermGen / Metaspace 设置(JVM 8之后使用Metaspace):
- 如果使用JVM 8及以上版本,
PermGen
已被Metaspace
取代。Metaspace
的默认大小是动态增长的,但我们可以通过以下参数调整其大小:
bash
-XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=128m
- 如果使用JVM 8及以上版本,
-
垃圾回收器选择:
- 如果需要优化垃圾回收的性能,可以根据应用的需求选择不同的垃圾回收器。例如,使用 G1 GC 或 CMS 来减少停顿时间。
- 启用 G1 GC:
bash
-XX:+UseG1GC
其他相关JVM内存配置
-
线程栈大小:每个线程会消耗一定的内存,用于保存栈帧。可以通过
-Xss
来调整每个线程的栈大小。默认值通常为1MB,对于线程较多的应用,可以适当调低栈大小以节省内存。bash
-Xss512k
-
GC日志输出:调优过程中,查看GC日志能帮助我们分析和优化内存使用。可以通过以下参数输出GC日志:
bash
-Xlog:gc*:file=gc.log
具体的调优案例
假设我们有一台具有8GB内存的服务器,并且应用程序需要稳定的响应时间和低延迟。我们可以使用以下JVM参数进行调优:
bash
java -Xms2g -Xmx4g -Xmn1g -XX:+UseG1GC -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=128m -Xss512k -Xlog:gc*:file=gc.log -jar myapp.jar
这个配置做了以下优化:
- 设置初始堆内存为2GB,最大堆内存为4GB,年轻代为1GB,确保有足够的内存空间。
- 使用 G1 GC 来优化垃圾回收性能,避免长时间的Stop-the-World停顿。
- 设置
Metaspace
内存限制,避免类加载和卸载时占用过多内存。 - 限制每个线程的栈大小为512KB,减少线程栈内存占用。
调优原则
- 尽量保证堆内存不超出物理内存的一半:如果堆内存过大,会导致频繁的GC,或者直接导致 OutOfMemoryError。理想的堆内存配置是物理内存的50%-75%。
- 考虑操作系统和其他进程的内存占用:不要将JVM的内存配置得过大,否则操作系统和其他应用会受到影响。
- 选择合适的垃圾回收器:对于大部分高性能应用,G1 GC 是推荐的选择,它提供了较为平衡的延迟和吞吐量。对于低延迟要求的应用,也可以考虑 ZGC 或 Shenandoah。
- 监控和分析:定期通过 GC 日志或其他性能监控工具(如 VisualVM 或 JConsole)来观察内存的使用情况,并根据实际运行情况进行调整。
总结
在8GB内存的机器上为JVM分配内存时,建议将堆内存设置为2GB-4GB,具体的配置需要根据应用的需求进行调整。合理设置年轻代、老年代、PermGen(或Metaspace)等内存区域的大小,选择适合的垃圾回收器,并优化线程栈大小,可以有效提升Java应用的性能并减少内存问题。
分布式事务解决方案:
比如在一个方法中涉及:订单 商品 库存
mq
补偿兜底
job补偿:分别查询订单,商品,库存,根据订单号,对比哪个缺了
Eureka原理
redis事务
垃圾回收:标记清理
redis clustomer节点挂了,如何防止数据丢失
设置过期时间大于,主从同步间隔时间,缩短这个时间
redis不设置从节点
相关文章:
20250106面试
rabbitmq如何保证消息不丢失 my: 持久化,包括消息持久化和队列持久化,重启不丢失。持久化到磁盘中的。 消息确认 死信队列:消费失败(业务异常/未确认,重试后,会放死信队列)&…...
【大数据】(选修)实验4 安装熟悉HBase数据库并实践
实验4 安装熟悉HBase数据库并实践 1、实验目的 (1)理解HBase在Hadoop体系结构中的角色; (2)熟练使用HBase操作常用的Shell命令; (3)熟悉HBase操作常用的Java API。 2、实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 HBase版本:1.1.2或以上版本 JDK版…...
使用Python类库pandas操作Excel表格
Date: 2025.01.02 20:33:30 author: lijianzhan 简述:pandas 是处理 Excel 文件的强大工具,它提供了简单易用的接口来读取、操作和写入 Excel 数据。以下是使用 pandas 处理 Excel 文件的详细指南,包括常见操作和示例代码。 安装依赖,pandas …...
【银河麒麟高级服务器操作系统】服务器异常重启故障分析及处理建议
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 服务器环境以及配置 系统环境 物理机/虚拟机/云…...
香橙派5plus单独编译并安装linux内核无法启动的原因分析与解决记录
1 说明 我依照官方手册编译单独编译linux内核,安装后重启出现内核启动失败的问题,编译和安装步骤如下:# 1. 克隆源码 git clone --depth1 -b orange-pi-6.1-rk35xx https://github.com/orangepi-xunlong/linux-orangepi# 2 配置源码 make rockchip_linu…...
iOS - 消息机制
1. 基本数据结构 // 方法结构 struct method_t {SEL name; // 方法名const char *types; // 类型编码IMP imp; // 方法实现 };// 类结构 struct objc_class {Class isa;Class superclass;cache_t cache; // 方法缓存class_data_bits_t bits; // 类的方法…...
ChatGPT 是通用人工智能吗
ChatGPT 目前并不是通用人工智能(AGI, Artificial General Intelligence)。它是一种专用人工智能(Narrow AI),具体来说是一种基于大规模语言模型(如 GPT-4)的生成式人工智能,专注于处…...
Bash语言的函数实现
Bash语言的函数实现 引言 Bash(Bourne Again SHell)是一种在Unix和类Unix系统中广泛使用的命令行解释器。它不仅作为命令行工具使用,同时也被广泛应用于自动化脚本的编写。通过Bash,用户可以创建复杂的脚本,以执行一…...
Haskell语言的多线程编程
Haskell语言的多线程编程 在现代计算机科学中,多线程编程已经成为了提升程序性能的一个重要手段。尤其在我们处理计算密集型任务或 I/O 密集型任务时,合理地利用多核 CPU 的能力可以显著提升程序的执行效率。Haskell作为一种纯函数式编程语言࿰…...
Unity的四种数据持久化方式
目录 什么是数据持久化 数据持久化之PlayerPrefs 概述 API及用法 电脑中存放的位置 优缺点 主要用处 封装PlayerPrefs 数据持久化之XML XML是什么 读取XML信息 C#读取XML的方法有几种 读取xml文件信息 读取元素和属性信息 总结 写入XML信息 选择存储目录 存储…...
“霍普夫分岔”理论
庞加莱-安德罗诺夫-霍普夫分岔理论,通称为“霍普夫分岔”理论1,是首先由庞加莱在1892年对平面系统进行研究的2,然后由亚历山大安德罗诺夫(Aleksandr Andronov,1901-1952)及其合作者在1930年进行了完善和细化…...
10-C语言项目池
C语言项目池 《个人通讯录》 《火车订票系统》 管理员用户1录入火车票信息区间查询/购票2显示火车票信息打印购票信息3查询火车票信息退票4修改火车票信息5添加火车票信息 《学生学籍管理系统》 1录入学生信息2添加学生信息3显示学生信息4查找学生信息5删除学生信息6修改学…...
03、MySQL安全管理和特性解析(DBA运维专用)
03、MySQL安全管理和特性解析 本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎 目录 03、MySQL安全管理和特性解析 1、 用户和权限管理 2、 MySQL角色管理 3、 MySQL密码管理 4、 用户资源限制 5、 忘记root密码处理办法 6、 SQ…...
Ubuntu 下测试 NVME SSD 的读写速度
在 Ubuntu 系统下,测试 NVME SSD 的读写速度,有好多种方法,常用的有如下几种: 1. Gnome-disks Gnome-disks(也称为“Disks”)是 GNOME 桌面环境中的磁盘管理工具,有图形界面,是测试…...
C++编程进阶:标准库中的迭代器库解析
1. 迭代器库介绍 本文主要聚焦于C++的迭代器库,涵盖了迭代器的概念、分类、相关类型、原语操作、定制点、算法概念与实用工具、适配器、流迭代器、操作以及范围访问等内容,为C++编程中迭代器的使用提供了全面的参考。迭代器是一种抽象概念,它允许以统一的方式处理不同的数据…...
深入解析 JDK Lock:为什么必须在同一线程加锁和解锁?
前言 在多线程编程中,锁是一种常用的机制,用于控制对共享资源的访问,防止竞态条件的出现。Java 中的 Lock 接口提供了比 synchronized 关键字更灵活的锁机制。我们通常会使用 Lock 来确保同一时刻只有一个线程能访问某个共享资源。但是&#…...
下载b站高清视频
需要使用的edge上的一个扩展插件,所以选择使用edge浏览器。 1、在edge浏览器上下载 强力视频下载合并 扩展插件 2、在edge上打开b站,登录自己账号(登录后才能下载到高清!!)。打开一个视频,选择自…...
采用标准化的方式开展设计-研发中运用设计模式
概述 实现规范化、标准化的引导式设计,以业务需求为输入,识别业务特点,并通过引导式设计,找到最适合的设计模式、具体方案,汇总成为应用的设计,拉齐各应用的设计一的致性。 采用标准化的方式开展设计…...
粒子的动力学和约束
本文先介绍单粒子的力学(mechanics of a particle),然后再介绍粒子系的力学(mechanics of particle system),最后介绍约束(constraints)。 1. 单粒子的动力学 从原点出发有一个失径,记为 r \bm{r} r,速度矢量记为 v \bm{v} v,则: v = d r d t ( 1.1 ) \bm{v} = \frac{…...
PCL点云库入门——PCL库点云特征之PFH点特征直方图(Point Feature Histograms -PHF)
1、算法原理 PFH点(Point Feature Histogram)特征直方图的原理涉及利用参数化查询点与邻域点之间的空间差异,并构建一个多维直方图以捕捉点的k邻域几何属性。这个高维超空间为特征表示提供了一个可度量的信息空间,对于点云对应曲面…...
基于vue的商城小程序的毕业设计与实现(源码及报告)
环境搭建 ☞☞☞ Vue入手篇(一),防踩雷(全网最详细教程)_vue force-CSDN博客 目录 一、功能介绍 二、登录注册功能 三、首页 四、项目截图 五、源码获取 一、功能介绍 用户信息展示:页面顶部设有用户头像和昵称展示区,方便用户识别…...
04-Linux系统编程之进程
一、进程的概述 1.什么是进程 进程:即进行中的程序,可执行文件从开始运行到结束运行这段过程就叫进程。 2.程序和进程的区别 程序:存储在磁盘上、占磁盘空间、静态的。如:我们编写的C语言代码就是程序,存储在我们电…...
分布式ID生成-雪花算法实现无状态
雪花算法这里不再赘述,其缺点是有状态(多副本隔离时,依赖手动配置workId和datacenterId),代码如下: /*** 雪花算法ID生成器*/ public class SnowflakeIdWorker {/*** 开始时间截 (2017-01-01)*/private st…...
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
1、更新于2024/5/13,新增Veth Pair配置 2、更新于2024/5/19,修复NetworkManager接管网络配置无效的错误 3、更新于2024/5/20,新增Ubuntu两种版本下NetworkManager接管网络的配置 目录 一、配置NetworkManager接管网络(选&…...
计算机网络 (25)IPV6
前言 IPv6,全称为“互联网协议第6版”(Internet Protocol Version 6),是由互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议。 一、产生背景 IPv4,即互联网协议第4版,是现行…...
Git 安装 操作 命令 远程仓库 多人协作
Git作用 Git诞生史 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在…...
线性回归的改进-岭回归
2.10 线性回归的改进-岭回归 学习目标 知道岭回归api的具体使用 1 API sklearn.linear_model.Ridge(alpha1.0, fit_interceptTrue,solver"auto", normalizeFalse) 具有l2正则化的线性回归alpha:正则化力度,也叫 λ λ取值:0~1 1~10solver:会根…...
【LC】2469. 温度转换
题目描述: 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位。 你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以…...
【在安卓平台上,Unity与C/C++编写的.so动态库交互的实现】
在安卓平台上,Unity与C/C++编写的.so动态库交互的实现,通常通过JNI(Java Native Interface)和P/Invoke机制来完成。通过这种方式,C#脚本可以调用C/C++代码中的函数,并与本地库进行交互。 以下是一个简单的步骤演示,展示如何在Unity中与安卓平台上的.so动态库交互。 步…...
【llm/ollama/qwen】在本地部署qwen2.5-coder并在vscode中集成使用代码提示功能
说在前面 操作系统:windows11ollama版本:0.5.4vscode版本:1.96.2continue插件版本:0.8.66 ollama安装 访问官网,点击下载安装即可 默认装在了C盘,比较蛋疼;但是可以指定路径安装:Ol…...
C语言练习:求数组的最大值与最小值
文章目录 1. 提出任务2. 完成任务2.1 方法一:通过返回结构体指针来间接返回结果2.1.1 编写程序,实现功能2.1.2 运行程序,查看结果 2.2 方法二:通过参数传递数组,并在函数中修改传入的参数2.2.1 编写程序,实…...
【TCP】SYN、ACK、FIN、RST、PSH、URG的全称
在 TCP 协议中,SYN、ACK、FIN、RST、PSH 和 URG 都是控制标志位(Flags),每个标志位对应不同的功能。它们的全称如下: URG:(URGent)紧急 ACK:(ACKnowledgment)确认 PSH:(PuSH)推送 RS…...
Re77 读论文:LoRA: Low-Rank Adaptation of Large Language Models
诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名:LoRA: Low-Rank Adaptation of Large Language Models ArXiv网址:https://arxiv.org/abs/2106.09685 官方GitHub网站(包含在RoBERTa、DeBERTa、GPT-2上用Lora微调…...
《OpenCV 4.10.0 实例:开启图像处理新世界》
《OpenCV 4.10.0 实例:开启图像处理新世界》 一、OpenCV 4.10.0 初印象二、环境搭建:开启 OpenCV 之旅(一)不同系统安装指南(二)配置细节与技巧 三、基础图像处理实例(一)图像读取、…...
硬件电路(3)-PT100温度采集电路
一、概述 PT100是铂热电阻,它的阻值会随着温度的变化而改变。PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。它的工作原理:当PT100在0摄氏度的时候它的阻值为100欧姆,它的阻值会随着温度上升而成匀速增…...
计算机网络——数据链路层-流量控制和可靠传输
一、流量控制 流量控制是指由接收方及时控制发送方发送数据的速率,使接收方来得及接受。 • 停止等待流量控制 • 滑动窗口流量控制 1、停止—等待流量控制 停止-等待流量控制的基本原理是发送方每发出一帧后,就要等待接收方的应答信号ÿ…...
sqlserver数据库备份和还原
一、备份 打开smss,选中数据库-任务-备份 地址选择默认如:C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\ (远程服务器文件夹,非本机文件夹) PS:备份后编辑下数据 二、还原 PS:如果提示数…...
Python爬虫基础——认识网页结构(各种标签的使用)
1、添加<div>标签的代码定义了两个区块的宽度和高度均为100px,边框的格式也相同,只是区块中显示的内容不同; 2、添加<ul>和<ol>标签分别用于定义无序列表和有序列表。<il>标签位于<ul>标签或<ol>标签之…...
Linux双端口服务器:端口1的文件系统目录挂载到端口2
目录 一、服务器安装NFS服务并配置二、文件挂载三、持久化挂载总结为什么服务器配置多个端口 目前有一台服务器,不过他设置了两个SSH的端口,通过下面方法可以让这两个端口连接的主机能够共享同一个文件系统,原本这两个端口的文件系统是隔离的…...
unity学习11:地图相关的一些基础
目录 1 需要从 unity的 Asset Store 下载资源 1.1 下载资源 1.2 然后可以从 package Manager 里选择下载好的包,import到项目里 2 创建地形 2.1 创建地形 2.2 地形 Terrain大小 2.3 各种网格的尺寸大小 2.4 比较这个地形尺寸和创建的其他物体的大小对比 3 …...
如何在 Spring Cloud Gateway 中创建全局过滤器、局部过滤器和自定义条件过滤器
Spring Cloud Gateway 是一个功能强大的 API 网关,能够处理 HTTP 请求、响应及路由。通过过滤器机制,您可以在请求和响应过程中进行各种处理操作,如记录日志、身份验证、限流等。Spring Cloud Gateway 提供了三种主要类型的过滤器:…...
总分支机构跨网文件交换解决方案几个关键要点
跨国公司和国内大型集团的日常运营中,总分支机构之间的文件交换已成为必不可少的环节。然而,跨网文件交换面临着诸多挑战,比如安全性、效率、合规性、管理便捷性、技术兼容性和成本效益等。 为了解决这些问题,在挑选总分支机构跨网…...
机器人手眼标定
机器人手眼标定 一、机器人手眼标定1. 眼在手上标定基本原理2. 眼在手外标定基本原理 二、眼在手外标定实验三、标定精度分析 一、机器人手眼标定 要实现由图像目标点到实际物体上抓取点之间的坐标转换,就必须拥有准确的相机内外参信息。其中内参是相机内部的基本参…...
将 Docker 数据迁移到新磁盘:详细操作指南
将 Docker 数据迁移到新磁盘:详细操作指南 背景 在容器化应用的部署中,Docker 通常将数据存储在默认的 /var/lib/docker 目录。然而,随着容器数量的增加和镜像的累积,该目录可能会迅速占满系统磁盘空间,从而影响系统…...
AWS re:Invent 的创新技术
本月早些时候,Amazon 于 12 月 1 日至 5 日在内华达州拉斯维加斯举行了为期 5 天的 re:Invent 大会。如果您从未参加过 re:Invent 会议,那么最能描述它的词是“巨大”——不仅从与会者人数(60,000 人)来看&…...
无人机低小慢探测难题!
一、探测难度增加 由于无人机的雷达散射面积小,雷达在探测时接收到的反射信号相对较弱。这使得雷达系统需要更高的灵敏度和更先进的信号处理算法才能有效捕捉到无人机的信号。在复杂环境中,如城市、山区或海洋,背景噪声和干扰源众多…...
第2章:Go语言基础语法
第2章:Go语言基础语法 1. 变量和数据类型 1.1 基本数据类型 Go语言提供了以下基本数据类型: // 整数类型 var intVar1 int // 根据系统位数,32或64位 var intVar2 int8 // -128 到 127 var intVar3 int16 // -32768 到 32767 var i…...
RP2K:一个面向细粒度图像的大规模零售商品数据集
这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同,我们收集了2000多种不同零售产品的35万张图像,这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究,该研究具…...
pnpm安装与使用
pnpm官网 全局安装 npm install pnpm -g设置源 // 查看源 pnpm config get registry // 切换淘宝源 pnpm config set registry https://registry.npmmirror.com/ 移除 pnpm remove 包名称 // 移除包 pnpm remove 包名称 --global // 移除全局包 更新 pnpm up // 更新所有…...
c# 服务中启动exe窗体程序
Windows服务默认在会话0(Session 0)中运行,这是一个隔离的环境,旨在防止服务与应用程序和用户会话交互,从而提高系统的稳定性和安全性。由于这个原因,直接从服务启动的GUI应用程序将不会显示,因…...