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

十四、Hive 视图 Lateral View

作者:IvanCodes
日期:2025年5月20日
专栏:Hive教程

Hive中,我们经常需要不同于原始表结构的方式查看或处理数据。为了简化复杂查询提供数据抽象,以及处理复杂数据类型(如数组或Map),Hive 提供了视图 (View) 和 Lateral View 这样强大的机制

思维导图

在这里插入图片描述
在这里插入图片描述

一、Hive 视图 (View):数据的逻辑窗口

Hive 视图是一个虚拟表,它的内容由一个查询定义。视图本身不存储任何物理数据,而是在被查询时动态执行其定义SELECT语句,并返回结果

视图的优势:

  1. 简化复杂性:将多表连接、复杂函数、聚合封装在视图中,用户只需查询简单的视图。
  2. 数据抽象隐藏底层表物理细节。若底层表结构改变,只需修改视图定义,上层应用可能无需变动
  3. 访问控制:可以创建只暴露部分列或符合特定条件行的视图,增强数据安全性
  4. 逻辑重用相同的查询逻辑定义一次,多处使用,便于维护。

基本视图操作:

(1) 创建视图 (CREATE VIEW)

CREATE VIEW [IF NOT EXISTS] view_name
[(column_list)]
[COMMENT view_comment]
AS SELECT_statement;

示例: 假设有 employees (id, name, department_id, salary) 和 departments (id, name) 表。

CREATE VIEW employee_department_details_view
COMMENT 'Shows employee name, salary, and their department name'
AS
SELECT e.name AS employee_name, e.salary, d.name AS department_name
FROM employees e
JOIN departments d ON e.department_id = d.id;

(2) 查询视图

SELECT * FROM employee_department_details_view WHERE salary > 60000;

(3) 查看视图定义

SHOW CREATE TABLE employee_department_details_view;

(4) 修改视图 (ALTER VIEW)

ALTER VIEW [db_name.]view_name AS SELECT_statement;

格式:

ALTER VIEW employee_department_details_view AS
SELECT e.name AS emp_name, e.salary, d.name AS dept_name, e.id AS emp_id -- 修改了列名并增加了列
FROM employees e
JOIN departments d ON e.department_id = d.id;

(5) 删除视图 (DROP VIEW)

DROP VIEW [IF EXISTS] [db_name.]view_name;

格式:

DROP VIEW IF EXISTS employee_department_details_view;

二、Lateral View:行转列的魔法

有时,我们的Hive表中会包含数组 (ARRAY)映射 (MAP) 这样的复杂数据类型。如果我们希望将这些集合类型中的每个元素键值对 “展开” 成单独的行,以便进行更细致的分析,这时就需要Lateral View

Lateral View 通常与表生成函数 (UDTF, User-Defined Table-generating Function) 一起使用,最常用的 UDTF 就是 explode()explode() 函数可以接收一个数组或Map作为输入,并为数组中的每个元素Map中的每个键值对输出一行

Lateral View 的工作方式:
Lateral View首先将 UDTF 应用基表每一行。然后,它将UDTF的输出行原始的输入行进行连接 (join),形成新的虚拟表行

语法:

SELECT ...
FROM base_table
LATERAL VIEW udtf(expression) table_alias AS column_alias_1 [, column_alias_2, ...];
  • udtf(expression): 表生成函数及其参数,如 explode(array_column)explode(map_column)
  • table_alias: 为 Lateral View 生成的虚拟表指定的别名。
  • column_alias_1, ...: 为 UDTF 输出的列指定的别名。explode(array) 只输出一列,explode(map) 输出两列 (key, value)。

示例1:展开数组
假设有一个表 user_hobbies (user_id INT, hobbies ARRAY)。

-- 假设 user_hobbies 表数据:
-- 1, ['reading', 'hiking']
-- 2, ['coding', 'gaming', 'reading']SELECT user_id, single_hobby
FROM user_hobbies
LATERAL VIEW explode(hobbies) exploded_hobbies_table AS single_hobby;

查询结果将会是:

1, reading
1, hiking
2, coding
2, gaming
2, reading

示例2:展开Map
假设有一个表 product_attributes (product_id INT, attributes MAP<STRING, STRING>)。

