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

Hadoop其四,片与块,MapReduce原理,Shuffle过程,Combiner

目录

一、关于片和块

二、MapReduce的原理

MapTask执行阶段

ReduceTask的执行流程:

三、Shuffle 过程

map端:

reduce端:

环形缓冲区:

四、Combiner 【可有可无】

五、需要记忆的内容


一、关于片和块

假如我现在500M这样的数据,如何存储?
500M = 128M + 128M + 128M + 116M  分为四个块进行存储。
计算的时候,是按照片儿计算的,而不是块儿。
块是物理概念,一个块就是128M ,妥妥的,毋庸置疑。
片是逻辑概念,一个片大约等于一个块。假如我现在需要计算一个300M的文件,这个时候启动多少个MapTask任务?答案是有多少个片儿,就启动多少个任务。
一个片儿约等于 一个块,但是最大可以 128M*1.1倍= 140.8
300M 
128M  启动一个Map任务进行读取
172M  172M  和   128M * 1.1 =140.8M 进行比较,如果大于 ,继续进行切割
128M  启动一个任务Map任务
剩余44M   剩余的44M 和  128M*1.1倍比较,小于这个值,剩余的44M 就单独起一个Map任务
300m的数据,分给了3个MapTask任务进行处理。如果是260M的数据,由多少个Map任务处理?
128M   第一个任务
132M   跟 128M * 1.1 进行比较,发现小于这个值,直接一个Map任务搞定,不在启动第三个任务了。

比如大家一起搬砖,每人规定搬3块,假定砖还剩4块,到某个人了,他就直接搬完即可,没必要让下一个人因为一块砖,而专门跑一趟。

1、什么是片,什么是块?
块是物理概念,片是逻辑概念。一般片 = 块的,但是到最后一次的时候,有可能片> 块,但是绝对不能超过块的1.1倍。
2、mapreduce 启动多少个MapTask任务?
跟片有关系,有多少个片,就启动多少个map任务。跟块儿无关。

二、MapReduce的原理

简单版本:

AppMaster: 整个Job任务的核心协调工具
MapTask: 主要用于Map任务的执行
ReduceTask: 主要用于Reduce任务的执行一个任务提交Job --> AppMaster(项目经理)--> 根据切片的数量统计出需要多少个MapTask任务 --> 向ResourceManager(Yarn平台的老大)索要资源 --> 执行Map任务,先读取一个分片的数据,传递给map方法。--> map 方法不断的溢写 --> reduce 方法 --> 将统计的结果存放在磁盘上。

分开讲解版:

MapTask执行阶段

1. maptask调用FileInputFormat的getRecordReader读取分片数据
2. 每行数据读取一次,返回一个(K,V)对,K是offset(偏移量),V是一行数据
3. 将k-v对交给MapTask处理
4. 每对k-v调用一次map(K,V,context)方法,然后context.write(k,v)
5. 写出的数据交给收集器OutputCollector.collector()处理
6. 将数据写入环形缓冲区,并记录写入的起始偏移量,终止偏移量,环形缓冲区默认大小100M
7. 默认写到80%的时候要溢写到磁盘,溢写磁盘的过程中数据继续写入剩余20%
8. 溢写磁盘之前要先进行分区然后分区内进行排序
9. 默认的分区规则是hashpatitioner,即key的  hash%reduceNum所有的mapreduce,其实都用到了分区,如果不写,使用的是默认的分区。job.setNumReduceTask(3);
10. 默认的排序规则是key的字典顺序,使用的是快速排序
11. 溢写会形成多个文件,在maptask读取完一个分片数据后,先将环形缓冲区数据刷写到磁盘
12. 将数据多个溢写文件进行合并,分区内排序(外部排序===》归并排序)

ReduceTask的执行流程:

1. 数据按照分区规则发送到reducetask
2. reducetask将来自多个maptask的数据进行合并,排序(外部排序===》归并排序)
3. 按照key相同分组
4. 一组数据调用一次reduce(k,iterable<v>values,context)
5. 处理后的数据交由reducetask
6. reducetask调用FileOutputFormat组件
7. FileOutputFormat组件中的write方法将数据写出。
ReduceTask任务的数量是由谁决定的?
job.setNumReduceTasks(5);
是指定的,设置的几个就执行几个。
这个值不能瞎设置,要参考分区数量,加入有三个分区,ReduceTask任务就需要指定为3个。

