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

kafka的listeners和advertised.listeners,配置内外网分流

总结:
listeners 指明 kafka 当前节点监听本机的哪个网卡
advertised.listeners 指明客户端通过哪个 ip 可以访问到当前节点

内网和外网并不必须是是我们通常说的公司内部网络公网,只要是两块网卡都可以,不管是这两块网卡是公网、内网、甚至是k8s的虚拟网络
两个网段的主要目的是实现分流,一个负责节点间通信,一个负责对外收发消息。

listeners:

kafka监听的网卡的ip,假设你机器上有两张网卡,内网192.168.0.213和外网101.89.163.1
如下配置

listeners=PLAINTEXT://192.168.0.213:9092
#或者
listeners=PLAINTEXT://:9092

那么kafka只监听内网网卡,即只接收内网网卡的数据,如果如下配置:

listeners=PLAINTEXT://101.89.163.1:9092

那么kafka只监听外网网卡,即只接收外网网卡的数据。
当然ip可以配置成0.0.0.0,监听所有网卡。
说明:
listeners 解决的是 kafka 监听来自于哪个网卡的请求。

advertised.listeners

一般配置

listeners=PLAINTEXT://192.168.0.213:9092
advertised.listeners=PLAINTEXT://101.89.163.1:9092

配置过 zookeeper 的都知道, zookeeper 的配置文件中写明了所有 zookeeper 节点的 ip 地址,以便启动后节点之间的互相通信。我们观察 kafka 的配置文件 server.properties,会发现里面并没有记录其他 kafka 节点的地址,即各个节点都不知道其他节点的 ip 地址。那么 kafka 集群的各个节点之间是怎么通信的呢?
kafka 节点启动后,会向 zookeeper 注册自己,同时告诉 zookeeper 自身的通信地址,这个地址就是配置文件中的 advertised.listeners,如果没有配置 advertised.listeners,就会使用listeners。同时从 zookeeper 中获取兄弟节点的这个地址,以便与兄弟节点通信。即 kafka 节点是从 zookeeper 获取的其他节点的通信地址。
我们使用客户端以一个 ip 地址首次连接 kafka 节点后,节点返回给客户端的 kafka 集群地址就是从 zookeeper 中获得的这些地址,也就是各个节点配置的 advertised.listeners,包括当前连接的节点。所以可能客户端后续访问当前节点的 ip 地址有可能和首次连接的 ip 地址并不一样。

只需要内网访问kafka

只配置 listeners 并且使用内网 ip

listeners=PLAINTEXT://192.168.0.213:9092
#或者
listeners=PLAINTEXT://:9092

客户端访问 kafka 节点,以及与其他节点通信都用这个 ip 地址。

需要外网访问

如果机器是通过转发或者映射搞出来的外网ip(例如你访问腾讯新闻某个页面使用的 ip,这个 ip 和实际的网卡并不在为你提供首页内容的那台机器上),此时kafka无法监听这个外网ip,启动就会报错。
需要配置一下 advertised.listeners,例如:

listeners=PLAINTEXT://192.168.0.213:9092
advertised.listeners=PLAINTEXT://101.89.163.1:9092

此时 kafka 客户端访问 kafka 集群的一个完整流程是:

  1. 客户端访问 101.89.163.1:9092,该请求被发送到 kafka 节点宿主机的内网地址 192.168.0.213:9092 上(也可以是其他 kafka 节点,效果是一样的),第一次请求成功,此次请求申请获得 kafka 集群的所有节点的地址。
  2. kafka 从 zookeeper 拿到自己和其他兄弟节点注册在 zookeeperadvertised.listeners,作为 kafka 集群各个节点的的服务 ip 返回给客户端。
  3. 客户端拿这些返回的服务 ip 访问kafka集群,该请求从 实际拥有该 ip 的机器被转发到被具体 kafka 节点所在的内网ip,访问到了 kafka 节点

为什么客户端需要在第一次请求中获取 kafka 各个节点的服务 ip

因为你可以在启动客户端时只配置一个 kafka 节点的地址而不是列出所有节点(这样是不推荐的),但是客户端必须具有访问集群中的每一个节点的能力(收消息、发消息都可能面向所有节点)。
对于 2.2 的情况,如果去掉
bash advertised.listeners=PLAINTEXT://101.89.163.1:9092