-- 假设 product_attributes 表数据:
-- 101, {'color':'red', 'size':'M'}
-- 102, {'material':'cotton', 'brand':'XYZ'}SELECT product_id, attr_key, attr_value
FROM product_attributes
LATERAL VIEW explode(attributes) exploded_attributes_table AS attr_key, attr_value;

查询结果将会是:

101, color, red
101, size, M
102, material, cotton
102, brand, XYZ

三、在视图定义中使用 Lateral View

Lateral View强大之处在于它可以被包含视图的 AS SELECT 定义中。这样,我们就可以创建一个视图永久性地提供这种展开后的数据展现形式

示例:创建一个视图来展示每个用户的单个爱好

CREATE VIEW user_individual_hobbies_view AS
SELECT user_id, single_hobby
FROM user_hobbies
LATERAL VIEW explode(hobbies) exploded_hobbies_table AS single_hobby;-- 后续查询
SELECT * FROM user_individual_hobbies_view WHERE user_id = 1;

四、视图(含Lateral View)的特性与注意事项

  1. 非物化:Hive 视图(包括使用了 Lateral View 的视图)默认不存储实际数据。每次查询时,都会重新执行其定义,确保数据最新
  2. 只读性:通常不能通过视图对底层表进行 INSERT, UPDATE, DELETE 操作。
  3. 性能考量:复杂的视图定义,特别是涉及多个Lateral View深层嵌套时,可能会影响查询性能。需要关注底层表优化 (如分区、分桶)。
  4. ORDER BY 限制:视图定义中的 SELECT 不推荐直接使用 ORDER BY (除非配合 LIMIT)。排序应在最终查询视图时应用。

总结: Hive 视图提供了数据的逻辑抽象层,而 Lateral View 则是处理和转换数组、Map等复杂结构强大工具。将两者结合使用,可以极大地增强数据分析和展现灵活性与便捷性


练习题

背景数据表:

  • products (product_id INT, product_name STRING, category STRING, price DECIMAL(8,2), tags ARRAY)
  • sales (sale_id INT, product_id INT, sale_date STRING, quantity INT, customer_id INT, sale_details MAP<STRING, STRING>)
  • customers (customer_id INT, customer_name STRING, city STRING)

请根据以下表结构和数据自行插入一些样例数据用于测试。
例如:
products 表中一条数据: (1, 'Laptop X', 'Electronics', 1200.00, array('slim', 'powerful', '15-inch'))
sales 表中一条数据: (101, 1, '2023-01-15', 1, 201, map('channel','online', 'promo_code','SAVE10'))

题目:

  1. 创建一个视图 product_basic_info_view,显示所有产品的 product_id, product_name, 和 price
  2. 创建一个视图 product_tags_expanded_view,将 products 表中的 tags 数组展开,每行显示 product_id, product_name 和一个单独的 tag
  3. 创建一个视图 sales_details_expanded_view,将 sales 表中的 sale_details Map展开,每行显示 sale_id, product_id,以及Map中的 detail_keydetail_value
  4. 创建一个视图 electronics_product_tags_view,只显示类别 (category) 为 ‘Electronics’ 的产品的 product_name 和其展开后的每个 tag
  5. 创建一个视图 total_quantity_per_product_view,显示每个 product_name 的总销售数量 (total_quantity)。
  6. 基于第5题的 total_quantity_per_product_view,创建一个新视图 high_sales_products_view,只显示 total_quantity 大于10的产品。
  7. 修改第2题创建的 product_tags_expanded_view,使其额外显示产品的 category
  8. 查看 sales_details_expanded_view 的创建语句。
  9. 假设有一个视图 customer_purchase_channels_view,它通过展开 sales.sale_details (假设其中有 ‘channel’ key) 来显示每个客户 (customer_name) 的购买渠道。请写出创建这个视图的SQL语句 (需要连接 customerssales 表)。
  10. 删除视图 product_basic_info_view

答案

  1. 创建 product_basic_info_view:
CREATE VIEW product_basic_info_view AS
SELECT product_id, product_name, price
FROM products;
  1. 创建 product_tags_expanded_view:
CREATE VIEW product_tags_expanded_view AS
SELECT p.product_id, p.product_name, single_tag
FROM products p
LATERAL VIEW explode(p.tags) exploded_tags_table AS single_tag;
  1. 创建 sales_details_expanded_view:
