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

实训笔记8.23

8.23笔记

  • 8.23笔记
    • 一、Hive中函数
      • 1.1 Hive中内置函数
        • 1.1.1 数学函数
        • 1.1.2 字符串函数
        • 1.1.3 日期函数
        • 1.1.4 条件函数
        • 1.1.5 特殊函数
      • 1.2 Hive的自定义函数
        • 1.2.1 自定义UDF
        • 1.2.2 自定义UDTF
    • 二、Hive的压缩机制
    • 三、数据同步工具Sqoop的安装和使用
      • 3.1 sqoop的概念
      • 3.2 sqoop的核心功能
        • 3.2.1 数据导入import
        • 3.2.2 数据导出export
      • 3.3 sqoop的底层实现
      • 3.4 sqoop的安装和部署
        • 3.4.1 sqoop软件安装三部曲
      • 3.5 sqoop的基本操作
      • 3.6 sqoop的核心功能操作
        • 3.6.1 数据导入import
        • 3.6.2 数据导出
    • 四、相关代码

8.23笔记

一、Hive中函数

Hive主要是用来做统计分析的,函数就是把一些常用的复杂的计算逻辑封装,Hive之所以可以实现统计分析,很大一部分取决于Hive中函数的概念

1.1 Hive中内置函数

1.1.1 数学函数

abs/pow/sqrt/…

1.1.2 字符串函数

  1. concat/concat_ws

  2. split

1.1.3 日期函数

  1. current_date()
  2. date_format(date,format)
  3. datediff(date,date)
  4. date_add(date,day)
  5. date_sub(date,day)

1.1.4 条件函数

  1. if
  2. case

1.1.5 特殊函数

  1. 字符串有关的特殊函数:解析URL类型的字符串的

    1. parse_url
    2. parse_url_tuple
  2. 数组/集合类型有关的函数

    1. array(T...) | map(string key,string value,string key,string value.....)
    2. explode(array/map)---UDTF
    3. collect_set/collect_list(col) --UDAF
    4. split/concat_ws
  3. 侧视图函数lateral view

侧视图函数都是要和UDTF函数结合使用的

lateral view udtf(x...) tableAlias as columnAlias

侧视图的作用就是将普通列的数据和UDTF函数执行完成之后的多行多列的数据做笛卡尔乘积,实现一些普通HQL无法实现的功能

select xxxx from tableA lateral view udtf(x...) tableAlias as columnAlias

  1. 开窗函数

    1. over(partition by 字段 order by 字段 asc|desc rows between 上边界 and 下边界)

      开窗函数的作用就是把表中的数据构建出多个虚拟窗口(窗口其实就是分组),查询表中数据的时候,会识别到数据属于哪个窗口,得到这个窗口相关的一些信息和普通数据列一些返回。

      partition by 的作用就是用来规定以哪个字段进行分组(开窗)

      order by的作用就是对划分的窗口的以指定的字段进行排序

      rows between的作用是为了划分窗口的边界的,每一个窗口默认的边界是 分组中的所有数据,但是窗口也可以是分组的部分行数据。 默认情况下 我们不写边界,默认边界(默认无上边界也无下边界)就是一个组中的所有数据

    2. 开窗函数不能单独使用,开窗函数需要集成一些特殊函数一起使用

      1. first_value(col),last_value(col)

        获取一个窗口中某一列的第一个值或者最后一个值

      2. 排名函数

        1. row_number()

        2. rank()

        3. dense_rank()

          根据当前行数据在窗口的排名 赋予一个排名编号

      3. 聚合函数:

        sum/avg/count/max/min——————获取一个窗口的一个聚合值

    3. 【注意】开窗函数要和一些其他函数结合使用,而其他函数在使用的时候,大部分函数默认的边界都是无上边界和无下边界,而有少部分函数如果没有写窗口边界默认不是无边界,而是有边界的 所以以后大家在使用窗口函数的时候,建议大家最好把窗口边界也给声明上。

1.2 Hive的自定义函数

1.2.1 自定义UDF

1.2.2 自定义UDTF

二、Hive的压缩机制

Hive底层会转换成为MapReduce运行,MapReduce阶段中间都是可以进行压缩的。因此Hive也支持设置压缩机制(也是设置转换的MR程序底层是Map阶段压缩 还是reduce阶段压缩)

Hive底层也可以转换成为Spark或者TEZ程序运行,Spark和TEZ的压缩和Mapreduce的压缩是不一样的。

三、数据同步工具Sqoop的安装和使用

