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

一文解析Kettle开源ETL工具!

ETL(Extract, Transform, Load)工具是用于数据抽取、转换和加载的软件工具,用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。

一、Kettle是什么?

Kettle 是一款开源的 ETL(Extract - Transform - Load)工具,用于数据抽取、转换和加载。它提供了一个可视化的设计环境,允许用户通过简单的拖拽和配置操作来构建复杂的数据处理工作流,能够处理各种数据源和目标之间的数据集成任务,帮助企业将来自不同数据源的数据进行整合,然后加载到数据仓库或其他目标系统中。

Kettle 是用 Java 编写的,这使得它具有很好的跨平台性,可以在多种操作系统上运行,如 Windows、Linux 和 Mac 等。并且由于 Java 的广泛应用,Kettle 可以方便地与其他基于 Java 的系统或工具进行集成。

二、组成部分

Kettle主要由以下几个关键部分组成:

1、转换(Transformation)

转换是Kettle的核心组件之一,主要用于对数据进行各种操作和转换。它的目的是将输入数据按照预先定义的规则进行处理,生成符合要求的输出数据。转换可以被看作是一个数据加工的流水线,数据在这个流水线上依次经过各种处理步骤。

步骤(Step)

1)输入步骤(Input Step)

用于从不同的数据源获取数据。例如,“表输入(Table Input)”步骤可以连接到各种关系型数据库(如MySQL、Oracle等),通过编写SQL查询语句来提取数据。“文本文件输入(Text File Input)”步骤则允许从本地或网络文件系统中的文本文件(如CSV、TXT等格式)读取数据,并且可以设置文件编码、分隔符等参数来正确解析文件内容。

2)转换步骤(Transformation Step)

这是转换中最丰富多样的部分,包含了大量的数据处理操作。比如“过滤记录(Filter Rows)”步骤可以根据用户设定的条件(如某个字段的值大于或小于某个阈值)筛选数据,用于去除不需要的数据。“字段选择(Select Values)”步骤能够选择特定的字段进行保留或排除,还可以对字段进行重命名。“计算器(Calculator)”步骤可以对已有字段进行数学运算、字符串拼接等操作,生成新的字段。

3)输出步骤(Output Step)

负责将经过转换处理后的数据输出到目标位置。例如,“表输出(Table Output)”步骤可以将数据插入或更新到数据库表中,支持多种数据库类型并且可以配置插入或更新的方式。“文本文件输出(Text File Output)”步骤可以将数据以文本文件的形式保存到本地或网络文件系统,用户可以指定文件格式(如CSV、XML等)、文件路径以及文件名等参数。

2、作业(Job)

作业用于对一系列任务进行组织和调度。它可以包含多个转换、其他作业或者其他操作步骤,并且可以定义这些任务的执行顺序和条件。作业更侧重于数据处理流程的整体控制和自动化,比如按照时间顺序或者特定的事件触发数据处理任务。

1)作业项(Job Entry)

转换作业项(Transformation Job Entry)

可以将已经构建好的转换作为一个作业项添加到作业中。这样,作业在执行到这个作业项时,就会启动相应的转换来处理数据。例如,一个作业可以先执行一个从数据库提取原始数据的转换,然后再执行一个对提取的数据进行清洗和转换的转换,通过转换作业项将这两个转换连接在作业流程中。

作业步骤(Job Step)

除了转换作业项,作业还包含其他用于控制流程的步骤。比如“开始(Start)”作业步骤表示作业的开始,“成功(Success)”作业步骤用于标记作业的正常结束,“邮件(Mail)”作业步骤可以在作业执行成功或失败时发送邮件通知相关人员。“等待(Wait)”作业步骤能够设置等待时间或者等待某个条件满足后再继续执行下一个作业项,用于实现任务之间的时间间隔或者同步。

3、存储库(Repository)

存储库是Kettle用于存储和管理对象(如转换、作业、数据库连接等)的地方。它提供了一种集中式的管理方式,方便用户在团队环境中共享和复用数据处理资源。

1)类型:

  • 文件存储库(File Repository)

数据以文件的形式存储在本地文件系统或网络共享文件夹中。这种存储库设置简单,适合小型项目或者个人使用。但是它在团队协作和版本控制方面相对较弱,因为文件的共享和更新可能会导致冲突或者版本混乱。

  • 数据库存储库(Database Repository)

