从架构到特性:JuiceFS 企业版首次全面解析

news2024/12/27 12:54:50

大多数用户是通过社区版初次接触 JuiceFS,企业版对大家来说可能比较陌生。与其他开源项目不同的是,JuiceFS 企业版比社区版更早发布,社区版的架构设计大量参考了企业版。对 JuiceFS 用户而言,这意味着社区版具有更加稳定的特性。

**JuiceFS 企业版有哪些特别的功能和服务?和社区版的差异和相同之处又是什么?**今天,借助这篇文章我们将详细为大家介绍,以此帮助用户根据自身需求选择适合的版本。

企业版于 2017 年左右发布,是一个依托于公有云的 SaaS 服务,经过多年的企业客户服务考验;社区版于 2021 年年初在 GitHub 上发布。截至 2023 年 3 月份,JuiceFS 企业版已经迭代到了 4.9 版本并正式发布。

社区版在 2022 年开源 1 周年的时候正式发布了 1.0 版本,这也是 JuiceFS 社区版的第一个长期维护(LTS)版本,目前 1.1 版本正在积极准备中,即将在今年发布。

01-JuiceFS 企业版和社区版的异同

为什么在企业版之外,推出社区版?

定制更灵活:云上分布式文件系统是一种相对较新的产品,面对着不断产生的不同类型的用户需求,开源这种方式可以让用户可以根据自己的需求进行更加灵活的定制,加快产品落地的进程。

同时,我们对开源版本的架构进行了改进。用户可以根据自己的场景选择适合的数据库作为 JuiceFS 的元数据引擎。社区版目前支持多种成熟的数据库,例如 Redis、MySQL、TiKV 等,这些数据库都有很好的生态系统支持。这意味着技术人员可以利用这些成熟的数据库满足特定需求,并与 JuiceFS 完美结合,为他们提供最佳的使用体验。

开放和信任:通过开源这种方式,用户可以更清晰地了解 JuiceFS 的内部工作原理,进而根据自己的场景需求去使用它。这里值得一提的是,JuiceFS 社区版使用的开源许可协议是 Apache 2.0。一些大型企业可能会对 GPL、AGPL 等协议有所顾虑,但 Apache 2.0 是业界公认更为开放的许可协议。我们希望通过选择开放的代码和许可协议,为用户带来更多信心和保障。

迭代更高效:社区版可以让更多的用户参与进来,加速产品迭代。大家的意见经过评估后,如果我们认为这些需求可以放在整个社区版中供大家使用,而不需要每个公司自行定制,那么这些相对通用和重要的需求就会变成官方维护或开发的特性。

企业版和社区版的相同点

首先,一致的用户体验。这不仅表现在外观上,社区版和企业版在底层实现上也实现了代码级的复用

其次,两个版本均支持元数据的导入和导出功能,因此可以实现在社区版和企业版之间迁移元数据。这意味着,对于正在使用社区版的用户,如果想要使用企业版,可以将元数据从社区版导出,并导入到企业版中进行迁移,反之亦然。

第三,两个版本都已经支持了超过 30 种成熟的对象存储。

第四,在存储规模上无论是企业版还是社区版,都可以承载百亿级文件以及百 PB 级数据。对于正在使用社区版的用户,想要达到百亿级文件规模,目前最成熟的方案是使用 TiKV 作为元数据引擎。

第五,社区版和企业版都支持多种访问方式,例如 POSIX、HDFS、CSI 驱动、S3、WebDAV 等。

第六,社区版和企业版都提供了本地数据和元数据的缓存来加速访问,以及相应的缓存预热功能。

第七,两个版本还提供了多种数据安全功能,如回收站、数据加密、数据克隆(即将在社区版 v1.1 中发布)。

最后一个共通点是一些企业级需求,如目录配额、目录用量统计。当文件系统的文件量增长到百亿级别时,企业可能需要定期统计目录的使用情况,以更好地管理文件系统并清理不必要的数据,因此快速对目录进行用量统计是一个很重要的功能。目录配额对于多租户平台的企业来说也非常有用,可以限制不同目录的容量和文件数量。这些功能在企业版中一直存在,而社区版将在 v1.1 中发布。

企业版和社区版的差异

定位:

  • 企业版:面向海量文件、高性能应用场景的分布式文件系统,适用场景如 AI 模型训练、大数据平台分布式计算、高性能计算。

  • 社区版:面向通用场景的分布式文件系统,易于维护和使用,方便定制化,适合热衷参与开源社区建设的团队。

