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

Havenask 分布式索引构建服务 --Build Service

Havenask 是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了 Havenask 分布式索引构建服务——Build Service,主打稳定、快速、易管理,是在线系统提升竞争力的一大利器。

一、Havenask 介绍

Havenask 是阿里巴巴广泛使用的自研大规模分布式检索系统,是过去十多年阿里在电商领域积累下来的核心竞争力产品,广泛应用在搜推广和大数据检索等典型场景,在 2022 年云栖大会-云计算加速开源创新论坛上完成开源首发,同时作为阿里云开放搜索 OpenSearch 底层搜索引擎,OpenSearch 自 2014 年商业化,目前已有千余家外部客户。

下图展示了 Havenask 中一个完整的搜索服务:在线系统、索引系统、管控系统、扩展插件,且包括了查询流、数据流、控制流。其中,索引系统负责索引数据生成的过程,还包含有文档处理与本文的主角索引构建服务 Build Service。索引构建分为三个步骤,对数据进行前置处理(例如分词、向量计算等)、产出索引、合并索引文件的处理。

Havenask 支持千亿级别数据实时检索、百万 QPS 查询,百万 TPS 高时效性写入保障,毫秒级查询延迟和数据更新,并具有良好的分布式架构、极致的性能优化,能够实现比现有技术方案更低的成本,普惠更多的开发者和企业。

二、Build Service 简介

Build Service 是一个分布式索引构建服务,用于 Havenask 中的全量表的索引构建。它可以对接本地存储、HDFS 等多种数据源,快速的将原始数据构建成全量索引,并以流式工作模式进行增量索引构建。Build Service 是 Havenask 读写分离架构的重要组成部分,独立的索引构建服务使 Havenask 具有下面优势:

在线系统更加稳定:将索引构建从在线系统分离,避免了索引构建对在线系统的影响,使在线系统更加稳定。

索引构建更快:特有的全量流程,使全量数据导入更快;独立的资源控制,进一步提升索引构建速度。

多版本索引管理:多版本独立的构建流程管理,使索引重建更方便,更安全。

三、Build Service 架构

Build Service 架构图

上图是 Build Service 的架构,在 Build Service 中主要有下面几个角色:

BS Admin:BS Admin 负责整个集群的任务调度和资源管理。BS Admin 提供丰富的接口进行索引构建任务的启停,资源的调整等,BS Admin 接收到这些请求之后会进行任务的调度,并配合调度系统,调度任务的执行,并维护任务的状态。

Processor:Processor 从数据源中拉取数据进行处理,Processor 可以支持多种数据源,比如 HDFS、OSS 等分布式文件系统,也可以对接 Swift 消息中间件处理实时数据。在 Processor 中主要是对数据进行分词、简单的数据转换等处理,开发者可以通过定制数据源 reader 插件和数据处理 DocumentProcessor 插件来扩展支持不同的数据源和数据处理逻辑。

Builder:Builder 负责索引的构建,它将经过 Processor 处理的数据按照 Schema 的配置构建成倒排、正排、摘要索引。Builder 与 Processor 的数据交互是通过 Swift 消息中间件来实现的,即 Processor 将处理之后的数据写到 Swift,Build 从 Swift 中读取这些数据进行索引构建。

Merger:Merger 负责索引的定期整理,定期索引整理使索引文件更加紧凑,可以降低在线集群索引加载的内存开销,提升检索性能。索引整理时会清理已经删除的数据,将小的索引文件合并成大的索引文件,也可以按照配置在整理时根据某个字段进行离线排序,这样可以进一步提升检索性能。

在一个 Build Service 服务中可以有一个或者多个 BS Admin,它们通过 ZK 进行 leader 选举,只有 leader 才会管理整个 Build Service 服务,其他 Admin 作为 fllower,使服务更加稳定。一个 Build Service 服务可以同时管理多个表或者同一个表的不同版本的索引构建任务,每个任务都是相互隔离的,互不影响。每个索引构建任务都有各自的 Processor、Builder、Merger 节点进行数据的处理,索引的构建。每个索引构建任务可以独立进行资源控制,比如调整 Processor 节点的个数,Builder 和 Meger 的并发度,以及这些节点的 CPU 和内存等。