三、Shuffle 过程

MapReduce的Shuffle过程指的是MapTask的后半程,以及ReduceTask的前半程,共同组成的。
从MapTask中的map方法结束,到ReduceTask中的reduce方法开始,这个中间的部分就是Shuffle。是MapReduce的核心,心脏。

map端:

1、map中的context.write方法,对外写出的时候,其实是写入到了一个环形缓冲区内(内存形式的),这个环形缓冲区大小是100M,可以通过参数设置。如果里面的数据大于80M,就开始溢写(从内存中将数据写入到磁盘上)。溢写的文件存放地址可以设置。
2、在溢写过程中,环形缓冲区不会停止工作,是会利用剩余的20%继续存入环形缓冲区的。除非是环形缓冲区的内存满了,map任务就被阻塞了。
在溢写出来的文件中,是排过序的,排序规则:快速排序算法。在排序之前,会根据分区的算法,对数据进行分区。是在内存中,先分区,在每一个分区中再排序,接着溢写到磁盘上的。
3、溢写出来的小文件需要合并为一个大文件,因为每一个MapTask只能有一份数据。就将相同的分区文件合并,并且排序(此处是归并排序)。每次合并的时候是10个小文件合并为一个大文件,进行多次合并,最终每一个分区的文件只能有一份。
假如100个小文件,需要合并几次呢?
100  每10分合并一次,第一轮:100个文件合并为了10个文件,这10个文件又合并为一个大文件,总共合并了11次。4、将内存中的数据,溢写到磁盘上,还可以指定是否需要压缩,以及压缩的算法是什么。

reduce端:

1、reduce端根据不同的分区,拉取每个服务器上的相同的分区的数据。
reduce任务有少量复制线程,因此能够并行取得map输出。默认值是5个线程,但这个默认值可以修改设置mapreduce.reduce.shuffle. parallelcopies 属性即可。
2、如果map上的数据非常的小,该数据会拉取到reduce端的内存中,如果数据量比较大,直接拉取到reduce端的硬盘上。

环形缓冲区:

环形缓冲区,其实是一个数组,将数组分为两部分,分割的这个点就称之为轴心。存储KV键值对,是从左到右,类似于顺时针,因为每一个KV键值对都有对应的元数据。元数据是从轴心开始,从右向左执行。

当两者数据占用空间达到80%的时候,需要清理数组,清理完之后,轴心发生了变化。

KV键值对的元数据,

(每四个是一组,共计4组)

前面四个第一组::表示Value的起始位置,第二组:Key值的起始位置,第三组:分区信息,第四组:val的长度。这些内容称之为KV键值对的meta数据(元数据)。

四、Combiner 【可有可无】

这个Combiner是一个优化的代码,对于我们最终的结果没有任何的影响。

map端产生的数据,会被拉去到reduce端进行合并,有可能map端产生的数据非常的大,不便于在网络间传输,那么有没有办法可以缩小map端的数据呢?

之前: java 1 java 1 java 1 传递给reduce

现在: java 3 传递给reduce

Combiner其实就是运行在mapTask中的reducer。 Reducer其实就是合并代码的。Combiner是作用在Map端的。

这个结果不是最终的结果,而是一个临时的小统计。 最终reduce是会将所有的map结果再次进行汇总才是我们最终想要的统计结果。

Combiner 只能用于对统计结果没有影响的场景下。
一般只用于  统计之和,统计最大值最小值的场景下。统计平均值等情况是不能用的。

在代码中如何使用?

Combiner起作用的地方:

Combiner 其实作用于两个地方,一个是环形缓冲区溢写磁盘的时候,除了分区,排序之外,还可以做合并操作,将内存中的 hello 1 hello 1 hello 1 会合并为 hello 3

第二个位置是小文件合并为MapTask的大文件的时候,会将多个 hello 的值相加 hello 19,但是这个不是最终的答案,最终答案是将多个MapTask任务中的hello 进行合并才是最终的结果。

五、需要记忆的内容

