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

【RabbitMQ】MQ相关概念

一、MQ的基本概念

  • 定义:MQ全称为Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件。它允许应用程序通过读写队列中的消息来进行通信,而无需建立直接的连接。
  • 作用:主要用于分布式系统之间的通信,通过异步处理的方式,减少系统的响应时间,提高系统的吞吐量和稳定性。

二、MQ的工作原理

1. 消息生产者(Producer)

  • 消息发送:生产者将需要传递的消息发送到消息队列中。在发送之前,生产者通常会连接到消息代理(Broker),并通过特定的协议(如AMQP、MQTT、Kafka的Protocol等)与消息代理进行通信。
  • 消息内容:消息可以包含文本、二进制数据等多种类型的信息,并且通常会附带一些元数据(如消息ID、优先级、时间戳等)。
  • 消息确认:某些MQ系统支持消息发送后的确认机制,即生产者发送消息后,消息代理会返回一个确认信号,表示消息已成功接收并存储在队列中。

2. 消息队列(Queue)

  • 存储消息:消息队列是消息的存储容器,它按照特定的规则(如FIFO)保存生产者发送的消息。
  • 队列管理:消息队列通常由消息代理进行管理,包括队列的创建、删除、查询以及队列中消息的存储、检索等。
  • 持久化:为了保证消息的可靠性,许多MQ系统支持将消息持久化到磁盘上,以防止系统崩溃或重启时数据丢失。

3. 消息消费者(Consumer)

  • 消息拉取:消费者主动从消息队列中拉取消息进行处理。在某些MQ系统中,也支持推送模式,即消息代理主动将消息推送给消费者。
  • 并发消费:为了提高消费效率,一个消息队列可以支持多个消费者同时消费消息。这些消费者通常可以组成消费者组(Consumer Group),以实现负载均衡和消息的分发。
  • 消息确认:消费者处理完消息后,需要向消息代理发送确认信号,表示消息已被成功消费。在某些MQ系统中,如果消费者在处理消息时失败或崩溃,消息代理可能会将消息重新放回队列中,等待其他消费者重新消费。

4. 消息代理(Broker)

  • 消息路由:消息代理负责将生产者发送的消息路由到正确的队列中,并根据需要将消息推送给消费者。
  • 安全认证:为了保护消息的安全性,消息代理通常会对生产者和消费者进行身份认证和授权。
  • 监控和管理:消息代理提供了丰富的监控和管理功能,如队列状态查询、消息统计、日志记录等,以帮助用户了解系统的运行状况并进行故障排查。

5. 消息传递模式

  • 点对点模式(PTP, Point-to-Point):在这种模式下,消息生产者将消息发送到特定的队列中,只有一个消费者可以消费该队列中的消息。这种模式通常用于实现任务分配和异步处理。
  • 发布/订阅模式(Pub/Sub, Publish/Subscribe):在这种模式下,消息生产者将消息发布到一个或多个主题(Topic)中,订阅了这些主题的消费者都可以接收到发布的消息。这种模式通常用于实现消息的分发和广播。

三、MQ的优缺点

优点

  1. 解耦
    • MQ允许系统组件之间的松散耦合。
    • 生产者只需将消息发送到队列,而无需知道谁来消费这些消息。
    • 消费者只需从队列中接收消息,而无需知道这些消息来自哪里。
    • 这种解耦降低了系统间的依赖,提高了系统的可维护性和可扩展性。
  2. 异步处理
    • MQ支持异步消息传递,生产者发送消息后可以继续执行其他任务,而无需等待消费者处理完毕。
    • 显著提高系统的响应速度和吞吐量,尤其是在处理耗时操作(如数据库操作、文件IO、网络请求等)时。
  3. 流量削峰
    • 在高并发场景下,MQ可以作为系统的缓冲层,暂存无法及时处理的消息,从而减轻系统的压力。
    • 当系统负载降低时,再逐步处理这些消息,以实现流量的平滑处理。
  4. 可靠性
    • 许多MQ系统支持消息的持久化存储,即使系统崩溃或重启,也能保证消息不丢失。
    • MQ还提供了消息确认机制,确保消息被正确消费。
  5. 灵活性和可扩展性
    • MQ支持多种消息传递模式和协议,可以灵活地适应不同的应用场景。
    • MQ系统通常具有良好的可扩展性,可以随着业务的发展而扩展。

