【AWS实验】 使用 Lake Formation 设置数据湖

文章目录

    • 实验概览
    • 目标
    • 实验环境
    • 任务 1:探索实验环境
      • 任务 1.1:在 S3 存储桶中创建文件夹
      • 任务 1.2:加载 AWS Cloud9 IDE
      • 任务 1.3:将数据复制到 S3 存储桶
    • 任务 2:设置 AWS Lake Formation
      • 任务 2.1:注册 Amazon S3 存储
      • 任务 2.2:更新权限
      • 任务 2.3:验证数据库和表的权限
      • 任务 2.4:创建数据库
    • 任务 3:使用 AWS Glue 对评论数据进行爬网
      • 任务 3.1:使用爬网程序添加表
      • 任务 3.2:运行爬网程序以将数据添加到表中
      • 任务 3.3:任务验证
    • 任务 4:使用 Athena 查询数据
      • 任务 4.1:更新查询结果位置
      • 任务 4.2:运行查询
    • 任务 5:使用 AWS Lake Formation 策略管理用户
      • 5.1:授予用户访问表的权限
    • 挑战任务:添加数据访问权限受限的用户
      • 挑战解决方案
      • 更新查询结果的存储位置
      • 运行查询
    • 总结
    • 附录

实验概览

您的业务在不断增长,持续跟踪结构化和非结构化数据变得日益困难。您已决定使用 AWS Lake Formation 建立数据湖,因为您可以使用数据湖来控制和审计对其中存储的数据的访问

​ 在本实验中,您将使用 Lake Formation 为大型音乐数据集设置数据湖。创建数据湖后,您可以设置 AWS Glue 爬网程序来确定模式并在 AWS Glue 数据目录中创建一个表。对数据进行爬网后,您可以授予对表的访问权限,然后使用 Amazon Athena 查询数据。

AWS Lake Formation 是一项服务,可帮助您在几天内建立安全的数据湖。数据湖是一个安全的集中式经策管存储库,它以数据的原始形式和可用于分析的形式存储所有数据。利用数据湖,您可以打破数据孤岛并组合不同类型的分析,从而获得见解并指导做出更好的业务决策。

AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务,可帮助客户准备和加载数据以进行分析。您只需在 AWS 管理控制台中执行几个步骤,即可创建并运行 ETL 任务。

Amazon Athena 是一种交互式查询服务,可帮助您使用标准 SQL 分析 Amazon S3 中的数据。Athena 是一项无服务器服务,您无需管理任何基础设施,只需为您运行的查询付费。

目标

  • 创建数据湖和数据库
  • 使用 AWS Glue 对数据进行爬网以创建元数据和表
  • 使用 Athena 查询数据
  • 在 Lake Formation 中管理用户权限

实验环境

在本实验中,已为您预置了 AWS Cloud9 开发环境、AWS Identity and Access Management (IAM) 用户以及 IAM 角色。将使用 AWS 管理控制台预置完成本实验所需的其他资源。

下图显示了为本实验预置的资源以及在实验结束时连接这些资源的方式:

image-20230905091731281

任务 1:探索实验环境

在此任务中,将查看本实验启动时创建的账户资源。之后,将打开 AWS Cloud9 开发环境,并使用 AWS Command Line Interface (AWS CLI) 将数据从公有 Amazon Simple Storage Service (Amazon S3) 存储桶导入到 S3 存储桶。

任务 1.1:在 S3 存储桶中创建文件夹

AWS 管理控制台中,使用 AWS 搜索栏搜索 S3,然后从结果列表中选择该服务。

选择 xxxx-databucket-xxxx 存储桶的名称。

image-20230905092306312

选择 *Create folder*(创建文件夹),然后配置以下各项:

  • Folder name(文件夹名称):review
  • 选择 Create folder(创建文件夹)

image-20230905092528821

在后面的任务中,您需要将数据复制到该文件夹(位于您的 S3 存储桶中)。

