当前位置: 首页 > news >正文

ApsaraMQ Serverless 演进之路,助力企业降本

作者:家泽

ApsaraMQ 与时俱进,砥砺前行

阿里云消息队列从诞生开始,至今已有十余年。今年,阿里云消息产品全面品牌升级为 ApsaraMQ,与时俱进,砥砺前行。

图片

2012 年,RocketMQ 诞生于集团内部,用于淘宝交易等核心业务链路。历经集团多年来双 11 万亿级的考验、稳定性的打磨,依托云计算孵化,以及开源社区的协力。 于 2015 年,RocketMQ 在阿里云上,面向企业提供商业化的消息队列服务。随后以 RocketMQ 为基础,拓展 Kafka,RabbitMQ,MQTT,MNS 等商业化产品,致力于服务有更多场景需求的企业;

2017 年,RocketMQ 成为 Apache 基金会顶级项目;

2022 年,RocketMQ5.0 正式发布,完全构建于云原生基础设施之上, 充分释放云基础设施的池化能力,全方位提高消息的核心技术指标。在事件、流处理方面,做了新的提升。消息处理方面,在队列模型之上构建了消息模型 ,业务可以只需要关心消息而无需关心队列, 基于消息消费模型,客户端、连接和消费都是无状态的, 可在任意 Proxy 节点上飘移,真正做到轻量化。

2023 年,全系列产品 Serverless 化,面向企业提供极速弹性、更高性价比的云消息队列产品,帮助企业在消息队列使用上降本。

面向应用、数据集成的可靠消息通道

图片

回顾过去十余年,消息产品始终坚持开源、集团、商业三位一体的发展思路,内核演进和产品共同迭代。十年来,在阿里云上累计服务了 10 万企业,覆盖互联网、零售、金融、汽车等 20 多个行业,大规模的生产实践持续积累产品的核心优势。同时,面向企业诉求,丰富产品矩阵,覆盖多样化的业务场景需要。为企业上云提供更精准的产品选型。

  • RocketMQ 在微服务、应用领域以其 4 个 9 的可用性,9 个 9 的数据可靠性被广泛应用。同时,RocketMQ 提供了定时,顺序,事务多样性的消息类型,满足应用复杂业务需求;
  • RabbitMQ 同样也是 messaging 的开源生态代表。商业化的 RabbitMQ 解决了开源 RabbitMQ 无法灵活扩缩容、脑裂、堆积等痛点问题,支持开源 RabbitMQ 无缝迁移到云上;
  • Kafka是流式存储的代表,被广泛应用于大数据/日志处理场景,商业化版本兼容开源 3.3 之前的版本,并在存算分离,高可用容灾,弹性上做深、做强,相比开源自建成本更低,服务可用性更高;
  • MQTT 在物联网/移动互联网的终端场景,提供了千万链接,百万并发的服务,相比开源版本加强了 MQTT 服务的后端生态建设,让数据链路可延续。
  • MNS 是一款对标 AWS SQS/SNS 的消息产品,以轻量的消息队列支持简单的业务异步通信场景,提供轻量化的事件通知和 SaaS 集成能力。

无论是开源迁移上云,还是新业务构建,在 ApsaraMQ 产品系列中,总能找到一款适合业务场景的可靠的消息中间件。近年,阿里云消息团队在存算分离、多级存储和弹性上重点投入,进行架构升级,使消息产品从云原生走向 Serverless。

云产品从云原生走向 Serverless

图片

云原生的本质是充分释放云计算的红利,实现企业业务的降本增效。在云原生阶段,云厂商提供全托管的中间件服务,在开源兼容的同时,补充运维及可视化的用户界面,达到开箱即用的效果,此时商业化形态多数以资源预留的包年包月方式面向企业收费。

随着云上资源规模的不断扩大,规模效应允许企业按照使用量付费,但对于单实例仍有规模限制,比较难应对业务突发流量。

随着云原生的发展,Serverless 的思想不断被加强,产品 Serverless 化的实现也不断的被赋能。Serverless 已经到了落地的阶段。企业只需聚焦在自身业务逻辑,对资源的使用和业务的流量无感。

