Hive函数详解

Hive 是一个建立在 Hadoop 上的数据仓库基础架构,它提供了类似于 SQL 的查询语言,称为 HiveQL,用于对存储在 Hadoop 分布式文件系统中的数据进行查询和分析。

1.函数简介

Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的方法。

  • 好处:避免用户反复写逻辑,可以直接拿来使用。
  • 重点:用户需要知道函数叫什么,能做什么。

Hive提供了大量的内置函数,按照其特点可大致分为如下几类:单行函数、聚合函数、炸裂函数、窗口函数。

以下命令可用于查询所有内置函数的相关信息。

1)查看系统内置函数

hive> show functions;

在这里插入图片描述

2)查看内置函数用法

hive> desc function upper;

在这里插入图片描述

3)查看内置函数详细信息

hive> desc function extended upper;

在这里插入图片描述


2.单行函数

  • 单行函数的特点是一进一出,即输入一行,输出一行
  • 单行函数按照功能可分为如下几类: 日期函数、字符串函数、集合函数、数学函数、流程控制函数等。

1.算术运算函数

在这里插入图片描述

查询出所有员工的薪水后加1显示:

hive (default)> select sal + 1 from emp;

2.数值函数

数值函数是用于对数值数据进行操作和计算的函数,在 SQL 查询中经常用于执行数学运算、取值范围限制等操作。

  1. ABS(x):返回 x 的绝对值

  2. ROUND(x, d):将 x 四舍五入到 d 位小数。如果 d 被省略,则默认为 0。

hive> select round(3.3);   3
  1. CEIL(x):返回不小于 x 的最小整数,向上取整。
hive> select ceil(3.1) ;   4
  1. FLOOR(x):返回不大于 x 的最大整数,向下取整
hive> select floor(4.8);  4
  1. SQRT(x):返回 x 的平方根。

  2. POWER(x, y):返回 x 的 y 次幂。

  3. EXP(x):返回 e 的 x 次幂,其中 e 是自然对数的底。

  4. LOG(x):返回 x 的自然对数。

  5. LOG10(x):返回 x 的以 10 为底的对数。

  6. MOD(x, y):返回 x 除以 y 的余数。

  7. SIGN(x):返回 x 的符号:1 表示正数,-1 表示负数,0 表示零。

  8. RAND():返回一个随机浮点数值,范围在 0 到 1 之间。

示例:

-- 返回 -5 的绝对值
SELECT ABS(-5); -- 输出: 5-- 将 4.8 四舍五入到最近的整数
SELECT ROUND(4.8); -- 输出: 5-- 返回不小于 4.8 的最小整数
SELECT CEIL(4.8); -- 输出: 5-- 返回不大于 4.8 的最大整数
SELECT FLOOR(4.8); -- 输出: 4-- 返回 25 的平方根
SELECT SQRT(25); -- 输出: 5-- 返回 2 的 3 次幂
SELECT POWER(2, 3); -- 输出: 8-- 返回 e 的 2 次幂
SELECT EXP(2); -- 输出: 约为 7.389-- 返回 100 的自然对数
SELECT LOG(100); -- 输出: 约为 4.605-- 返回 100 的以 10 为底的对数
SELECT LOG10(100); -- 输出: 2-- 返回 10 除以 3 的余数
SELECT MOD(10, 3); -- 输出: 1-- 返回 -5 的符号:-1 表示负数
SELECT SIGN(-5); -- 输出: -1-- 返回一个范围在 0 到 1 之间的随机浮点数
SELECT RAND(); -- 输出: 0.xxxx (实际结果会变化)