3.1 sqoop的概念

在大部分常见的软件中,比如淘宝、拼多多…,网站都会产生大量的数据 电商网站:订单数据、商品数据、分类数据、用户信息数据、用户行为数据等等 课程网站:订单数据、视频数据、课程数据、用户信息数据等等 … 虽然说不同领域的数据格式和数据含义不一样,但是他们都有一个公共点:数据大部分都是在RDBMS关系型数据库进行存放的。如果我们要对某一个领域的数据进行大数据的统计分析,首先我们必须先把数据从非大数据环境同步到大数据环境中。 大部分数据都是在RDBMS存放的,大数据环境大部分都是HDFS、Hive、HBase。我们需要把RDBMS的数据同步到大数据环境中。

SQOOP软件是Apache开源的顶尖项目,sqoop 被设计用来在RDBMS和Hadoop(Hive、HDFS、HBase)之间进行数据传输的工具 因此sqoop的适用场景限制就非常大,因此这个技术基本很少更新了。软件基本已经从apache退役

3.2 sqoop的核心功能

3.2.1 数据导入import

指的是将数据从RDBMS(MySQL\ORACLE\SQL SERVER)导入到Hadoop环境(HDFS、HBASE、Hive)中

导入的作用就是将数据从非大数据环境导入到大数据环境通过大数据技术做统计分析的

3.2.2 数据导出export

指的是将数据从Hadoop环境(HDFS、Hive、HBase)导出到RDBMS中

将数据统计分析完成得到结果指标,指标在大数据环境存放的,如果对指标做可视化展示,数据在大数据环境下很难进行可视化展示的,因此我们需要把数据从大数据环境导出到非大数据环境RDBMS中进行可视化展示等后续操作

3.3 sqoop的底层实现

sqoop技术也是Hadoop生态的一部分,因为Sqoop进行导入和导出数据时,需要编写针对的导入和导出命令,但是这个命令底层也会转换成为MapReduce程序进行运行。

SQOOP运行基于MapReduce和YARN进行运行

3.4 sqoop的安装和部署

因此sqoop底层是基于Hadoop的,因此sqoop也是安装一个单节点的即可,sqoop也是提供了一个可以导入和导出数据的命令行客户端

3.4.1 sqoop软件安装三部曲

  1. 上传解压
  2. 配置环境变量
  3. 修改软件的配置文件——————sqoop-env.sh文件
  4. sqoop的特殊配置
    1. sqoop可以数据把数据在大数据和非大数据环境之间进行迁移的,非大数据环境主要是RDBMS关系型数据库
    2. sqoop连接RDBMS 底层也是基于JDBC进行连接的,因此如果要使用sqoop连接rdbms,我们需要把对应数据库的jdbc驱动程序jar包放到sqoop的lib目录下
    3. 需要把mysql-connector-java,jar 放到sqoop的lib目录下即可

3.5 sqoop的基本操作

  1. sqoop查看RDBMS中有哪些数据库 sqoop list-databases
  2. sqoop查看某一个数据库下有哪些数据表 sqoop list-tables
  3. 还可以通过sqoop执行sql语句 sqoop eval --query "sql"

需要跟数据库的连接参数
–connect jdbcurl
–username 用户名
–password 密码

3.6 sqoop的核心功能操作

3.6.1 数据导入import