面向 Serverless 设计的云消息服务

站在用户的视角,消息的 Serverless 化从成本、易使用、稳定性、生态集成几个方面持续演进:

图片

低成本:

  1. 架构解耦,将网络、计算和存储分离,提升自身计算能力的同时,充分利用云原生网络和存储的弹性能力;
  2. 提升产品性能,降低产品自身资源使用成本,同时,建设 SRE 平台,实现自动化交付、升级、扩容,降低交付成本与运维成本;
  3. 优化计费方式,计费项(消息量,存储,网络)解耦,做到计费项按实际资源的使用量付费,降低以往固定计费项造成预估过量的浪费。

易使用: 主要考虑迁移上云方便,可靠,无损以及迁移后的控制面,提供对业务有价值的数据,不仅帮助企业观测云产品的使用,同时,对于业务的优化能够提供参考依据。

稳定性:

稳定性是企业使用云产品的基础考量,云产品运行稳定,过程可监测,应急有预案是业务持续性的重要保障。

生态集成:

丰富的消息产品生态,能够帮助企业快速完成业务的开发,放大消息的价值。

ApsaraMQ 核心产品升级

图片

ApsaraMQ 全系列产品发布 Serverless 版,RocketMQ、RabbitMQ、MQTT Serverless 版实例 0 门槛,按实际使用量进行收费。计算成本最高可降低 75% 左右,并发流量可达秒级万 QPS 自适应弹性,在存算分离、多级存储架构之后,消息存储成本最高可降低 1/3。

Kafka 在十月底发布了 3.0 版本,计算节点无状态,存储及数据可用性下沉至云存储基础设施,解决了单盘吞吐能力受限、存算比例绑定、扩缩容数据迁移影响业务和跨可用区高可用性能等问题。单实例流量可达秒级 GB 自适应弹性。对比开源自建,成本最高降低 20%。

存算分离是消息服务 Serverless 化的基础

图片

和应用解耦一样,在技术上,计算和存储分开,计算层才能更专注于业务逻辑的定义和演进。才能更好的实现按量使用,按需自适应弹性。

系统架构中,元数据(用户实例关系、订阅关系、参数配置等)统一管理;业务消息数据完全由基础存储设施做专业的存储保障,真正的做到计算层无状态。

计算层将复杂的数据可靠性机制下沉到存储层:

  1. 降低计算层的复杂逻辑,如数据复制成本,提升了性能和稳定性;

  2. 降低了跨AZ网络数据传输的影响,同时,降低网络吞吐以避免网络拥塞;

  3. 降低扩容、缩容时数据复制带来的资源开销和业务影响,提升了服务的可用性。

存储层,充分利用阿里云基础能力。

盘古 DFS 使用多副本以及 EC 等策略来保证数据极高的可靠性。将数据打散到不同的 rack 上,当某一台廉价的服务器发生故障时,仍然能够快速地恢复出数据的副本以保证数据安全,这种可靠性保证为有把握对上层承诺数据不丢失提供了稳固的基石,使得消息数据更加可靠,数据更加安全。盘古 DFS 支持跨数据中心的容灾策略,百微秒级平均延迟、毫秒级长尾延迟以及单存储节点打满 200Gbps 网络的 IOPS 处理能力,同时数据可靠性达到 12 个 9,可用性高达 5 个 9。

计算能力秒级弹性,降低闲置成本

消息的流量图基本是潮汐型,或潮汐型伴随着高毛刺。自建使用者以及云产品过去基本可以概括为资源预留型。

使用者用一批固定的资源,支持业务的流量。当出现核心业务流量高峰时,富裕的使用者有预留或提前增加机器以缓解毛刺流量,不富裕的使用者限制非核心业务流量。但给使用者带来了评估难,成本浪费的问题。

图片

在 Serverless 架构版本中,将网络、计算和存储分离,网络和存储交由基础产品提供自适应弹性的能力,按量付费。