1. 从map函数输出到reduce函数输入数据,这个过程称之为shuffle.
2. map函数的输出,存储环形缓冲区(默认大小100M,阈(阈值、阀值)值80M)环形缓冲区:其实是一个字节数组kvbuffer.  这个字节数组,由两部分组成,一部分顺时针存储KV键值对,一部分逆时针存储 KV键值对的元数据。3. 当达到阈值80%时,准备溢写到本地磁盘(因为是中间数据,因此没有必要存储在HDFS上)。在溢写前要进行对元数据分区(partition)整理,然后进行排序(quick sort,通过元数据找到出key,同一分区的所有key进行排序,排序完,元数据就已经有序了,在溢写时,按照元数据的顺序寻找原始数据进行溢写)4. 如果有必要,可以在排序后,溢写前调用combiner函数进行运算,来达到减少数据的目的5. 溢写文件有可能产生多个,然后对这多个溢写文件进行再次合并(也要进行分区和排序)。当溢写个数>=3时,可以再次调用combiner函数来减少数据。如果溢写个数<3时,默认不会调用combiner函数。每10个小文件合并一次,最终合并为一个大文件。6. 合并的最终溢写文件可以使用压缩技术来达到节省磁盘空间和减少向reduce阶段传输数据的目的。(存储在本地磁盘中)7. Reduce阶段通过HTTP写抓取属于自己的分区的所有map的输出数据(默认线程数是5,因此可以并发抓取)。
小文件拉过来放入内存,大文件拉过来放入磁盘。8. 抓取到的数据存在内存中,如果数据量大,当达到本地内存的阈值时会进行溢写操作,在溢写前会进行合并和排序(排序阶段),然后写到磁盘中。9. 溢写文件可能会产生多个,因此在进入reduce之前会再次合并(合并因子是10),最后一次合并要满足10这个因子,同时输入给reduce函数,而不是产生合并文件。reduce函数输出数据会直接存储在HDFS上。

相关文章:

Hadoop其四,片与块,MapReduce原理,Shuffle过程,Combiner

目录 一、关于片和块 二、MapReduce的原理 MapTask执行阶段 ReduceTask的执行流程&#xff1a; 三、Shuffle 过程 map端&#xff1a; reduce端&#xff1a; 环形缓冲区&#xff1a; 四、Combiner 【可有可无】 五、需要记忆的内容 一、关于片和块 假如我现在500M这样…...

引领未来的变革:15种前沿RAG技术及其应用探索

在现代人工智能领域&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术逐渐成为推动各种应用的重要力量。这些技术通过结合信息检索与文本生成&#xff0c;能够更有效地处理和利用信息。本文将详细介绍15种前沿RAG技术及其具体应用实例&#xff0c;以帮助您更好地理解这…...

gradle在IDEA 中无法使用的启动守护线程的问题

最近打开一个比较早的项目&#xff0c;Gradle 配置没有问题&#xff0c;IDEA 打开Java项目却不能初始化守护线程&#xff0c;UI 上只能看到失败&#xff0c;看不到具体原因。 首先尝试了升级最新的gradle 版本8.11, 实际上这个版本在本地命令行都不能正常工作&#xff0c;没有…...

C++小白实习日记——Pollnet,Efvi,UDP,数据类型转换(上)

上周主要是熟悉了一下公司内部一些自定义结构体对应的数据类型&#xff0c;要求&#xff1a;读取文件&#xff0c;将文件中数据转化为定义的结构体中的数据类型&#xff0c;按照时间进行排序&#xff0c;用UDP发送数据&#xff1b;在另一台服务器上接收数据&#xff0c;按照定义…...

git安装教程(Git-2.38.1-64-bit)

目录 一、git下载 二、git安装 1.更改安装路径 2.安装组件 3.选择开始菜单文件夹 4.选择Git默认编辑器 5.决定初始化新项目&#xff08;仓库&#xff09;的主干名字 6.修改Git的环境变量 7.选择SSH执行文件 9.选择HTTPS后端传输 10.配置行尾符号转换 11.配置终端模…...

C# OpenCvSharp DNN 实现百度网盘AI大赛-表格检测第2名方案第三部分-表格方向识别

目录 说明 效果 模型 项目 ​编辑 代码 参考 下载 其他 说明 百度网盘AI大赛-表格检测的第2名方案。 该算法包含表格边界框检测、表格分割和表格方向识别三个部分&#xff0c;首先&#xff0c;ppyoloe-plus-x 对边界框进行预测&#xff0c;并对置信度较高的表格边界…...