3.字符串函数

  1. concat(str1, str2, …):连接字符串。
    -- 连接 'hello' 和 'world'
    SELECT concat('hello', ' ', 'world'); -- 输出: 'hello world'
    
  • 语法:concat(string A, string B, string C, ……)

  • 返回:string

  • 说明:将A,B,C……等字符拼接为一个字符串

    hive> select concat('beijing','-','shanghai','-','shenzhen');
    输出:
    hive> beijing-shanghai-shenzhen
    
  1. upper(str):将字符串转换为大写。

    -- 将 'hello' 转换为大写
    SELECT upper('hello'); -- 输出: 'HELLO'
    
  2. lower(str):将字符串转换为小写。

    -- 将 'WORLD' 转换为小写
    SELECT lower('WORLD'); -- 输出: 'world'
    
  3. length(str):返回字符串的长度。

    -- 返回字符串 'hello world' 的长度
    SELECT length('hello world'); -- 输出: 11
    
  4. substr(str, start, length):提取子串。

    -- 提取字符串 'hello world' 的前 5 个字符
    SELECT substr('hello world', 1, 5); -- 输出: 'hello'
    

    获取倒数第三个字符以后的所有字符

    select substring("yushifu",-3); ifu
    
  5. replace(str, from_str, to_str):替换字符串中的子串。

    -- 将字符串 'hello world' 中的 'hello' 替换为 'hi'
    SELECT replace('hello world', 'hello', 'hi'); -- 输出: 'hi world'
    
  6. trim([BOTH | LEADING | TRAILING] trim_str FROM str):去除字符串两侧或指定位置的空格或指定字符。

    -- 去除字符串 '   hello world   ' 两侧的空格
    SELECT trim('   hello world   '); -- 输出: 'hello world'-- 去除字符串 'xxxhello worldxxx' 两侧的 'x'
    SELECT trim('x' FROM 'xxxhello worldxxx'); -- 输出: 'hello world'
    
  7. ltrim(str):去除字符串左侧的空格。

    -- 去除字符串 '   hello' 左侧的空格
    SELECT ltrim('   hello'); -- 输出: 'hello'
    
  8. rtrim(str):去除字符串右侧的空格。

    -- 去除字符串 'world   ' 右侧的空格
    SELECT rtrim('world   '); -- 输出: 'world'
    
  9. regexp_replace 函数用于使用正则表达式替换字符串中的匹配项。

    -- 使用正则表达式替换字符串中的数字为 'X'
    SELECT regexp_replace('Hello 123 World 456', '\\d+', 'X');
    -- 输出: 'Hello X World X'
    

    '\\d+' 是一个正则表达式,用于匹配一个或多个数字。'X' 是替换字符串。所以,regexp_replace 函数将字符串中的所有数字替换为 'X'

11.repeat:重复字符串

  • 语法:repeat(string A, int n)
  • 返回值:string
  • 说明:将字符串A重复n遍
hive> select repeat('123', 3);
输出:
hive> 123123123

12.split :字符串切割

  • 语法:split(string str, string pat)
  • 返回值:array
  • 说明:按照正则表达式pat匹配到的内容分割str,分割后的字符串,以数组的形式返回。
hive> select split('a-b-c-d','-');
输出:
hive> ["a","b","c","d"]

13.nvl :替换null值
语法:nvl(A,B)
说明:若A的值不为null,则返回A,否则返回B。

hive> select nvl(null,1); 
输出:
hive> 1

14.concat_ws:以指定分隔符拼接字符串或者字符串数组

  • 语法:concat_ws(string A, string…| array(string))
  • 返回值:string
  • 说明:使用分隔符A拼接多个字符串,或者一个数组的所有元素。
hive>select concat_ws('-','beijing','shanghai','shenzhen');
输出:
hive> beijing-shanghai-shenzhenhive> select concat_ws('-',array('beijing','shenzhen','shanghai'));
输出:
hive> beijing-shanghai-shenzhen

15.get_json_object:解析json字符串

  • 语法:get_json_object(string json_string, string path)
  • 返回值:string
  • 说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。
    在这里插入图片描述

(1)获取json数组里面的json具体数据

hive> select get_json_object('[{"name":"yushifu","sex":"男","age":"24"},{"name":"彭于晏","sex":"男","age":"47"}]','$.[0].name');
输出:
hive> yushifu

(2)获取json数组里面的数据

hive> select get_json_object('[{"name":"yushifu","sex":"男","age":"24"},{"name":"彭于晏","sex":"男","age":"47"}]','$.[0].name');
输出:
hive> {"name":"yushifu","sex":"男","age":"24"}

4.日期函数

1.unix_timestamp返回当前或指定时间的时间戳

  • 语法:unix_timestamp()
  • 返回值:bigint
hive> select unix_timestamp('2024/04/25 09-19-08','yyyy/MM/dd HH-mm-ss');  
输出:
1714036748

在这里插入图片描述

说明:前面是日期后面是指日期传进来的具体格式