复上一步,创建名为 results 的文件夹

results 文件夹用来存储 Athena 查询的结果。

image-20230905092623623

任务 1.2:加载 AWS Cloud9 IDE

借助 AWS Cloud9,您可以通过 Web 浏览器快速访问集成开发环境 (IDE)。要访问 AWS Cloud9,您必须先登录到 AWS 管理控制台。登录后,您便可以直接访问您的开发环境。我们已为您提供用于启动 AWS Cloud9 环境的链接。
image-20230905092906481

此时系统将加载 AWS Cloud9 IDE。IDE 分为三个主要部分,如下图中彩色框所示:

  • 文件编辑器,用红框表示
  • 文件浏览器,用蓝框表示
  • 终端窗口,用绿框表示

image-20230905093058884

可以通过拖动两个部分之间的线来将终端窗口和文件编辑器部分调整到所需的大小,如下图所示。可能需要在整个实验中多次调整各部分大小,具体取决于您所处的步骤。让终端窗口部分大一些,这有助于更轻松地显示命令输出。

image-20230905093121636

任务 1.3:将数据复制到 S3 存储桶

本实验中使用的数据集包含以下列:

  • Song(歌曲):歌曲名称
  • Artist(艺术家):演唱歌曲的歌手或乐队
  • Genre(类型):歌曲的类别或者分类
  • Duration(时长):歌曲时长(以秒为单位)
  • Release_Year(发行年份):歌曲发行年份

命令:在 AWS Cloud9 终端窗口中,运行以下命令,并将 替换为 S3Bucket 值:

aws s3 cp s3://aws-tc-largeobjects/ILT-TF-300-ADVARC-3/lab-4/Music_Data.csv \
s3://<S3Bucket>/review/labstack-2848353a-a5d2-4c70-b586-997e2-databucket-19l1zjaza2l77aws s3 cp s3://aws-tc-largeobjects/ILT-TF-300-ADVARC-3/lab-4/Music_Data.csv \
s3://labstack-2848353a-a5d2-4c70-b586-997e2-databucket-19l1zjaza2l77/review/

注意:要在终端窗口中运行命令,您可能需要按 ENTER 键。

此命令会将音乐数据集复制到您的 S3 存储桶。

已成功将两个文件夹添加到 S3 存储桶,登录到 Cloud9 环境,并将文件添加到最近创建的文件夹中。


任务 2:设置 AWS Lake Formation

在此任务中,将使用 AWS 管理控制台注册数据 S3 路径、创建数据库并为用户提供访问数据湖必需的权限,如下图所示:

image-20230905093754385

返回到显示 AWS 管理控制台的标签页。

AWS 管理控制台中,使用 AWS 搜索栏搜索 AWS Lake Formation,然后从结果列表中选择该服务。

要在 Lake Formation 中创建数据湖,首先定义一个或多个管理员。管理员拥有 Lake Formation 系统的完全访问权限,他们控制初始数据配置和访问权限。在本实验中,您登录所用的用户已经被设置为数据湖管理员。

确保选中 Add myself(添加本人)复选框。

选择 *Get started*(开始使用)。

image-20230905094100813

此时将显示 Administrative roles and tasks(管理角色和任务)页面。

注意:如果没有显示 Welcome to Lake Formation(欢迎使用 Lake Formation)消息框,请按照以下步骤确认您登录所用的用户或角色已经是数据湖的管理员:

在左侧导航窗格的 Administration(管理)部分,选择 Administrative roles and tasks(管理角色和任务)。

确保 Data lake administrators(数据湖管理员)部分中列出了您登录所用的用户或角色。如果您的用户或角色未列出,请使用 Manage Administrators(管理管理员)按钮进行添加。
image-20230905094413657

Database creators(数据库创建者)部分,确保进行了以下配置。如果没有,请进行配置:

  • Principal(主体):IAMAllowedPrincipals。
  • Principal type(主体类型):组
  • Permissions(权限):创建数据库