指的是将数据从RDBMS关系型数据库导入到Hadoop环境中(HDFS、Hive、HBase)

  1. 将RDBMS的数据导入到HDFS中 不常用

    1. HDFS导入时连接的RDBMS的参数

      参数说明
      –driver
      –connect
      –username
      –password
      [–table]导入哪张数据表的数据
      [–columns]导入指定数据表的指定列的数据
      [–query]根据查询语句的结果导入数据
      [–where]筛选条件,根据指定的条件导入数据
    2. HDFS导入的参数

      参数名说明
      –target-dir导入到HDFS上的路径
      –delete-target-dir如果HDFS的路径存在 提前删除
      [–as-textfile|sequencefile…]导入到HDFS上的文件的格式
      –num-mappers指定导入的时候底层MapReduce启动多少个Map Task运行
      –fields-terminated-by指定导入的文件列和列的分隔符
      –lines-terminated-by指定导入的文件的行和行的分割符
    3. 导入数据表的所有数据到HDFS:

      sqoop import --driver com.mysql.cj.jdbc.Driver --connect 'jdbc:mysql://single:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8' --username root --password Root123456.. --table student --target-dir /import --delete-target-dir --fields-terminated-by '=' --num-mappers 1 --as-sequencefile
      
    4. 导入数据表的指定列的数据到HDFS:

       sqoop import --driver com.mysql.cj.jdbc.Driver --connect 'jdbc:mysql://single:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8' --username root --password Root123456.. --table student --columns student_name,student_age --target-dir /import --delete-target-dir  --fields-terminated-by ',' --num-mappers 1 --as-textfile
      
    5. 根据查询语句导入指定的数据到HDFS:

      1. --table table_name --where "条件" 只能导入一张表的数据

        sqoop import --driver com.mysql.cj.jdbc.Driver --connect 'jdbc:mysql://single:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8' --username root --password Root123456.. --table student --columns student_name,student_age --where "student_age<40"  --target-dir /import --delete-target-dir  --fields-terminated-by ',' --num-mappers 1 --as-textfile
        
      2. --query "" 可以通过连接查询同时导入多张表的数据

        sqoop import --driver com.mysql.cj.jdbc.Driver --connect 'jdbc:mysql://single:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8' --username root --password Root123456.. --query 'select * from student where student_age<40 and $CONDITIONS'  --target-dir /import --delete-target-dir  --fields-terminated-by ',' --num-mappers 1 --as-textfile
        
  2. 将RDBMS的数据导入到Hive数据表中常用

    1. 导入参数

      1. HDFS导入时连接的RDBMS的参数

        参数名说明
        –driver
        –connect
        –username
        –password
        [–table]导入哪张数据表的数据
        [–columns]导入指定数据表的指定列的数据
        [–query]根据查询语句的结果导入数据
        [–where]筛选条件,根据指定的条件导入数据
      2. 导入到Hive中的参数

        参数名说明
        –hive-import指定将数据导入到Hive的数据表,而非HDFS或者HBase
        –hive-database指定将数据导入到Hive的哪个数据库中
        –hive-table指定将数据导入到Hive的哪个数据表中
        –create-hive-table如果Hive表没有提前存在,那么这个选项必须添加,会根据导入的数据自动推断创建Hive数据表,但是如果Hive中的数据表已经存在,那么这个参数一定不能添加
      3. 如果我们将RDBMS中的数据导入到Hive中,有两种导入模式

        1. 全量导入

          第一次导入RDBMS的数据到Hive中

          1. 将RDBMS对应的数据表中的数据全部导入Hive中
          2. --hive-overwrite 将上述指定的数据全部到Hive对应的数据表,数据表会清空
        2. 增量导入 非第一次导入RDBMS数据到Hive

          1. 将RDBMS数据表对应增加的新的数据导入到Hive中

          2. 增量导入又分为两种方式:一种根据自增id导入,第二种根据一个时间戳增量导入

          3. 根据RDBMS数据表的自增id导入:

            参数名说明
            –check-column rdbms数据表的自增列名
            –incremental append
            –last-value上一次导入的自增的值的最后一个
          4. 根据RDBMS数据表的一个时间字段导入:

            参数名说明
            –check-column rdbms数据表的时间列
            –incremental lastmodified
            –last-value“上一次导入的最后一条数据的时间戳”
    2. 全量导入

      如果要做全量导入,Hive的数据表可以不用提前存在,使用create-hive-table自动创建即可

      sqoop import --driver com.mysql.cj.jdbc.Driver --connect 'jdbc:mysql://single:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8' --username root --password Root123456.. --table student --hive-import --hive-database test --hive-table student --create-hive-table
      
    3. 增量导入如果要做增量导入,Hive数据表必须提前存在,而且还具备RDBMS对应数据表的历史数据

      1. 按照自增id增量导入

        sqoop import --driver com.mysql.cj.jdbc.Driver --connect 'jdbc:mysql://single:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8' --username root --password Root123456.. --table student --hive-import --hive-database test --hive-table student --check-column student_id  --incremental append --last-value 5
        
      2. 按照创建时间增量导入hive-import目前还不支持时间戳增量的方式

    4. 注意:如果将数据导入到Hive中,sqoop一共做了两步操作:

      1、先通过MR程序把数据上传到HDFS上

      2、使用hive的load装载命令将上传到HDFS上的数据文件加载到数据表中 sqoop操作Hive的时候,需要Hive的依赖,但是sqoop默认是没有hive的编程依赖的,因此sqoop迁移数据到hive会报错,如果不想报错,那么我们需要把hive-common.jar包复制到sqoop的lib目录下。

3.6.2 数据导出

四、相关代码