架构:

  • 企业版:为了支撑海量数据存储及高性能访问,在架构上企业版与社区版的最大差异是采用了自研的分布式元数据引擎和分布式缓存。在下文中都会详细介绍。

  • 社区版:用户可根据需求选择合适的数据库作为元数据引擎,社区版暂不支持分布式缓存。

此外,企业版还在以下几个方面提供了一些区别于社区版的特性:

  • 易用性:企业版提供了图形化的管理和运维平台,不论是云服务还是私有部署都可以使用,方便用户更好地维护和使用 JuiceFS。

  • 多云和混合云架构:利用企业版的文件系统镜像功能,帮助用户在不同的云之间或云与机房之间进行自动的数据复制。这样,应用无论处于哪个环境,都能快速访问所需的数据。

  • 用户认证和权限管理:企业版支持 Kerberos、Ranger、POSIX ACL、访问令牌多种认证和权限管理方式。访问令牌是 JuiceFS 企业版独有的功能,可通过令牌统一验证或管理挂载点权限。每个令牌对应读或写操作权限,还可以基于特定IP段实现精细化的权限控制。

  • 数据安全:企业版提供了基于 Raft 日志的数据恢复功能,类似于时间机器的概念。用户可以利用日志记录来还原过去任意时间文件系统的状态,恢复被误修改或误更新的数据,实现数据修复。此外,企业版还提供了集中式的客户端操作审计功能,能够帮助企业对每个客户端的任意操作进行审计,加强企业数据安全。

迭代周期:

  • 企业版:大约每季度发布一个大版本(如 4.9 → 4.10)

  • 社区版:大约每年发布一个大版本(如 1.0 → 1.1),每季度发布一个补丁版本(如 1.0.1 → 1.0.2),同时长期维护一个 LTS 版本。

02- JuiceFS 企业版详解

JuiceFS 企业版架构

企业版的架构和社区版非常相似,都由元数据引擎、数据存储以及客户端这三个部分组成。最大的差异在于企业版中的元数据引擎是自研的分布式存储,它是基于 Raft 共识算法实现,因此其中包含了类似 Leader 和 Follower 这样的角色。对于客户端这一部分,在不同的场景下可能会使用不同的客户端,例如 POSIX、Java SDK、CSI 驱动、S3 网关等。

每个客户端内部都会有本地的元数据缓存和一个分布式数据缓存,这样不同的客户端就可以共同组成一个缓存组,形成一个缓存集群,从而可以缓存更多的数据。

单分区元数据引擎架构

这是单分区元数据引擎的内部架构。在生产环境中,元数据集群至少需要三个节点。这里有一个 Leader 角色和两个 Follower 角色。无论是 Leader 还是 Follower ,元数据都保存在内存中。客户端的读写请求都由 Leader 节点处理,Follower 节点不直接参与请求处理。因此,读取和写入元数据的请求响应都会非常快速。

当 Leader 节点出现故障,比如宕机或网络问题,剩余的两个 Follower 节点会重新选举出一个新的 Leader,然后客户端会自动切换到新的 Leader。整个切换过程很快,通常在秒级别内完成。

为了保持元数据的持久性,每个节点上的元数据修改日志以及内存快照都会写入本地磁盘。因此,元数据在内存中有三个副本,并且在本地磁盘上也有三个副本。同时,JuiceFS 云服务还会定期将这些元数据复制到集群外的其他地方,进一步保证数据的可靠性。

通常来说,我们建议在单分区架构里面存储大概 1~2 亿量级的文件。随着数据量以及文件量级的增长,整个集群的维护成本可能会逐渐变高,因此需要将单分区架构扩展为多分区架构。

多分区元数据引擎架构

如果需要更大的存储规模,例如几十亿甚至上百亿级别的存储需求,可以升级到多分区架构。与单分区架构类似,每个 Raft Group 仍然由一个 Leader 和两个 Follower 组成,只不过不同组的节点之间能够互相感知和通信。

同一个文件系统中不同目录的元数据会均匀地分布到不同的分区中,其中既有自动数据均衡的策略,用户也可以通过手动迁移某些目录的元数据的方式来进行手动数据均衡。

JuiceFS 企业版核心特性

分布式缓存