将对象存储在数据库中,通常支持多种数据库类型(如MySQL、PostgreSQL等)。数据库存储库具有更好的安全性、可扩展性和版本控制能力。在团队协作环境中,多个用户可以通过连接到同一个数据库存储库来共享和更新转换和作业,并且可以利用数据库的事务管理来确保数据的一致性和完整性。

4、调度器(Scheduler)

调度器用于安排作业的执行时间和频率。它可以根据用户设定的时间表(如每天几点执行、每周几执行、每月几号执行等)或者特定的事件触发(如文件到达指定目录、数据库表中的数据更新等)来自动启动作业。

实现方式:

Kettle本身提供了一些基本的调度功能,用户可以在作业的属性中设置执行时间和重复周期等参数。此外,还可以将Kettle与外部的专业调度工具(如Linux系统中的cron、Windows系统中的任务计划程序等)结合使用,以实现更复杂和灵活的调度策略。例如,在企业级环境中,可以使用外部调度工具来管理Kettle作业的执行,同时结合监控工具来实时跟踪作业的执行情况。

三、Kettle优缺点:

kettle优点:

1)可视化操作界面:Kettle 提供了直观的图形化界面,用户无需编写大量的代码即可构建复杂的数据处理流程。通过简单的拖拽和配置步骤的属性,就能完成从数据抽取到加载的整个过程,大大降低了数据集成的难度,使得非技术人员也能够相对容易地进行操作。

2)丰富的组件库:它拥有众多的数据处理步骤和插件,涵盖了几乎所有常见的数据操作。例如,有用于数据过滤的步骤、数据排序步骤、数据分组步骤、各种数据格式转换步骤(如日期格式转换、字符串编码转换等),以及用于连接不同类型数据源和目标的步骤,能够满足多样化的数据集成需求。

3)可扩展性和灵活性:可以通过编写自定义插件来扩展Kettle的功能。对于一些特殊的业务需求或者特定的数据处理操作,如果现有的步骤和组件无法满足,可以开发自定义的插件并集成到 Kettle 中。同时,它可以灵活地处理不同规模的数据集成任务,从小型的部门级数据整合到大型企业级的数据仓库加载都能胜任。

4)支持多种数据源和目标:能够处理多种数据源类型。除了常见的关系型数据库,还可以处理文件类型(如文本文件、XML 文件、JSON 文件)、大数据源(如 Hadoop 分布式文件系统 HDFS)以及通过网络接口(如 RESTful API)获取的数据。在目标方面,同样可以将数据输出到多种类型的存储介质中。

kettle缺点

Kettle作为开源的ETL工具,被广泛选择应用,但是它也有十分明显的缺点:

1、性能方面的局限

1)大规模数据处理效率较低 :

当处理海量数据时,Kettle 的性能可能会显著下降。由于它是基于 Java 开发的,数据处理过程中涉及大量的内存操作和中间缓存。例如,在对包含数亿条记录的大型数据库表进行复杂的转换(如多表连接、嵌套子查询转换等)和抽取操作时,可能会出现内存溢出或者处理速度极慢的情况。这是因为 Kettle 在处理数据时,需要将数据加载到内存中的某些数据结构中进行处理,随着数据量的增大,内存消耗会急剧增加。

2)资源消耗问题:

它对系统资源(如 CPU 和内存)的消耗比较大。在运行复杂的工作流时,尤其是包含多个数据密集型的转换步骤和作业任务时,可能会占用大量的 CPU 时间和内存空间。这可能导致在同一台服务器上运行的其他应用程序受到影响,甚至在资源有限的环境中,可能无法顺利完成数据处理任务。

2、功能和灵活性方面的不足

1)高级功能实现复杂:

尽管 Kettle 提供了丰富的基本数据处理步骤,但对于一些非常高级的数据分析和处理功能,实现起来比较复杂。例如,对于复杂的机器学习算法应用或者深度数据挖掘任务,虽然可以通过自定义插件等方式来实现,但这需要开发者具备较高的技术水平,包括熟练掌握 Java 编程和 Kettle的插件开发机制。

2)对实时数据处理支持有限:

在面对实时数据处理场景时,Kettle 的能力相对较弱。它主要侧重于批处理模式的数据抽取、转换和加载,对于像实时流数据的处理(如物联网设备产生的连续数据流、金融交易实时数据等),需要进行大量的定制化开发和额外的配置才能勉强满足需求,而且性能和稳定性也难以保证。

3、维护和管理的困难