image-20230905094419791


任务 2.1:注册 Amazon S3 存储

Lake Formation 管理对 Amazon S3 中的指定存储位置的访问。注册要成为数据湖一部分的存储位置。

在控制台左侧的导航窗格中,从 Administration(管理)部分选择 Data lake locations(数据湖位置)。

选择 *Register location*(注册位置)以包含将成为数据湖一部分的 S3 存储位置。

进行以下配置:

注意:将 替换为的 S3Bucket 值。

  • Amazon S3 path(Amazon S3 路径):s3:///review/
LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0s3://LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0/review/
  • IAM role(IAM 角色):选择 xxxx-LakeFormationServiceRole-xxxx 角色
  • 选择 Register location(注册位置)。

image-20230905094930281
image-20230905095016779

任务 2.2:更新权限

Lake Formation 通过灵活的数据库、表和列权限来管理 IAM 用户、角色、Active Directory 用户和组的访问权限。为所选用户授予对一个或多个资源的权限。

在左侧导航窗格的 Permissions(权限)部分中,选择 Data locations(数据位置)。

选择 *Grant*(授权)。

配置以下各项:

  • IAM users and roles(IAM 用户和角色):选择与这些说明左侧的 SignedInRoleName 值相匹配的角色。

注意

  • 您可以复制 SignedInRoleName 值,并将其粘贴到 IAM 用户和角色的搜索字段,以便更容易地识别列表。
  • 将 替换为实验页面左侧的 S3Bucket 值。
  • Storage locations(存储位置):s3:///review/
LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0s3://LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0/review/

选择 *Grant*(授权)。

image-20230905095332879

image-20230905100352664

image-20230905100439529


任务 2.3:验证数据库和表的权限

在左侧导航窗格的 Administration(管理)部分中,选择 Data catalog settings(数据目录设置)。

配置以下各项:

  • 选择 Use only IAM access control for new databases(仅对新数据库使用 IAM 访问控制)。
  • 选择 Use only IAM access control for new tables in new databases(仅对新数据库中的新表使用 IAM 访问控制)。

选择 *Save*(保存)。

注意:如果出现错误消息 You don’t have permissions to access this resource(您无权访问此资源),请忽略。

image-20230905100650518

任务 2.4:创建数据库

在左侧导航窗格的 Data catalog(数据目录)部分中,选择 Databases(数据库)。

选择 *Create database*(创建数据库)。

Lake Formation 会将数据组织到逻辑数据库和表的目录中。它将创建一个或多个数据库,然后在为通用工作流摄取数据期间自动生成表。

image-20230905100909584

配置以下各项:

Name(名称):review-db

注意:将 替换为实验页面左侧的 S3Bucket 值。

  • Location(位置):s3://<S3Bucket>/review/
LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0s3://LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0/review/
  • 选择 Use only IAM access control for new tables in this database(仅对此数据库中的新表使用 IAM 访问控制)

image-20230905101100608

注意:如果出现错误消息未知错误,请忽略,然后继续下一步。

已成功设置具有 S3 存储和数据库的 Lake Formation。

image-20230905101134511


任务 3:使用 AWS Glue 对评论数据进行爬网

在此任务中,将使用 AWS Glue 爬网程序,为之前创建的数据库创建一个 review 表。

image-20230905101232284

任务 3.1:使用爬网程序添加表

爬网程序可连接到数据存储,使用分类器的优先级列表来确定您的数据模式,然后在数据目录中创建元数据表。

AWS 管理控制台中,使用 AWS 搜索栏搜索AWS Glue ,然后从结果列表中选择该服务。

在左侧的导航窗格中,选择展开 Data Catalog(数据目录)并选择 Databases(数据库)> Tables(表)。

选择 Add tables using crawler(使用爬网程序添加表)。

Crawler details(爬网程序详细信息)下,配置以下各项:

  • Name(名称):review-tb