以模型训练场景为例,在一个模型训练集群中,每个节点都带有内存和 GPU 资源,并挂载了 JuiceFS 文件系统,GPU 节点通过本地的 JuiceFS 客户端获取数据。每个 GPU 节点的内存和磁盘中可能都有一些缓存数据,如果本地缓存未命中,则会访问缓存集群这一层。

缓存集群是一个分布式缓存层,由 JuiceFS 客户端实现。为了满足计算层对于大规模数据吞吐的需求,缓存集群需要配置高网络带宽和高性能、大容量的存储设备(如 NVMe SSD)。如果缓存请求没有在缓存集群这一层命中,请求最终将落到对象存储来获取原始数据。在这个过程中,无论是训练集群还是缓存集群,都需要与 JuiceFS 的元数据服务进行通信。

与传统的文件系统或分布式存储相比,JuiceFS 的分布式缓存有以下几个优势:

首先,高效的热数据管理和访问。JuiceFS 的缓存集群是一个独立的单副本集群,可以动态扩缩容,并且与计算集群和对象存储相互独立。因此,我们将缓存集群定位于需要高性能访问热数据的存储场景。用户可以根据需求灵活配置集群规模、节点磁盘容量和网络带宽等参数,以确保缓存集群能够满足训练集群对热数据访问性能的需求。需要注意的是,通常情况下缓存集群并不会缓存对象存储中的所有数据,因为高性能存储的成本较高,企业需要平衡性能和成本。

其次,多级缓存加速提高训练效率。缓存的读取流程是由快到慢、多级访问,包括内存、本地缓存盘、独立缓存集群等。因此,在训练节点、缓存节点和对象存储之间,都存在多级缓存的访问层级。不论哪一级的缓存命中,都能立即响应读取请求。

文件系统镜像

文件系统镜像功能主要用于需要使用多云或混合云的场景。该功能的主要目的是自动将某个文件系统复制到一个或多个区域,例如复制到异地机房、从公共云复制到私有云或从私有云复制到公共云。

复制不仅仅是一对一的关系,也可以是一对多的关系,因此用户可以配置一个或多个镜像集群,帮助用户更快地将数据复制到不同的地域和环境中,以满足可能存在的异地协作或任务调度需要。

一旦有新的数据写入,就会立即开始同步,确保在最短的时间内同步到一个异地的存储中。架构图左边是原始区域,用户把数据通过 JuiceFS 客户端写入原始区域后,原始区域的元数据和对象存储中的数据会异步复制到镜像区域的元数据集群和对象存储中。这样在镜像区域的客户端就能够直接通过本地的镜像文件系统访问 JuiceFS。

当镜像区域的客户端需要读取数据时,首选的数据源是当前区域的对象存储。但如果由于网络延迟等原因,原始区域对象存储中的数据还没有复制到镜像区域,客户端也可以直接从原始区域获取数据,以确保应用程序能够正常访问到数据。不过,从备用数据源获取数据的效率肯定不如从首选数据源获取高。

数据安全

JuiceFS 企业版提供多种类型、多种维度的方式来保障企业的数据安全,具体包括:

首先,在 JuiceFS 控制台中,提供了基于访问令牌的权限控制能力。用户可以通过令牌限制使用该令牌的用户或团队的读写权限,例如只能访问特定的子目录或只能在特定 IP 地址范围访问,以及允许的操作类型等等,以多维度的方式限制权限。

其次,在大数据场景中,JuiceFS 的 Hadoop SDK 可以与 Kerberos 和 Ranger 集成,以对接企业内部的用户认证和权限管理系统。

第三点是基于元数据集群的 Raft 日志的数据恢复功能,从而避免数据误更新。

最后,JuiceFS 能够集中收集所有客户端的操作并进行审计,审计功能基于 JuiceFS 的访问日志实现。

Web 控制台

JuiceFS 企业版提供了一个 web 界面的控制台,用户可以通过这个控制台管理 JuiceFS 元数据集群以及文件系统。用户可以创建文件系统,并查看文件系统的基本信息,包括文件系统中的目录结构、文件名等等。如果是私有部署企业版,还可以通过控制台管理 JuiceFS 的元数据集群。在上图中,可以看到元数据集群的一些基本信息,例如节点的 IP 地址。

如上图所示,用户可以通过 JuiceFS 控制台管理元数据集群。在控制台上,用户可以查看版本号、角色(例如服务、热备、冷备节点)、CPU、内存、以及存储在文件系统中的文件数量和数据大小等基本信息。此外,用户还可以通过控制台进行一些运维操作,例如升级、重启、查看日志以及元数据服务的日志等。