CREATE VIEW sales_details_expanded_view AS
SELECT s.sale_id, s.product_id, detail_key, detail_value
FROM sales s
LATERAL VIEW explode(s.sale_details) exploded_details_table AS detail_key, detail_value;
  1. 创建 electronics_product_tags_view:
CREATE VIEW electronics_product_tags_view AS
SELECT p.product_name, single_tag
FROM products p
LATERAL VIEW explode(p.tags) exploded_tags_table AS single_tag
WHERE p.category = 'Electronics';
  1. 创建 total_quantity_per_product_view:
CREATE VIEW total_quantity_per_product_view AS
SELECT p.product_name, SUM(s.quantity) AS total_quantity
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.product_name;
  1. 创建 high_sales_products_view:
CREATE VIEW high_sales_products_view AS
SELECT product_name, total_quantity
FROM total_quantity_per_product_view
WHERE total_quantity > 10;
  1. 修改 product_tags_expanded_view:
ALTER VIEW product_tags_expanded_view AS
SELECT p.product_id, p.product_name, p.category, single_tag
FROM products p
LATERAL VIEW explode(p.tags) exploded_tags_table AS single_tag;
  1. 查看 sales_details_expanded_view 的创建语句:
SHOW CREATE TABLE sales_details_expanded_view;
  1. 创建 customer_purchase_channels_view:
CREATE VIEW customer_purchase_channels_view AS
SELECT
c.customer_name,
details.detail_value AS purchase_channel
FROM
customers c
JOIN
sales s ON c.customer_id = s.customer_id
LATERAL VIEW explode(s.sale_details) details_table AS detail_key, detail_value
WHERE details.detail_key = 'channel';
  1. 删除 product_basic_info_view:
DROP VIEW IF EXISTS product_basic_info_view;

相关文章:

十四、Hive 视图 Lateral View

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月20日 专栏&#xff1a;Hive教程 在Hive中&#xff0c;我们经常需要以不同于原始表结构的方式查看或处理数据。为了简化复杂查询、提供数据抽象&#xff0c;以及处理复杂数据类型&#xff08;如数组或Map&#xff09;&#…...

Frp Dockr Mysql内网映射

用 FRP 远程暴露 Mac mini 上的 Docker-MySQL&#xff08;含 Ubuntu frps 安装和 macOS 客户端配置&#xff09; 一、环境说明 服务器&#xff08;公网&#xff09;&#xff1a;Ubuntu 22.04 frps内网设备&#xff1a;macOS (Mac mini) frpc Docker MySQL目标&#xff1a;…...

PHP 扇形的面积(Area of a Circular Sector)

圆形扇区或圆形扇区是圆盘上由两个半径和一个圆弧围成的部分&#xff0c;其中较小的区域称为小扇区&#xff0c;较大的区域称为大扇区。让我们看看这个图&#xff0c;试着找出扇区&#xff1a; 在该图中&#xff0c;绿色阴影部分是扇形&#xff0c;“r”是半径&#xff0c;“th…...

物业后勤小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的物业后勤小程序源码&#xff0c;它为物业管理提供了高效便捷的解决方案。 该源码功能丰富&#xff0c;涵盖房屋认证、家人认证&#xff0c;保障社区居住安全&#xff1b;支持报事报修、装修申请&#xff0c;方便业主与物业沟通&#xff1b;还…...

git基础操作

当远程仓库迁移到一个新的组下面时&#xff0c;你需要在本地仓库中更新远程仓库的URL&#xff0c;以便与新的远程仓库关联。以下是详细步骤&#xff1a; 获取新的远程仓库URL&#xff1a; 首先&#xff0c;你需要从GitLab或相关平台获取新组下的仓库的新URL。通常&#xff0c;仓…...

鸿蒙HarmonyOS 【ArkTS组件】通用属性-背景设置

&#x1f4d1;往期推文全新看点&#xff08;附带最新鸿蒙全栈学习笔记&#xff09; 嵌入式开发适不适合做鸿蒙南向开发&#xff1f;看完这篇你就了解了~ 鸿蒙岗位需求突增&#xff01;移动端、PC端、IoT到底该怎么选&#xff1f; 分享一场鸿蒙开发面试经验记录&#xff08;三面…...