缺点

  1. 系统复杂性增加
    • 引入MQ会增加系统的复杂性。
    • 开发者需要了解MQ的工作原理、配置和使用方法,以及如何处理消息丢失、重复消费等问题。
  2. 性能开销
    • MQ的引入会带来一定的性能开销,包括消息的序列化/反序列化、网络传输、消息存储等。这些开销在消息量较小时可能不明显,但在高并发场景下可能会对系统性能产生影响。
  3. 一致性问题
    • 在分布式系统中,使用MQ进行异步通信可能会导致数据一致性问题。
    • 特别是当消息传递失败或消费者处理失败时,需要额外的机制来保证数据的一致性。
  4. 运维成本
    • MQ系统的运维成本相对较高。
    • 需要定期监控MQ的性能和状态,及时发现并解决问题。
    • 需要对MQ进行定期维护和升级,以确保其稳定性和安全性。
  5. 学习曲线
    • 对于不熟悉MQ的开发者来说,学习和掌握MQ技术需要一定的时间和精力。特别是对于复杂的MQ系统(如Kafka、RabbitMQ等),其配置和使用方法可能相对复杂。

四、常见的MQ产品

1. RabbitMQ

  • 特点
    • 基于AMQP(高级消息队列协议)的开源消息代理软件。
    • 提供了灵活的路由和消息传递功能,支持多种消息传递模式。
    • 适用于多种编程语言,具有广泛的社区支持和丰富的插件生态。
    • 支持集群和镜像队列,确保高可用性和数据持久性。
  • 适用场景:适用于需要灵活路由、广泛语言支持及良好社区生态的项目,特别是在对实时性要求不是特别高的通用场景中表现良好。

2. Kafka

  • 特点
    • 分布式流处理平台,具有高吞吐量和低延迟的特点。
    • 支持消息的持久化存储和分区,保证数据的可靠性和顺序性。
    • 适用于大数据处理和流计算场景,如实时日志收集、流式数据处理等。
    • 分布式架构和水平扩展能力,支持大规模消息处理需求。
  • 适用场景:适合大数据处理、流计算场景,以及对吞吐量、持久化有极高要求且愿意投入资源进行运维的项目。

3. RocketMQ

  • 特点
    • 阿里巴巴开源的消息中间件,具有高性能和低延迟的特点。
    • 支持分布式事务消息,确保在分布式系统中的消息发送与业务操作要么全部成功,要么全部回滚。
    • 适用于金融、电商等对性能、事务处理要求严苛的场景。
    • 经历过双十一等极端场景考验,具有大规模生产环境验证。
  • 适用场景:尤其适合金融、电商等对性能、事务处理要求严苛,且愿意投入精力学习和维护的大型分布式系统。

4. ActiveMQ

  • 特点
    • 历史悠久的消息队列产品,社区成熟,稳定性良好。
    • 支持多种消息协议(JMS、AMQP、STOMP等),易于与其他系统集成。
    • 相较于其他MQ产品,ActiveMQ在资源消耗上较为轻量,适合小型项目或对资源敏感的场景。
  • 适用场景:适用于小型项目、资源有限或对消息队列功能需求较简单的场景。但需要注意的是,ActiveMQ的单机吞吐量相对较低,不适合大规模消息处理。

5. ZeroMQ

  • 特点
    • 高性能、低延迟的消息库,提供了多种消息传递模式。
    • 适用于需要高速、低延迟消息传递的场景。
    • 支持多种编程语言和平台,但相对于其他MQ产品,其社区支持和文档可能较为有限。