企业版交付形式

云服务

JuiceFS 云服务类似于公有云上的开箱即用服务,可在全球主流公有云上直接使用。由 Juicedata 提供全托管服务,主要托管元数据引擎,而对象存储由用户自行在云上创建和使用。整个服务的流程和体验都可以实现开箱即用。我们在云服务上提供了 99.95% 的 SLA 保证。

在费用方面,JuiceFS 与其他主流的云存储产品类似,采用弹性容量计费模式。这意味着用户存储在 JuiceFS 中的数据量决定了相应的费用。

JuiceFS 全托管的云服务是一个多租的环境,文件量在一亿左右或更小的应用场景,推荐直接用云服务。

私有部署

如果企业需要存储更大量的数据或追求更高的性能,那么私有部署更为合适。私有部署可以在云上私有 VPC 中部署,也可以在线下的机房进行部署。如果选择在线下的机房进行私有部署,一个非常重要的前提是必须有对象存储。JuiceFS 企业版本身并不包括对象存储。

从用户体验上来说,私有部署和云服务基本上是相同的。在私有部署控制台中,我们提供更多的管理功能,例如创建和运维元数据集群。

在私有部署环境中,JuiceFS 组件都是完全私有部署在用户的环境中,包括元数据引擎。因此,在运维方式方面用户有两种选择。一种是由用户自己运维,Juicedata 提供一个平台让用户可以比较轻松地运维整个 JuiceFS 集群,同时提供技术支持。另一种选择是授权给 Juicedata 代为运维,例如把一些与 JuiceFS 相关的机器的权限开放给 Juicedata。

在计费方式方面,除了与云服务相同的弹性容量计费模式,私有部署还有一个固定容量计费模式。用户可以选择固定容量并获得一个许可证授权。

03- JuiceFS 企业版 4.9 介绍

新增特性

JuiceFS 企业版 4.9 引入了一些新的特性,最大的变化是新增了很多之前企业版没有的子命令,比如 gateway、sync、stats、load。社区版的用户应该对这些命令比较熟悉,因为这些命令在社区版里面早已提供了。现在在企业版 4.9 里面,也使用了很多社区版已经有的命令来对齐功能。

另外一个对齐社区版功能的特性是支持使用多个 bucket 来存储数据。这个功能在社区版中早已存在。一般来说,一个文件系统可能只会对应一个对象存储 bucket。但如果单个 bucket 的存储有限制,比如容量限制或者 QPS 限制等,可能无法满足应用的读写需求。这时,可以用一个文件系统对应多个 bucket,来保证数据能够均匀地分布到不同的 bucket 上。这样,底层的读写带宽或吞吐量就是多个 bucket 的聚合能力,可以更好地实现外部存储的横向扩展。

此外,企业版还有一些独有的功能和改进。例如,可以从控制台上查看每个客户端的挂载参数,这是一个非常有用的功能,管理员可以通过这个功能方便地排查问题。例如,管理员可能想知道某个文件系统被挂载到了哪些节点上,以及每个节点挂载时使用了哪些参数,因为使用不同的参数可能会影响不同的行为。

其次,Java SDK 进行了一些改进,其中包括支持配置 Kerberos 用户映射规则,这对于需要使用 Kerberos 的用户来说是一个很大的进步。此外,SDK 还支持为 Hadoop 应用程序配置独立的缓存集群。

性能及稳定性优化

除了新特性外,还有一些性能和稳定性方面的优化。其中比较重要的是,优化了元数据缓存的性能和内存使用,这个优化实际上加速了元数据的访问。特别是在企业版中,相比社区版,缓存的元数据更多,并且还能保证元数据缓存的一致性。

第二个改进是减少了分布式缓存的读放大问题。分布式缓存可以加速读取性能,但有时可能会导致读放大,4.9 版本进一步优化这个问题。

最后一个改进是数据镜像同步的容错能力。容错非常重要,尤其是在同步大量数据到多个镜像区域时,稳定性和容错能力就显得尤为重要。因此,在 4.9 版本中,我们改进了整体镜像数据同步的容错能力。

04- 企业版的近期规划

第一:外部存储导入并支持缓存加速。许多企业都有大量的存量数据存在外部存储中,如果无法直接快速地将其导入到 JuiceFS 中,则需要先复制数据,这对于某些场景来说并不方便。因此,在 JuiceFS 企业版中,我们最近支持从外部存储导入数据,并同时支持享受 JuiceFS 企业版独有的功能,如缓存加速和分布式缓存等。该功能已经实现,并处于内测阶段。