对于 Processor、Builer 和 Meger 节点,它们只有分片(Shard)的概念,没有备份的概念。比如对于 Processor,每个分片处理不同的数据,一个分片只会启动一个节点,如果某些原因启动了多个节点,多个节点之间通过 ZK 进行 leader 选举,只有 leader 节点才会存活并工作,非 leader 节点的进程会自动退出。Builder 和 Merger 的情况与 Processor 类似,唯一不同的是分片数是在创建表时就确定的,它们只能基于分片数据调节并发度,因此 Builder 和 Meger 节点真实启动的个数是分片数乘以并发度。

四、索引构建流程

索引构建流程示意图

Build Service 的索引构建分为两个阶段:全量索引构建和增量索引构建。每个索引构建任务都会先进行全量索引构建,全量结束之后会自动切换到增量索引构建阶段,增量索引构建任务会一直执行,直至这次索引构建任务停止。全量索引构建任务会首先从分布式文件系统读取原始数据构建成索引(如果没有配置,这步会跳过),全量文件处理完成之后,会继续从 Swift 中读取数据继续构建全量索引。这样等全量流程结束之后,全量索引中的数据已经通过消费 Swift 追到距离当前比较靠近的时间了,索引切上线之后不会出现较长时间的时效性延迟。

无论是全量索引构建还是增量索引构建,它们的索引构建流程是类似的。首先 Processor 节点会从数据源中(包括 Swift)读取原始数据,然后对数据进行分词或者其他处理,处理之后的数据会转发到 Swift 的中。Builder 和 Merger 的任务是交替执行的,首先 Builder 从 Swift 中读取处理之后的数据,构建成索引,索引产出在分布式文件系统中。对于全量索引构建,全量数据被全部构建为索引之后 Builder 就会结束;对于增量索引构建,Builder 接受 BS Admin 的调度,将数据处理到某个时间点就会退出。Builder 结束之后,Meger 节点就会执行,Meger 会对构建的索引按照一定的策略进行整理,整理好的索引也会写回分布式文件系统。

需要注意的是,增量索引构建时,Processor 处理之后的数据不仅仅供 Builder 消费,在线的 Searcher 节点也会直接消费,将其构建成实时索引。

五、Build Service 定制能力

为了满足不同业务的需求,Build Service 在构建索引时支持下面三种定制能力:分析器的定制、数据源插件的定制、数据处理插件的定制。开发者可以直接修改代码将定制逻辑与 Havenask 一起编译成一个 Binary 生效,也可以建立单独的目录将其编译成动态库,通过插件的方式生效。

分析器定制:分析器主要用于对文档进行分词,开发者可以通过定制分析器定制自己的分词逻辑,分析器不仅会在构建索引时生效,在查询时也会生效。

数据源插件定制:Havenask 主要支持 HDFS、OSS、MaxCompute、Swift 等数据源,如果要支持更多的数据源比如 kafka,可以定制 Processor 的 Reader 插件。

数据处理定制:数据在 Processor 中是由一个 DocumentProcessor 链进行处理的,用户可以定制自己的 DocumentProcessor 处理类来扩展数据处理逻辑。

六、Build Service 与 Indexlib(核心索引库)的关系

Indexlib 是 Havenask 的核心索引库,提供正排、倒排、摘要等索引的实现,并在此基础上抽象出了各种表模型,比如 normal 表、kv 等、kkv 表等。但是 Indexlib 无法独立提供索引构建服务,必须通过 Build Service 才能进行索引构建。可以说,Indexlib 提供了各种索引的定义,并提供了索引构建的接口,Build Service 定义了流式索引构建的框架,两者相结合才使 Havenask 具有了强大的索引构建能力。

七、总结

Build Service 是一个流式的索引构建服务,能够轻松完成海量数据的索引构建,对在线系统没有任何影响,极大提高了整个集群的稳定性。独立的索引构建任务管理,可以方便、安全的对同一张表进行多次索引构建,特别适用于智能搜索场景下需要定期索引重建的场景。当然,Build Service 的引入也使得整个系统的架构更加复杂,数据生效链路变长,资源开销变大,大家在使用时请根据业务情况认真选择。

Havenask 开源官网:

https://havenask.net/

Havenask 开源项目地址:

https://github.com/alibaba/havenask