五、MQ的应用场景

1. 异步通信

  • 异步下单、支付:在电商系统中,用户下单或支付时,可以将订单或支付请求发送到MQ,由后台服务异步处理,从而提高系统响应速度和用户体验。
  • 异步日志处理:将系统日志发送到MQ,由专门的日志处理服务异步处理,避免日志处理对主业务的影响。

2. 分布式系统

  • 分布式任务调度:在分布式系统中,可以利用MQ进行任务的分发和调度,确保任务能够被正确执行。
  • 分布式事务处理:MQ可以作为分布式事务的中间件,通过消息的最终一致性来保证分布式事务的一致性。例如,在支付系统中,可以将支付请求和支付结果通过MQ进行传递,确保支付过程的可靠性和一致性。

3. 系统解耦

  • 模块间解耦:通过MQ将系统的不同模块解耦,使得模块之间可以独立进行开发、测试和部署,降低系统间的依赖和复杂度。
  • 日志收集、异常监控:利用MQ收集各个系统的日志和异常信息,由专门的监控服务进行处理和分析,提高系统的稳定性和可维护性。

4. 流量削峰

  • 秒杀、活动抢购:在高并发场景下,通过MQ将请求存储到队列中,由后台服务异步处理,从而削平流量峰值,避免系统崩溃或响应变慢。
  • 限流保护:通过MQ对请求进行限流保护,防止系统因请求过多而崩溃。

5. 消息通知

  • 订单状态变更通知:在电商系统中,当订单状态发生变化时,可以通过MQ将状态变更信息发送给用户或相关系统。
  • 短信验证码发送:在用户注册、登录等场景中,通过MQ将短信验证码发送给用户,提高系统的安全性和用户体验。

6. 数据同步

  • 缓存同步:在分布式缓存系统中,可以利用MQ将缓存更新信息同步到各个缓存节点,确保缓存数据的一致性。
  • 库存同步:在电商系统中,当商品库存发生变化时,可以通过MQ将库存更新信息同步到各个相关系统,确保库存数据的准确性。

7. 消息广播

  • 实时消息推送:在新闻、社交等应用中,可以利用MQ将实时消息推送给用户,提高用户粘性和活跃度。
  • 系统通知:在系统维护、升级等场景中,可以通过MQ将系统通知发送给相关人员或系统,确保信息的及时传递和处理。

相关文章:

【RabbitMQ】MQ相关概念

一、MQ的基本概念 定义:MQ全称为Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件。它允许应用程序通过读写队列中的消息来进行通信,而无需建立直接的连接。作用:主要用于分布式系统之间的通信&#x…...

【MySQL是怎样运行的 | 第二篇】MySQL三大日志文件

文章目录 2.MySQL三大日志文件2.1日志文件列表2.1.1 redo log2.1.2 bin log2.1.3 undo log 2.2redo log日志详讲2.3 binglog和redo log有什么区别?2.4一条更新语句的执行过程 2.MySQL三大日志文件 2.1日志文件列表 redo log:重做日志,记录了…...

视图、存储过程、触发器

一、视图 视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表,视图只能用来从查询,不能做增删改(虚拟的表) 1.创建视图 创建视图的语法: create view 视图名【view_xxx / v_xxx】 a…...

【学习笔记】解决Serial Communication Library编译问题

【学习笔记】解决编译 Serial Communication Library 时的 Catkin 依赖问题 Serial Communication Library 是一个用 C 编写的用于连接类似 rs-232 串口的跨平台库。它提供了一个现代的 C 接口,它的工作流程设计在外观和感觉上与 PySerial 相似,但串口速…...

在 Windows 环境下实现负载均衡:提升系统性能与可靠性的关键技术

Windows 环境下的负载均衡:提升系统性能与可靠性的关键技术 负载均衡(Load Balancing)是现代网络架构中不可或缺的一部分,通过将请求分配到多台服务器上来提高系统的性能和可靠性。本文将介绍在 Windows 环境下使用负载均衡的基本…...

