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

SparkSQL数据模型综合实践

文章目录

  • 1. 实战概述
  • 2. 实战步骤
    • 2.1 创建数据集
    • 2.2 创建数据模型对象
      • 2.2.1 创建常量
      • 2.2.2 创建加载数据方法
      • 2.2.3 创建过滤年龄方法
      • 2.2.4 创建平均薪水方法
      • 2.2.5 创建主方法
      • 2.2.6 查看完整代码
    • 2.3 运行程序,查看结果
  • 3. 实战小结

1. 实战概述

  • 在本次实战中,创建一个名为DataModelSpark SQL数据模型对象,用于演示如何加载数据集、过滤数据以及计算统计信息。首先,在项目根目录下创建data目录,并在其中创建了包含员工信息的employees.json文件。然后,创建DataModel对象,并定义spark常量以及三个方法:loadData()filterAge()avgSalary(),分别用于加载数据、过滤年龄大于20岁的员工和计算不同性别的平均工资。最后,在main()方法中调用这些方法来执行数据处理任务。

2. 实战步骤

2.1 创建数据集

  • 在项目根目录创建data目录
    在这里插入图片描述
  • data里创建employees.json
    在这里插入图片描述
{"name": "赵天宇", "gender": "男", "age": "19", "salary": "10000"}
{"name": "钱文博", "gender": "男", "age": "29", "salary": "8000"}
{"name": "孙志强", "gender": "男", "age": "39", "salary": "9000"}
{"name": "李明宇", "gender": "男", "age": "22", "salary": "11000"}
{"name": "周雨涵", "gender": "女", "age": "19", "salary": "14000"}
{"name": "吴美琪", "gender": "女", "age": "35", "salary": "10000"}

2.2 创建数据模型对象

  • 创建net.huawei.practice
    在这里插入图片描述

  • practice子包里创建DataModel对象
    在这里插入图片描述

2.2.1 创建常量

  • DataModel对象里创建spark常量
    在这里插入图片描述
// 获取或创建Spark会话对象                                  
val spark = SparkSession.builder() // 创建Builder对象  .appName("DataModel") // 设置应用程序名称                .master("local[*]") // 运行模式:本地运行                 .getOrCreate() // 获取或创建Spark会话对象                 

2.2.2 创建加载数据方法

  • loadData()方法的需求说明:其主要功能是加载指定路径的文件并生成 DataFrame。方法接受一个字符串类型的参数 filePath,表示文件的路径。执行流程包括使用 spark.read.json(filePath) 方法读取 JSON 文件并创建 DataFrame,然后将生成的 DataFrame 返回给调用者。此方法简化了从文件加载数据到 DataFrame 的过程,提高了数据处理的效率和便捷性。

  • 创建loadData()方法
    在这里插入图片描述

// 加载数据方法                                                
def loadData(): DataFrame = {                            // 加载数据得到数据帧对象                                         val fileDF = spark.read.json("data/employees.json")    // 返回数据帧对象                                             fileDF                                                 
}                                                        

2.2.3 创建过滤年龄方法

  • filterAge() 方法的需求说明:该方法用于过滤 DataFrame 中年龄大于20岁的数据,并将结果打印到控制台。方法接受一个 DataFrame 类型的参数 employeeDF,表示原始 JSON 文件对应的 DataFrame 实例对象。方法不返回任何值(返回类型为 Unit)。核心思路包括使用 DataFrame 的 filter 方法根据条件过滤数据,然后使用 show 方法打印过滤后的结果。此方法简化了数据过滤和展示的过程,有助于快速分析和查看特定条件下的数据。
  • 创建filterAge()方法
    在这里插入图片描述
// 过滤年龄方法                                           
def filterAge(employeeDF: DataFrame): Unit = {      // 过滤年龄大于20岁的员工                                   val filterAgeDF = employeeDF.filter("age > 20")   // 显示过滤后的数据                                       filterAgeDF.show()                                
}                                                   