java 在用redis 的时候,如何合理的处理分页问题? redis应当如何存储性能最佳

在 Java 中使用 Redis 处理用户表分页时&#xff0c;需结合其数据结构特性优化存储和查询 1. 数据结构设计 场景需求 用户表字段&#xff1a;id, name, age, register_time&#xff08;注册时间&#xff09;分页要求&#xff1a;按注册时间倒序分页展示&#xff0c;每页 10 条…...

分类预测 | Matlab实现PNN概率神经网络多特征分类预测

分类预测 | Matlab实现PNN概率神经网络多特征分类预测 目录 分类预测 | Matlab实现PNN概率神经网络多特征分类预测分类效果代码功能算法流程程序设计参考资料分类效果 代码功能 该代码实现了一个基于**概率神经网络(PNN)**的多分类任务,核心功能如下: 数据预处理 读取Exce…...

spring-retry

学习链接 【SpringBoot】spring-retry(重试机制) 【Spring】Spring Retry CSDN有点可恶啊&#xff0c;拿着别人的文章&#xff0c;要开VIP才能看...

RTMP协议解析【二】

文章目录 RTMP协议解析【二】RTMP消息消息的格式Basic HeaderMessage HeaderExtended Timestamp RTMP协议解析【二】 本专栏重点负责介绍RTMP协议的理论部分&#xff0c; 跳过定义&#xff0c;协议与其他协议的优缺点对比&#xff0c;协议的拓展与改进&#xff0c;协议的历史发…...

WebGL2混合与雾

混合技术 一、混合基本技术 混合技术就是将两个片元调和&#xff0c;主要通过各种测试将准备进入帧缓冲&#xff08;源片元&#xff09;与帧缓冲中原有片元&#xff08;目标片元&#xff09;按照设定的比例加权计算出最终片元的颜色值 。 两种常用 组合 &#xff1a; 源因子…...

Windows Docker笔记-扩展

docker扩展知识点 开放容器端口 背景&#xff0c;有一个docker Centos7镜像&#xff0c;运行容器后&#xff0c;想要通过22端口远程这个容器 创建容器时开放映射端口&#xff0c;将容器的22端口映射到本地的22端口 docker run -p <宿主机端口>:<容器端口> 镜像名…...

【C++ Primer 学习札记】智能指针

1&#xff09;std::unique_ptr&#xff08;独占所有权&#xff09; 特点&#xff1a; 独占资源的所有权&#xff0c;同一时间只能有一个 unique_ptr 指向特定对象。 不可复制&#xff0c;但可以通过 std::move 转移所有权。 轻量级&#xff0c;几乎无额外开销&#xff08;与…...

【嵌入式人工智能产品开发实战】(二十二)—— 政安晨:改造小智AI开发智能体硬件(案例:移植PowerManager后麦克风不工作)

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 目录 确定你硬件的关键点 案例分析 &#x1f50d; 一、关键代码分析 ✅ 1. power_save_…...

Taro Error: chunk common [mini-css-extract-plugin]

目录 一、问题描述 二、解决方案 一、问题描述 taro项目编译时抛出一下异常&#xff1a; Error: chunk common [mini-css-extract-plugin] Conflicting order. Following module has been added: * css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf…...

【深度学习】多目标融合算法(六):渐进式分层提取模型PLE(Progressive Layered Extraction)

目录 一、引言 二、PLE&#xff08;Progressive Layered Extraction&#xff0c;渐进式分层提取模型&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一…...

ping、tcpping、psping、paping、hping的区别

ping、tcpping、psping、paping、hping的区别 这些工具都是用于网络测试的&#xff0c;但它们在功能和协议上有所不同&#xff0c;适用于不同的场景。 ping 基本功能&#xff1a; 发送ICMP echo请求包&#xff0c;并等待接收echo应答包&#xff0c;从而判断网络是否连通&…...

【Redis8】最新安装版与手动运行版

1. 下载 Redis 百度网盘 2. 解压后直接运行 redis-server.exe 3. 使用安装版 双击 install_redis_service.bat 输入安装路径&#xff08;请提前创建好安装路径&#xff09;后直接回车下一步直接回车即可&#xff0c;因为是使用配置模板文件为默认解压出来的&#xff0c;然后…...

前端(小程序)学习笔记(CLASS 1):组件