阿里云 OpenSearch 官网:

https://www.aliyun.com/product/opensearch

相关文章:

Havenask 分布式索引构建服务 --Build Service

Havenask 是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了 Havenask 分布式索引构建服务——Build Service,主打稳定、快速、易管理,是在线系…...

vscode软件安装步骤

目录 一、下载软件安装包 二、运行安装包后 一、下载软件安装包 打开vscode官方网址,找到下载界面 链接如下:Download Visual Studio Code - Mac, Linux, Windows 我是windows电脑,各位小伙伴自己选择合适的版本,点击下载按钮…...

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 🚀前言🚀管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 🚀在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…...

小细节处理

重载运算符&#xff1a;重载<运算符。 bool operator<(const Edge&s)const{return w<s.w;}...

【42页动态规划学习笔记分享】动态规划核心原理详解及27道LeetCode相关经典题目汇总

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…...

Python正则的匹配与替换

import re 查找时的注意事项&#xff0c;要查找的内容左右两边打出来&#xff0c;用真正的字符&#xff0c;不要用.*?&#xff0c;离查找内容远一点&#xff0c;再用.*? a /aksj<a>哈哈哈<a><p>拉阿鲁<p>\.askjp b re.findall(<a>(.*?)<…...

解决ELement-UI懒加载三级联动数据不回显(天坑)

最老是遇到这类问题头有点大,最后也是解决了,为铁铁们总结了一下几点 一.查看数据类型是否一致 未选择下 选择下 二.处理数据时使用this.$set方法来动态地设置实例中的属性&#xff0c;以确保其响应式 三.绑定v-if 确保每次重新加载 四.绑定key 五.完整代码...

【数据结构和算法】找出两数组的不同

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 哈希类算法题注意事项 2.2 方法一&#xff1a;哈希法 三、代码 3.1 方法一&#xff1a;哈希法 四…...

基于Python的B站排行榜大数据分析与可视化系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文介绍了一项基于Python的B站排行榜大数据分析与可视化系统的研究。通过网络爬虫技术&#xff0c;系统能够自动分析B站网址&#xff0c;提取大量相关文本信息并存储在系统中。通过对这些信息进行…...

MySQL一些常用命令

1、登录本地MySQL #一种是 mysql -u root -p; #(输入密码后回车)#另一种是 mysql -uroot -p123456; #(在-p后面直接带上密码)2、启动MySQL服务 net start mysql; 3、关闭MySQL服务&#xff1a; net stop mysql; 4、创建数据库 create database 数据库名; 5、创建数据…...

WPF 新手指引弹窗

新手指引弹窗介绍 我们在第一次使用某个软件时&#xff0c;通常会有一个“新手指引”教学引导。WPF实现“新手指引”非常方便&#xff0c;且非常有趣。接下来我们就开始制作一个简单的”新手指引”(代码简单易懂&#xff0c;便于移植)&#xff0c;引用到我们的项目中又可添加一…...

py注册登录界面

代码分析 引入tkinter库&#xff0c;并从中导入messagebox模块。 read_users()函数用于读取存储用户信息的文本文件"users.txt"。它打开文件并逐行读取&#xff0c;将每行的用户名和密码以空格分隔后存储在一个列表中&#xff0c;最后返回该列表。 login(username,…...

基于电商场景的高并发RocketMQ实战-Consumer端队列负载均衡分配机制、并发消费以及消费进度提交

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…...

【Java开发岗面试】八股文—数据库MySQLRedis

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…...

IntelliJ IDEA [设置] 隐藏 .idea 等 .XXX 文件夹

文章目录 1. 问题描述2. 解决办法3. 最后效果4. 特殊处理&#xff08;正常不需要此步骤&#xff09;总结 我们使用 IntelliJ IDEA 导入项目的时候&#xff0c;经常会看到一些 .XXX 的文件夹&#xff08;例如&#xff1a;.idea&#xff0c;.mvn&#xff0c;.gradle 等&#xff0…...

每日一题——LeetCode961

方法一 排序法&#xff1a; 2*n长度的数组里面有一个元素重复了n次&#xff0c;那么将数组排序&#xff0c;求出排序后数组的中间值&#xff08;因为长度是偶数&#xff0c;没有刚好的中间值&#xff0c;默认求的中间值是偏左边的那个&#xff09;那么共有三种情况&#xff1a;…...