【Linux】-----工具篇(自动化构建工具make/makefile)

目录 前言 一、是什么? 二、怎么样的? 三、原理及细节 图解代码 细节1:make工作规则 ①依赖文件存在 ②依赖文件不存在 ③依赖文件列表为空(特殊) .PHONY关键字 细节2:makefile识别程序需要重新编译? 四、…...

图的遍历:深度优先搜索(DFS)

引言 图遍历是指按照一定的顺序访问图中的每个顶点。遍历图的两种主要方法是深度优先搜索(Depth-First Search, DFS)和广度优先搜索(Breadth-First Search, BFS)。本文将详细介绍深度优先搜索的定义、算法及其实现。 深度优先搜…...

普元EOS学习笔记-某些版本的EOS提供的maven获取依赖失败的问题解决

前言 普元EOS的开发包中,提供了maven,因为EOS项目的某些依赖只能从普元官方仓库获取,因此,编译EOS项目必须使用EOS提供的maven。 maven拉取依赖失败 某些版本的EOS提供的maven在编译EOS项目的时候会出现拉取失败的现象。 [FATA…...

Pycharm + Pyside6

1. 使用 Qt designer 创建 UI 文件 2. 使用 UIC 工具生成 ui_.py 文件 3. 自定义类导入ui.py 文件的窗口类 4.自定义窗口继承UI窗体类 5. self.setupUi(self) from PySide6.QtWidgets import QApplication, QWidget, QComboBox, QVBoxLayout from ui_test import Ui_Formc…...

强化学习之价值迭代算法动态规划求解悬崖漫步环境(CliffWalking)最优策略及最优状态价值函数

class CliffWalkingEnv:def __init__(self,ncol12,nrow4):self.ncolncol#定义网格世界的列self.nrownrow#定义网格世界的行self.Pself.createP()#转移矩阵P[state][action][(p,next_state,reward,done)]包含下一个状态和奖励def createP(self):P[[[]for i in range(4)]for j in…...

javascript deriveKey和deriveBits()由主密钥派生出新的密钥进行加密

deriveKey 方法的完整示例,演示如何使用 HMAC 作为密钥派生函数(KDF)来从一个给定的秘密(如密码)派生出一个新的 AES 加密密钥。 //创建一个函数来生成随机盐function getRandomSalt(length){let arraynew Uint8Array…...

基于微信小程序的自习室选座系统/基于Java的自习室选座系统/自习室管理系统的设计与实现

获取源码联系方式请查看文章结尾🍅 摘要 自习室选座是学校针对用户必不可少的一个部分。在学校的整个过程中,学生担负着最重要的角色。为满足如今日益复杂的管理需求,各类微信小程序自习室选座也在不断改进。本课题所设计的小程序自习室选座系…...

echarts所遇到的问题,个人记录

TreeMap 矩形树图,label设置富文本之后,无法垂直居中 font-size 支持rem,其余不支持 font-size 支持 rem,但是其余的属性如height,width等不支持 echarts-for-react 绑定事件,会覆盖实例上绑定的 当给cha…...

Skyeye云智能制造企业版源代码全部开放

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台],适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…...

Springboot 整合Elasticsearch

1 java操作ES方式 1.1 操作ES 9300端口(TCP) 但开发中不在9300进行操作 ES集群节点通信使用的也是9300端口如果通过9300操作ES,需要与ES建立长连接 可通过引入spring-data-elasticsearch:transport-api.jar不在9300操作原因:1.springboot版本不同&…...

WeNet环境配置与aishell模型训练

WeNet环境配置与aishell模型训练 1环境配置 踩坑记录: 系统使用win11,我根据wenet官方文档,使用conda虚拟环境安装了cuda12.1,安装wenet依赖库,其中deepspeed报错,根据报错信息查询github,发现…...

【C++的剃刀】我不允许你还不会AVL树