选择 *Next*(下一步)。

在数据源部分下,选择 Add a data source(添加数据源)。

此时将显示 Add data source(添加数据源)对话框。配置以下各项:

  • Data store(数据存储):S3
  • Location of S3 data(S3 数据位置):In this account(在此账户中)
  • S3 path(S3 路径):s3:///review/

注意:将 替换为 S3Bucket 值。

LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0s3://LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0/review/

选择 *Add an S3 data source*(添加 S3 数据源)。

image-20230905102534295

选择 *Next*(下一步)。

image-20230905102618624

IAM role(IAM 角色)下,配置以下各项:

  • Existing IAM role(现有的 IAM 角色):xxxx-AdminGlueServiceRole-xxxx

选择 *Next*(下一步)。

image-20230905102701689

Output configuration(输出配置)下,配置以下各项:

  • Target Database(目标数据库):review-db

Crawler schedule(爬网程序计划)下,对于 Frequency(频率),选择 On demand(按需)

选择 *Next*(下一步)。

image-20230905102830403

查看此页面,然后选择 Create crawler(创建爬网程序)。

image-20230905102905831

image-20230905104518735


任务 3.2:运行爬网程序以将数据添加到表中

运行 review-tb 爬网程序。

选择右侧的 运行爬网程序,它位于 Crawler properties(爬网程序属性)部分的上方。

网络爬取任务可能需要几分钟才能完成。选择页面顶部或 Crawler runs(爬网程序运行)部分中的 刷新图标,获取任务的最新状态。状态的变化顺序应是 Starting(正在开始)>> Stopping(停止)>> Ready(准备)。

image-20230905105126449

image-20230905105151769

image-20230905105238363

image-20230905105357036

image-20230905105453377

任务 3.3:任务验证

任务完成后,查看 Crawler runs(爬网程序运行)部分。表格更改列值更新为 1 table change, 0 partition changes(1 项表格更改,0 项分区更改)。

选择 Crawler runs(爬网程序运行)部分下唯一的条目对应的单选按钮,然后选择 查看 CloudWatch Logs 以查看 Amazon CloudWatch Logs。

image-20230905110137274

image-20230905110242127

此时会打开一个新的浏览器标签页,在其中可以查看日志,包括与数据分类和表创建相关的日志。

查看日志后,返回到该浏览器标签页并打开 AWS Glue 控制台。

在左侧的导航窗格,展开 Data Catalog(数据目录)> 数据库(Databases),并选择 Schema(架构)。

选择 review 的名称对应的文本链接,以显示其架构

注意:要在列表中显示该表,您可能需要刷新页面或清除列表上方的筛选区域。

image-20230905121012424


任务 4:使用 Athena 查询数据

在此任务中,可以使用 Athena 查询编辑器来查看表中的数据。

image-20230905112719545

AWS 管理控制台中,使用 AWS 搜索栏搜索 Athena,然后从结果列表中选择该服务。

在左侧导航窗格中,选择 Workgroups(工作组)。

选择标记为 primary(主)的链接。

选择 Edit(编辑)。

Query result configuration(查询结果配置)部分删除 S3 路径(如果存在)。

选择 Save changes(保存更改)。

image-20230905113302249

任务 4.1:更新查询结果位置

在运行第一个查询之前,需要在 Amazon S3 中设置查询结果位置。

在左侧导航窗格中,选择 Query editor(查询编辑器)。

选择 Settings(设置)选项卡,配置查询结果位置。

选择 Manage(管理)。

此时将显示管理设置页面。

注意:将 替换为实验页面左侧的 S3Bucket 值。

LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0s3://LabStack-2848353a-a5d2-4c70-b586-997e2bcedc2c-d92kScWc5SDn7KnNgbZaZV-0/review/
  • Location of query result(查询结果的位置):s3:///results/

    • 要设置查询结果的位置,您可以选择 Select(选择)图标,然后依次选择s3:///results/和 Select(选择)按钮。
  • 选择 Save(保存)。