计算层在资源弹性的方式外,增加了基于实例以往业务流量指标、集群水位指标的智能化预弹方式。同时也增加了实例流量跨集群调度的方式。尽可能的缩短业务流量被限制的时间,达到快速支持毛刺流量的目标。

多级存储实现按需存储,大容量,低成本

消息是一个中间态数据,理论上消息快速被生产,快速被消费,数据在内存中流转速度是最快的。但实际生产中,我们可能面临着消息不能被及时消费,或消息需要被重新消费的场景。

图片

在这些场景下,这些数据往往不在 PageCache 中,需要从磁盘读取并加载到 PageCache,当冷读较多时 PageCache 竞争激烈,频繁的换入换出导致缓存污染,严重影响写入性能。此外,处理生产和消费请求的同一线程池可能会受到冷读阻塞的影响,导致所有请求无法及时处理出现故障。为缓解此问题,通过"冷热数据隔离"、冷热线程(协程)分离和预加载等策略进行优化,消息生产不受影响,服务更稳定。

引入廉价的多级存储,降低了消息存储成本;同时,又可以延长数据保存时间。

可靠的 SLA 保障是服务稳定的基础

在一系列的架构演进的基础上,产品的可用性在技术实现得到了保障,单节点或可用区故障不影响服务的可用,同时单节点故障也可以利用容器的特性,快速自愈。服务可用性上最高可达 4 个 9,数据可靠性上最高可达 9 个 9;

图片

在运行时稳定性保障上,理论与实践相结合,通过 SRE 平台,实现黑盒探测及指标监控相结合,覆盖 50 多项检测指标,可以做到全天 24 小时检测覆盖,异常分钟内被告警,服务 SLO 可观测。对于异常告警的每一项,都有对应的可操作应急预案。

MQ User Plane 全面升级

图片

此外,产品体验也得到了提升,统一 ApsaraMQ 全系列产品面向用户的看版,基于 Metric 指标、消息轨迹、关键事件和业务日志,面向业务开发和运维人员提供告警,巡检诊断;基于专家经验,定义事件模型,给出根因分析,帮助企业快速排查和解决业务问题。

面向架构师,在接入前的评估,提供产品能力一键体验,成本估算的能力,方便分析师从体验中快速了解产品;统一消息系列产品生态,以消息流入、流出的能力快速实现数据集成。

可视化平滑迁移上云,风险小,成本低

迁移上云阶段,提供了可视化的迁移工具,保障上云平滑、无损的完成迁移。

图片

丰富的消息生态助力企业快速构建应用

上云后,消息提供了丰富的生态,助力企业快速构建应用。

图片

以 EventBridge /函数计算/云工作流 为核心,构建云集成范式,增强云产品间可联通性;EventBridge 在云产品事件集成方面,目前已经集成 200+ 云产品事件源,3000 多种事件类型。

在 SaaS 应用集成方面,包括钉钉、聚石塔以及云上 50 多个 SaaS 服务都可以通过 webhook 方式连接到 EB。

除此之外,目前 EB 已经对接了阿里云全量的云产品 API,任何一个事件都可以通过云产品 API 的方式进行触达。

云工作流提供可视化流程编排,完整的API对接,无需编写代码即可编排 EventBridge 的云服务;函数计算提升集成体验,基于 EventBridge 可以完成消息数据到大数据存储的分析场景等。

Confluent 成为背靠背的技术合作伙伴

10 月 31 日,杭州云栖大会上,阿里云云原生应用平台负责人丁宇宣布,Confluent 成为阿里云技术合作伙伴,合作全新升级,一起拓展和服务亚太市场。 本次合作伙伴签约,阿里云与 Confluent 将进一步加深合作,Confluent 将作为阿里云一方产品,在阿里云国内站,国际亚太站点全面发布,在阿里云 Apsara for Kafka下推出Confluent 规格,全面支持 Confluent 的商业化能力及解决方案。通过与 Confluent团队联合提供的技术支持,国内企业将在阿里云上使用 Confluent 服务。

图片点击阅读原文,ApsaraMQ Serverless 资源包抢先了解!

相关文章:

ApsaraMQ Serverless 演进之路,助力企业降本