你会发现虽然你在启动 kafka 客户端时配置的访问地址是101.89.163.1:9092,但是 kafka 客户端启动时报错:

Connection to node -1[192.168.0.213:9092] could not be established. Broker may not be available.

为什么明明配置的是101.89.163.1:9092启动时连接的是192.168.0.213?这就是因为不配置advertised.listeners 则使用listeners 代替并注册到zookeeper 中,客户端拿到的 kafka 节点 ip 就是listeners配置的内网 ip 192.168.0.213

内外网分流

配置1(针对没有实际的外网网卡):

istener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://192.168.0.213:19092
advertised.listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://101.89.163.9:19092
inter.broker.listener.name=INTERNAL

配置2(针对有实际的外网网卡):

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://101.89.163.9:19092
advertised.listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://101.89.163.9:19092
inter.broker.listener.name=INTERNAL

这两配置的区别是只有 listenersEXTERNAL 使用的 ip 不一样,一个使用内网 ip ,一个使用外网 ip
对内网 INTERNAL 的配置就不说了,主要用于节点间通信,无论 listeners 还是 advertised.listeners 都配置成内网 ip,自然所有请求都走内网;主要是外网 EXTERNAL 配置:

  1. 如果机器的外网 ip 是映射来的,listeners 的 EXTERNAL 使用内网ip,客户端拿到的是 advertised.listeners 配置的外网 ip,对于该外网 ip 的请求会被转发到对应的内网 ip,即访问到了对应的 kafka 节点,请求完成闭环。不要问怎么转发的,既然机器被映射了外网 ip,自然能够转发
  2. 如果你的kafka宿主机有外网网卡,listenersEXTERNAL 使用用外网ip,客户端拿到的是 advertised.listeners 配置的外网 ip,直接就访问到了对应的 kafka 节点。

相关文章:

kafka的listeners和advertised.listeners,配置内外网分流

总结: listeners 指明 kafka 当前节点监听本机的哪个网卡 advertised.listeners 指明客户端通过哪个 ip 可以访问到当前节点 内网和外网并不必须是是我们通常说的公司内部网络和公网,只要是两块网卡都可以,不管是这两块网卡是公网、内网、甚至…...

Mac——Docker desktop安装与使用教程

摘要 本文是一篇关于Mac系统下Docker Desktop安装与使用教程的博文。首先介绍连接WiFi网络,然后详细阐述了如何在Mac上安装Docker,包括下载地址以及不同芯片版本的选择。接着讲解了如何下载基础镜像和指定版本镜像,旨在帮助用户在Mac上高效使…...

Redis十大数据类型详解

Redis(一) 十大数据类型 redis字符串(String) string是redis最基本的类型,一个key对应一个value string类型是二进制安全的,意思是redis的string可以包含任何数据。例如说是jpg图片或者序列化对象 一个re…...

.net core 中使用AsyncLocal传递变量

官网 https://github.com/dotnet/runtime/blob/16b6369b7509e58c35431f05681a9f9e5d10afaa/src/libraries/System.Private.CoreLib/src/System/Threading/AsyncLocal.cs#L45 AsyncLocal是一个在.NET中用来在同步任务和异步任务中保持全局变量的工具类。它允许你在不同线程的同…...

C#Halcon视觉流程框架个人封装流程心得

一,实现效果 1,初始界面 2,加载流程 3,点击流程列表“加载2D图像" 4,设置图像预处理参数与画线找线 5,执行流程 6,折叠工具箱 7,折叠操作区域 二,实现流程 1&…...

web第一次作业

系统登录代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>第一次作业</title…...

Kylin Linux V10 替换安装源,并在服务器上启用 EPEL 仓库

查看系统版本&#xff1a; cat /etc/os-releaseNAME"Kylin Linux Advanced Server" VERSION"V10 (Lance)" ID"kylin" VERSION_ID"V10" PRETTY_NAME"Kylin Linux Advanced Server V10 (Lance)" ANSI_COLOR"0;31"u…...

备战蓝桥杯:树的存储与遍历(dfs和bfs)