2.from_unixtime转化UNIX时间戳(从 1970-01-01 00:00:00 UTC 到指定时间的秒数)到当前时区的时间格式

  • 语法:from_unixtime(bigint unixtime[, string format])
  • 返回值:string
hive> select from_unixtime(1714036748);   
输出:
2024-04-25 09:19:08

在这里插入图片描述

3.current_date当前日期

hive> select current_date;     
输出:
2024-04-25 

在这里插入图片描述

4.current_timestamp当前的日期加时间,并且精确的毫秒

hive> select current_timestamp;   
输出:
2024-04-25 09:22:22.726

在这里插入图片描述

5.month获取日期中的月

  • 语法:month (string date)
  • 返回值:int
hive> select month('2024-04-25 09:19:08');
输出:
4

在这里插入图片描述

6.day获取日期中的日

  • 语法:day (string date)
  • 返回值:int
hive> select day('2024-04-25 09:19:08');    
输出:
25

在这里插入图片描述

7.hour获取日期中的小时

  • 语法:hour (string date)
  • 返回值:int
hive> select hour('2024-04-25 09:19:08');   
输出:
9

在这里插入图片描述

8)datediff两个日期相差的天数(结束日期减去开始日期的天数)

  • 语法:datediff(string enddate, string startdate)
  • 返回值:int
hive> select datediff('2021-08-08','2022-10-09');     
输出:
-427

9.date_add:日期加天数

  • 语法:date_add(string startdate, int days)
  • 返回值:string
  • 说明:返回开始日期 startdate 增加 days 天后的日期
hive> select date_add('2022-08-08',2);   
输出:
2022-08-10

10.date_sub:日期减天数

  • 语法:date_sub (string startdate, int days)
  • 返回值:string
  • 说明:返回开始日期startdate减少days天后的日期。
hive> select date_sub('2022-08-08',2);    
输出:
2022-08-06

11.date_format:将标准日期解析成指定格式字符串

hive> select date_format('2022-08-08','yyyy年-MM月-dd日')   
输出:
2022-08-08

5.流程控制函数

1. case when:条件判断函数

  • 语法一:case when a then b [when c then d]* [else e] end
  • 返回值:T
  • 说明:如果a为true,则返回b;如果c为true,则返回d;否则返回 e
hive> select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end ; 
mary
  • 语法二: case a when b then c [when d then e]* [else f] end
  • 返回值: T
  • 说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f
hive> select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end; 
mary

求出不同部门男女各多少人
emp_sex 表:
在这里插入图片描述

hive (default)>
select dept_id,sum(case sex when '男' then 1 else 0 end) male_count,sum(case sex when '女' then 1 else 0 end) female_count
from emp_sex
group by dept_id;

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

2. if: 条件判断,类似于Java中三元运算符

  • 语法:if(boolean testCondition, T valueTrue, T valueFalseOrNull)
  • 返回值:T
  • 说明:当条件testCondition为true时,返回valueTrue;否则返回valueFalseOrNull

(1)条件满足,输出正确

hive> select if(10 > 5,'正确','错误'); 
输出:正确

(2)条件满足,输出错误

hive> select if(10 < 5,'正确','错误');
输出:错误

6.集合函数

1.size:集合中元素的个数

hive> select size(friends) from test;  
--2/2  每一行数据中的friends集合里的个数

2.map:创建map集合

  • 语法:map (key1, value1, key2, value2, …)
  • 说明:根据输入的key和value对构建map类型
hive> select map('uzi',1,'xiaohu',2);  
输出:
hive> {"uzi":1,"xiaohu":2}

3.map_keys: 返回map中的key

hive> select map_keys(map('uzi',1,'xiaohu',2));
输出:
hive>["uzi","xiaohu"]

4.map_values: 返回map中的value

hive> select map_values(map('uzi',1,'xiaohu',2));
输出:
hive>[1,2]

5.array:声明array集合

  • 语法:array(val1, val2, …)
  • 说明:根据输入的参数构建数组array类
hive> select array('1','2','3','4');
输出:
hive>["1","2","3","4"]

6.array_contains: 判断array中是否包含某个元素

hive> select array_contains(array('a','b','c','d'),'a');
输出:
hive> true

7.sort_array:将array中的元素排序

hive> select sort_array(array('a','d','c'));
输出:
hive> ["a","c","d"]