​ 学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客 Hello,这里是kiki,今天继续更新C部分,我们继续来扩充我们的知识面,我希望能努力把抽象繁多的知识讲的生动又通俗易懂,今天要…...

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端,输入以下命令: yarn create vite 输入完成以后输入项目名称、选择开发框架,选择开发语言,如下图所示,即可完成项目创建。 注意事项: 1. Node版本必须符合要求&…...

Linux Vim教程:多文件编辑与窗口管理

目录 1. 多文件编辑基础 1.1 缓冲区管理 1.2 标签页管理 1.3 分屏管理 2. 多文件编辑的高级技巧 2.1 同时编辑多个文件 2.2 使用会话 2.3 使用寄存器 3. 窗口管理的实用技巧 3.1 窗口调整 3.2 窗口排列 3.3 快速切换 4. 使用插件增强多文件编辑与窗口管理 4.1 NE…...

C语言进阶 11.结构体

C语言进阶 11.结构体 文章目录 C语言进阶 11.结构体11.1. 枚举11.2. 结构类型11.3. 结构与函数11.4. 结构中的结构11.5. 类型定义11.6. 联合11.7. PAT11-0. 平面向量加法(10)11-1. 通讯录的录入与显示(10) 11.1. 枚举 常量符号化: 用符号而不是具体的数字表示程序中的数字 cons…...

Vue--解决error:0308010C:digital envelope routines::unsupported

原文网址:Vue--解决error:0308010C:digital envelope routines::unsupported_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决node.js在运行Vue项目时的报错:error:0308010C:digital envelope routines::unsupported。 问题描述 使用node.js运行Vu…...

go-kratos 学习笔记(6) 数据库gorm使用

数据库是项目的核心,数据库的链接数据是data层的操作,选择了比较简单好用的gorm作为数据库的工具;之前是PHP开发,各种框架都是orm的操作;gorm还是很相似的,使用起来比较顺手 go-kratos官网的实例是ent&…...

记录:vite打包报错 error during build: Error: Parse error @:1:1

vant从3升级到4后,本地运行没问题, 但是打包就会报如下错误:error during build: Error: Parse error :1:1 一直以为是vant的问题,各种升级,替换插件,发现没什么用, 网上搜索了下,…...

Python 消费Kafka手动提交 批量存入Elasticsearch

一、第三方包选择 pip install kafka,对比了kafka和pykafka,还是选择kafka,消费速度更快pip install elasticsearch7.12.0(ES版本) 二、创建es连接对象 from elasticsearch import Elasticsearch from elasticsearch.helpers import bulkc…...

oracle 基础知识表的主键

一、表的约束条件 •约束条件是施加在表的字段上的一组限制条件,它使得只有符合限制条件要求的数据才能输入表。 •保证了表中的数据的正确性 i.约束条件包括了:非空和唯一和核对,即not null 和unique 和check null的含义:不确定 3个人去捡苹…...

opencascade AIS_MouseGesture AIS_MultipleConnectedInteractive源码学习

AIS_MouseGesture //! 鼠标手势 - 同一时刻只能激活一个。 enum AIS_MouseGesture { AIS_MouseGesture_NONE, //!< 无激活手势 // AIS_MouseGesture_SelectRectangle, //!< 矩形选择&#xff1b; //! 按下按钮开始&#xff0c;移动鼠标定义矩形&…...

Unity Apple Vision Pro 开发:如何把 PolySpatial 和 Play To Device 的版本从 1.2.3 升级为 1.3.1

XR 开发社区&#xff1a; SpatialXR社区&#xff1a;完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 &#x1f4d5;教程说明 本教程将介绍如何把 Unity 的 PolySpatial 和 Play To Device 版本从 1.2.3 升级为 1.3.1。 &#x1f4d5;Play To Device 软件升级 ht…...

大数据时代,区块链是如何助力数据开放共享的?