基于Unity Editor开发一个技能编辑器可能涉及到的内容

基于Unity Editor开发一个技能编辑器&#xff0c;涉及到的方面较多&#xff0c;涵盖了Unity自身的GUI框架、序列化系统、自定义编辑器、脚本调用与数据存储等。下面是几个关键点和你可能会用到的类以及API&#xff1a; 自定义Inspector&#xff1a; 使用Editor类来重写组件的I…...

Ubuntu 22.04 安装ftp实现与windows文件互传

Ubuntu 22.04 安装ftp实现与windows文件互传 1、配置安装 安装&#xff1a; sudo apt install vsftpd -y使能开机自启&#xff1a; sudo systemctl enable vsftpd 启动&#xff1a; sudo systemctl start vsftpd创建ftp工作目录&#xff1a; sudo mkdir -p /home/ftp/uftp…...

EasyPoi使用案例

EasyPoi使用案例 easypoi旨在简化Excel和Word的操作。基于注解的导入导出&#xff0c;修改注解就可以修改Excel&#xff1b;支持常用的样式自定义&#xff1b;基于map可以灵活定义表头字段&#xff1b;支持一对多的导入导出&#xff1b;支持模板的导出&#xff1b;支持HTML/Exc…...

分布式系统架构设计之分布式数据存储的分类和组合策略

在现下科技发展迅猛的背景下&#xff0c;分布式系统已经成为许多大规模应用和服务的基础架构。分布式架构的设计不仅仅是一项技术挑战&#xff0c;更是对数据存储、管理和处理能力的严峻考验。随着云原生、大数据、人工智能等技术的崛起&#xff0c;分布式系统对于数据的高效存…...

javaEE -18(11000字 JavaScript入门 - 3)

一&#xff1a;事件 &#xff08;高级&#xff09; 1.1 注册事件&#xff08;绑定事件&#xff09; 给元素添加事件&#xff0c;称为注册事件或者绑定事件&#xff0c;注册事件有两种方式&#xff1a;传统方式和方法监听注册方式 传统注册方式 &#xff1a; 利用 on 开头的…...

LangChain.js 实战系列:入门介绍

&#x1f4dd; LangChain.js 是一个快速开发大模型应用的框架&#xff0c;它提供了一系列强大的功能和工具&#xff0c;使得开发者能够更加高效地构建复杂的应用程序。LangChain.js 实战系列文章将介绍在实际项目中使用 LangChain.js 时的一些方法和技巧。 LangChain.js 是一个…...

pyCharm 打印控制台中文乱码解决办法

解决方法 在 "File" -> "Settings" 中的控制台设置&#xff1a; 在 "File" -> "Settings" 中&#xff0c;你可以找到 "Editor" -> "General" -> "Console"。在这里&#xff0c;你可能会找到…...

计算机基础--Linux详解

一概述 Linux是一种自由和开放源码的类UNIX操作系统。它是由林纳斯托瓦兹于1991年首次发布的&#xff0c;并从那时起在全球范围内得到了广泛的应用和开发。Linux具有强大的可定制性&#xff0c;可以运行在各种硬件平台上&#xff0c;包括x86、ARM、MIPS等。它不仅广泛应用于服…...

基于OpenAI的Whisper构建的高效语音识别模型:faster-whisper

1 faster-whisper介绍 faster-whisper是基于OpenAI的Whisper模型的高效实现&#xff0c;它利用CTranslate2&#xff0c;一个专为Transformer模型设计的快速推理引擎。这种实现不仅提高了语音识别的速度&#xff0c;还优化了内存使用效率。faster-whisper的核心优势在于其能够在…...

cfa一级考生复习经验分享系列(十六)

写在前面&#xff1a;并不鼓励大家在考前一个月才开始复习&#xff0c;不过&#xff0c;既然已经逼到了绝境&#xff0c;灰心丧气也没有用&#xff0c;不如放手一搏&#xff01; 首先说一下我的背景&#xff0c;工作金融机构的it&#xff0c;和cfa基本没关系&#xff0c;本硕计…...

数模学习day05-插值算法