8.struct:声明struct中的各属性
语法:struct(val1, val2, val3, …)
说明:根据输入的参数构建结构体struct类

hive> select struct('name','age','weight');
输出:
hive> {"col1":"name","col2":"age","col3":"weight"}

9.named_struct:声明struct的属性和值

hive> select named_struct('name','uzi','age',18,'weight',80);
输出:
hive> {"name":"uzi","age":18,"weight":80}

3. 高级聚合函数

多进一出 (多行传入,一个行输出)。

  1. count(distinct expr[, expr…])

    • 计算唯一值的数量。可以对一个或多个列应用,用逗号分隔。
    • 示例:select count(distinct user_id) from table;
  2. collect_set(expr)

    • 返回一个包含唯一值的集合,不保证顺序(去重,无序)。
    • 示例:select collect_set(city) from users group by country;
hive>
select sex,collect_set(job)
fromemployee
group by sex
  1. collect_list(expr)
    • 返回一个包含所有值的列表,可能包含重复值,保留输入顺序(不去重,有序)。
    • 示例:select collect_list(product_name) from sales group by order_id;
      在这里插入图片描述
每个月的入职人数以及姓名
hive> 
selectmonth(replace(hiredate,'/','-')) as month,count(*) as cn,Collect_list(name) as name_list
fromemployee
group bymonth(replace(hiredate,'/','-'))
month  cn  name_list
4	    2	["宋青书","周芷若"]
6	    1	["黄蓉"]
7	    1	["郭靖"]
8	    2	["张无忌","杨过"]
9	    2	["赵敏","小龙女"]
  1. grouping sets

    • 允许按不同的维度对数据进行聚合,生成多个分组的聚合结果。
    • 示例:select dept_id, gender, count(*) from employees group by grouping sets (dept_id, gender, ());
  2. rollup

    • 在group by子句中使用rollup,可以生成层次化的聚合结果,从整体到部分的逐层汇总。
    • 示例:select dept_id, gender, count(*) from employees group by rollup (dept_id, gender);
  3. cube

    • 类似于rollup,但是生成更多的组合,包括所有可能的组合。
    • 示例:select dept_id, gender, count(*) from employees group by cube (dept_id, gender);
  4. percentile(expr, p)

    • 计算表达式的百分位数,p是介于0和1之间的数字。
    • 示例:select percentile(salary, 0.75) from employee_salaries;
  5. ntile(n)

    • 排序后的数据集分成n个大致相等的部分,并为每个行分配一个标识符。
    • 示例:select name, salary, ntile(4) over (order by salary) as quartile from employees;

4.炸裂函数

在这里插入图片描述
Hive中的炸裂函数通常用于将包含多个元素的字符串或数组拆分成单独的元素,并生成新的行。

  1. explode()将数组拆分成单独的元素,并为每个元素生成新的行。

    • 示例:SELECT explode(array_column) AS single_element FROM table;
  2. posexplode():类似于explode(),但同时返回元素的位置索引。

    • 示例:SELECT posexplode(array_column) AS (pos, single_element) FROM table;

示例:

+-------------+-------------------+
| student_id  |   grades          |
+-------------+-------------------+
| 1           | ["Math: A", "Science: B", "History: A"] |
| 2           | ["Math: B", "Science: A", "History: C"] |
+-------------+-------------------+

使用explode()函数将grades数组拆分为单独的行

SELECT student_id, explode(grades) AS subject_grade
FROM student_grades;
+-------------+-------------------+
| student_id  |   subject_grade   |
+-------------+-------------------+
| 1           | "Math: A"         |
| 1           | "Science: B"      |
| 1           | "History: A"      |
| 2           | "Math: B"         |
| 2           | "Science: A"      |
| 2           | "History: C"      |
+-------------+-------------------+

每个学生的每个科目成绩都变成了一行。

如果还想保留每个成绩的位置索引,可以使用posexplode()函数:

SELECT student_id, posexplode(grades) AS (pos, subject_grade)
FROM student_grades;
+-------------+------+-------------------+
| student_id  | pos  |   subject_grade   |
+-------------+------+-------------------+
| 1           | 0    | "Math: A"         |
| 1           | 1    | "Science: B"      |
| 1           | 2    | "History: A"      |
| 2           | 0    | "Math: B"         |
| 2           | 1    | "Science: A"      |
| 2           | 2    | "History: C"      |
+-------------+------+-------------------+