1)工作流的复杂性管理:

随着数据处理任务的增加和业务逻辑的复杂化,Kettle 中构建的工作流(包括转换和作业)会变得非常复杂。当需要对这些工作流进行修改或者维护时,例如,当数据源的结构发生变化或者业务规则调整时,要准确地找到需要修改的步骤和作业,并确保修改后的工作流能够正确运行,是一项具有挑战性的任务。因为一个复杂的工作流可能包含众多相互关联的步骤和依赖关系,一处修改可能会影响到整个工作流的其他部分。

4、学习和使用成本较高

1)陡峭的学习曲线:

尽管 Kettle 有可视化的操作界面,但要熟练掌握它并能高效地构建复杂的数据处理工作流,仍然需要花费大量的时间学习。用户需要了解各种数据处理步骤的功能、参数设置,以及如何合理地组合这些步骤来实现特定的业务逻辑。对于没有ETL工具使用经验或者编程基础较弱的用户来说,学习成本会更高。

2)文档和技术支持的局限性:

开源工具的文档通常不如商业软件完善。Kettle 的文档虽然能够提供基本的功能介绍和操作指南,但对于一些复杂的场景和高级功能的解释可能不够详细。而且,在遇到问题时,由于没有像商业软件那样完善的技术支持团队,用户可能需要花费更多的时间在网上搜索解决方案或者在社区中寻求帮助,这可能会导致问题解决的效率较低。

相关文章:

一文解析Kettle开源ETL工具!

ETL(Extract, Transform, Load)工具是用于数据抽取、转换和加载的软件工具,用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。 一、Kettle是什么? Kettle 是一款开源的 ETL&#x…...

微积分复习笔记 Calculus Volume 2 - 3.1

The first 2 chapters of volume 2 are the same as those in volume 1. Started with Chapter 3. 3.1 Integration by Parts - Calculus Volume 2 | OpenStax...

linux环境搭建

1、**连接外网** ssh在192.168.4.x上运行sudo ip link set ens160 down ssh切换到192.168.3.x(外网ip),运行sudo ip route add default via 192.168.2.1 dev ens192 onlink //连接外网 使用完外网后 ssh在192.168.3.x上运行sudo ip link set ens160 up ssh在1…...

黑马程序员Java笔记整理(day05)

1.面向对象编程 2.用法 3.对象是什么 4.对象在计算机中是啥 5.无参与有参构造器 小结: 6.this的作用 7.小结 8.封装 9.小结 10.实体类 11.小结 12.static 13.小结 14.static修饰方法 15.static应用前景 16.几个注意事项 17.java中可以直接用类的名字创建数组,如: M…...

DM达梦管理工具拖出空白区块,无法关闭

1. 出现问题:DM达梦管理工具拖出空白区块,无法关闭。 2. 解决方法 新建查询页,把查询页拖到空白区块里,完全覆盖空白区块。之后空白区块会变成查询页,右上角会出现叉号,点击叉号关闭就行。 3. 后记 达梦…...

Linux系统 异常控制流

文章目录 前言异常1. **中断(interrupt)**2. **陷阱和系统调用(trap)**3. **故障(fault)**4. **终止(abort)** 进程与信号非本地跳转 前言 下面内容大部分来自《深入理解计算机系统…...

Linux环境下配置neo4j图数据库

1.下载安装包 openjdk-11.0.1_linux-x64_bin.tar.gz neo4j-community-4.2.19-unix.tar.gz 2.之前配置好的配置文件 neo4j.conf 3.安装 3.1-jdk11的安装(jdk1.8不够用) 解压缩 tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz修改系统环境变量 打开pro…...

python打包深度学习虚拟环境

今天师兄让我把环境打包发给他,我才知道可以直接打包深度学习虚拟环境,这样另一个人就不用辛辛苦苦的去装环境了,我们都知道有些论文他需要的环境很难装上。比如装Apex,装 DCN,mmcv-full 我现在把3090机子上的ppft虚拟…...

关于IDE的相关知识之一【使用技巧】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于ide使用技巧的相关内容! 关于…...

Redis开发03:常见的Redis命令

1.输入以下命令,启动redis。 sudo service redis-server start 如果你是直接安装在WSL的,搜索栏搜索Ubuntu或者点击左下角Windows图表找到U那一栏,直接打开Ubentu,输入账密后,输入“sudo service redis-server start”…...

[OS] A4-前菜介绍