第二:支持多挂载云盘。这意味着云盘不再局限于单个虚拟机的挂载,而可以在多个虚拟机之间进行共享。一些公有云平台已经支持多挂载云盘的特性,允许多个虚拟机同时挂载同一个云盘,实现存储的共享。

这个功能对于对性能有极致要求的场景非常有帮助,特别是小文件的读写性能。通过将小文件的读写操作完全在高性能云盘上完成,可以实现更高效的数据操作。相比于对象存储,高性能云盘在延迟和整体存储性能方面都有更大的优势。因此,在某些对性能有极端要求的场景中,使用多挂载云盘是非常合适的选择。需要注意的是,该功能目前仍处于内测阶段,正在进一步完善和测试中。

第三:支持 RDMA(RoCE 网络)。这个特性很多用户都提到过,希望利用这些最新的技术,在更好的网络环境或网络硬件下提高网络请求的访问效率。目前,这项功能还在开发中。

如有帮助的话欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

onnx模型转 ncnn 模型全连接层输出shape不对问题解决

1.简述 最近在把paddleocr 中cls分类模型通过ncnn部署框架部署时,发现onnx -> ncnn 模型的转换过程中出现问题。因为之前的项目都是使用ncnn框架部署的,只能去解决模型转换问题了。 2. 问题描述与分析 模型在onnx推理代码上正常,当把模型…

Fabric.js 复制粘贴元素

theme: smartblue 本文简介 点赞 关注 收藏 学会了 当你要复制一个 fabric 的元素时,你考虑到的是什么?是深拷贝当前选中对象再添加到画布中? 其实,fabric.js 提供了一个克隆方法,在 fabric.js 官网的案例里也有这个…

自动驾驶赛道回暖?传统Tier1加速入场,真正赢家正在浮出水面

自动驾驶赛道,在经历过去三年的持续降温之后,正在迎来新一轮上升势头。整合、并购、协作,正在成为新一轮产业周期的关键词。 本周,滴滴自动驾驶与法雷奥签署战略合作及投资意向书,法雷奥将对滴滴自动驾驶进行战略投资…

【VMware】局域网里机器A访问机器B内部的vm虚拟机

一、机器B配置 1、打开机器B上面的VMware,在菜单里找到编辑,在编辑里找到“虚拟网络编辑器” 2、选择 net 项,点击NET设置 3、填写主机端口8090,主机端口不要和其它端口冲突就行,这个端口后面会在机器A上面用到 3.1、…

111.(cesium篇)cesium地球自转

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en">

电脑病毒怎么彻底清理?这3个方法可以解决!

案例&#xff1a;电脑中毒无法正常使用怎么办&#xff1f;怎么清理电脑病毒&#xff1f;如何彻底清除病毒&#xff1f;有没有小伙伴知道解决的方法&#xff1f; 在使用电脑的过程中&#xff0c;我们经常会遇到电脑中病毒的情况&#xff0c;它们能够通过各种渠道感染你的计算机…

搭建服务器环境

如果是刚安装好的操作系统 先安装源里的gcc cmake make 等 apt-get install gcc g make cmake autoconf automake libtool 1.gcc 4.8.2 (1)上传gcc 源码在source/下 把gcc-4.8.2.tar.gz放在/home/download/ cd /home/download/ tar -xzvf gcc-4.8.2.tar.gz cd gcc-4.8.2 (2)安…

[POJO]POJO的设计规范Lombok框架

POJO的设计规范 所有用于声明属性的类&#xff0c;都应该遵循以下规范&#xff1a; 存在无参数构造方法 所有属性都是私有权限&#xff08;private&#xff09;的 添加每个属性对应的Setters & Getters 添加基于所有属性的hashCode()与equals() 必须保证&#xff1a;如…

unity | 动画模块之滚动选项框

一、效果动画 如果不是你们想要的&#xff0c;就省的你们继续往下看了 二、作者的话 对于我来说&#xff0c;计算一大堆数据简直太难了&#xff0c;所以自己想了点方法 三、基本功的要求 需要会使用Scroll View 四、进入正题 1.先做一个scrollView把自己想做的东西放进去…

Ubuntu22.04 VirtualBox