-- 时间日期函数
select date_sub("2022-10-1",2);create table student_score(student_id int,student_name string,student_class int,student_score double
);insert into student_score values(1,"zs",1,80.0),(2,"ls",1,90.0),(3,"ww",1,100.0),(4,"ml",1,85.0),(5,"zsf",2,80.0),(6,"zwj",2,70.0),(7,"qf",2,60.0);
select * from student_score;
-- 查询每一个学生的成绩,并且还要获取同一个班级的学生和前一个学生的成绩的差值
select a.*,abs(a.student_score-a.front_score) as score_diff 
from(select *, first_value(student_score) over(partition by student_class order by student_id asc rows between 1 preceding and current row) as front_scorefrom student_score
) as a-- 查询每一个学生的成绩,同时还要获取同一个班级每一个学生和班级最高分的差值。
-- 对于这个案例,窗口的边界是一组中的所有数据,而非一个组中的部分数据。
-- 如果窗口的边界是族中的所有数据,那么我们需要设置窗口的上边界和下边界都是无边界状态
select * ,abs(student_score-(max(student_score) over(partition by student_class rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING)))  as score_diff
from student_score;select * ,last_value(student_score) over(partition by student_class rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING)  as score_diff
from student_score;

相关文章:

实训笔记8.23

8.23笔记 8.23笔记一、Hive中函数1.1 Hive中内置函数1.1.1 数学函数1.1.2 字符串函数1.1.3 日期函数1.1.4 条件函数1.1.5 特殊函数 1.2 Hive的自定义函数1.2.1 自定义UDF1.2.2 自定义UDTF 二、Hive的压缩机制三、数据同步工具Sqoop的安装和使用3.1 sqoop的概念3.2 sqoop的核心功…...

2023年菏泽市中职学校技能大赛“网络安全”赛项规程

2023年菏泽市中职学校技能大赛 “网络安全”赛项规程 一、赛项名称 赛项名称&#xff1a;网络安全 赛项所属专业大类&#xff1a;信息技术类 二、竞赛目的 通过竞赛&#xff0c;检验参赛选手对网络、服务器系统等网络空间中各个信息系统的安全防护能力&#xff0c;以及分析…...

Android 13 - Media框架(6)- NuPlayer

上一节我们通过 NuPlayerDriver 了解了 NuPlayer 的使用方式&#xff0c;这一节我们一起来学习 NuPlayer 的部分实现细节。 ps&#xff1a;之前用 NuPlayer 播放本地视频很多都无法播放&#xff0c;所以觉得它不太行&#xff0c;这两天重新阅读发现它的功能其实很全面&#xff…...

机器学习|DBSCAN 算法的数学原理及代码解析

机器学习&#xff5c;DBSCAN 算法的数学原理及代码解析 引言 聚类是机器学习领域中一项重要的任务&#xff0c;它可以将数据集中相似的样本归为一类。DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种是一种经典的密度聚类…...

用NUXT.JS,轻松搞定SEO!

nuxt.js 是什么&#xff1f; 如果你正在准备开发一个SEO友好的新项目&#xff0c;而且准备用 vue 开发&#xff0c;那么恭喜你&#xff0c;用 nuxt 是一个成本和效率都比较优秀的方案。 官方文档 知识中心案例 简单介绍下背景&#xff0c;这是一个专门为氚云低代码平台引流…...

什么是电商RPA?电商RPA能解决什么问题?电商RPA实施难点在哪里?

RPA机器人可以应用于各个行业和领域&#xff0c;例如金融、保险、制造、物流、电商等。它可以减少人工错误和重复工作&#xff0c;提高效率和生产力。RPA还可以在处理大量数据时加快处理速度&#xff0c;提供更准确和可靠的结果。此外&#xff0c;RPA还可以为员工提供更有价值的…...

【BUG】Docker启动MySQL报错

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…...

Spring Boot通过企业邮箱发件被Gmail退回的解决方法

这两天给我们开发的Chrome插件&#xff1a;Youtube中文配音 增加了账户注册和登录功能&#xff0c;其中有一步是邮箱验证&#xff0c;所以这边会在Spring Boot后台给用户的邮箱发个验证信息。如何发邮件在之前的文章教程里就有&#xff0c;这里就不说了&#xff0c;着重说说这两…...

Windows使用MobaXterm远程访问ubuntu20.04桌面

参考ubuntu 2020.4 安装vnc 一、脚本文件 remote_setup.sh脚本文件内容&#xff1a; #! /bin/bash #参考链接&#xff1a;https://blog.csdn.net/hailangdeyingzi/article/details/124507304 sudo apt update sudo apt install x11vnc -y sudo x11vnc -storepasswd telpo.12…...