在大数据时代&#xff0c;区块链技术以其独特的优势&#xff0c;为数据开放共享提供了强有力的支持。以下是区块链助力数据开放共享的几个主要方面&#xff1a; 1. 增强数据安全性与隐私保护 加密安全&#xff1a;区块链技术采用先进的加密算法&#xff0c;如国密非对称加密技…...

睿抗2024省赛----RC-u4 章鱼图的判断

题目 对于无向图 G(V,E)&#xff0c;我们将有且只有一个环的、大于 2 个顶点的无向连通图称之为章鱼图&#xff0c;因为其形状像是一个环&#xff08;身体&#xff09;带着若干个树&#xff08;触手&#xff09;&#xff0c;故得名。 给定一个无向图&#xff0c;请你判断是不…...

py2exe,一个神奇的 Python 库

在众多Python打包工具中&#xff0c;py2exe无疑是一款出色的选择。它能够将Python脚本转换成可在Windows平台上独立运行的可执行文件&#xff0c;极大地方便了程序的分发与部署。本文将深入探讨py2exe的特性和使用方法&#xff0c;让你在创建桌面应用程序时更加游刃有余。 安装…...

博途PLC网络连接不上

博途PLC网络连接不上其中的一个原因就是网线接触不好&#xff0c;各种原因都试了&#xff0c;任然连接不上&#xff0c;大家可以把网线拔下&#xff0c;重新插拔或者直接更换一根网线。 1、无线网络网段和PLC连接网段冲突 。。。。...

哪个邮箱最安全最好用啊

企业邮箱安全至关重要&#xff0c;需保护隐私、防财务损失、维护通信安全、避免纠纷&#xff0c;并维持业务连续性。哪个企业邮箱最安全好用呢&#xff1f;Zoho企业邮箱&#xff0c;采用加密技术、反垃圾邮件和病毒保护&#xff0c;支持多因素认证&#xff0c;确保数据安全合规…...

企业微信开发智能升级:AIGC技术赋能,打造高效沟通平台

文章目录 一、AIGC在企业微信开发中的核心价值1. 智能化客服体验2. 自动化工作流程3. 个性化内容推荐4. 深度数据分析与洞察 二、使用AIGC进行企业微信开发的实践路径1. 需求分析与场景定义2. 技术选型与平台搭建3. 模型训练与调优4. 接口对接与功能集成5. 测试与优化 《企业微…...

Apache Doris + Paimon 快速搭建指南|Lakehouse 使用手册(二)

湖仓一体&#xff08;Data Lakehouse&#xff09;融合了数据仓库的高性能、实时性以及数据湖的低成本、灵活性等优势&#xff0c;帮助用户更加便捷地满足各种数据处理分析的需求。在过去多个版本中&#xff0c;Apache Doris 持续加深与数据湖的融合&#xff0c;已演进出一套成熟…...

Inno setup pascal编码下如何美化安装界面支持带边框,圆角,透明阴影窗口

inno setup自带的安装界面太老套了&#xff0c;如何实现类似网易&#xff0c;微信那种带界面的安装&#xff1f;一般有两种思路&#xff1a;提供一个单独的下载器&#xff0c;然后通过下载器将你用innosetup 打包后的软件下载下来&#xff0c;然后&#xff0c;静默安装这个包&a…...

SQL语句(以MySQL为例)——单表、多表查询

笛卡尔积&#xff08;或交叉连接&#xff09;: 笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y&#xff0c;那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能组合&#xff0c;也就是第一个对象来自于 X&#xff0c;第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中…...

C++第二十八弹---进一步理解模板:特化和分离编译

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1. 非类型模板参数 2. 模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 2.3.3 类模板特化应用示例 3. …...

正则表达式的独占模式,懒惰模式等有那些区别

正则表达式的独占模式、懒惰模式&#xff08;也称为非贪婪模式&#xff09;和贪婪模式&#xff08;默认模式&#xff09;在匹配行为上存在显著的区别。以下是这三种模式的详细解释和区别&#xff1a; 1、贪婪模式&#xff08;Greedy&#xff09;&#xff1a; 默认情况下&…...