5.窗口函数(开窗函数)

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

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

按照功能,常用窗口可划分为如下几类:聚合函数、跨行取值函数、排名函数。

1. 聚合函数

  • 这些函数在窗口内执行聚合操作,例如计算平均值、总和、最大值、最小值等。
  • 示例:SUM(), AVG(), COUNT(), MAX(), MIN()

2. 跨行取值函数

  • 这些函数用于获取当前行与其前后行的值,通常用于计算变化值、差值等。
  • 示例:LEAD(), LAG(), FIRST_VALUE(), LAST_VALUE()
  1. lead():该函数用于获取当前行之后偏移量为offset的行的值。

    • 示例:lead(salary, 1, 0) over (order by date) as next_salary
      返回按日期排序的薪水数据集中每个员工的下一个日期的薪水,如果没有下一个日期的薪水,则返回0。
  2. lag():该函数用于获取当前行之前偏移量为offset的行的值。

    • 示例:lag(salary, 1, 0) over (order by date) as prev_salary
      返回按日期排序的薪水数据集中每个员工的前一个日期的薪水,如果没有前一个日期的薪水,则返回0。
      在这里插入图片描述
  3. first_value():该函数用于获取窗口内第一行的值。

    • 示例:first_value(salary) over (partition by department order by hire_date) as first_salary
      返回每个部门的第一个雇员的薪水,按入职日期排序。
  4. last_value():该函数用于获取窗口内最后一行的值。

    • 示例:last_value(salary) over (partition by department order by hire_date rows between unbounded preceding and unbounded following) as last_salary
      返回每个部门的最后一个雇员的薪水,按入职日期排序,并考虑窗口内所有行。
      在这里插入图片描述

这些函数可以根据具体需求结合使用,对数据进行各种类型的分析和比较,例如计算变化率、检测趋势、识别异常值等。在处理时间序列数据或需要考虑数据历史变化的情况下,这些函数尤其有用。


3. 排名函数

  • 这些函数用于为结果集中的每一行分配排名,可以根据需求处理并列排名。
  • 示例:ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE()

这些函数通常用于在 hive 中对查询结果进行排序和分组,并为每行分配一个序号或者分组号。让我详细解释一下它们的用法:

  1. row_number()

    • 作用:为查询结果集中的每一行分配一个唯一的连续序号,按照指定的排序顺序进行分配。
    • 语法:
      row_number() over (order by column1 [, column2, ...])
      
    • 示例:
      select column1, column2, row_number() over (order by column1) as row_num
      from table_name;
      
    • 说明:row_number() 函数按照 order by 子句中指定的列进行排序,然后为每一行分配一个连续的唯一序号。
  2. rank()

    • 作用:为查询结果集中的每一行分配一个排名,相同的值将会得到相同的排名,但是可能会跳过排名。
    • 语法:
      rank() over (order by column1 [, column2, ...])
      
    • 示例:
      select column1, column2, rank() over (order by column1) as rank
      from table_name;
      
    • 说明:rank() 函数按照 order by 子句中指定的列进行排序,并为相同值的行分配相同的排名,但是可能会跳过排名(比如有两行值相同,排名为 1 和 2,下一行排名可能是 4)。
  3. dense_rank()

    • 作用:为查询结果集中的每一行分配一个排名,相同的值将会得到相同的排名,但不会跳过排名,排名是连续的。
    • 语法:
      dense_rank() over (order by column1 [, column2, ...])
      
    • 示例:
      select column1, column2, dense_rank() over (order by column1) as dense_rank
      from table_name;
      
    • 说明:dense_rank() 函数按照 order by 子句中指定的列进行排序,并为相同值的行分配相同的排名,但是不会跳过排名(比如有两行值相同,排名为 1 和 2,下一行排名仍然是 3)。
      在这里插入图片描述
  4. ntile()

    • 作用:将查询结果集分割成指定数量的桶(bucket),并为每一行分配一个桶号。
    • 语法:
      ntile(n) over (order by column1 [, column2, ...])
      
    • 示例:
      select column1, column2, ntile(4) over (order by column1) as quartile
      from table_name;
      
    • 说明:ntile(n) 函数将查询结果集分成 n 个桶,并为每个桶中的行分配一个桶号(从 1 到 n)。如果行数不能被 n 整除,最后一个桶中的行数可能会少于其他桶。