树的概念 树的逻辑结构是树形结构&#xff0c;和我们之前的线性结构又不太一样了&#xff0c;是一种一对多的关系 树的结点分为根节点&#xff0c;叶子结点&#xff08;没有分支的结点&#xff09; 以及分支结点 从上往下看&#xff0c;每个结点都有0个或多个后继 从下往上…...

[Deep Learning] Anaconda+CUDA+CuDNN+Pytorch(GPU)环境配置-2025

文章目录 [Deep Learning] AnacondaCUDACuDNNPytorch(GPU)环境配置-20250. 引子1. 安装Anaconda1.1 安装包下载&#xff1a;1.2 启用安装包安装1.3 配置(系统)环境变量1.4 验证Anaconda是否安装完毕1.5 Anaconda换源 2. 安装CUDACuDNN2.1 判断本机的CUDA版本2.2 下载适合自己CU…...

计算机的错误计算(二百一十二)

摘要 利用两个大模型计算 实验表明&#xff0c;两个大模型均进行了中肯的分析。另外&#xff0c;其中一个大模型给出了 Python代码&#xff0c;运行后&#xff0c;结果中有7位错误数字&#xff1b;而一个大模型进行加减运算时出错。 例1. 计算 下面是与一个大模型的对话…...

Inxpect毫米波安全雷达:精准检测与动态保护,工业自动化可靠选择

Inxpect毫米波安全雷达具备“精准检测、动态区域保护、环境适应性”三大核心功能。在工业自动化和机器人系统里&#xff0c;这些功能发挥着重要作用,有助于提升安全性与效率。Inxpect雷达运用毫米波技术&#xff0c;在诸如存在灰尘、烟雾或碎屑等复杂环境中&#xff0c;也能保持…...

springboot房屋租赁管理系统

Spring Boot房屋租赁管理系统是一种基于Spring Boot框架构建的&#xff0c;旨在解决传统租房市场中房源信息更新不及时、虚假信息泛滥、交易流程繁琐等问题的信息化解决方案。 一、系统背景与目的 随着城市化进程的加快和人口流动性的增强&#xff0c;租房市场需求急剧增长。…...

如何使用wireshark 解密TLS-SSL报文

目录 前言 原理 操作 前言 现在网站都是https 或者 很多站点都支持 http2。这些站点为了保证数据的安全都通过TLS/SSL 加密过&#xff0c;用wireshark 并不能很好的去解析报文&#xff0c;我们就需要用wireshark去解密这些报文。我主要讲解下mac 在 chrome 怎么配置的&…...

Gensim字典和语料库

自然语言处理(NLP)是计算机科学中涉及语言数据处理的核心领域之一,应用广泛,包括文本分类、情感分析、机器翻译、主题建模等任务。在处理海量文本时,如何将非结构化的语言数据转化为机器能够理解的结构化数据,是解决这些任务的关键。 Gensim 是一个用于处理和分析文本数…...

RK3588-NPU pytorch-image-models 模型编译测试

RK3588-NPU pytorch-image-models 模型编译测试 一.背景二.操作步骤1.下载依赖2.创建容器3.安装依赖4.创建脚本A.生成模型名列表B.生成ONNX模型C.生成RKNN模型D.批量测试脚本 一.背景 测试RK3588-NPU对https://github.com/huggingface/pytorch-image-models.git中模型的支持程…...

Doris 导入慢该如何排查及优化?

在使用 Apache Doris 进行数据导入时&#xff0c;经常会遇到导入性能不理想的情况。今天我们就来深入分析这些问题的原因及其解决方案&#xff01; Stream Load 导入慢 Stream Load 支持通过 HTTP 协议将本地文件或数据流导入到 Doris 中的一种方式&#xff0c;其速度还是相当…...

iOS - 关联对象的实现

根据源码总结一下关联对象(Associated Objects)的实现&#xff1a; 1. 关联对象的基本结构 // 对象的 isa 结构中包含关联对象标记 union isa_t {struct {uintptr_t nonpointer : 1; // 是否使用优化的 isauintptr_t has_assoc : 1; // 是否有关联对象// ...其他位…...

AudioGPT全新的 音频内容理解与生成系统