selenium 验证码滑块对齐没有验证通过

描述&#xff1a; 最近使用seleniuim采集有滑块验证码的数据&#xff0c;遇到了移动滑块对齐后&#xff0c;还是无法通过验证&#xff0c;经过模拟真人多次移动、控制移动时间(避免过快)一番尝试后、最终通过模拟抖动得以解决 解决办法&#xff1a; 把yoffset的值改为-6~6的…...

【Neo4J】neo4j docker容器下的备份与恢复

文章目录 一. 官网说明1. 操作说明2. 注意事项 二. docker 容器化操作1. 导出&#xff08;备份&#xff09;停止容器执行备份 2. 导入&#xff08;恢复&#xff09;停止容器(如果未停止)执行导入 3. 启动容器 一. 官网说明 https://neo4j.com/docs/operations-manual/current/…...

Java实现雪花算法获取id

Java实现雪花算法获取id 在 Java 中实现雪花算法&#xff08;Snowflake&#xff09;时&#xff0c;通常会设计一个工具类来生成全局唯一的 ID。这个工具类可以封装雪花算法的逻辑&#xff0c;并提供简单的接口来生成 ID。 以下是一个完整的 Java 工具类实现雪花算法的例子&am…...

Leetcode1338:数组大小减半

题目描述&#xff1a; 给你一个整数数组 arr。你可以从中选出一个整数集合&#xff0c;并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的一半整数的整数集合的最小大小。 代码思路&#xff1a; 这个代码的目的是解决一个特定的问题&#xff1a;给定一个整数数…...

【系统思辨】分散注意

注意力在我们的日常生活和工作中扮演着至关重要的角色。注意力可以提高效率和准确性、减少错误和失误&#xff0c;提升学习效率&#xff0c;促进创造力。与此同时&#xff0c;各种各样的生活事件在分散我们的注意力&#xff0c;并且还有很多分散我们注意的手段&#xff0c;比如…...

微信小程序中 Echarts 的巧妙运用

一、引入 Echarts 的准备工作 在微信小程序中引入 Echarts 需要进行一系列的准备工作。首先&#xff0c;我们可以从 echarts 官网或 GitHub 上下载 echarts-for-weixin 项目。找到其中的 ec-canvas 文件夹&#xff0c;这个文件夹将是我们引入到微信小程序项目中的关键部分。 …...

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…...

Gate学习(7)引入体素源

一、从GitHub下载体素源模型源码 下载地址&#xff1a;BenAuer2021/Phantoms-for-Nuclear-Medicine-Imaging-Simulation&#xff1a;用于核医学成像应用的模型&#xff08;闪烁显像、SPECT 和 PET&#xff09; --- BenAuer2021/Phantoms-For-Nuclear-Medicine-Imaging-Simulat…...

腾讯微信Android面试题及参考答案(多张原理图)

Android 应用的启动流程如下: 当用户点击应用图标时,首先会通过 Launcher(桌面启动器)来响应这个操作。Launcher 本身也是一个 Android 应用,它运行在系统中,负责管理和显示桌面上的图标等信息。 系统会检查应用是否已经有进程存在。如果没有,就会通过 Zygote 进程来孵化…...

【Android】View的工作流程

View的工作流程 开始了解一下View的工作流程&#xff0c;就是measure、layout和draw。measure用来测量View的宽高&#xff0c;layout用来确定View的位置&#xff0c;draw则用来绘制View。这一讲我们来看看measure流程&#xff0c;measure流程分为View的measure流程和ViewGroup…...

Linux基础指令

使用 tab 键补全 我们敲的所有的 Linux 命令 , 都可以使用 tab 键来尝试补全 , 加快效率 . 使用 ctrl c 重新输入 如果命令或者目录敲错了 , 可以 ctrl c 取消当前的命令 . ls &#xff1a;列出当前目录中的文件和子目录 语法 &#xff1a; ls [ 选项 ] [ 目录或文…...

Gemini 2.0 Flash重磅发布:多模态AI大模型,赋能实时交互与智能助手新体验