1、小程序中组件的分类 小程序中的组件也是由宿主环境提供的&#xff0c;开发者可以基于组件快速搭建出漂亮的页面结构。官方把小程序的组件分为了9大类&#xff0c;分别是&#xff1a; * 视图容器&#xff0c;* 基础内容&#xff0c;* 表单组件&#xff0c;* 导航组件 媒体…...

Python MD5加密算法脚本

基本概念 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种常用的哈希函数&#xff0c;用于将任意长度的数据转换为固定长度的哈希值&#xff0c;通常为128位&#xff08;16字节&#xff09;。 特点 不可逆性&#xff1a;无法从哈希值还原出原始数据。无论原始…...

Python数据分析实战:Pandas高效处理Excel数据指南

目录 引言&#xff1a;为什么选择Pandas处理Excel&#xff1f; 一、环境搭建与数据读取 1.1 基础环境配置 1.2 数据高效载入技巧 二、数据清洗核心战术 三、数据加工实战案例 3.1 销售数据透视分析 3.2 异常值检测 3.3 跨表关联分析 四、性能优化秘籍 4.1 大文件处理…...

使用Starrocks制作拉链表

5月1日向ods_order_info插入3条数据&#xff1a; CREATE TABLE ods_order_info(dt string,id string COMMENT 订单编号,total_amount decimal(10,2) COMMENT 订单金额 ) PRIMARY KEY(dt, id) PARTITION BY (dt) DISTRIBUTED BY HASH(id) PROPERTIES ( "replication_num&q…...

【npm】npm命令大全

掌握 NPM&#xff1a;前端与 Node.js 开发者必备命令大全 NPM (Node Package Manager) 无疑是现代 JavaScript 开发的基石。无论是前端项目还是 Node.js 后端服务&#xff0c;NPM 都扮演着管理依赖、执行脚本、发布模块等关键角色。熟悉并熟练使用 NPM 命令&#xff0c;能够极…...

最新版Chrome浏览器调用ActiveX控件技术——alWebPlugin中间件V2.0.42版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...

32核64G内存的物理机上,Netty理论能承载多少连接?

在 32核64G内存 的机器上&#xff0c;Netty 能承载的连接数取决于 业务场景、配置优化 和 操作系统调优。 以下是详细分析和实测数据参考&#xff1a; 1. 理论估算&#xff08;基于资源限制&#xff09; 资源影响内存每个连接占用 10KB~1MB&#xff08;取决于业务&#xff0…...

对于final、finally和finalize不一样的理解

目录 1、final 1.1、不可变性&#xff08;Immutability&#xff09; 1.2、内存可见性&#xff08;Visibility&#xff09; 1.3、初始化安全&#xff08;Initialization Safety&#xff09; 1.4、禁止重排序&#xff08;Reordering&#xff09; 1、静态常量 2、实例常量 …...

Open CASCADE学习|刚体沿曲线运动实现方法

在三维几何建模中&#xff0c;刚体沿参数化曲线的运动模拟是机械运动仿真、机器人路径规划等领域的核心需求。本文基于Open Cascade几何内核&#xff0c;系统阐述刚体沿曲线运动的实现方法&#xff0c;重点解析标架构建、坐标变换及鲁棒性控制等关键技术。 一、基于标架的刚体运…...

工作流引擎-03-聊一聊什么是流程引擎(Process Engine)?

前言 大家好&#xff0c;我是老马。 最近想设计一款审批系统&#xff0c;于是了解一下关于流程引擎的知识。 下面是一些的流程引擎相关资料。 工作流引擎系列 工作流引擎-00-流程引擎概览 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&#x…...

centos7 p8p1使用ip addr查看时有的时候有两个ip,有的时候只有一个ip,有一个ip快,有一个ip慢

在CentOS 7系统中&#xff0c;网络接口 p8p1 出现IP地址数量变化且访问速度不一致的问题&#xff0c;通常与以下原因相关。以下是逐步排查与解决方案&#xff1a; 1. 检查网络配置文件 可能原因&#xff1a;存在多个配置文件或重复配置&#xff08;如静态IP与DHCP冲突&#xf…...

回溯算法——排列篇

目录 一、全排列 二、全排列II 一、全排列 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<List<Integer>> resultnew ArrayList<>();LinkedList<Integer> pathnew LinkedList<>();boolean[] used;public List<…...