6.自定义函数

标准函数无法满足需求时,就可以考虑编写自定义函数。这些函数可以用Java编写,并通过Hive的UDF、UDAF、UDTF接口来实现。

  1. 标量函数(UDF - User-Defined Function):

    • 标量函数是处理一行输入并返回单个值的函数。例如,你可以编写一个函数来计算字符串长度、执行日期转换等操作。
    • 实现:编写一个Java类,继承自Hive的org.apache.hadoop.hive.ql.udf.generic.GenericUDF类,并实现evaluate()方法来定义函数的逻辑。然后编译成JAR文件,并在Hive中注册该函数。
  2. 聚合函数(UDAF - User-Defined Aggregate Function):

    • 聚合函数用于对一组值进行聚合操作(如求和、平均值等),并返回单个结果。例如,你可以编写一个函数来计算某列的中位数或者分位数。
    • 实现:编写一个Java类,实现Hive的org.apache.hadoop.hive.ql.exec.UDAFEvaluator接口,并实现一系列方法来定义聚合函数的行为,包括init(), iterate(), terminatePartial(), merge(), terminate()等。然后编译成JAR文件,并在Hive中注册该函数。
  3. 表生成函数(UDTF - User-Defined Table-Generating Function):

    • 表生成函数将输入的一行数据转换成多行数据。例如,你可以编写一个函数来将一列字符串拆分成多行。
    • 实现:编写一个Java类,继承自Hive的org.apache.hadoop.hive.ql.udf.generic.GenericUDTF类,并实现process()方法来定义函数的逻辑。然后编译成JAR文件,并在Hive中注册该函数。

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

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

相关文章

Web前端开发 小实训(一) 成绩分类统计

用于学生web前端开发课程实训练习&#xff0c;掌握基本语法和数据类型 实训目的 使用分支语句&#xff0c;完成分数统计与等级对比,通过输入框输入分数&#xff0c;可以根据分数多少划分等级。 参考思路&#xff1a; 分析题目&#xff1a;根据输入分数进行等级划分。 操作过…

springboot如何使用RedisTemplate

第一步&#xff1a;创建一个spring boot项目 第二步&#xff1a;pom导入redis相关依赖 <!--reids依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </depen…

Go语言中的goroutine调度是如何实现的?

文章目录 一、M:N调度模型二、GMP模型三、调度过程四、调度优化五、示例代码 在Go语言中&#xff0c;goroutine是一种轻量级的线程&#xff0c;它使得并发编程变得更加简单和高效。而goroutine的调度则是Go运行时&#xff08;runtime&#xff09;系统负责的一个核心任务&#x…

Postman,一个功能强大的API开发和测试工具

最近有小伙伴说在找 postman 的使用教程&#xff0c;案例等文章。 那么今天我就来写一个。 Postman 是一个功能强大的 API 开发和测试工具&#xff0c;它提供了丰富的功能&#xff0c;帮助开发人员更好地管理、测试和文档化 API。无论是单独开发还是团队协作&#xff0c;Postma…

[1688]jsp工资投放管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 工资投放管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

黑马面试篇

课程地址&#xff1a;新版Java面试专题视频教程&#xff0c;java八股文面试全套真题深度详解&#xff08;含大厂高频面试真题&#xff09;_哔哩哔哩_bilibili 课程名称&#xff1a;新版Java面试专题视频教程&#xff0c;java八股文面试全套真题深度详解&#xff08;含大厂高频…

Flutter - 折叠面板

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 flutter 自定义折叠组件 支持三种类型和两种展示效果可自定义title和被折叠的内容 效果图 示例 import package:flutter/material.dart; import /jh_common/widge…

基于SNAP使用SAR数据做变化检测change detection

基于SNAP使用SAR数据做变化检测change detection 1. 前言2. 步骤2.1 添加数据2.2 辐射定标--散斑过滤--地形矫正2.3 裁剪2.4 变化检测 3.查看变化检测结果 1. 前言 在SNAP中&#xff0c;change detection主要通过Stack工具来完成。 SAR数据&#xff1a;Radarsat-2 SLC 其他数据…

基于FastGPT搭建知识库问答系统

什么是 FastGPT &#xff1f; FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&#xff01; FastGPT 允许用户构建本地知识库&#xff0c;…