作者:家泽 ApsaraMQ 与时俱进,砥砺前行 阿里云消息队列从诞生开始,至今已有十余年。今年,阿里云消息产品全面品牌升级为 ApsaraMQ,与时俱进,砥砺前行。 2012 年,RocketMQ 诞生于集团内部&…...

redis 从0到1完整学习 (六):Hash 表数据结构

文章目录 1. 引言2. redis 源码下载3. dict 数据结构4. 哈希表扩容与 rehash5. 参考 1. 引言 前情提要: 《redis 从0到1完整学习 (一):安装&初识 redis》 《redis 从0到1完整学习 (二):red…...

阿里云江苏省中小企业补贴5000元上云补贴金

阿里云「数智惠企」中小企业补贴,江苏区域企业提交申请内部评估及审批通过后,即可获取上云补贴金,使用补贴金购买指定云产品,满10000元即可立减5000元,请抓紧申领。阿里云百科 aliyunbaike.com 分享江苏区域5000元上云…...

PID算法

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…...

Linux bridge开启hairpin模拟测试macvlan vepa模式

看到网上介绍可以通过Linux bridge 开启hairpin方式测试macvlan vepa模式,但是没有找到详细资料。我尝试测试总提示错误信息,无法实现,经过几天的研究,我总算实现模拟测试,记录如下: 参考 1.Linux Macvla…...

连续执行函数和alert与focus死循环事件

1.innerText value的值会根据输入的改变而改变DOM树,但是innerHTML和innerText有一种效果就是赋值的时候是标签下所有替代了,但是取值的时候还是html文件下,标签下的所有。如果赋值就是标签子都被这个代替。内部变量就是这个,没赋…...

向量投影:如何将一个向量投影到矩阵的行向量生成子空间?

向量投影:如何将一个向量投影到矩阵的行向量生成子空间? 前言 本问题是在学习Rosen梯度投影优化方法的时候遇到的问题,主要是对于正交投影矩阵(NT(NNT)-1N)的不理解,因此经过查阅资料,学习了关于向量投影的知识&…...

Ubuntu18.04安装GTSAM库(亲测可用)