插值算法有什么作用呢&#xff1f; 答&#xff1a;数模比赛中&#xff0c;常常需要根据已知的函数点进行数据、模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模拟产生”一些…...

hive中struct相关函数总结

目录 hive官方函数解释示例实战 hive官方函数解释 hive官网函数大全地址&#xff1a;添加链接描述 Return TypeNameDescriptionstructstruct(val1, val2, val3, …)Creates a struct with the given field values. Struct field names will be col1, col2, …structnamed_str…...

macos下转换.dmg文件为 .iso .cdr文件的简单方法

为了让镜像文件在mac 和windows平台通用, 所以需要将.dmg格式的镜像文件转换为.iso文件, 转换方法也非常简单, 一行命令即可 hdiutil convert /path/to/example.dmg -format UDTO -o /path/to/example.iso 转换完成后的文件名称默认是 example.iso.cdr 这里直接将.cdr后缀删…...

ALSA学习(5)——设备中的alsa

参考博客&#xff1a; https://blog.csdn.net/DroidPhone/article/details/7165482 &#xff08;一下内容基本是原博主的博客转载&#xff09; 文章目录 一、ASOC的由来二、硬件架构三、软件架构四、数据结构五、内核对ASoC的改进 一、ASOC的由来 ASoC–ALSA System on Chip …...

uniapp中组件库的丰富NumberBox 步进器的用法

目录 基本使用 #步长设置 #限制输入范围 #限制只能输入整数 #禁用 #固定小数位数 #异步变更 #自定义颜色和大小 #自定义 slot API #Props #Events #Slots 基本使用 通过v-model绑定value初始值&#xff0c;此值是双向绑定的&#xff0c;无需在回调中将返回的数值重…...

【Matlab】基于遗传算法优化BP神经网络 (GA-BP)的数据时序预测

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88682033 一&#xff0c;概述 基于遗传算法优化BP神经网络 (GA-BP) 的数据时序预测是一种常用的机器学习方法&#xff0c;用于预测时间序列数据的趋势和未来值。 在使用这种方法之前&#xff0c;需要将时间序…...

计算机毕业设计 基于HTML5+CSS3的在线英语阅读分级平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

云原生|kubernetes|kubernetes资源备份和集群迁移神器velero的部署和使用

前言&#xff1a; kubernetes集群需要灾备吗&#xff1f;kubernetes需要迁移吗&#xff1f; 答案肯定是需要的 那么&#xff0c;如何做kubernetes灾备和迁移呢&#xff1f;当然了&#xff0c;有很多的方法&#xff0c;例如&#xff0c;自己编写shell脚本&#xff0c;或者使用…...

【26.4K⭐】ShareX:一款开源免费、功能强大且丰富的截屏录屏软件

【26.4K⭐】ShareX&#xff1a;一款开源免费、功能强大且丰富的截屏录屏软件 在日常工作、学习和娱乐过程中&#xff0c;我们经常需要截取屏幕或者录制屏幕上特定区域中的内容并进行标记、编辑等操作。无论是为了记录重要的信息、分享有趣的内容&#xff0c;还是为了制作教程和…...

什么是ajax,为什么使用ajax?

概念&#xff1a;ajax是一种现有的技术集合&#xff0c;技术内容包括&#xff1a;HTML或XHTML&#xff0c;CSS&#xff0c;JavaScript&#xff0c;DOM,XML,XSLT,以及最重要的XMLHttpRequest。用于浏览器与服务器之间使用异步传输&#xff0c;做到局部请求以实现局部刷新。 作用…...

AI面板识别 - 华为OD统一考试

OD统一考试 (B卷) 分值: 100分 题解: Java / Python / C++ 题目描述 AI识别到面板上有N(1 ≤ N ≤ 100)个指示灯,灯大小一样,任意两个之间无重叠。 由于AI识别误差,每次别到的指示灯位置可能有差异,以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1,右下角x2…...

Linux之磁盘分区,挂载

Linux分区 分区介绍 对linux来说无论有几个分区&#xff0c;分给哪个目录使用&#xff0c;归根结底只有一个根目录&#xff0c;linux中每个分区都是用来组成整个文件系统的一部分。linux采用“载入"的处理方法&#xff0c;他的整个文件系统中包含一整套的文件和目录&…...

2核2G3M服务器上传速度多少?以阿里云和腾讯云为例