AudioGPT全新的 音频内容理解与生成系统 ChatGPT、GPT-4等大型语言模型 (LLM) 在语言理解、生成、交互和推理方面表现出的非凡能力,引起了学界和业界的极大关注,也让人们看到了LLM在构建通用人工智能 (AGI) 系统方面的潜力。 现有的GPT模型具有极高的语言生成能力,是目前最…...

【maptalks】加载SVG和GIF

加载SVG和GIF 一、加载SVG方法一&#xff1a;直接载入SVG文件&#xff0c;类似载入图片方法二&#xff1a;载入SVG路径 二、加载GIFVUEmaptalks实现GIF可拖拽点VUEmaptalks实现GIF跟随线条动画 一、加载SVG 方法一&#xff1a;直接载入SVG文件&#xff0c;类似载入图片 缺点&…...

【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页

【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页 一、问题背景&#xff1a; 如今&#xff0c;大家都离不开各种手机应用。随着鸿蒙系统用户越来越多&#xff0c;大家都希望能在鸿蒙设备上快速找到想用的 APP。华为应用市场里有海量的 APP&#xff0c;但之前从鸿蒙设备进…...

《leetcode-runner》【图解】如何手搓一个debug调试器——调试程序【JDI开发】【万字详解】

前文&#xff1a; 《leetcode-runner》如何手搓一个debug调试器——引言 《leetcode-runner》如何手搓一个debug调试器——架构 《leetcode-runner》如何手搓一个debug调试器——指令系统 本文主要聚焦于如何编写调试程序 背景 在leetcode算法背景下&#xff0c;用户只编写了…...

【高阶数据结构】线段树加乘(维护序列)详细解释乘与加懒标记

文章目录 1.题目[AHOI2009] 维护序列 2.懒标记处理先加后乘的形式1. 先加后乘的操作 先乘后加的形式2. 先乘后加的操作**乘法操作****加法操作** 懒标记的下传 3.代码 1.题目 题目来源:https://www.luogu.com.cn/problem/P2023 [AHOI2009] 维护序列 题目背景 老师交给小可可…...

ElasticSearch常见知识点

1、什么是ElasticSearch&#xff1f; Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎&#xff0c;每个字段都被索引并可被搜索&#xff0c;可以快速存储、搜索、分析海量的数据。 2、什么是倒排索引&#xff1f; 正常的索引是比如二叉树。倒排索引是用内容…...

ARM与x86:架构对比及其应用

典型的服务器架构的x86采用模块化方法&#xff0c;基于带有可更换组件的主板。CPU和其他组件&#xff08;如显卡和GPU、内存控制器、存储或处理核心&#xff09;针对特定功能进行了优化&#xff0c;可以轻松更换或扩展。然而&#xff0c;这种便利是有代价的&#xff1b;这些硬件…...

macos 搭建 ragflow 开发环境

ragflow 是一个很方便的本地 RAG 库。本文主要记录一下在本机的部署过程 1、总体架构说明 开发环境&#xff1a;macbook pro&#xff08;m1&#xff09;&#xff0c;16G内存 512G固态 因本机的内存和硬盘比较可怜&#xff0c;所以在服务器上部署基础 docker 包&#xff0c;…...

CVPR 2024 人体姿态估计总汇(3D人体、手语翻译和人体网格恢复/重建等)

1、Human Pose Estimation(人体姿态估计) CLOAF: CoLlisiOn-Aware Human FlowMeta-Point Learning and Refining for Category-Agnostic Pose EstimationSurMo: Surface-based 4D Motion Modeling for Dynamic Human Rendering ⭐codeGALA: Generating Animatable Layered Ass…...

docker 安装mongodb

1、先获取mongodb镜像 docker pull mongo:4.2 2、镜像拉取完成后&#xff0c;运行mongodb容器 docker run \ -d \ --name mongo \ --restartalways \ --privilegedtrue \ -p 27017:27017 \ -v /home//mongodb/data:/data/db \ mongo:4.2 --auth 3、mongodb服务配置 如上图&…...

82_Redis缓存雪崩击穿穿透问题

在实际业务应用中,Redis常常与诸如MySQL这类关系型数据库协同工作,旨在缓解后端数据库的负担。它扮演了一个高效缓存的角色,特别是针对那些频繁被访问的热点数据。当用户发起查询时,系统首先尝试从Redis中获取这些数据。由于Redis提供了极快的访问速度,如果数据存在于Redi…...