从你的描述来看,这段话是给你的一些 预备知识 和 mkfs工具的使用 提示,帮助你了解如何构建和管理文件系统,特别是关于 xv6 文件系统的一些基本操作。 我会通过比喻和通俗化的方式逐步解释: 预备知识:xv6 文件系统的基…...

2024农历年余下的数模比赛名单已出炉!

数学建模比赛季又来了!作为一名资深的数学建模辅导老师,我想对你们说:这不仅是挑战智商的时候,也是展现团队合作力、数据分析能力和逻辑思维的最佳舞台!💡 如果你是建模新手,或者想让自己的比赛…...

在开发环境中,前端(手机端),后端(电脑端),那么应该如何设置iisExpress

首先,要想手机端应用能成功请求后端,两个设备至少需在同一个局域网内,且IP地址互通; 因为ajax是http(s)://IP地址端口号的方式请求,但是iisExpress默认是localhost如何解决,并没有IP地址,所以手…...

2.安装docker、docker compose

1. 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm22. 设置阿里云docker-ce镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3. docker-ce 安装 yum install -y docker-ce4. docker-compo…...

windows中idea选择bash作为控制台指令集,但是系统环境变量未在其中生效处理

1. 引言 在windows系统中安装node 以及npm时配置其环境,使用window环境变量的配置方式在系统环境变量设置的地方设置了环境变量如下图1-1,设置后在idea中的控制台通过 echo $PATH 查看环境变量发先跟系统中配置的不一致,而且node -v npm -v指…...

如何通过 ADB 安装 xapk

Android开发这么久,今天发现还能这么操作!😂 记录通过ADB安装xapk、apks的两种方式: 1.ADB命令安装使用APK-Splits技术分包的应用程序 这位大佬的方式步骤较为繁琐,不过兼容性应该较好,亲测成功安装。 2.How to install xapk, apks, or multiple-apks via adb? 这个…...

Docker使用教程

Docker 是一个开源的容器化平台,用于开发、打包和分发应用程序。它允许将应用及其依赖环境打包成容器,从而实现跨平台的便捷部署。下面是一个简单的 Docker 使用教程,涵盖从安装到基本命令的使用。 1. 安装 Docker Windows / MacOS 访问 D…...

我的创作纪念日

一、机缘 成为创作者的初衷是从学习C/C语法与数据结构过程中获得的灵感。在日常学习和项目实践中,我发现这些知识既丰富又复杂,对初学者而言尤为困难。因此,我决定通过博客记录自己的学习过程、解决思路以及代码实现,帮助更多人在…...

软件质量保证——单元测试之白盒技术

笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt,仅供学习交流使用,谢谢。 程序图 程序图定义 程序图P(V,E),V是节点的集合(节点是程序中的语句或语句片段),E是有向边的集合…...

redis中的哨兵

redis中的哨兵 一、哨兵机制的概念二、redis哨兵的部署2.1 docker的安装2.2 编排redis主从节点2.3 配置哨兵节点 三、redis哨兵的选举机制3.1 redis-master宕机之后的情况3.2 重启redis-master后的情况 四、redis哨兵机制的原理4.1主观下线4.2客观下线4.3选举leader节点4.4选出…...

开源对象存储新选择:在Docker上部署MinIO并实现远程管理

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…...

15分钟做完一个小程序,腾讯这个工具有点东西

我记得很久之前,我们都在讲什么低代码/无代码平台,这个概念很久了,但是,一直没有很好的落地,整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来,各大科技公司也都推出了很多 AI 代码助手&#xff…...

houdini肌肉刷pin点的方法

目标:产生gluetoanimation这个属性 主要节点:attribute paint(或者muscle paint) 步骤1: 导入肌肉资产 导入的是rest shape的肌肉 在有侧边栏可以打开display group and attribute list,方便查看group。不同的肌肉块按照muscl…...

Ubuntu20.04安装NVIDIA显卡驱动

Ubuntu20.04安装NVIDIA显卡驱动 参考资料:https://blog.csdn.net/weixin_39244242/article/details/136282614?fromshareblogdetail&sharetypeblogdetail&sharerId136282614&sharereferPC&sharesourceqq_37397652&sharefromfrom_link 成功配置…...

k8s删除网络组件错误

k8s集群删除calico网络组件重新部署flannel网络组件,再部署pod后出现报错不能分配ip地址 plugin type"calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized 出现该问题是因为删除网络组件后,网…...