2核2G3M服务器上传速度多少&#xff1f;上传是按10M带宽算&#xff0c;上传速度是1280KB/秒&#xff0c;即1.25M/秒&#xff1b;下载速度按3M带宽计算&#xff0c;下载速度是384KB/秒。本文是以阿里云为例的&#xff0c;阿里云服务器当公网带宽小于10M及10M以下时&#xff0c;上…...

Cisco模拟器-OSPF路由协议

设计要求用两台双口路由器连接不同IP网段的计算机&#xff0c;并使用OSFP协议发现路由表使不同IP网段的计算机可以相互通信。 通过设计&#xff0c;可以连通IP地址网段不同的局域网&#xff0c;可应用在园区网的互连和互通的实现上。 主要配置步骤 路由器0&#xff1a; Router…...

SpEL 的使用

SpEL 的使用 SpEL的全称为 Spring Expression Language&#xff0c;具有再运行时构建复杂表达式、存取对象图属性、对象方法调用等功能 下面是一个简单样例 public class SpelTest { Test public void test1() { ExpressionParser parser new SpelExpressionParser(); …...

数据采集实战:电商详情页数据埋点

本文我们以电商产品的商品详情页为例&#xff0c;介绍如何做用户浏览以及点击行为的数据埋点。 案例中包含一个页面&#xff08;商品详情页&#xff09;以及该页面上的关键按钮&#xff08;加购、收藏按钮&#xff09;&#xff0c;具体页面如下图所示。 &#xff08;1&#xf…...

计算机网络——计算大题(七)

前言&#xff1a; 最近也是在准备计算机考试&#xff0c;我们的考试形式是上机考试&#xff0c;所以可能有些计算题是会给提供思路的&#xff0c;前面已经对本学期的计算机网络知识有了一个简单的认识与了解&#xff0c;现在我们就来对计算大题进行一个学习吧&#xff0c;这里的…...

子网掩码与IP段计算

一.什么叫子网掩码&#xff1a; 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩&#xff0c;它用来指明一个IP地址的哪些位标识的是主机所在的子网&#xff0c;以及哪些位标识的是主机的位掩码。子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。 子网掩…...

【译文】IEEE白皮书 6G 太赫兹技术的基本原理 2023版

第一章 简介 太赫兹波是介于微波和光波之间的光谱区域&#xff0c;频率从 0.1THz ~ 10THz 之间&#xff0c;波长在 3mm ~ 30μm 之间。提供大块连续的频带范围以满足对 Tbit/s 内极高数据传输速率的需求&#xff0c;使该区域成为下一代无线通信&#xff08;6G&#xff09;的重…...

AUTOSAR从入门到精通-网络通信(UDPNm)(三)

目录 前言 原理 网络状态 初始化 执行 处理器架构 时间参数...

ubuntu 使用openssl制作一个自签名证书

我们需要为浏览器创建自己的根CA证书来信任自签名证书。因此&#xff0c;让我们首先创建根CA证书 创建根CA证书 创建文件夹 mkdir openssl && cd openssl执行以下openssl命令&#xff0c;生成 rootCA.key 以及 rootCA.crt. 用你的域名或者ip地址替换demo.mlopshub.c…...

WPF+Halcon 培训项目实战(1-5):Halcon安装,图像处理,Halcon简单模板匹配

文章目录 前言相关链接项目专栏我个人对就业市场的评价Halcon安装实战1-4&#xff1a;Halcon基础实战5&#xff1a;模板匹配[形状匹配]实战代码 结尾 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主…...

虚函数的讲解

文章目录 虚函数的声明与定义代码演示基类Person派生类Man派生类Woman 测试代码动态绑定静态绑定访问私有虚函数总结一下通过成员函数指针调用函数的方式 虚函数的声明与定义 虚函数存在于C的类、结构体等中&#xff0c;不能存在于全局函数中&#xff0c;只能作为成员函数存在…...

Java强软弱虚引用

面试&#xff1a; 1.强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用分别是什么&#xff1f; 2.软引用和弱引用适用的场景&#xff1f; 3.你知道弱引用的话&#xff0c;能谈谈WeakHashMap吗&#xff1f; 目录 一、Java引用 1、强引用&#xff08;默认支持模式…...