统计学习算法——逻辑斯谛回归

内容来自B站Up主&#xff1a;动画讲编程https://www.bilibili.com/video/BV1CR4y1L7RC、风中摇曳的小萝卜https://www.bilibili.com/video/BV17r4y137bW&#xff0c;仅为个人学习所用。 极大似然估计 几率、概率与似然 几率是指某个事件发生的可能性与不发生的可能性之比&am…...

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处&#xff1a;动态切换算法或行为场景&#xff1a;实现同一功能用到不同的算法时和简单工厂对比&#xff1a;简单工厂是通过参数创建对象&#xff0c;调用同一个方法&#xff08;实现细节不同&#xff09;&#xff1b;策略模式是上下文切换对象&#xff0c;调用…...

C51交通控制系统的设计与实现

实验要求&#xff1a; 本题目拟设计一个工作在十字路口的交通信号灯控制系统&#xff0c;设东西方向为主干道A&#xff0c;南北方向为辅助干道B。要求&#xff1a;&#xff08;1&#xff09;用发光二极管模拟交通灯信号&#xff1b;&#xff08;2&#xff09;灵活控制主、辅干…...

css 实现自定义虚线

需求&#xff1a; ui 画的图是虚线&#xff0c;但是虚线很宽正常的border 参数无法做到 进程&#xff1a; 尝试使用 border&#xff1a;1px dashed 发现使用这个虽然是虚线但是很短密密麻麻的 这并不是我们想要的那就只能换方案 第一个最简单&#xff0c;让ui 画一个图然…...

网络协议基础--协议分层

一.协议概述 1.TCP/IP 传输协议概述 TCP/IP 传输协议&#xff0c;即传输控制 / 网络协议&#xff0c;也被称作网络通讯协议。它是网络中使用的最基本通信协议&#xff0c;对互联网中各部分进行通信的标准和方法予以规定。通常所说的 TCP/IP 协议并非仅指 TCP 和 IP 两个协议&a…...

iOS - TLS(线程本地存储)

从源码中&#xff0c;详细总结 TLS (Thread Local Storage) 的实现&#xff1a; 1. TLS 基本结构 // TLS 的基本结构 struct tls_data {pthread_key_t key; // 线程本地存储的键void (*destructor)(void *); // 清理函数 };// 自动释放池的 TLS class Autorelease…...

主链和Layer2之间资产转移

主链和Layer2之间资产转移 主链和Layer2之间资产转移是实现Layer2技术的关键环节,以下是资产转移的流程、流行解决方案及原理: 资产从主链转移到Layer2 用户在主链上发起一笔交易,将资产发送到一个特定的智能合约地址,这个合约是主链与Layer2之间的桥梁。智能合约会锁定用…...

深度学习-算法优化与宇宙能量梯度分布

在当今迅速发展的科技世界中&#xff0c;算法优化和能量分布问题已成为研究的热点&#xff0c;尤其是在人工智能、机器学习和物理科学领域。算法优化通常涉及提高计算效率和降低资源消耗&#xff0c;而宇宙能量梯度分布则涉及宇宙中能量的分布和流动方式。两者看似是完全不同的…...

《Java核心技术II》实现服务器

实现服务器 这节实现简单服务器&#xff0c;可以向客户端发送信息。 服务器套接字 ServerSocket用于建立套接字 var s new ServerSocket(8189); 建立一个监听端口8189的服务器。 Socket incoming s.accept(); 此对象可以得到输入流和输出流。 InputStream inStream incomin…...

登上Nature!交叉注意力机制 发顶会流量密码!

在深度学习领域&#xff0c;交叉注意力融合技术正迅速崛起&#xff0c;并成为处理多模态数据的关键工具。这一技术通过有效地整合来自不同模态的信息&#xff0c;使得模型能够更好地理解和推理复杂的数据关系。 随着多模态数据的日益普及&#xff0c;如图像、文本和声音等&…...

Windows 正确配置android adb调试的方法