image-20230905113842858

image-20230905115108722

任务 4.2:运行查询

警告:如果出现一个横幅,提示您升级 Athena 数据目录,请单击 here(此处),然后选择 Upgrade(升级)。

如果有注释,内容为:To use the AWS Glue Data Catalog with Amazon Athena and Amazon Redshift Spectrum, you must upgrade your Athena Data Catalog to the AWS Glue Data Catalog.Without the upgrade, tables and partitions created by AWS Glue cannot be queried with Amazon Athena or Redshift Spectrum.Click here to upgrade.(要想在 Amazon Athena 和 Amazon Redshift Spectrum 中使用 AWS Glue 数据目录,您必须将 Athena 数据目录升级到 AWS Glue 数据目录。如果不升级,就无法使用 Amazon Athena 或 Redshift Spectrum 查询由 AWS Glue 创建的表和分区。请单击此处进行升级。),则执行以下操作:

  • 单击 here(此处)进行升级。

  • 单击 Upgrade(升级)。

选择 Editor(编辑器)选项卡。

数据部分列出了以下内容:

  • Data source(数据源):AwsDataCatalog
  • Database(数据库):review-db

Tables(表)下列出了 review 表。

将以下命令复制并粘贴到 Query 1(查询 1)选项卡中:

SELECT * FROM review LIMIT 10;

要运行命令,请选择 *Run*(运行)。

结果窗口中将显示 review 表中的前 10 条记录。

注意:如果结果没有出现,请等待 5 分钟,然后重新运行查询。

已成功设置 Athena 查看表中的数据。


任务 5:使用 AWS Lake Formation 策略管理用户

为了保持与 AWS Glue 的向后兼容性,Lake Formation 采用以下初始安全设置:

  • 将 Super 权限授予所有现有数据目录资源上的 IAMAllowedPrincipals 组。
  • 为新数据目录资源启用 Use-only IAM access control(仅使用 IAM 访问控制)设置。

通过这些设置,可以只使用 IAM 策略有效地控制对数据目录资源和 Amazon S3 位置的访问。单独的 Lake Formation 权限无效。

要使用 Lake Formation 权限,请撤消 IAMAllowedPrincipals 的权限。

AWS 管理控制台中,使用 AWS 搜索栏搜索 AWS Lake Formation,然后从结果列表中选择该服务。

在左侧导航窗格的 Administration(管理)部分中,选择 Data catalog settings(数据目录设置)。

取消选中 Use only IAM access control…(仅使用 IAM 访问控制…)对应的两个复选框。

注意:如果出现错误消息 You don’t have permissions to access this resource(您无权访问此资源),请忽略。

选择 Save(保存)。
image-20230905121833919
在左侧导航窗格的 Administration(管理)部分中,选择 Administrative roles and tasks(管理角色和任务)。

Database creators(数据库创建者)部分中,选择 IAMAllowedPrincipals,然后选择撤消(Revoke)。

此时系统将显示撤消权限对话框,其中显示 IAMAllowedPrincipals 具有创建数据库权限。

选择 *Revoke*(撤消)。
image-20230905122000331
在左侧导航窗格的 Permissions(权限)部分中,选择 Data lake permissions(数据湖权限)。

选择资源类型为 Database(数据库)并将 review-db 作为资源的 IAMAllowedPrincipals 主体。

选择 *Revoke*(撤消)。

此时会出现撤消权限对话框,其中显示 IAMAllowedPrincipals 具有 Super 数据库权限。

选择 *Revoke*(撤消)。

image-20230905122441151

重复上述步骤,以撤消资源类型为IAMAllowedPrincipals 主体的 Super 数据库权限。

注意:要显示主体的完整列表,您可能需要刷新页面或清除列表上方的筛选区域。

问题:在 Athena 查询编辑器中运行查询。是否返回了任何结果?失败的原因可能是什么?

