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-shenzhen

hive> 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)
from
  employee
group by 
  sex
  1. collect_list(expr)
    • 返回一个包含所有值的列表,可能包含重复值,保留输入顺序(不去重,有序)。
    • 示例:select collect_list(product_name) from sales group by order_id;
      在这里插入图片描述
每个月的入职人数以及姓名
hive> 
select
  month(replace(hiredate,'/','-')) as month,
  count(*) as cn,
  Collect_list(name) as name_list
from
  employee
group by
  month(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中注册该函数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java关键字super解释

hi&#xff0c;我是程序员王也&#xff0c;一个资深Java开发工程师&#xff0c;平时十分热衷于技术副业变现和各种搞钱项目的程序员~&#xff0c;如果你也是&#xff0c;可以一起交流交流。 今天我们来聊聊Java中super关键字~ 1. 引言 1.1 介绍Java中的关键字 Java是一种强…

SpringCloud 之 服务提供者

前提 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com学习Rest实例之提供者 提供者模块展示 1、导入依赖 <!-- 实体类 Web--><dependency><groupId>com.jyl</groupId><…

HarmonyOS实战开发-如何在鸿蒙开发中使用数据库

鸿蒙中的数据库基于SQLite组件&#xff0c;用来处理关系比较复杂的数据&#xff0c;本文将以WORKER表为例&#xff0c;为大家演示在鸿蒙开发中对数据库的增删改查操作。 1、首先导入数据库模块&#xff1a; import relationalStore from ohos.data.relationalStore;2、配置数…

独家定制,个性至上——可道云TeamOS企业网盘,为您的企业量身定制

烦恼买了企业网盘&#xff0c;却不能修改网盘名称&#xff1f;想要将网盘的logo换成公司的logo&#xff1f; 市面上的大多数公有云盘就是标准化产品&#xff0c;无法改变企业网盘的既定样式、增删功能、也难以根据企业的实际需求灵活变通。 特别是当今企业应用的办公软件比较…

jmeter安装和简单使用

jmeter安装和简单使用 1. 安装 jmeter是基于Java开发的测试应用&#xff0c;其运行依赖于java环境&#xff0c;所以在下载运行jmeter前&#xff0c;先确保本机已经安装jdk或者jre&#xff0c;安装jdk步骤此处不描述。 下载jmeter&#xff1a; jmeter是Apache旗下的产品&…

Fluent.Ribbon创建Office的RibbonWindow菜单

链接&#xff1a; Fluent.Ribbon文档 优势&#xff1a; 1. 可以创建类似Office办公软件的复杂窗口&#xff1b; 2. 可以应用自定义主题风格界面

【redis】非关系型数据库——Redis介绍与安装(windows环境)

目录 数据库架构的演化单体架构缓存(Memcached)MySQL集群缓存(Memcached可以)MySQL集群垂直拆分&#xff08;主从复制&#xff0c;读写分离&#xff09;缓存(Redis)MySQL集群垂直拆分分库分表 NoSQLNoSQL产生的背景性能需求MySQL的扩展性瓶颈方面什么是NoSQLNoSQL的特点主流的N…

李彦宏:程序员将不复存在! 周鸿祎回怼!网友:先把百度程序员都开除了!

近日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在央视《对话》•开年说的访谈中指出&#xff1a;“基本上说以后其实不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 “未来的编程语言只会剩下两种&#xff0c;一种…

超潜力 JAM 链何以超越中继链,引领 Polkadot 2.0 新航向?

2024 年 4 月 18 日&#xff0c;Polkadot 创始人 Gavin Wood 在迪拜 Token 2049 活动上宣布了一项波卡生态的重大进展—— JAM 灰皮书发布&#xff01;JAM 协议的诞生与发展开辟了波卡生态的另一种发展路径&#xff0c;它将替代当前中继链的技术角色&#xff0c;以模块化、简约…

Recommended Azure Monitors

General This document describes the recommended Azure monitors which can be implemented in Azure cloud application subscriptions. SMT incident priority mapping The priority “Blocker” is mostly used by Developers to prioritize their tasks and its not a…

场内股票期权和场外期权(附场内期权交易攻略)

期权是交易双方关于未来买卖权利达成的合约。 就股票期权来说&#xff0c;期权的买方(权利方)通过向卖方(义务方)支付一定的费用(即期权费或权利金)&#xff0c;获得一种权利&#xff0c;即有权在约定的时间以约定的价格向期权卖方买入或卖出约定数量的标的股票或ETF。 买方(…

AI大模型探索之路-训练篇1:大语言模型微调基础认知

文章目录 前言一、微调技术概述二、微调的必要性三、大模型的微调方法四、微调过程中的技术细节五、微调后的模型评估与应用总结 前言 在人工智能的广阔研究领域内&#xff0c;大型预训练语言模型&#xff08;Large Language Models, LLMs&#xff09;已经成为推动技术革新的关…

ChatGPT全方位指导:学术论文写作从零开始,轻松搞定高质量论文!

目录 文末福利 一、论文选题的深度探讨 二、撰写摘要的艺术 三、关键词的精选 四、引言的构建 五、正文的结构设计 六、撰写结论的策略 七、致谢的编写 八、附录的有效利用 九、参考文献的整理 文末有福利哦 撰写一篇高质量的学术论文是一项既复杂又耗时的任务。这个…

13-Makefile_04

使用函数 在更复杂的工程中&#xff0c;头文件、源文件可能会放在二级目录&#xff0c;为了实现这种操作通常需要使用Makefile的函数。 函数格式及示例 在Makefile中调用函数的方法跟变量的使用类似&#xff0c;以“$()”或“${}”符号包含函数名和参数&#xff0c;具体语法…

微信搜一搜优化:今天你“搜一搜”了吗?

微信“搜一搜”功能的排名规则和机制是微信生态系统中非常重要的一部分&#xff0c;它决定了小程序、公众号、文章、直播等内容在搜索结果中的展示顺序。小柚给大家整理了一份对其排名规则和机制的详细解析&#xff1a; 首先&#xff0c;关键词匹配度是影响搜索结果排名的重要…

ARM DMIPS算力说明

ARM DMIPS算力说明 ARM算力参考官网地址 https://en.wikipedia.org/wiki/List_of_ARM_processors Product familyARM architectureProcessorFeatureCache (I / D), MMUTypical MIPS MHzReferenceARM1ARMv1ARM1First implementationNoneARM2ARMv2ARM2ARMv2 added the MUL (mu…

【北京迅为】《iTOP龙芯2K1000开发指南》-第四部分 ubuntu开发环境搭建

龙芯2K1000处理器集成2个64位GS264处理器核&#xff0c;主频1GHz&#xff0c;以及各种系统IO接口&#xff0c;集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝牙二合一模块、MiniPCIE等接口、双路CAN总线、RS485总线&#…

我是如何用扣子AI工作流筛选并分析自媒体情报信息的

从开始做自媒体以来&#xff0c;一直有个困惑许久的问题没有解决&#xff0c;那就是搜集我关注的相关领域的对标自媒体一手信息&#xff0c;包括文章、评论、点赞、转发等。一方面&#xff0c;是为了了解我关注的内容&#xff0c;另一方面&#xff0c;也是为了逼迫自己学习更多…

mysql中join内外连接查询例子

文章目录 join关键字概要举例using 与 on 区别 join关键字 在MySQL中&#xff0c;JOIN 是一种用于将两个或多个表中的行联合起来的操作。 连接&#xff08;join&#xff09;就是将一张表中的行按照某个条件&#xff08;连接条件&#xff09;与另一张表中的行连接起来形成一个新…

一个排查了一天的BUG,你在摸鱼吧!

站会 在一次日常站会上&#xff0c;组员们轮流分享昨天的工作进展。一个组员提到&#xff1a;“昨天我整天都在排查一个BUG&#xff0c;今天还得继续。” 出于好奇&#xff0c;我问&#xff1a;“是什么BUG让你排查了这么久还没解决呢&#xff1f;” 他解释说&#xff1a;“…