MQTT数据传输Payload的常见格式介绍

使用MQTT client过程中看到常见的数据格式&#xff1a; 下面是介绍 Plaintext&#xff08;纯文本&#xff09; 介绍&#xff1a;纯文本编码是最基本的编码形式&#xff0c;它使用标准的ASCII或Unicode字符来表示数据。这种编码格式是人类可读的&#xff0c;因为它直接表示文本信…

(成品论文22页)24深圳杯数学建模A题1-4问完整代码+参考论文重磅更新!!!!

论文如下&#xff1a; 基于三球定位的多个火箭残骸的准确定位 针对问题一&#xff1a;为了进行单个残骸的精确定位&#xff0c;确定单个火箭残骸发生音爆 时的精确位置和时间&#xff0c;本文基于三球定位模型&#xff0c;考虑到解的存在性和唯一性&#xff0c; 选取了四个监测…

第七篇、animateDiff使用

1、文生图 2、提示词游历 在不同帧设置不同的提示词&#xff0c;有公共提示词和游历提示词&#xff0c;上面是公共的&#xff0c;下面是游历

VS Code开发STM32F4xx jlink接口swd模式

VS Code开发STM32F4xx jlink接口swd模式(测试OK) 下面的代码(已验证),只作为参考,不同情况的更改参照文章末尾链接 c_cpp_properties.json代码 (其中include路径和宏定义可以参照makefile添加) : {"configurations": [{"name"…

上市公司-人工智能的采纳测算程度数据集(2003-2021年)

01、数据简介 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一个研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的新技术科学。它是计算机科学的一个分支&#xff0c;旨在生产出一种能以人类智能相似的方式做出反应的智能机…

汽车新智能图谱里:理解腾讯的AI TO B路径

将自身的C2B产品和产业理解充分AI化&#xff0c;在自身内部场景率先验证跑通后&#xff0c;进而释放给产业伙伴&#xff0c;对应到具体的需求痛点&#xff0c;一起打磨对应的行业AI模型。 这也恰是腾讯“实用”标签背后的AI产业路径。 作者|皮爷 出品|产业家 成本、性价…

直流有刷电机入门

文章目录 123455.25.3 1 2 电刷 材质是 石墨 3 130马达 就几毛钱 几块钱这学的就是减速电机P MAX一定 pf*v 降低速度 扭矩就会大 4 还有空载电流 过大负载 时 有堵转电流 &#xff08;可分析电流 来看电机工作状态&#xff09;RPM 转每分钟 5 5.2 这的线圈 是简化后的转子绕组…

一个数据人眼中的《上游思维》

最近读了《上游思维》这本书&#xff0c;很受启发&#xff0c;我想从一个数据人的角度来聊一聊我对这本书的读后感。上游思维本质上是帮助我们解决问题&#xff0c;我发现在解决问题相关的每个阶段&#xff1a;发现问题、找到解决问题的方法、解决问题的过程中、评估问题以及预…

电磁仿真--基本操作-CST-(4)

目录 1. 简介 2. 建模过程 2.1 基本的仿真配置 2.2 构建两个圆环体和旋转轴 2.3 切分圆环体 2.4 衔接内外环 2.5 保留衔接部分 2.6 绘制内螺旋 2.7 绘制外螺旋 2.8 查看完整体 2.9 绘制引脚 2.10 设置端口 2.11 仿真结果 3. 使用Digilent AD2进行测试 3.1 进行…

大厂面试题:两道来自京东的关于MyBatis执行器的面试题

大家好&#xff0c;我是王有志。 今天给大家带来两道来自于京东关于的 MyBatis 面试题&#xff1a; MyBatis 提供了哪些执行器&#xff08;Executor&#xff09;&#xff1f;它们有什么区别&#xff1f;Mybatis 中如何指定 Executor 的类型&#xff1f; MyBatis 提供了哪些执…

深度学习系列66:试穿模型IDM-VTON上手

1. 模型概述 如图&#xff0c;总体流程为&#xff1a; 输入为&#xff1a;衣服的编码xg&#xff1b;人物noise的编码xt&#xff1b;人物身上衣物的mask和人体pose分割(densepose)&#xff1b;衣服部分经过两部分网络&#xff1a;1&#xff09;高级语义网络IP-Adapter&#xff…