5.1:授予用户访问表的权限

在左侧导航窗格的 Permissions(权限)部分中,选择 Data lake permissions(数据湖权限)。

选择页面右上角的 Grant(授权),然后进行以下配置:

  • IAM users and roles(IAM 用户和角色):选择您登录所用的用户或角色。
  • LF-Tags or catalog resources(LF 标签或目录资源):选择 Named data catalog resources(命名的数据目录资源)。
  • Databases(数据库):选择 review-db。
  • Tables - optional(表 – 可选):选择 review。
  • Table permissions(表权限):仅选中 select 对应的复选框。
  • Grantable permissions(可授予的权限):仅选中 select 对应的复选框。

注意:借助这些选项,您可以允许用户或角色对 review 表执行 select 操作。该用户或角色还可以向其他用户或角色授予 select 权限。

选择 *Grant*(授权)。

在 Athena 查询编辑器中运行查询。查询应该会成功。

已成功撤消 IAMAllowedPrincipals 使用 Lake Formation 权限的权限,然后添加了能够访问 Lake Formation 数据库表的权限。


挑战任务:添加数据访问权限受限的用户

testuser 添加权限,以限制该用户对 Song(歌曲)和 Artist(艺术家)列的访问权限。

注意:向该用户添加权限后,使用实验页面左侧的 testuser 凭证登录 AWS 管理控制台,然后验证其对表列的访问权限。

挑战解决方案

在 AWS 管理控制台顶部的搜索栏中,搜索并选择 AWS Lake Formation

在左侧导航窗格的 Permissions(权限)部分中,选择 Data lake permissions(数据湖权限)。

选择页面右上角的 Grant(授权),然后进行以下配置:

IAM users and roles(IAM 用户和角色):testuser
LF-Tags or catalog resources(LF-标签或目录资源):选择 Named data catalog resources(命名的数据目录资源)
Databases(数据库):选择 review-db
Tables - optional(表 – 可选):选择 review
Table permissions(表权限):选择 select
Grantable permissions(可授予的权限):选择 select
Data Permissions(数据权限):选择 Column-based access(基于列的访问权限)
Choose permission filter(选择权限筛选条件):选择包括列
Select columns(选择列):选择 Song 和 Artist

选择 Grant(授权)

退出控制台。

要验证用户 testuser 的有限访问权限,您需要使用 testuser 凭证登录 AWS 管理控制台。这要求您在浏览器中使用新的隐私窗口。

在您首选的浏览器中,打开一个新的隐私、无痕浏览或 InPrivate 窗口。

在这些说明的左侧,复制 LoginURL 的值并将其粘贴到新的隐私浏览器窗口中,以打开 AWS 管理控制台登录页面。

在 AWS 管理控制台登录页面中,对于 IAM user name(IAM 用户名),输入testuser

在这些说明的左侧,复制 testuserPassword 的值并将其粘贴到 Password(密码)字段。

选择 登录

注意:除非另有说明,否则请勿更改区域。

更新查询结果的存储位置

在运行查询之前,您需要在 Amazon S3 中设置查询结果位置。

在 AWS 管理控制台顶部的搜索栏中,搜索并选择 Athena

选择 Settings(设置)选项卡,配置查询结果位置。

选择 Manage(管理)。

此时将显示管理设置页面。

注意:将 替换为实验页面左侧的 S3Bucket 值。

  • Location of query result(查询结果的位置):s3:///results/
  • 选择 Save(保存)。

运行查询

选择 Editor(编辑器)选项卡。

数据部分列出了以下内容:

  • Data source(数据源):AwsDataCatalog
  • Database(数据库):review-db

Table(表)下列出了 review 表。

将以下命令复制并粘贴到 Query 1(查询 1)选项卡中:

SELECT * FROM review LIMIT 10;

要运行命令,请选择 *Run*(运行)。