【INTEL(ALTERA)】Quartus® Prime Pro Edition 软件 v24.2 中,哪些 Agilex™ 5 IP 功能的硬件验证有限?

目录 说明 解决方法 说明 如下表所示&#xff0c;Quartus Prime 专业版软件 24.2 版为 Agilex™ 5 IP 或功能提供有限的硬件支持。此外&#xff0c;设备的设备型号、比特流和固件尚未最终确定。 影响 Agilex™ 5 特定功能的已知问题可参阅 Agilex 5 知识库文章搜索。 解决…...

Lua编程

文章目录 概述lua数据类型元表注意 闭包表现 实现 lua/c 接口编程skynet中调用层次虚拟栈C闭包注册表userdatalightuserdata 小结 概述 这次是skynet&#xff0c;需要一些lua/c相关的。写一篇博客&#xff0c;记录下。希望有所收获。 lua数据类型 boolean , number , string…...

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错&#xff0c;不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响&#xff0c;重新下了patch&…...

如何改桥接模式

桥接模式主要是解决 路由功能的 因为NAT多层 主要是网络连接数太多时 然后路由器要好 不然光猫 比差路由要强的 光猫 请注意&#xff0c;对光猫的任何设置进行修改前&#xff0c;请一定要备份光猫的配置文件&#xff0c;并在每次修改前都截图保存原始设置信息&#xff01;不要…...

江科大/江协科技 STM32学习笔记P13

文章目录 TIM定时中断1、TIM简介计数器PSC预分频器ARR自动重装寄存器 2、定时器类型基本定时器主模式触发DAC 通用定时器高级定时器 3、定时器原理定时中断基本结构预分频器时序计数器时序RCC时钟树 TIM定时中断 1、TIM简介 定时器的基准时钟一般都是主频72MHz&#xff0c;如果…...

loadrunner录制解决提示安全问题

点击页面任意位置&#xff0c;输入&#xff1a; thisisunsafe...

为什么要读写分离?如何实现业务系统读写分离?

信息化水平提升&#xff0c;很多企业已经接受并高频使用多样的业务系统进行日常作业&#xff0c;而在不断的使用过程中&#xff0c;部分行业和业务&#xff0c;如&#xff1a;直播电商、基础制造、公关传媒等&#xff0c;由于自身特点的原因&#xff0c;常常积累了海量的数据。…...

C#基础——类、构造函数和静态成员

类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员&#xff0c;对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性&#xff1a;public&#xff08;公有的&…...

hadoop学习(二)

一.MapReduce 1.1定义&#xff1a;是一个分布式运算程序的编程框架 1.2核心功能&#xff1a;将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 1.3优点 1&#xff09;易于编程 它简单的实现一些接口&#…...

WXZ196微机消谐装置的运行方式了解一下

WXZ196微机消谐装置是一种用于抑制铁磁谐振的设备&#xff0c;可以在电力系统中快速消除各种频率的铁磁谐振&#xff0c;同时可以区分过电压、铁磁谐振以及单相接地&#xff0c;并给出相应的报警信号。该装置采用高速增强型单片机作为核心元件&#xff0c;对PT开口三角电压进行…...

单链表的建立

一.前言 单链表的建立一共有两种方法&#xff0c;一种是头插法&#xff0c;将元素插入在链表的头部&#xff0c;也叫前插法。另外一种则就是尾插法&#xff0c;将元素插入在链表尾部&#xff0c;也叫后插法。 二. 头插法 首先从一个空表开始&#xff0c;重复读入数据&#xff1…...

Shell脚本编程学习

IPv4和IPv6有什么区别&#xff1f; - 知乎 (zhihu.com) Shell 是一个命令解释权&#xff0c;它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序&#xff0c;用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。 可以查看当前系统的进程 ps -ef...