Unity中SRP Batcher使用整理

SRP Batcher 是一种绘制调用优化,可显著提高使用 SRP 的应用程序的性能,SRP Batcher 减少了Unity为使用相同着色器变体的材质准备和调度绘制调用所需的CPU 时间。 工作原理: 传统优化方法通过减少绘制调用次数提升性能,而SRP Batcher的核心理念在于降低绘制调用间的渲染状…...

【JAVA学习】泛型

传统方法不能对加入到集合ArrayList中的数据类型进行约束&#xff0c;遍历的时候需要进行类型转换&#xff0c;如果集合中的数据量较大&#xff0c;对效率有影响。泛型又称参数化类型&#xff0c;是JDK5.0出现的新特性&#xff0c;解决数据类型的安全性问题&#xff0c;在类声明…...

实验分享|基于千眼狼sCMOS科学相机的流式细胞仪细胞核成像实验

实验背景 流式细胞仪与微流控技术&#xff0c;为细胞及细胞核成像提供新的路径。传统流式细胞仪在细胞核成像检测方面存在检测通量低&#xff0c;荧光信号微弱等局限&#xff0c;故某光学重点实验室开发一种基于高灵敏度sCMOS科学相机并集成在自组荧光显微镜的微流控细胞核成像…...

MySQL中的JSON_CONTAINS函数用法

MySQL中的JSON_CONTAINS函数用于检查一个JSON文档&#xff08;目标&#xff09;是否包含另一个JSON文档&#xff08;搜索值&#xff09;。以下是其详细用法&#xff1a; 函数语法​ JSON_CONTAINS(target_json, search_json [, path]) ​target_json​&#xff1a;要检查的目…...

如何在 Windows 11 或 10 上将 DNS 更改为 Cloudflare提供的 DNS 服务

域名解析服务(DNS)对于互联网来说至关重要,因为它使我们能够轻松地通过在浏览器中输入域名来访问网站。DNS 的作用是将域名解析为 IP 地址;你可以将其视为互联网上的电话簿。这是因为互联网上的计算机或服务器是通过 IPv4 或 IPv6(数字格式)来识别的,然而,要用户去记住…...

解除diffusers库的prompt长度限制(SDXL版)

2025-5-21 注&#xff1a;本文只提供思路&#xff0c;没有解决“权重识别”、“BREAK”问题。 要想实现与webui一样的绘图效果与无限prompt&#xff0c;可参考diffusers/examples/community/lpw_stable_diffusion_xl.py 1、上代码 from diffusers import StableDiffusionXLP…...

RISC-V 开发板 MUSE Pi Pro CSI测试,一把点亮ov5647摄像头

视频讲解&#xff1a; RISC-V 开发板 MUSE Pi Pro CSI测试&#xff0c;一把点亮ov5647摄像头 手上正好有一颗ov5674&#xff0c;看了下接口排线都是一致的&#xff0c;硬件条件满足的情况下&#xff0c;剩下的就是驱动软件的问题&#xff0c;直接接上CSI排线 https://bianbu-li…...

Word2Vec模型学习和Word2Vec提取相似文本体验

文章目录 说明Word2Vec模型核心思想两种经典模型关键技术和算法流程优点和局限应用场景 Word2Vec提取相似文本完整源码执行结果 说明 本文适用于初学者&#xff0c;体验Pytorch框架在自然语言处理中的使用。简单了解学习Word2Vec模型&#xff0c;体验其使用。 Word2Vec模型 …...