Ubuntu22.04 VirtualBox 通常三种虚拟机网络连入模式 桥接网卡 虚拟网卡连入宿主机所在的路由器&#xff0c;公用一个网关地址&#xff0c;自动分配路由器ip到虚拟网卡上&#xff0c;相当于和物理机一样的地址&#xff0c;在同一网段&#xff0c;其他物理机和这个虚拟机一样…

作为一个前端Leader,当你接到一个项目时,应该如何初始化您的项目

1、分析需求 拿到需求后&#xff0c;不是立马动工&#xff0c;我们需要先了解项目的业务需求和用户需求&#xff0c;并明确项目的范围&#xff0c;包括功能点、时间和预算等&#xff0c;来确定项目需求和范围。 2、技术栈选择 根据项目的需求和范围以及团队成员的技术栈&…

aosp12 framework重大bug:contentprovider获取低概率偶现延时10s问题修复经验分享

问题背景&#xff1a; 在android12的版本上&#xff0c;陆陆续续发现一个低概率偶现的问题&#xff0c;那就是桌面第一次启动会存在显示空白10s以上&#xff0c;正常空白一般在1-2s&#xff0c;在个空白10s以上确实就属于非常严重的问题&#xff0c;但这个是一个低概率偶现问题…

Linux - 第21节 - 网络基础(数据链路层)

1.数据链路层 数据链路层解决的问题&#xff1a; • IP拥有将数据跨网络从一台主机送到另一台主机的能力&#xff0c;但IP并不能保证每次都能够将数据可靠的送到对端主机&#xff0c;因此IP需要上层TCP为其提供可靠性保证&#xff0c;比如数据丢包后TCP可以让IP重新发送数据&am…

SpringBoot使用用户输入的自定义数据源启动【附源码】

一、项目背景 不知道小伙伴们有没有遇到过这样的需求&#xff0c;就是一个项目启动时不知道数据源&#xff0c;需要项目无数据源启动后&#xff0c;用户在画面自定义录入数据源信息&#xff0c;然后项目再初始化数据库链接&#xff0c;初始化管理员用户。最后项目进入正常使用…

cuda2 向量加法

向量加法 向量加法程序解读 #include<stdio.h> #include<cuda.h>typedef float FLOAT; #define USE_UNIX 1 区别不同系统 get thread id 1D block and 2D grid #define get_tid() (block)get block id&#xff0c; 2D gridwarm up 可选的&#xff0c;让gpu先运作…

2023年湖北住建厅八大员怎么考取施工员质量员资料员等岗位???

2023年湖北住建厅八大员怎么考取施工员质量员资料员等岗位&#xff1f;&#xff1f;&#xff1f; 2023年湖北住建厅八大员具体包含哪些岗位呢&#xff0c;可以选择的有施工员&#xff0c;质量员&#xff0c;资料员&#xff0c;材料员&#xff0c;机械员&#xff0c;标准员&…

用python进行办公自动化都需要学习什么知识呢?

本文先来分享Python实现自动化办公需要学什么&#xff0c;从哪里学&#xff01;以及自动化办公技巧的资源整理… 很多非IT职场人&#xff0c;想要把Python用到工作中&#xff0c;却不知道如何下手。其实自动化办公无非就是Excel、PPT、Word、邮件、文件处理、数据分析处理、爬虫…

chatgpt赋能python:Python写模拟器脚本

Python写模拟器脚本 Python是一种强大的编程语言&#xff0c;适用于各种任务&#xff0c;包括模拟器编写。模拟器是一种软件程序&#xff0c;能够模拟硬件或软件系统的行为。这篇文章将介绍Python编写模拟器脚本时需要关注的一些关键点。 为什么选择Python编写模拟器脚本 Py…

Vue+springboot个人博客网站系统的设计与实现3virm

本课题采用Java Web技术来设计开发一个可以发表文章、浏览文章的博客系统。课题主要包括前台博客系统以及后台管理系统&#xff1a;前台博客系统应该具备浏览文章&#xff08;能够实现分类查找、关键字查找、首页推荐等&#xff09;、评论文章&#xff08;用户能够对自己喜爱的…

chatgpt赋能python:Python的几次幂

Python的几次幂 Python是一种适用于多种任务的高级编程语言&#xff0c;可以用于网站开发&#xff0c;数据分析&#xff0c;机器学习以及人工智能等。其优越的设计和灵活的语法使其成为程序员众所周知和喜爱的语言。其中&#xff0c;Python中的乘方运算是其中一个非常常用的算…