2.2.4 创建平均薪水方法

  • avgSalary() 方法,其需求是计算并打印 DataFrame 中不同性别的平均收入。方法接受一个 DataFrame 类型的参数 employeeDF,表示原始 JSON 文件对应的 DataFrame 实例对象。方法不返回任何值(返回类型为 Unit)。核心思路包括使用 createOrReplaceTempView 方法将 DataFrame 注册为临时表,然后通过 SQL 查询计算不同性别的平均收入,最后使用 show 方法将结果打印到控制台。此方法简化了数据处理流程,有助于快速分析和展示特定统计信息。
  • 创建avgSalary()方法
    在这里插入图片描述
// 计算平均工资方法                                              
def avgSalary(employeeDF: DataFrame): Unit = {           // 根据输入参数注册临时表                                         employeeDF.createOrReplaceTempView("employee")         // 计算平均工资                                              val avgSalaryDF = spark.sql(                           s"""                                                 |SELECT                                           |  gender, avg(salary) AS avg_salary                 |FROM                                             |  employee                                       |GROUP BY                                         |  gender                                         |""".stripMargin                                  )                                                      // 显示平均工资                                              avgSalaryDF.show()                                     
}                                                        

2.2.5 创建主方法

  • main() 方法,该方法是程序的入口点,用于调用 filterAgeavgSalary 方法。main 方法接受一个 Array[String] 类型的参数 args,这些参数可以在程序执行时从外部传递,使得程序能够动态使用这些参数而无需修改代码。main 方法不返回任何值(返回类型为 Unit)。业务代码的核心思路是首先调用 loadData() 方法加载数据,然后将返回的 DataFrame 传递给 filterAgeavgSalary 方法进行处理。这种方法结构清晰,便于管理和扩展程序功能。
  • 创建main()方法
    在这里插入图片描述
// 主方法                                     
def main(args: Array[String]): Unit = {    // 调用过滤年龄方法                              filterAge(loadData())                    // 调用计算平均工资方法                            avgSalary(loadData())                    
}                                          

2.2.6 查看完整代码

package net.huawei.practiceimport org.apache.spark.sql.{DataFrame, SparkSession}/*** 功能:数据模型演示* 作者:华卫* 日期:2025年01月16日*/
object DataModel {// 获取或创建Spark会话对象val spark = SparkSession.builder() // 创建Builder对象.appName("DataModel") // 设置应用程序名称.master("local[*]") // 运行模式:本地运行.getOrCreate() // 获取或创建Spark会话对象// 加载数据方法def loadData(): DataFrame = {// 加载数据得到数据帧对象val fileDF = spark.read.json("data/employees.json")// 返回数据帧对象fileDF}// 过滤年龄方法def filterAge(employeeDF: DataFrame): Unit = {// 过滤年龄大于20岁的员工val filterAgeDF = employeeDF.filter("age > 20")// 显示过滤后的数据filterAgeDF.show()}// 计算平均工资方法def avgSalary(employeeDF: DataFrame): Unit = {// 根据输入参数注册临时表employeeDF.createOrReplaceTempView("employee")// 计算平均工资val avgSalaryDF = spark.sql(s"""|SELECT|  gender, avg(salary) AS avg_salary|FROM|  employee|GROUP BY|  gender|""".stripMargin)// 显示平均工资avgSalaryDF.show()}// 主方法def main(args: Array[String]): Unit = {// 调用过滤年龄方法filterAge(loadData())// 调用计算平均工资方法avgSalary(loadData())}
}

2.3 运行程序,查看结果

  • 运行DataModel对象
    在这里插入图片描述

3. 实战小结

  • 在本次拓展练习中,我们通过创建一个 SparkSQL 数据模型综合实践项目,深入理解了 Spark 中的数据模型和数据处理流程。首先,我们在项目根目录下创建了 data 目录,并在其中创建了 employees.json 文件,用于存储员工数据。接着,我们创建了 DataModel 对象,并在其中定义了 spark 常量和三个方法:loadData()filterAge()avgSalary(),分别用于加载数据、过滤年龄大于20岁的员工和计算不同性别的平均薪水。在 main() 方法中,我们调用了这些方法来执行数据处理任务。通过这个练习,我们不仅学会了如何在 Spark 中操作 DataFrame,还学会了如何将数据处理逻辑封装成方法,提高了代码的可读性和可维护性。此外,我们还学会了如何使用 SQL 查询来分析数据,这在处理结构化数据时非常有用。总的来说,这个练习帮助我们更好地理解了 SparkSQL 的数据模型和数据处理流程,为今后的数据处理工作打下了坚实的基础。