民锋视角:多元化策略实现资产稳健增长

在全球化经济的推动下,市场呈现出高度的复杂性与多样性。面对不同经济周期和市场动态,民锋以多元化投资策略为核心,帮助投资者在不确定性中实现资产的稳健增长。 一、多元化策略的核心价值 降低单一市场风险 单一资产或市场的表现可能因不可…...

[已解决]Visual Studio 2022中如何同时打开多个项目多个独立窗口

同时运行两个VS2022程序,即点击运行Visual Studio 2022.exe后,再点击运行一次运行Visual Studio 2022.exe,效果如图...

11、PyTorch中如何进行向量微分、矩阵微分与计算雅克比行列式

文章目录 1. Jacobian matrix2. python 代码 1. Jacobian matrix 计算 f ( x ) [ f 1 x 1 2 2 x 2 f 2 3 x 1 4 x 2 2 ] , J [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ] [ 2 x 1 2 3 8 x 2 ] \begin{equation} f(x)\begin{bmatrix} f_1x_1^22x_2\\…...

51c自动驾驶~合集35

我自己的原文哦~ https://blog.51cto.com/whaosoft/12206500 #纯视觉方案的智驾在大雾天还能用吗? 碰上大雾天气,纯视觉方案是如何识别车辆和障碍物的呢? 如果真的是纯纯的,特头铁的那种纯视觉方案的话。 可以简单粗暴的理解为…...

位图和布隆过滤器

目录 一.位图 1.位图的概念 2.位图的实现 3.位图的应用 二.布隆过滤器 1.布隆过滤器的概念 2.布隆过滤器的实现 3.布隆过滤器的优缺点 三.整体代码 1.bitset.h 2.BloomFilter 3.Hash.cpp 一.位图 1.位图的概念 1.面试题 给40亿个不重复的无符号整数,没…...

Java—I/O流