C++注释风格

1. 文件头注释 每个文件都应该开始于一个注释块&#xff0c;描述文件的目的、作者、创建日期和版权信息。 /** FileName: MyClass.cpp* Purpose: Provides functionality for XYZ operations.* Author: [Your Name]* Creation Date: YYYY-MM-DD* Last Updated: YYYY-MM-DD* C…...

Linux 编译内核模块出现--Unknown symbol mcount

文章目录 Linux suse&#xff1a; # cat /etc/os-release NAME"SLES" VERSION"12-SP2" VERSION_ID"12.2" PRETTY_NAME"SUSE Linux Enterprise Server 12 SP2" ID"sles" ANSI_COLOR"0;32" CPE_NAME"cpe:/o:s…...

Pywin32 Cookbook by Eric

Writing Prompt 现在你是一名专业的Python工程师&#xff0c;请你根据"Pywin32_Funtion"函数的功能&#xff0c;为其编写一个清晰的文档说明Functions win32gui.GetWindowDC(hwnd) 描述 win32gui.GetWindowDC()函数用于获取指定窗口的设备上下文&#xff08;Devi…...

indexDB入门到精通

前言 由于开发3D可视化项目经常用到模型&#xff0c;而一个模型通常是几m甚至是几十m的大小对于一般的服务器来讲加载速度真的十分的慢&#xff0c;为了解决这个加载速度的问题&#xff0c;我想到了几个本地存储的。 首先是cookie,cookie肯定是不行的&#xff0c;因为最多以只…...

Ubuntu 20.04配置静态ip

ip配置文件 cd /etc/netplan配置 根据需求增加 # Let NetworkManager manage all devices on this system network:version: 2renderer: NetworkManager # 管理 不是必须ethernets:enp4s0: #网卡名dhcp4: no #关闭ipv4动态分配ip地址dhcp6: no #关闭ipv6动态分配…...

Tushare入门小册

Tushare入门小册 一、Tushare平台介绍 Pro版数据更稳定质量更好了&#xff0c;我们提供的不再是直接从互联网抓取&#xff0c;而是通过社区的采集和整理存入数据库经过质量控制后再提供给用户。但Pro依然是个开放的&#xff0c;免费的平台&#xff0c;不带任何商业性质和目的…...

<c++开发>通信工具 -之-SOME/IP移植部署 第一篇文章

&#xff1c;c开发&#xff1e;通信工具 -之-SOME/IP移植ubuntu部署 第一篇文章 一 前言 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种通信协议&#xff0c;主要用于嵌入式系统和车载网络中的服务导向通信。SOME/IP是AUTOSAR&#xff08;AUTomotive Open …...

权威的软件测试服务供应商分享,怎么获得软件安全检测报告?

我们深知在如今的数字化时代&#xff0c;软件安全对于企业和个人来说具有极其重要的意义。然而&#xff0c;许多用户对于软件安全测试报告的概念还不够清晰&#xff0c;也不知道如何获得这样的报告。在本文中&#xff0c;小编将为您简析什么是安全测试报告以及如何获取这样的报…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——假设——第二节——搭桥假设

文章目录 第二节 假设-分类1-搭桥假设-当题干推理存在明显断点,常见形式比如:“因为A→B,C→D,所以A→D”,则正确选项为“B→C”真题(2014-39)-假设-分类1-题干推理存在明显断点-搭桥假设-建模搭桥-“因为A→B,所以A→C”,搭桥假设为“B→C”真题(2019-44)-假设-分…...

百度云BOS云存储的图片如何在访问时,同时进行格式转换、缩放等处理

前言 之前做了一个图片格式转换和压缩的服务&#xff0c;结果太占内存。后来查到在访问图片链接时&#xff0c;支持进行图片压缩和格式转换&#xff0c;本来想着先格式转换、压缩图片再上传到BOS&#xff0c;现在变成了上传后&#xff0c;访问时进行压缩和格式转换。想了想&am…...

go生成文件md5、sha1摘要简单示例

备注 go官方文档 https://pkg.go.dev/crypto/md5 已经给出如何使用该package生成文件或者字节数组的摘要值&#xff0c; 参照即可。 摘要值不是对文内容的加密&#xff0c;它主要用来进行checksum&#xff0c;就是验证两个文件内容是否一致&#xff0c;是否被篡改或者变化了。…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...