相关文章:

SparkSQL数据模型综合实践

文章目录 1. 实战概述2. 实战步骤2.1 创建数据集2.2 创建数据模型对象2.2.1 创建常量2.2.2 创建加载数据方法2.2.3 创建过滤年龄方法2.2.4 创建平均薪水方法2.2.5 创建主方法2.2.6 查看完整代码 2.3 运行程序,查看结果 3. 实战小结 1. 实战概述 在本次实战中&#…...

C++实现设计模式---外观模式 (Facade)

外观模式 (Facade) 外观模式 是一种结构型设计模式,为子系统中的一组接口提供一个一致的界面。外观模式定义了一个更高层次的接口,使得子系统更容易使用。 意图 简化复杂子系统的接口。为客户端提供一个统一的入口,屏蔽子系统的内部细节。 …...

计算机网络 (43)万维网WWW

前言 万维网(World Wide Web,WWW)是Internet上集文本、声音、动画、视频等多种媒体信息于一身的信息服务系统。 一、基本概念与组成 定义:万维网是一个分布式、联机式的信息存储空间,通过超文本链接的方式将分散的信息…...

C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等

在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响。然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文档。获取PDF中的字体信息可以解决这个问题,让我们能够更好地处理这些文件。…...

Docker Desktop 中安装 MySQL 并开启远程访问的详细教程

是在 Docker Desktop 中安装 MySQL 并开启远程访问的详细教程: 一、安装 MySQL 容器 拉取 MySQL 镜像: docker pull mysql:latest这将从 Docker Hub 上拉取最新版本的 MySQL 镜像。如果你想使用特定版本的 MySQL,可以将 latest 替换为具体…...

沸点 | 聚焦嬴图Cloud V2.1:具备水平可扩展性+深度计算的云原生嬴图动力站!

近日,嬴图正式推出嬴图Cloud V2.1,此次发布专注于提供无与伦比的用户体验,包括具有水平可扩展性的嬴图Powerhouse的一键部署、具有灵活定制功能的管理控制台、VPC / 专用链接等,旨在满足用户不断变化需求的各项前沿功能&#xff0…...

西门子【Library of Basic Controls (LBC)基本控制库”(LBC) 提供基本控制功能】

AF架构中使用的库 文章目录 Table of contents Legal information ..............................................................................................................................2 1 Introduction ................................................…...

EMQX集群搭建

集群搭建 通过使用 EMQX 集群,您可以在一个或多个节点发生故障时仍然保持集群运行,从而享受到容错和高可用性的好处。 尽管没有严格的上限,但建议在 EMQX 开源版中将集群大小限制为三个节点。仅使用核心类型节点时,较小的集群规模…...

【Flink系列】10. Flink SQL

10. Flink SQL Table API和SQL是最上层的API,在Flink中这两种API被集成在一起,SQL执行的对象也是Flink中的表(Table),所以我们一般会认为它们是一体的。Flink是批流统一的处理框架,无论是批处理&#xff08…...

Java安全—SPEL表达式XXESSTI模板注入JDBCMyBatis注入

前言 之前我们讲过SpringBoot中的MyBatis注入和模板注入的原理,那么今天我们就讲一下利用以及发现。 这里推荐两个专门研究java漏洞的靶场,本次也是根据这两个靶场来分析代码,两个靶场都是差不多的。 https://github.com/bewhale/JavaSec …...

TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG

注:本文为“TCP 连接状态标识”相关文章合辑。 TCP 的状态:SYN, FIN, ACK, PSH, RST, URG 简介及 ACK 确认机制 llzhang_fly 于 2020-09-19 05:25:26 发布 1、TCP 的状态 FLAGS 字段状态 在 TCP 层,有个 FLAGS 字段,这个字段有…...

OSPF的LSA的学习研究