下载适用于 Windows 的 SDK Platform-Tools https://developer.android.google.cn/tools/releases/platform-tools?hlzh-cn 设置系统变量&#xff0c;路径为platform-tools文件夹的绝对路径 点击Path添加环境变量 %adb%打开终端输入adb shell 这就成功了&#xff01;...

leetcode刷题记录(五十六)——53. 最大子数组和

&#xff08;一&#xff09;问题描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,…...

SQL BETWEEN 操作符

SQL BETWEEN 操作符 SQL中的BETWEEN操作符用于选取介于两个值之间的数据范围。这些值可以是数字、文本或日期。BETWEEN操作符是SQL中非常实用的一个功能&#xff0c;它可以帮助我们快速地筛选出符合特定条件的数据记录。 BETWEEN操作符的基本用法 BETWEEN操作符的基本语法如…...

分布式 IO 模块:引领立体车库迈向智能化新时代

在城市空间愈发珍贵的当下&#xff0c;立体车库作为高效利用空间的停车解决方案&#xff0c;正日益普及。而明达技术MR30分布式 IO 模块的应用&#xff0c;如同为立体车库注入了智能 “芯” 动力&#xff0c;让停车变得更加便捷、高效、智能。 MR30分布式 IO 模块&#xff0c;作…...

《C++11》深入剖析正则表达式库:解锁文本处理的高效之道

在现代编程领域&#xff0c;文本处理是一项不可或缺的任务&#xff0c;而正则表达式无疑是这一领域的强大利器。C11标准库的引入&#xff0c;为C开发者带来了正则表达式库&#xff0c;极大地丰富了C在文本处理方面的能力。本文将全方位、多角度地深入探讨C11正则表达式库&#…...

Mongodb相关内容

Mongodb相关内容 1、Windows平台安装2、Linux平台安装3、基本常用命令文档更新删除文档分页查询索引 pymongo操作 客户端下载&#xff1a;https://download.csdn.net/download/guoqingru0311/90273435 1、Windows平台安装 方式一&#xff1a; 方式2&#xff1a; 方式3&#…...

United States of America三种表示

"United States of America", "United States", 和 "America" 都表示美国&#xff0c;但它们的使用场景和背景略有不同。以下是关于为什么这些名称可以合在一起表示美国的详细解释&#xff1a; 1. "United States of America" 全称&a…...

【Redis】Redis特性及其应用场景

目录 Redis特性 在内存中存储数据 可编程性 可扩展性 持久化 集群 高可用 补充特性 Redis的应用场景 数据库 缓存 会话存储 消息队列中间件 Redis特性 Redis是一个在内存中存储数据的中间件&#xff0c;用于作为数据库、数据缓存。Redis在分布式系统中有着较…...

Vue 使用blob下载文件,打开文件,文件是损毁的

文章目录 问题分析解决 问题 如图所示&#xff0c;在进行图片下载时下载的文件显示图片已被损 分析 代码如下&#xff1a; import axios from axios; async function downloadImage1(link, name) {try {const response await axios.get(link, {responseType: blob, // 设置响…...

Android 通过systrace如何快速找到app的刷新率

1. 如何抓取systrace&#xff1a; 方法一 andrdoid11以及以上的android版本都支持使用perfetto的方式抓取systrace&#xff0c;简单好用。 adb shell perfetto --buffer 512mb --time 10s --out /data/misc/perfetto-traces/perfetto_trace gfx input view wm am hal res dalv…...

vulnhub靶场【Raven系列】之2 ,对于mysql udf提权的复习

前言 靶机&#xff1a;Raven-2&#xff0c;IP地址为192.168.10.9 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用虚拟机&#xff0c;网卡为桥接模式 文章所用靶机来自vulnhub&#xff0c;可通过官网下载&#xff0c;或者通过链接:https://pan.quark.cn/s/a65…...

【单片机开发 - STM32(H7)】启动流程、方式、烧录方式详解

如侵权&#xff0c;联系删&#xff0c;个人总结学习用 参考资料&#xff1a;&#xff08;最末尾有我的原生笔记&#xff0c;那个格式规范点&#xff09; 安富莱 ARM汇编伪指令详解-CSDN博客 【STM32】STM32内存映射以及启动过程&#xff08;超详细过程&#xff09;-CSDN博客…...