在结果中,请注意,系统仅返回 Song(歌曲)和 Artist(艺术家)列的数据。


总结

已成功完成以下任务:

  • 创建数据湖和数据库
  • 使用 AWS Glue 对数据进行爬网以创建元数据和表
  • 使用 Amazon Athena 查询数据
  • 在 Lake Formation 中管理用户权限

附录

  • 在 AWS Cloud9 终端窗口中,运行以下 AWS CLI 命令以检索 S3 存储桶名称
dataBucket=$(aws s3api list-buckets --query "Buckets[?contains(Name, 'databucket')].Name" --output text)echo "S3Bucket=$dataBucket"

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于nRF52840 Dongle配合Wireshark对Mesh网络抓包并解析(Nordic)

Mesh网络抓包解析 准备说明配置过滤解密分析 准备 1&#xff09;nRF52840 Dongle 2&#xff09;Mesh节点 3&#xff09;手机作为配网器&#xff08;苹果手机安装nRF Mesh APP&#xff09; 说明 1&#xff09;节点使用的例程目录&#xff1a;nrf5sdkformeshv500src\examples\…

MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)

0x0. 前言 我的 ChatRWKV 学习笔记和使用指南 这篇文章是学习RWKV的第一步&#xff0c;然后学习了一下之后决定自己应该做一些什么。所以就在RWKV社区看到了这个将RWKV World系列模型通过MLC-LLM部署在各种硬件平台的需求&#xff0c;然后我就开始了解MLC-LLM的编译部署流程和…

4.正则提取html中的img标签的src内容

我们以百度贴吧的1吧举例 目录 1 把网页搞下来 2 收集url 3 处理url 4 空的src 5 容错 6 不使用数字作为文件名 7 并不是所有的图片都用img标签表示 8 img标签中src请求下来不一定正确 9 分页 1 把网页搞下来 搞下来之后&#xff0c;双击打开是这样的 2 收…

【数据结构与算法】十大经典排序算法

文章目录 前言一、常见十大排序算法总结1、名词解释2、时间复杂度 二、排序算法与C语言实现1、冒泡排序2、选择排序3、插入排序4、希尔排序5、归并排序6、快速排序7、堆排序8、计数排序9、桶排序10、基数排序 总结 前言 排序算法是《数据结构与算法》中最基本的算法之一。 排序…

智能合约安全,著名的区块链漏洞:双花攻击

智能合约安全&#xff0c;著名的区块链漏洞&#xff1a;双花攻击 介绍: 区块链技术通过提供去中心化和透明的系统彻底改变了各个行业。但是&#xff0c;与任何技术一样&#xff0c;它也不能免受漏洞的影响。一个值得注意的漏洞是双花攻击。在本文中&#xff0c;我们将深入研究…

论文阅读:SERE: Exploring Feature Self-relation for Self-supervised Transformer

Related Work Self-supervised 学习目的是在无人工标注的情况下通过自定制的任务&#xff08;hand-crafted pretext tasks&#xff09;学习丰富的表示。 Abstract 使用自监督学习为卷积网络&#xff08;CNN&#xff09;学习表示已经被验证对视觉任务有效。作为CNN的一种替代…

Bootstrap的行、列布局设计(网络系统设计)

目录 00-基础知识01-等宽列布局02-指定某一列的宽度03-根据内容自动改变列的宽度04-五种预定义列宽度 .col、.col-sm-*、.col-md-*、.col-lg-*、.col-xl-*05-不同视口宽度按不同的分列方案划分06-删除列内容的盒模型的外边距07-超过12列怎么办&#xff1f;08-重新排列各列的顺序…

无人化在线静电监控系统的组成

无人化在线静电监控系统是一种用于检测和监控静电情况的系统&#xff0c;它可以自动地实时监测各个区域的静电水平&#xff0c;并在出现异常情况时发出报警信号。静电监控报警器则是该系统中的一个重要组成部分&#xff0c;用于接收和传达报警信号。 无人化在线静电监控系统通…

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录