OSPF常见1、2、3、4、5、7类LSA的研究 1、拓扑如图,按照地址表配置,激活OSPF划分相关区域并宣告相关网段 2、1类LSA,每台运行了OSPF的路由器都会产生,描述了路由器的直连接口状况和cost 可以看到R1产生了一条router lsa&#xff0…...

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里,阿杰正在他那充满科技感的实验室里,对着一堆奇奇怪怪的仪器发呆。突然,手机铃声如一道凌厉的剑气划破寂静,原来是工厂的赵厂长打来的紧急电话:“阿杰啊,咱们工厂新…...

wireshark 网络分析工具

✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一、网络截获数据包的基础1、以太网…...

XXL-JOB 加入 GitCode:推动分布式任务调度进阶发展

在当今企业数字化转型加速的时代背景下,任务调度在保障系统高效运行方面的关键作用日益凸显。XXL-JOB 正式加入 GitCode,成为 G-Star 优秀毕业项目,为分布式任务调度领域带来了新的契机与活力,助力企业应对复杂多变的业务需求。 X…...

Java Web开发进阶——WebSocket与实时通信

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,广泛应用于需要实时数据交换的应用程序中。它能够实现服务器与客户端之间的双向通信,避免了传统 HTTP 请求/响应的延迟。结合 Spring Boot,开发实时通信应用变得更加高效与简便。 1. …...

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one(青柠学术插件)的时候,使用插件跳转obsidian中的对应笔记,出现上图情况。(错误中提到的…...

晨辉面试抽签和评分管理系统之十:如何搭建自己的数据库服务器,使用本软件的网络版

晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

分布式数据存储基础与HDFS操作实践(副本)

以下为作者本人撰写的报告,步骤略有繁琐,不建议作为参考内容,可以适当浏览,进一步理解。 一、实验目的 1、理解分布式文件系统的基本概念和工作原理。 2、掌握Hadoop分布式文件系统(HDFS)的基本操作。 …...

Rust:指针 `*T` 和引用 `T`的区别

在 Rust 编程语言中,*T 和 &T 是两种不同类型的指针,它们各自代表了不同的内存访问方式和所有权模型。 *T(原始指针或裸指针): *T 是一个原始指针(也称为裸指针或裸引用),它可以…...

【2025最新版】PCL点云处理算法汇总(C++长期更新版)

博客长期更新,最近一次更新时间为:2025年1月17日。 pcl::copyPointCloud(*cloud, indicesY, *cloud_yboundary);目录 配库常用数据免费下载链接一、点云滤波1、常用滤波器2、采样滤波3、裁剪滤波 二、KD树与八叉树1、KD树2、八叉树 三、点云配准粗配准精…...

换了城市ip属地会变吗?为什么换了城市IP属地不变

当我们跨越城市的界限,从一个地方迁移到另一个地方时,许多日常使用的网络服务和应用程序都会感知到这种变化,其中一个显著的现象就是IP属地的变化。IP属地,即IP地址所在的地理位置信息,它通常与互联网服务提供商&#…...

mysql 如何快速删除表数据

在数据库管理中, 经常会遇到需要删除大量数据的情况. 对于 MySQL 数据库而言, 如何高效快速地删除数据是一个值得深入探讨的问题. 本文将详细介绍几种在 MySQL 中快速删除数据的方法及相关注意事项. delete 语句 delete 语句可以删除符合条件的指定数据, 但是在删除大量数据…...

Windows安装Jenkins——及修改主目录、配置简体中文、修改插件源

一、简介 Jenkinshttps://www.jenkins.io/zh/ Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 二、Windows安装配置Jenkins2.479 2.1、J...

【机器学习:二十二、机器学习项目开发的技巧】

机器学习项目开发的技巧 机器学习项目的开发不仅仅依赖于算法的选择和模型的调优,还需要良好的项目管理技巧和方法论。以下是机器学习项目开发中的关键技巧: 明确需求:在项目启动之前,明确问题定义和业务目标。例如,…...

用python实战excel和word自动化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python实现excel和word自动化--批量处理 前言--需求快要期末了需要,提交一个年级的学生成绩数据,也就是几百份。当前我们收集了一份excel表格&#xf…...

Conda的一些常用命令

以下是Conda的一些常用命令: pip freeze > requirements.txt pip install -r requirements.txt 基本信息查看类 查看conda版本: conda -V 或 conda --version 可以查看当前安装的conda版本。 查看conda帮助信息: conda -h 或 conda --he…...

ESP8266 AP模式 网页配网 arduino ide

ESP8266的AP配网,可以自行配置网络,一个简单的demo,文档最后有所有的代码,已经测试通过. 查看SPIFFS文件管理系统中的文件 账号密码是否存在,如不存在进入AP配网,如存在进入wifi连接模式 // 检查Wi-Fi凭据if (isWiFiConfigured()) {Serial.println("找到Wi-Fi凭据&#…...

《AI与鸿蒙Next:建筑设计可视化的革新力量》

在建筑设计领域,可视化对于呈现设计理念、与客户沟通以及指导施工等环节都至关重要。人工智能与鸿蒙Next图形渲染技术的发展,为建筑设计可视化带来了前所未有的变革与机遇。 人工智能在建筑设计可视化中的作用 快速生成设计方案:人工智能可以…...

Edge Scdn是什么,它如何提升网站安全性与访问速度?

随着网络攻击的日益猖獗,尤其是分布式拒绝服务(DDoS)攻击的频繁发生,如何保护网站的安全性并确保用户的访问体验变得极为重要。Edge Scdn(内容分发网络)作为一种新兴的技术方案,逐渐被越来越多的…...

[Collection与数据结构] PriorityQueue与堆

1. 优先级队列 1.1 概念 前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然…...

C#调用OpenCvSharp实现图像的开运算和闭运算

对图像同时进行腐蚀和膨胀操作,顺序不同则效果也不同。先腐蚀后膨胀为开运算,能够消除小斑点和细小的突出物、平滑图像以及改善边缘;先膨胀后腐蚀为闭运算,能够去除噪点、填补图像孔洞、连接邻近物体和平滑物体边界。   OpenCvS…...

okhttp断点续传

使用 OkHttp 实现断点续传,关键是通过设置 Range 请求头向服务器请求文件的部分内容。下面是详细的实现步骤和示例代码。 步骤 获取文件的总大小:在开始下载前,通常需要知道文件的总大小,可以通过发送一个初始请求来获取。记录已…...

异步 HTTP 请求

fetch 是一个用于进行异步 HTTP 请求的 JavaScript API。 fetch 基本用法 // 使用 fetch 进行 GET 请求 fetch(https://api.example.com/data).then(response > {// 检查响应是否成功if (!response.ok) {throw new Error(Network response was not ok);}// 解析响应数据为…...

仿射密码实验——Python实现(完整解析版)

文章目录 前言实验内容实验操作步骤1.编写主程序2.编写加密模块3.编写解密模块4.编写文件加解密模块 实验结果实验心得实验源码scirpt.pyusefile.py 前言 实验目的 1)初步了解古典密码 2)掌握仿射密码的实现 实验方法 根据下图仿射密码(变换…...

Ubuntu安装K8S

第一步: 安装docker Install Docker #注意docker是早期的名称已经过时了,因此请使用如下命令,一步到位安装docker-ce。 第二步:设置K8S源: (大陆使用aliyun源,大陆外使用google源)…...

C语言初阶习题【29】杨氏矩阵

1. 题目描述——杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 2. 思路 3. 代码实现1 #include<stdio.h>void fin…...

(01)FreeRTOS移植到STM32

一、以STM32的裸机工程模板 任意模板即可 二、去官网上下载FreeRTOS V9.0.0 源码 在移植之前&#xff0c;我们首先要获取到 FreeRTOS 的官方的源码包。这里我们提供两个下载 链 接 &#xff0c; 一 个 是 官 网 &#xff1a; http://www.freertos.org/ &#xff0c; 另…...

从AI生成内容到虚拟现实:娱乐体验的新边界

引言 在快速发展的科技时代&#xff0c;娱乐行业正经历一场前所未有的变革。传统的娱乐方式正与先进技术融合&#xff0c;创造出全新的沉浸式体验。从AI生成的个性化内容&#xff0c;到虚拟现实带来的身临其境的互动场景&#xff0c;科技不仅改变了我们消费娱乐的方式&#xf…...

买入的股票

银行12 工商&#xff0c;建设&#xff0c;农业&#xff0c;中国&#xff0c;招商&#xff0c;交通&#xff0c;邮储&#xff0c;中信&#xff0c;兴业&#xff0c;浦发&#xff0c;平安&#xff0c;光大 保险4&#xff1a;人寿&#xff0c;平安&#xff0c;太平洋&#xff0c…...

Springboot Redisson 分布式锁、缓存、消息队列、布隆过滤器

redisson-spring-boot-starter 是 Redisson 提供的 Spring Boot 集成包&#xff0c;旨在简化与 Redis 的交互&#xff0c;包括分布式锁、缓存、消息队列、布隆过滤器等功能的实现。 Maven 依赖 在 Spring Boot 项目中添加 redisson-spring-boot-starter 依赖&#xff1a; <…...

如何在 Rocky Linux 上安装极狐GitLab?

本文分享如何在 Rocky Linux 操作系统上安装极狐GitLab。 相关资料 极狐GitLab 在各种操作系统下的安装指南官网文档 前提条件 一个安装了 Rocky Linux 操作系统的云服务器 可以查看 /etc/os-release 中的信息&#xff0c;确认操作系统信息&#xff1a; NAME"Rocky …...

50.【8】BUUCTF WEB HardSql

进入靶场 随便输输 上order by ????????&#xff0c;被过滤了,继续找其他也被过滤的关键字 #&#xff0c;-- -&#xff0c;-- 都不行&#xff0c;尝试其他特殊字符后发现and&#xff0c;union&#xff0c;select&#xff0c;空格&#xff0c;都被过滤了 如下 我就不知…...

Shell的运行原理以及Linux中的权限问题

Shell的运行原理 Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel。 而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通。如…...

Maven在Win10上的安装教程

诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要&#xff0c;也可以从官网下载&#xff1a; 第一步&#xff1a;解压文件 第二步&#xff1a;设置环境变量 在系统变量处点击新建&#xff0c;输入变量名MAVEN_HOME&#xff0c;变量值为解压路径&#xff1a; 在系统变…...

服务器数据恢复—EMC存储POOL中数据卷被删除的数据恢复案例

服务器数据恢复环境&故障&#xff1a; EMC Unity 400存储连接了2台硬盘柜。2台硬盘柜上一共有21块硬盘&#xff08;520字节&#xff09;。21块盘组建了2组RAID6&#xff1a;一组有11块硬盘&#xff0c;一组有10块硬盘。 在存储运行过程中&#xff0c;管理员误操作删除了 2组…...

Go语言之路————func

Go语言之路————func 前言1.最基本的方法定义2.方法中参数的传递3.方法中的返回值4.匿名方法5.闭包的概念6.defer关键词 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#…...

基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件

视频教程在我主页简介或专栏里 目录&#xff1a; 提取和分析 .asar 文件 4.1. .asar 文件提取工具 4.1.1. 为什么选择 NPX&#xff1f; 4.2. 提取过程 4.3. 提取 .asar 文件的重要性 4.3.1 关键词 4.3.2 执行关键词搜索 4.3.2.1 使用命令行工具“grep”进行关键词搜索 4.3.2…...

微软与腾讯技术交锋,TRELLIS引领3D生成领域多格式支持新方向

去年 11 月&#xff0c;腾讯推出 Hunyuan3D 生成模型&#xff0c;是业界首个同时支持文字和图像生成 3D 的开源大模型。紧接着不到一个月&#xff0c;微软便发布了全新框架 TRELLIS&#xff0c;加入 3D 资产生成领域的竞争中。TRELLIS 支持多格式输出&#xff0c;包括辐射场、3…...

ubuntu18.04开发环境下samba服务器的搭建

嵌入式linux的发展很快&#xff0c;最近准备在一个新项目上采用新一代的linux核心板&#xff0c;发现linux内核的版本已经更新到5.4以上甚至6.0以上&#xff1b;之前常用的linux内核版本是2.6.4&#xff0c;虽然在某些项目上还能用但是明显跟不上时代的步伐了&#xff0c;所以要…...