[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考

目录 一、软件测试的生命周期&#xff08;重点&#xff09; 1、软件测试 & 软件开发生命周期 &#xff08;1&#xff09;需求分析 &#xff08;2&#xff09;测试计划 &#xff08;3&#xff09;测试设计与开发 &#xff08;4&#xff09;测试执行 &#xff08;5&am…...

epoll_wait未触发的小Bug

上次看了一下epoll监听的原理&#xff0c;在Android Jni里使用epoll&#xff0c;来监听Gpio口的变化事件&#xff0c;具体代码如下&#xff1a; 打开 GPIO 文件描述符&#xff0c;因为该文件是内核虚拟出来的&#xff0c;不是实际文件&#xff0c;所以无法使用FileObserver来监…...

Unity异步加载image的材质后,未正确显示的问题

简述&#xff1a; 此问题涉及到Unity的UI刷新机制 问题描述&#xff1a; 如图所示&#xff0c;想要实现在打开新的界面时候&#xff0c;通过修改材质的方式&#xff0c;修改image的显示内容。 明明已经给image添加上材质了&#xff0c;可还是一片空白&#xff1f; 先看看代…...

Python----循环神经网络(Word2Vec)

一、Word2Vec Word2Vec是word to vector的简称&#xff0c;字面上理解就是把文字向量化&#xff0c;也就是词嵌入 的一种方式。 它的核心就是建立一个简单的神经网络实现词嵌入。 其模型仅仅包括输入层、隐藏层和输出层&#xff0c;模型框架根据输入输出的不同&#xff0c;主要…...

Oracle Enqueue Names

Oracle Enqueue Names Enqueue&#xff08;排队锁&#xff09;是Oracle数据库中用于协调多进程并发访问共享资源的锁机制。 This appendix lists Oracle enqueues. Enqueues are shared memory structures (locks) that serialize access to database resources. They can be…...

微服务中API网关作用(统一入口、路由转发、协议转换、认证授权、请求聚合、负载均衡、熔断限流、监控日志)

文章目录 在微服务架构中&#xff0c;API网关主要有以下作用1. 统一入口&#xff1a;作为所有客户端请求的单一入口点&#xff0c;隐藏后端服务的复杂性2. 路由转发&#xff1a;将客户端请求准确路由到适当的微服务&#xff08;如图中的服务A、B、C&#xff09;3. 协议转换&…...

Linux `cat` 命令深度解析与高阶应用指南

Linux `cat` 命令深度解析与高阶应用指南 一、核心功能解析1. 基本作用2. 与类似命令对比二、选项系统详解1. 常用选项矩阵2. 组合使用技巧三、高阶应用场景1. 数据流处理2. 系统维护操作3. 开发调试应用四、安全与权限管理1. 访问控制策略2. 二进制文件处理五、性能优化策略1.…...

融云 uni-app IMKit 上线,1 天集成,多端畅行

融云 uni-app IMKit 正式上线&#xff0c;支持一套代码同时运行在 iOS、Android、H5、小程序主流四端&#xff0c;集成仅需 1 天&#xff0c;并可确保多平台的一致性体验。 融云 uni-app IMKit 在 Vue 3 的高性能加持下开发实现&#xff0c;使用 Vue 3 Composition API&#x…...

VLA模型:自动驾驶与机器人行业的革命性跃迁,端到端智能如何重塑未来?

当AI开始操控方向盘和机械臂&#xff0c;人类正在见证一场静默的产业革命。 2023年7月&#xff0c;谷歌DeepMind抛出一枚技术核弹——全球首个视觉语言动作模型&#xff08;VLA&#xff09;RT-2横空出世。这个能将“把咖啡递给穿红衣服的阿姨”这类自然语言指令直接转化为机器人…...

IP地址详解

IP地址详解(技术向) 一、核心定义 IP地址(Internet Protocol Address)是 网络层逻辑地址,用于在网络中唯一标识设备。本质上是 32位(IPv4)或128位(IPv6)二进制数。 本机的地址为127.0.0.1,主机名:localhost192.168.0.0-192.168.255.255为私有地址,属于非注册地址,…...

C++网络编程入门学习(四)-- GDB 调试 学习 笔记

GDB 调试 学习 笔记 GDB 调试 学习 笔记调试准备启动和退出gdbgdb中启动程序退出gdb查看代码断点调试命令继续运行gdb手动打印信息 自动打印信息单步调试step 可简写 snext 可简写成 nfinish 可简写成 finuntil 可简写成 u 设置变量值 GDB 调试 学习 笔记 学习地址&#xff1a…...

C#面:Server.UrlEncode、HttpUtility.UrlDecode的区别

在C#编程中&#xff0c;Server.UrlEncode 和 HttpUtility.UrlDecode 是两个常用的方法&#xff0c;用于处理URL编码和解码操作。理解它们的区别对于确保数据在Web应用程序中的正确传输和解析至关重要。 Server.UrlEncode 和 HttpUtility.UrlDecode的区别 Server.UrlEncode 和…...