点击访问 chatTools 免费体验GPT最新模型&#xff0c;包括o1推理模型、GPT4o、Claude、Gemini等模型&#xff01; 在AI领域竞争日益激烈的今天&#xff0c;谷歌再次亮剑&#xff0c;推出了新一代至强AI大模型——Gemini 2.0 Flash。这款模型不仅具备强大的多模态输入输出能力&a…...

项目十二 杜甫作品问卷

【项目目标】 理解网格系统的原理。理解媒体查询的工作原理。【項目内容】 使用网格系统进行响应式网页设计。运用媒体查询对不同类型的设备应用不同的样式。【项目步骤】 Bootstrap 框架资源既可以直接从 CDN 服务商服务器中引入,也可以加入本地素材文件夹中给出的资…...

7_Sass Introspection 函数 --[CSS预处理]

Sass 的 Introspection 函数允许开发者检查和操作样式表的内部结构&#xff0c;包括选择器、属性、值等。这些函数提供了对编译过程中 Sass 文件内容的深入访问能力&#xff0c;使得更复杂的逻辑处理成为可能。以下是一些常用的 Sass Introspection 函数及其用法示例&#xff1…...

Qt:Q_GLOBAL_STATIC实现单例(附带单例使用和内存管理)

转载 https://blog.csdn.net/m0_71489826/article/details/142288179 前言 本文主要写Q_GLOBAL_STATIC实现单例以及单例的释放&#xff0c;网上很多教程只有单例的创建&#xff0c;但是并没有告诉我们单例的内存管理&#xff0c;这就很头疼。 正文 使用 Qt 的 Q_GLOBAL_STA…...

HTML/CSS总结

HTML 1.1 标题标签h 为了使网页更具有语义化&#xff0c;我们经常会在页面中用到标题标签&#xff0c;HTML提供了6个等级的标题&#xff0c;即 标题标签语义&#xff1a; 作为标题使用&#xff0c;并且依据重要性递减 其基本语法格式如下&#xff1a; <h1> 标题文本…...

字符串性能对比

效率(1) : String.indexOf与String.contains效率测试_string contains效率-CSDN博客 结论是前者效率高&#xff0c;源码里面conatins是使用indexof 在jdk8中contains直接调用的indexOf(其他版本没有验证),所以要说效率来说肯定是indexOf高,但contains也就多了一层方法栈,so 什…...

【漫话机器学习系列】005.神经网络的结构(architecture on the neural network)

神经网络&#xff08;Neural Network&#xff09;是一种模拟人脑神经系统的计算模型&#xff0c;由大量相互连接的神经元&#xff08;节点&#xff09;组成&#xff0c;广泛应用于深度学习和机器学习领域。以下是神经网络的基本结构及关键组成部分。 1. 神经网络的基本组成 一…...

关卡选择与布局器

unity布局管理器 使用unity布局管理器轻松对关卡选择进行布局。 实现过程 准备普通按钮button设置字体和对应的sprite设置父gameobject&#xff08;levelbase&#xff09; 再创建UI.image&#xff08;selectbackground&#xff09;布局背景和大小gameobject&#xff08;grid…...

数据分析实战—房价特征关系

1.实战内容 &#xff08;1&#xff09; 读取房价特征关系表&#xff08;house_price.npz&#xff09;绘制离地铁站的距离与单位面积的房价的散点图&#xff0c;并对其进行分析&#xff1b; import pandas as pd import numpy as np import warnings warnings.filterwarnings(&…...

@ResponseBody详解

ResponseBody 是 Spring Framework 中的一种注解&#xff0c;用于表示返回的内容应该直接写入 HTTP 响应体&#xff0c;而不是通过视图解析器来渲染一个视图&#xff08;如 JSP 页&#xff09;。当你在控制器的方法上使用 ResponseBody 时&#xff0c;Spring 会将方法的返回值直…...

Harmony Next开发通过bindSheet绑定半模态窗口