在SLAM(Simultaneous Localization and Mapping)和SFM(Structure from Motion)这些复杂的估计问题中,因子图算法以其高效和灵活性而脱颖而出,成为图模型领域的核心技术。GTSAM(Georgia Tech Smo…...

SpringBoot中常见配置配置,MySQL、Redis、MinIO等

SpringBoot中配置 启动端口号 server:port: 8501 spring:application:name: server-managerprofiles:active: dev # 当前使用的配置文件servlet:multipart:max-file-size: 20MB # 最大文件max-request-size: 20MB# # 最大请求数据库相关 MySQL spring:datasource:type: com…...

面向LLM的App架构——技术维度

这是两篇面向LLM的大前端架构的第二篇,主要写我对LLM辅助开发能力的认知以及由此推演出的适合LLM辅助开发的技术架构。 LLM之于代码 商业代码对质量的要求其实对LLM是有点高的。主要是输入准确度、输出准确度(这个是绝大部分人质疑的点)、知…...

ArkUI - 状态管理

目录 一、State装饰器 二、自定义组件 三、Prop和Link、Provide和Consume 四、Observed和ObjectLink 一、State装饰器 这里涉及到两个概念 状态 和 视图 状态(State):指驱动视图更新的数据(就是被State注解标记的变量&…...

C++ 学习系列 -- C++ 中的多态行为

一 多态是什么? 多态是面向对象三大特征中重要一项,另外两项分别是封装与继承。 所谓多态,指的是多种不同的形态,也就是去完成某个具体的行为,多个不同的对象去操作同一个函数时,会产生不同的行为&…...

Spring Cloud中实现Feign声明式服务调用客户端

可以通过OpenFeign从一个服务中调用另一个服务,我们一般采用的方式就是定义一个Feign接口并使用FeignClient注解来进行标注,feign会默认为我们创建的接口生成一个代理对象。 当我们在代码中调用Feign接口的方法的时候,实际上就是在调用我们Fe…...

【网络编程】网络通信基础——简述TCP/IP协议

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 目录 一、ip地…...

观察者模式 Observer

观察者模式属于行为型模式。在程序设计中,观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应。 三要素:观察者(Observer&#…...

Hadoop入门学习笔记——七、Hive语法

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 七、Hive语法7.1. 数据库相关操作7.1.1. 创建数据库7.1.2…...

采用SpringBoot框架+原生HTML、JS前后端分离模式开发和部署的电子病历编辑器源码(电子病历评级4级)

概述: 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息,包括&…...

HTML表单

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>招聘案列</title></head><body><h1>午睡操场传来蝉的声音</h1><hr /><form>昵称&#xff1a;<input type"text" …...

Http 请求体和响应体中重要的字段

Http 请求体 Accept&#xff1a;用于告诉服务器客户端能够处理哪些媒体类型。Accept 头中的值通常是一个或多个 MIME 类型&#xff0c;并按优先级排序。服务器会根据 Accept 头中的值来决定响应的内容类型。例如&#xff0c;Accept: text/plain, text/html。Content-Type&…...

最新国内可用使用GPT4.0,GPT语音对话,Midjourney绘画,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而&#xff0c;GP…...

【量化金融】证券投资学

韭菜的自我修养 第一章&#xff1a; 基本框架和概念1.1 大盘底部形成的技术条件1.2 牛市与熊市1.3 交易系统1.3.1 树懒型交易系统1.3.2 止损止损的4个技术 第二章&#xff1a;证券家族4兄弟2.1 债券&#xff08;1&#xff09;债券&#xff0c;是伟大的创新&#xff08;2&#x…...

【Bash】重点总结

文章目录 1. 总体认识1.1. Shell概述1.2. 第一个Shell脚本 2. 变量2.1. 定义变量2.2. 使用变量2.3. 只读变量2.4. 删除变量2.5. 变量类型2.5.1. 字符串变量 1. 总体认识 1.1. Shell概述 Shell是一个用C语言编写的程序&#xff0c;这个程序提供了一个界面&#xff0c;用户通过…...

Git安装和使用教程,并以gitee为例实现远程连接远程仓库

文章目录 1、Git简介及安装2、使用方法2.1、Git的启动与配置2.2、基本操作2.2.1、搭建自己的workspace2.2.2、git add2.2.3、git commit2.2.4、忽略某些文件不予提交2.2.5、以gitee为例实现git连接gitee远程仓库来托管代码 1、Git简介及安装 版本控制&#xff08;Revision cont…...

Hadoop入门学习笔记——一、VMware准备Linux虚拟机

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.…...

CSS3新增特性

CSS3 CSS3私有前缀 W3C 标准所提出的某个CSS 特性&#xff0c;在被浏览器正式支持之前&#xff0c;浏览器厂商会根据浏览器的内核&#xff0c;使用私有前缀来测试该 CSS 特性&#xff0c;在浏览器正式支持该 CSS 特性后&#xff0c;就不需要私有前缀了。 查询 CSS3 兼容性的网…...

Unity中Shader观察空间推导

文章目录 前言一、本地空间怎么转化到观察空间二、怎么得到观察空间的基向量1、Z轴向量2、假设 观察空间的 Y~假设~ (0,1,0)3、X Y 与 Z 的叉积4、Y X 与 Z 的叉积 三、求 [V~world~]^T^1、求V~world~2、求[V~world~]^T^ 四、求出最后在Unity中使用的公式1、偏移坐标轴2、把…...

信息学奥赛一本通2034:【例5.1】反序输出

2034&#xff1a;【例5.1】反序输出 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 79280 通过数: 35643 【题目描述】 输入nn个数,要求程序按输入时的逆序把这nn个数打印出来&#xff0c;已知整数不超过100100个。也就是说&#xff0c;按输入相反顺序打印这nn个…...

使用教程之【SkyWant.[2304]】路由器操作系统,破解移动【Netkeeper】校园网【小白篇】

许多高校目前饱受Netkeeper认证的痛苦&#xff0c;普通路由器无法使用&#xff0c; 教你利用SkyWant的Netkeeper认证软件来使你的SkyWant路由器顺利认证上网&#xff0c;全宿舍又可以合作共赢了&#xff01; 步骤一&#xff1a;正确连接网线&#xff0c;插电开机 正确连接网…...

模式识别与机器学习(十):梯度提升树

1.原理 提升方法实际采用加法模型&#xff08;即基函数的线性组合&#xff09;与前向分步算法。以决策树为基函数的提升方法称为提升树&#xff08;boosting tree&#xff09;。对分类问题决策树是二叉分类树&#xff0c;对回归问题决策树是二叉回归树。提升树模型可以表示为决…...

《剑指offer》Java版--12.矩阵中的路径(DFS+剪枝)

剑指offer原题:矩阵中的路径 请设计一个函数&#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始&#xff0c;每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格&#xff0c;那么该路径不能再…...

AI智能体的介绍

最近几个月 随着大语言模型的持续火爆 利用大模型来构建AI智能体的研究呢 也陆续进入了人们的视野 AI智能体这个概念呢 也逐渐的流行开来 先是斯坦福大学谷歌的研究者们 成功的构建了一个虚拟小镇 小镇上的居民呢不再是人 而是25个AI的智能体 他们的行为呢 比人类角…...

Java设计模式-单例模式(Singleton)

Java中实现单例模式有几种不同的方式,每种方式都有其特点和适用场景。下面是两种常用的实现方式:懒汉式和饿汉式。 懒汉式(线程安全) 懒汉式单例是指在第一次被引用时才会创建实例。为了确保线程安全,可以使用同步方法或同步块。 public class SingletonLazy {private sta…...

若依vue如何展示一个HTML页面(或者展示Markdown文档)

一. 前言 ⚠ 本文是展示Markdown的方法,不能直接前端编辑Markdown文档. 二. 准备部分 用Typora编辑器打开需要导出html页面,我这里使用Typora来导出 1. 先将md文件导出成html 2. 将导出好的文件放在若依vue的pubilc下(文件可以是中文) 三. 代码部分 1.使用v-html来展示HT…...

优化for循环(js的问题)

性能优化 var array [];for (let index 0; index < array.length; index) {// do something }// 优化后 for (let index 0, len array.length; index < len; index) {// do something } 算法优化 // 求和&#xff1a;1 2 3 4 ... 100 var sum 0; for (let i …...

如何更好的去理解源码

前言 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前&#xff0c;先来简单说一下为什么要去阅读源码&#xff0c;大致可分为以下几点原因&#xff1a; 最直接的原因&#xff0c;就是面试需要&#xff0c;面试喜欢问源码&#xff0c;读完源码才可以…...

c# opencv 获取多边形中心点

在C#中使用OpenCV获取多边形的中心点&#xff0c;可以按照以下步骤进行&#xff1a; 首先&#xff0c;你需要找到图像中的轮廓。这可以通过FindContours方法实现&#xff1a; using OpenCvSharp;Mat src new Mat("your_image_path", ImreadModes.Grayscale); Mat …...

Redis数据一致解决方案

文章目录 前言技术积累查询缓存业务流程更新缓存业务流程 更新缓存问题解决方案写在最后 前言 当前的应用服务很多都有着高并发的业务场景&#xff0c;对于高并发的解决方案一般会用到缓存来降低数据库压力&#xff0c;并且还能够提高系统性能减少请求耗时&#xff0c;比如我们…...

安捷伦DSOX2024A示波器

参考波形 示波器的非易失参考波形存储器可以存储两个波形。比较这些参考波形与实时波形&#xff0c;并对已存储数据进行后分析和测量。您也可将波形数据存储到移动USB 存储器设备。这些数据还能调用到示波器的两个参考存储器的其中一个&#xff0c;进行全面的波形测量和分析。为…...

Leetcode算法系列| 4. 寻找两个正序数组的中位数

目录 1.题目2.题解C# 解法一&#xff1a;合并List根据长度找中位数C# 解法二&#xff1a;归并排序后根据长度找中位数C# 解法三&#xff1a;方法二的优化&#xff0c;不真实添加到listC# 解法四&#xff1a;第k小数C# 解法五&#xff1a;从中位数的概念定义入手 1.题目 给定两个…...

Java整合APNS推送消息-IOS-APP(基于.p12推送证书)

推送整体流程 1.在开发者中心申请对应的证书&#xff08;我用的是.p12文件&#xff09; 2.苹果手机用户注册到APNS&#xff0c;APNS将注册的token返回给APP&#xff08;服务端接收使用&#xff09;。 3.后台服务连接APNS&#xff0c;获取连接对象 4.后台服务构建消息载体 5.后台…...

C语言strcpy函数用法

C语言strcpy函数用法 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入了解C语言中的strcpy函数&#xff0c;这是一个在字符串处理中非…...

汽车服务品牌网站建设的作用是什么

汽车服务涵盖多个层面&#xff0c;在保修维护这一块更是精准到了车内车外&#xff0c;无论是品牌商还是市场中各维修部&#xff0c;都能给到车辆很好的维修养护服务。如今车辆的人均拥有量已经非常高&#xff0c;也因此市场中围绕汽车相关的从业者也比较多。 首先就是拓客引流…...

【iOS】UICollectionView

文章目录 前言一、实现简单九宫格布局二、UICollectionView中的常用方法和属性1.UICollectionViewFlowLayout相关属性2.UICollectionView相关属性 三、协议和代理方法&#xff1a;四、九宫格式的布局进行升级五、实现瀑布流布局实现思路实现原理代码调用顺序实现步骤实现效果 总…...

Linux poll 和 select 机制

poll select 介绍 使用非阻塞 I/O 的应用程序常常使用 poll, select, 和 epoll 系统调用. poll, select 和 epoll 本质上有相同的功能: 每个允许一个进程来决定它是否可读或者写一个 或多个文件而不阻塞. 这些调用也可阻塞进程直到任何一个给定集合的文件描述符可用来 读或写.…...

【JVM基础】 JVM 如何加载一个类以及类加载机制

文章目录 1、什么时候一个类会被加载&#xff1f;1、包含 main 方法的主类2、非 包含 main 方法的主类&#xff0c;什么时候去加载&#xff1f; 3、类加载器如何加载一个类&#xff1f;1、验证阶段&#xff1a;2、准备阶段&#xff1a;3、解析阶段&#xff1a;4、初始化&#x…...

Android Studio使用Genymotion

1. Genymotion介绍 GenyMotion速度之快令人发指&#xff0c;模拟效果堪比真机调试&#xff0c;支持绝大部分的模拟器功能&#xff0c;甚至包括语音&#xff0c;Google Now&#xff0c;支持eclipse, android studio。非常适合用来开发和演示效果。 2. Genymotion下载 Genymotio…...

Mysql sql_mode参数配置

今天在使用数据库查询时使用了Group语句&#xff0c;遇到问题&#xff1a; SELECT t1.UnderlyingInstrumentID, t2.* FROM t_OptionInstrument t1 LEFT JOIN t_Instrument t2 ON t2.InstrumentID t1.UnderlyingInstrumentID GROUP BY t1.UnderlyingInstrumentID > 1055 - …...

SpringIOC之AbstractMessageSource

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…...

详解Vue3中的基础路由和动态路由

本文主要介绍Vue3中的基础路由和动态路由。 目录 一、基础路由二、动态路由 Vue3中的路由使用的是Vue Router库&#xff0c;它是一个官方提供的用于实现应用程序导航的工具。Vue Router在Vue.js的核心库上提供了路由的功能&#xff0c;使得我们可以在单页应用中实现页面的切换、…...

Mysql四种事务隔离级别(简易理解)

读未提交&#xff1a;简单理解就是读到没有提交事务的执行结果&#xff1b;读已提交&#xff1a;简单理解就是只能读到已经提交的事务执行结果&#xff1b;可重复读&#xff1a;简单理解就是确保并发读取数据库时&#xff0c;读到的数据一致&#xff0c;这是mysql默认隔离级别&…...