待部署的项目包括&#xff1a;前端front&#xff0c;服务提供者backend&#xff0c;服务消费者gateway&#xff0c;注册中心nacos 服务器信息&#xff1a;腾讯云入门级服务器2核2G&#xff08;后续有对服务器进行升级&#xff09; 部署工具&#xff1a;前端使用宝塔部署&#x…

风土是如何影响葡萄酒的?

风土的概念已经伴随我们几个世纪了&#xff0c;它有助于我们理解葡萄酒的生长条件和影响它的质量的因素有哪些。虽然这个术语在葡萄酒中已经存在了1000多年&#xff0c;但在葡萄酒爱好者中仍然被误解&#xff0c;接下来让我们来解释一下有关风土的文化与知识吧。 来自云仓酒庄雷…

K8S的介绍和架构

仅供入门 K8S的介绍和架构 一. 什么是kubernetes二、Kubernetes架构和组件 2.1 核心组件 2.1.1 Kubernetes Master控制组件&#xff0c;调度管理整个系统&#xff08;集群&#xff09;&#xff0c;包含如下组件: a、Kubernetes API Serverb、Kubernetes Schedulerc、Kubernet…

代码随想录笔记--二叉树篇

目录 1--递归遍历 1-1--前序遍历 1-2--中序遍历 1-3--后序遍历 2--迭代遍历 2-1--前序遍历 2-2--后序遍历 2-3--中序遍历 3--二叉树的层序遍历 4--翻转二叉树 5--对称二叉树 6--二叉树最大深度 7--二叉树的最小深度 8--完全二叉树节点的数量 9--平衡二叉树 10-…

CS420 课程笔记 P5 - 内存编辑 数据类型

文章目录 IntroductionData typesBooleansNegative numbers (Signed integers)Floating-point numbers (fractional numbers) Unknown value scansHealth findingFloat finding (Player position hack / Teleport hack) Additional things Introduction 这节课将结束数据类型并…

用Airtest快速实现手机文件读写与删除功能

1. 前言 前几天有同学留言&#xff0c;能不能安排“读写手机文件”的示例。我们今天就来实现这个小功能。 当然&#xff0c;熟悉adb的同学&#xff0c;看到这个需求&#xff0c;肯定很开心&#xff0c;不就是一个 adb push 和 adb pull 嘛&#xff0c;非常简单呀。 确实如此…

行业追踪,2023-08-31

自动复盘 2023-08-31 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

【数据结构】顺序表详解

当我们写完通讯录后&#xff0c;顺序表肯定难不倒你&#xff0c;跟着小张一起来学习顺序表吧&#xff01; 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#x…

Linux_VMware_虚拟机磁盘扩容

来源文章 &#xff1a;VMware教学-虚拟机扩容篇_vmware虚拟机扩容_系统免驱动的博客-CSDN博客 由于项目逐步的完善&#xff0c;需要搭建的中间件&#xff0c;软件越来越多&#xff0c;导致以前虚拟机配置20G的内存不够用了&#xff0c;又不想重新创建新的虚拟机&#xff0c;退…

pg_database中的datlastsysoid

一&#xff0c;关于 pg_database 在 PostgreSQL 中&#xff0c;对于在数据库集群内创建的每个数据库,其关键信息都会被保存到 pg_database 系统表中。 PostgreSQL 确保通过 pg_database 系统表持久化存储每个数据库的属性信息&#xff0c;以方便后续管理和使用。这也让 pg_da…

go锁--读写锁

每个锁分为读锁和写锁&#xff0c;写锁互斥 没有加写锁时&#xff0c;多个协程都可以加读锁 加了写锁时&#xff0c;无法加读锁&#xff0c;读协程排队等待 加了读锁&#xff0c;写锁排队等待 Mutex用来写协程之间互斥等待 读协程使用readerSem等待写锁的释放 写协程使用writer…

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…