示例概述 Harmony Next开发通过bindSheet绑定半模态窗口 知识点 半模态窗口父子组件传值 组件 LoginComponent Component struct LoginComponent {// Prop 父子单项绑定值Prop message:string // Link 父子双向绑定值Link userName:stringLink password:stringLink isSh…...

Redis--高并发分布式结构

目录 一、引言 二、redis 1.什么是redis&#xff1f; 三、基础概念 1.什么是分布式&#xff1f; 2.应用服务和数据库服务分离 3.负载均衡 4.分库分表 5.微服务架构 四、总结 一、引言 本篇文章就简单介绍一下什么是redis&#xff0c;以及一些关于高并发和分布式结构的…...

Day38 动态规划part06

322. 零钱兑换 如果求组合数就是外层for循环遍历物品,内层for遍历背包。 如果求排列数就是外层for遍历背包,内层for循环遍历物品。 这句话结合本题 大家要好好理解。 视频讲解:动态规划之完全背包,装满背包最少的物品件数是多少?| LeetCode:322.零钱兑换_哔哩哔哩_bilib…...

1.1 类型(types)

源码 types.rs文件源码&#xff1a; use euclid::{Point2D, Vector2D};//引用外部泛型/// 绘图中所有事物所使用的笛卡尔坐标系。The cartesian coordinate system used by everything in a drawing. #[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)] pub enu…...

PyTorch如何通过 torch.unbind 和torch.stack动态调整张量的维度顺序

笔者一篇博客PyTorch 的 torch.unbind 函数详解与进阶应用&#xff1a;中英双语中有一个例子如下&#xff1a; # 创建一个 3x2x2 的三维张量 x torch.tensor([[[1, 2], [3, 4]],[[5, 6], [7, 8]],[[9, 10], [11, 12]]])# 第一步&#xff1a;沿第 0 维分解为 3 个 2x2 张量 un…...

在 Node.js 中安装和使用 TensorFlow.js 的完整指南

在 Node.js 中安装和使用 TensorFlow.js 的完整指南 简介 TensorFlow.js 是一个开源的机器学习库&#xff0c;它允许在 JavaScript 环境中进行机器学习模型的开发和训练。本文将介绍如何在 Node.js 环境中安装和配置 TensorFlow.js。 环境准备 在开始之前&#xff0c;请确保…...

ubuntu 下如何查看用户的最近登录的时间

在 Ubuntu 系统下&#xff0c;可以通过以下几种方式查看用户最近的登录时间&#xff1a; 方法 1: 使用 last 命令 last 命令会显示系统上用户的登录记录&#xff0c;包括时间和来源。 last 用户名 例如&#xff0c;要查看用户 test 的最近登录记录&#xff1a; last test …...

Linux下调试工具:gdb

Windows和Linux下的调试有区别吗&#xff1f; 调试思路上一定是一样的&#xff1b;调试的操作方式有差别(Linux命令行调试&#xff0c;Windows窗口) 1.准备工作&#xff1a; 默认情况下&#xff0c;gdb无法进行对现在发布的程序进行调试(debug / release)。在Linux下用gcc编译…...

metagpt 多智能体系统

metagpt 多智能体系统 代码1. 动作及角色定义2. 主函数 代码解释1. 导入模块&#xff1a;2. 环境设置&#xff1a;3. 定义行动&#xff08;Action&#xff09;&#xff1a;4. 定义角色&#xff08;Role&#xff09;&#xff1a;5. 学生和老师的行为&#xff1a;6. 主函数&#…...

Python中opencv的一些函数及应用

Sobel 算子函数 功能&#xff1a; Sobel 算子用于计算图像的梯度&#xff08;变化率&#xff09;&#xff0c;常用于边缘检测。它通过对图像应用一个基于一阶导数的滤波器来强调图像中的边缘部分&#xff0c;特别是水平和垂直方向上的边缘。通过计算图像的梯度&#xff0c;可以…...

泷羽sec学习打卡-brupsuite8伪造IP和爬虫审计

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-Brup-FaskIP 伪造IP配置环境brupsuite导入配置1、扩展中先配置python环境2、安…...

麒麟信安推出支持信创PC的新一代云桌面方案,助力政务信创高效安全运维

12月11日&#xff0c;在第二届国家新一代自主安全计算系统产业集群融通生态大会上&#xff0c;麒麟信安发布了支持信创PC的新一代云桌面方案&#xff0c;该方案是基于国际TCI架构实现国产PC机云化纳管在国内的首次发布&#xff0c;并与银河麒麟桌面操作系统、长城国产PC整机实现…...

【我的开源】ESCurlGen 一款 ElasticSearch curl 命令生成器

由于经常编写复杂的 Elasticsearch 查询&#xff0c;并通过代码生成查询条件&#xff0c;我发现每次使用 curl 请求 Elasticsearch 时&#xff0c;手动复制配置信息并构建 curl 命令的过程非常繁琐&#xff0c;尤其是在管理多个环境的情况下更为不便。因此&#xff0c;我利用 A…...

基于ESP32的桌面小屏幕实战[4]:硬件设计之PCB Layout

1. PCB Layout 步骤 生成PCB 确定PCB layout规范 绘制板框尺寸 布局 布局规范&#xff1a; 按电气性能合理分区&#xff0c;一般分为&#xff1a;数字电路区&#xff08;即怕干扰、又产生干扰&#xff09;、模拟电路区(怕干扰)、功率驱动区&#xff08;干扰源&#xff09;&a…...

(css)element中el-select下拉框整体样式修改

(css)element中el-select下拉框整体样式修改 重点代码&#xff08;颜色可行修改&#xff09; // 修改input默认值颜色 兼容其它主流浏览器 /deep/ input::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.50); } /deep/ input::-moz-input-placeholder {color: rgba…...

金融分析-Transformer模型(基础理论)

Transformer模型 1.基本原理 transformer的core是注意力机制&#xff0c;其本质就是编码器-解码器。他可以通过多个编码器进行编码&#xff0c;再把编码完的结果输出给解码器进行解码&#xff0c;然后得到最终的output。 1.1编码器 数据在编码器中会经过一个self-attention的…...

Parcel 常用插件:增强功能与性能的最佳选择

前言 Parcel 是一个现代化的零配置应用打包工具&#xff0c;旨在简化开发流程并提高效率。通过其智能的默认配置和丰富的插件生态系统&#xff0c;Parcel 使得开发者能够轻松应对各种构建需求。虽然 Parcel 在大多数情况下可以开箱即用&#xff0c;但为了满足特定的项目需求&a…...

Vite 与 Webpack 的区别

在前端开发中&#xff0c;构建工具是不可或缺的&#xff0c;Webpack 和 Vite 是当前最流行的选择之一。尽管它们的目标相似&#xff0c;但在实现方式和开发体验上却有显著差异。本文将探讨 Vite 和 Webpack 的主要区别&#xff0c;以便于根据项目需求选择合适的工具。 1. 构建…...

服务器ubuntu重装系统后将原来的用户进行关联

服务器ubuntu重装系统后将原来的用户数据进行关联 关联用户到已存在目录 sudo useradd user_name -m -s /bin/bash -d /home***/name添加sudo权限 vim /etc/sudoers# 文件末尾添加 user_name ALL(ALL:ALL) ALL更改拥有者 sudo chown -R user_name:user_name /home***/na…...

Python模块导入:import与from...import的深度解析

Python模块导入&#xff1a;import与from…import的深度解析 在Python编程中&#xff0c;模块的导入是组织和复用代码的关键环节。Python提供了import和from...import两种常见的模块导入方式&#xff0c;它们在使用方式、命名空间管理、可读性、内存使用等方面各有特点&#x…...

ROS2-humble中指定OpenCV版本进行开发

本地是Ubuntu22.04系统&#xff0c;安装了ROS2-humble&#xff0c;看了下humble自带的OpenCV版本4.5.4&#xff0c;由于DNN模块读取.onnx格式的模型要用OpenCV4.7及以上的版本&#xff0c;于是编译了4.10.0的OpenCV&#xff0c;但开发ROS2节点时&#xff0c;虽然CMake中已经指定…...

如何在 Ubuntu 22.04 上使用 vnStat 监控网络流量

简介 vnStat是一个免费的、开源的、基于控制台的Linux操作系统网络流量监控工具。通过vnStat&#xff0c;你可以在不同的时间段监控网络统计数据。它简单、轻量级&#xff0c;并且消耗的系统资源很小。vnStat允许你按小时、日、月、周和日生成网络流量数据。本教程将向你展示如…...

为什么要使用数据仓库?

现状和需求 大量的企业经营性数据&#xff08;订单&#xff0c;库存&#xff0c;原料&#xff0c;付款等&#xff09;在企业的业务运营系统以及其后台的(事务型)数据库中产生的。 企业的决策者需要及时地对这些数据进行归类分析&#xff0c;从中获得企业运营的各种业务特征&a…...