Java的I/O流(输入/输出流)是用于在程序和外部资源(如文件、网络连接等)之间进行数据交换的机制。通过I/O流,可以实现从外部资源读取数据(输入流)或将数据写入外部资源(输出流&#x…...

CSS样式

第一章&#xff1a;CSS类型 1、行内样式 <div style"color:red;font-size:30px;font-weight: 900;font-style: italic;">ABCD</div>注意&#xff1a;行内样式&#xff0c;作用力优先级最高&#xff0c;但是不利于html与css的书写以及修改&#xff0c;会…...

idea_卸载与安装

卸载与安装 卸载1、设置 -> 应用2、查找到应用&#xff0c;点击卸载3、把删除记录和设置都勾选上4、删除其它几个位置的残留 安装1、下载安装包2、欢迎安装 -> Next3、选择安装目录 -> Next4、创建快捷图标和添加到环境变量5、确认文件夹的名称 -> Install6、完成安…...

大数据-237 离线数仓 - 广告业务 需求分析 ODS DWD UDF JSON 串解析

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…...

视觉语言模型(VLM)学习笔记

目录 应用场景举例 VLM 的总体架构包括&#xff1a; 深度解析&#xff1a;图像编码器的实现 图像编码器&#xff1a;视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑&#xff1a;你输入 “生成一张…...

Spring 自调用事务失效分析及解决办法

前言 博主在写公司需求的时候&#xff0c;有一个操作涉及到多次对数据库数据的修改。当时就想着要加 Transactional注解来声名事务。并且由于一个方法中有太多行了&#xff0c;于是就想着修改数据库的操作单独提取出来抽象成一个方法。但这个时候&#xff0c;IDEA 提示我自调用…...

【ROS2】Ubuntu22.04安装ROS humble

一. ROS简介 1.1 什么是ROS ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务&#xff0c;包括硬件抽象&#xff0c;底层设备控制&#xff0c;常用函数的实现&#xff0c;进程间消息传递&#xff0c;以及包管理。ROS的核心思想就是将机器人的软件功能做…...

免费开源的微信开发框架

请求参数 Header 参数 export interface ApifoxModel {"X-GEWE-TOKEN": string;[property: string]: any; } Body 参数application/json export interface ApifoxModel {/*** 设备ID*/appId: string;/*** 是否允许*/enabled: boolean;[property: string]: any; }…...

【第二讲】Spring Boot 3.4.0 新特性详解:新的依赖管理功能

Spring Boot 3.4.0 版本引入了一些显著的改进&#xff0c;其中之一就是新的依赖管理功能。这些改进不仅提升了依赖管理的便利性和一致性&#xff0c;还增强了项目的可维护性和可扩展性。本文将详细介绍 Spring Boot 3.4.0 中新的依赖管理功能&#xff0c;提供具体的使用示例和场…...

CSAPP Cache Lab(缓存模拟器)

前言 理解高速缓存对 C 程序性能的影响&#xff0c;通过两部分实验达成&#xff1a;编写高速缓存模拟器&#xff1b;优化矩阵转置函数以减少高速缓存未命中次数。Part A一开始根本不知道要做什么&#xff0c;慢慢看官方文档&#xff0c;以及一些博客&#xff0c;和B站视频&…...

Vue项目通过Nginx部署多个

1.将Vue项目部署到Nginx根 1.1 修改vue.config.js&#xff0c;默认可以不设置 module.exports {publicPath: / } 1.2 修改index.js&#xff0c;默认可以不设置 export default new Router({...base: "/"... }) 1.3 修改nginx.conf location / {root /usr/shar…...

【React】全局状态管理(Context, Reducer)

以下为知行小课学习笔记。 概述 Context 跨组件共享状态 在 Next 项目&#xff0c;封装 useContext。 AppContext.tsx "use client";import React, {createContext, Dispatch, ReactNode, SetStateAction, useContext, useMemo, useState} from react;type State …...

Docker容器ping不通外网问题排查及解决

Docker容器ping不通外网问题排查及解决 解决方案在最下面&#xff0c;不看过程的可直接拉到最下面。 一台虚拟机里突然遇到docker容器一直访问外网失败&#xff0c;网上看到这个解决方案&#xff0c;这边记录一下。 首先需要明确docker的网桥模式&#xff0c;网桥工作在二层…...

VTK的基本概念(一)

文章目录 三维场景的基本要素1.灯光2.相机3.颜色4.纹理映射 三维场景的基本要素 1.灯光 在三维渲染场景中&#xff0c;可以有多个灯光的存在&#xff0c;灯光和相机是三维渲染场景的必备要素&#xff0c;如果没有指定的话&#xff0c;vtkRenderer会自动创建默认的灯光和相机。…...

【动态规划】股票市场交易策略优化

文章目录 一、问题描述二、解决思路状态转移初始化最终结果 三、代码实现执行流程解析时间和空间复杂度 一、问题描述 我们要解决的是一个关于股票买卖的问题&#xff1a;给定一个股票价格数组 stocks&#xff0c;每一天的价格为数组中的一个元素。我们可以通过买入和卖出的操…...

docker-compose 升级

官方下载地址&#xff1a; https://github.com/docker/compose/releases 下载完放到kali root目录下 # mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose # chmod x /usr/local/bin/docker-compose # docker-compose --version...

node.js @ffmpeg-installer/ffmpeg 桌面推流

//安装npm install --save ffmpeg-installer/ffmpeg //stream.js // 引入所需模块 const ffmpeg require(ffmpeg-installer/ffmpeg); const { exec } require(child_process); // 设置 FFmpeg 路径 const ffmpegPath ffmpeg.path; const rtmpUrl "rtmp://localhost…...

电脑启动需要经历哪些过程?

传统BIOS启动流程 1. BIOS BIOS 启动&#xff0c;BIOS程序是烧进主板自带的ROM里的&#xff0c;所以无硬盘也可以启动。BIOS先进行自检&#xff0c;检查内存、显卡、磁盘等关键设备是否存在功能异常&#xff0c;会有蜂鸣器汇报错误&#xff0c;无错误自检飞快结束。 硬件自检…...

MobaXterm Sessions 批量录入导入,会话批量添加

此脚本用于将服务器批量录入到 MobaXterm 会话 使用方法&#xff1a; 1、将IP列定义在 sessions_ip_list 变量中&#xff08;ssh登录的IP&#xff09; 2、将登录用户定义在 sessions_user 变量中&#xff08;ssh登录的用户&#xff09; 3、将目录名称定义在 folder_name 变…...

ceph的用户管理和cephx认证

用户权限概述 用户格式 参考链接&#xff1a; 权限&#xff1a;https://docs.ceph.com/en/latest/rados/operations/user-management/#authorization-capabilities 用户&#xff1a;https://docs.ceph.com/en/reef/rados/operations/user-management/ ceph的用户格式TYPEID…...