hive—常用的日期函数

news2024/12/16 11:59:43

目录

1、current_date 当前日期

2、now() 或 current_timestamp() 当前时间

3、datediff(endDate, startDate) 计算日期相差天数

4、months_between(endDate, startDate) 日期相差月数

5、date_add(startDate, numDays) 日期加N天

6、date_sub(startDate, numDays) 日期减N天

7、add_months(startDate, numMonths) 日期加N月

8、last_day(date) 日期所在月份的最后一天

9、 next_day(startDate, dayOfWeek) 指定日期后的第一个星期几(星期参数为英文缩写)

10、from_unixtime:转化unix时间戳到当前时区的时间格式

11、unix_timestamp:转换到UNIX时间戳

12、to_date:返回时间中的年月日

13、year、month、day、hour、minute、second:返回时间的年、月、日、时、分、秒

14、weekofyear:返回指定日期所在一年中的星期号,范围为0到53

15、trunc:为指定元素而截去的日期值

16、date_trunc:

17、date_format:对时间日期进行格式化

18、dayofmonth:查询当月第几天、dayofweek:查询周几

19、next_day:取当前天的下一个周一

20、pmod(int a, int b):返回a除b的余数的绝对值

21、常用日期取数:

1、from_unixtime(unix_timestamp(,),)用法

2、当前周属于哪个月

3、当前周属于哪一周

4、生成连续的天表、小时表、分钟表

1)生成连续的天

2)生成连续小时

3)生成连续分钟

​编辑4)生成连续秒

5)生成连续月

6)生产今年内的连续月

5、时间和秒数互相转换

1)当前时间转换成秒数

2)秒数转换为时间(时分秒)

22、工作特殊日期取数(有一些为工作环境内置函数)

1)当月最后一天更新完整月份时间范围的数据

2)上月最后一个交易日

3)本月第一个交易日

4)如果今天不是本月自然日最后一天,则取上月的最后一个交易日,否则取当月最后一个交易日

5)如果今天不是本月自然日最后一天,则取6个月前的第一天,否则取5个月前的第一天

6)任务交易日执行,取次月第一个交易日数据

7)如果当日是交易日则取当日的数据,如果当日非交易日则取前一个交易日的数据

8)每日更新近半年截至当日的数据,如果最后一天是30号,则取6个月前的最后一天


1、current_date 当前日期

select current_date();
--2024-12-11

2、now() 或 current_timestamp() 当前时间

select now();
select current_timestamp();
--2024-12-11 17:02:02:616

--返回当前的时间
select from_UTC_timestamp(current_timestamp(),"GMT+8")
--2024-12-12 18:28:03.209

3、datediff(endDate, startDate) 计算日期相差天数

--其实就是用前一个日期减去后一个日期,想要得到正数的日期相差格式则需要把大的日期放在前边

select datediff('2022-02-22','2022-02-20');
--2

select datediff('2022-01-22','2022-02-20');
-- -29

4、months_between(endDate, startDate) 日期相差月数

select months_between('2022-06-16','2022-02-12');
--4.12903226

select floor(months_between('2022-06-16','2022-02-12'));
--4

5、date_add(startDate, numDays) 日期加N天

select date_add('2022-02-22',3)
--2022-02-25

select date_add('2022-02-22',-3)
--2022-02-19

6、date_sub(startDate, numDays) 日期减N天

select date_sub('2022-02-22',3)
--2022-02-19
 
select date_sub('2022-02-22',-3)
--2022-02-25

7、add_months(startDate, numMonths) 日期加N月

select add_months('2022-02-22',3);
--2022-05-22
 
select add_months('2022-02-22',-3);
--2021-11-22

但是在hivesql和spark sql 里 add_months(startDate, numMonths) 当startDate为月份最后一天的30号时,取不到相加或相减后月份的最后一天,例如

select add_months('2022-09-30',1);
--2022-10-30  --非往后一个月的最后一天

改成:加多一步判断是否是最后一天
select (case when month('${yyyy-MM-dd}') <> month(date_add('${yyyy-MM-dd}', 1)) then last_day(add_months('${yyyy-MM-dd}',-6)) else add_months('${yyyy-MM-dd}',-6) end) DD

8、last_day(date) 日期所在月份的最后一天

select last_day('2022-02-22');
--2022-02-28

9、 next_day(startDate, dayOfWeek) 指定日期后的第一个星期几(星期参数为英文缩写)

select next_day('2022-02-22','MON')
--2022-02-28

10、from_unixtime:转化unix时间戳到当前时区的时间格式


select from_unixtime(1641044052,'yyyyMMdd');
--输出:20220101

11、unix_timestamp:转换到UNIX时间戳

--当前时间
select unix_timestamp();
--输出:1665803372
 
--yyyy-MM-dd HH:mm:ss日期
select unix_timestamp('2022-01-01 13:34:12');
--输出:1641044052

12、to_date:返回时间中的年月日

select to_date('2022-01-01 13:34:12');
--输出:2022-01-01

13、year、month、day、hour、minute、second:返回时间的年、月、日、时、分、秒

--年
select year('2021-12-31 11:32:12');
select year('2021-12-31');
--输出:2021
 
--月
select month('2021-12-31 11:32:12');
select month('2021-12-31');
--输出:12
 
--日
select day('2021-12-31 11:32:12');
select day('2021-12-31');
--输出:31
 
--时
select hour('2021-12-31 11:32:12');
--输出:11
 
--分
select minute('2021-12-31 11:32:12');
--输出:32
 
--秒
select second('2021-12-31 11:32:12');
--输出:12

14、weekofyear:返回指定日期所在一年中的星期号,范围为0到53

即第几个星期

select weekofyear('2022-05-05');
--输出:18

15、trunc:为指定元素而截去的日期值

参数: YEAR、YYYY、YY、MON、MONTH、MM

--查询当月第一天MM/MONTH/MON
select trunc('2020-12-03','MM');
select trunc('2020-12-03','MONTH');
select trunc('2020-12-03','MON');
--输出:2020-12-01

--查询当年第一天YEAR/YY/YYYY
select trunc('2020-12-03','YYYY');
select trunc('2020-12-03','YEAR');
select trunc('2020-12-03','YY');
--输出:2020-12-01

16、date_trunc:

参数:YEAR、YYYY、YY、MON、MONTH、MM、DAY、DD、HOUR、MINUTE、SECOND、WEEK、QUARTER 

select date_trunc("HOUR" ,"2022-12-12T09:32:05.359");
--输出:2022-12-12 09:00:00 

select date_trunc("YEAR" ,"2022-12-12T09:32:05.359");
--输出:2022-01-01 00:00:00 --本年第一天

select date_trunc("MON" ,"2022-12-12T09:32:05.359");
--输出:2022-12-01 00:00:00  --本月第一天

select date_trunc("WEEK" ,"2024-12-12T09:32:05.359");
--输出:2024-12-09 00:00:00  --本周第一天

select date_trunc("QUARTER" ,"2024-12-12T09:32:05.359");
--输出:2024-10-01 00:00:00  --本季度第一天

17、date_format:对时间日期进行格式化

select date_format('2022-04-08', 'y');
--输出:2022
 
select date_format('2022-04-08', 'yyyy');
--输出:2022
 
select date_format('2022-04-08', 'yyyy-MM');
--输出:2022-04
 
select date_format('2022-04-08 10:10:01', 'yyyy-MM');
--输出:2022-04
 
select date_format('2022-04-08', 'yyyy-MM-dd');
--输出:2022-04-08

18、dayofmonth:查询当月第几天、dayofweek:查询周几

--dayofmonth
select dayofmonth('2024-12-12')
--输出:12
 
--dayofweek(1 = Sunday, 2 = Monday, ..., 7 = Saturday)
select dayofweek('2024-12-12')
--输出:5  --5=Thursday

19、next_day:取当前天的下一个周一

--取当前天的下一个周一
select next_day('2024-12-12','MO');
--输出:2024-12-16
 
--取当前周的周一
select date_add(next_day('2024-12-12','MO'),-7);
--输出:2024-12-09
 
--取当前周的周日
select date_add(next_day('2024-12-12','MO'),-1) this_sun;
--输出:2024-12-15

20、pmod(int a, int b):返回a除b的余数的绝对值

--计算2024-12-12是星期几
select pmod(datediff('2024-12-12','2024-01-01') + 1,7)
--4  --星期四

--计算今天是周几
select (case
when pmod(datediff(current_date(),date_trunc("YEAR",current_date())) + 1,7) = 1 then concat(current_date(),'(周一)')
when pmod(datediff(current_date(),date_trunc("YEAR",current_date())) + 1,7) = 2 then concat(current_date(),'(周二)')
when pmod(datediff(current_date(),date_trunc("YEAR",current_date())) + 1,7) = 3 then concat(current_date(),'(周三)')
when pmod(datediff(current_date(),date_trunc("YEAR",current_date())) + 1,7) = 4 then concat(current_date(),'(周四)')
when pmod(datediff(current_date(),date_trunc("YEAR",current_date())) + 1,7) = 5 then concat(current_date(),'(周五)')
when pmod(datediff(current_date(),date_trunc("YEAR",current_date())) + 1,7) = 6 then concat(current_date(),'(周六)')
else concat(current_date(),'(周日)') end) WEEK

--输出:2024-12-12(周四)

21、常用日期取数:

1、from_unixtime(unix_timestamp(,),)用法

--获取前一天的日期
select cast(from_unixtime(unix_timestamp('20221001','yyyyMMdd')-1,'yyyyMMdd') as bigint)
--输出:20220930
 
--转换日期格式
select from_unixtime(unix_timestamp('20211023','yyyyMMdd'),'yyyy-MM-dd')
--输出:2021-10-23

2、当前周属于哪个月

--这周内哪个月份所占天数多就算哪个月
SELECT month(date_sub(next_day('2024-12-12','Mon'),4))
--输出:12

3、当前周属于哪一周

SELECT 
case when day(date_add(next_day('2024-12-12','Mon'),-4)) <=7 then '第一周'
when day(date_add(next_day('2024-12-12','Mon'),-4)) >7 and day(date_add(next_day('2024-12-12','Mon'),-4))<=14 then '第二周'
when day(date_add(next_day('2024-12-12','Mon'),-4)) >14 and day(date_add(next_day('2024-12-12','Mon'),-4))<=21 then '第三周'
when day(date_add(next_day('2024-12-12','Mon'),-4)) >21 and day(date_add(next_day('2024-12-12','Mon'),-4))<=28 then '第四周'
when day(date_add(next_day('2024-12-12','Mon'),-4)) >28 then '第五周'
end as week_key   --周
--输出:第二周

4、生成连续的天表、小时表、分钟表

1)生成连续的天

---生成连续的天
select
date_add(start_date,pos) as dt
from
(
   select 
  '2022-12-01' as start_date
 ,'2022-12-04' as end_date
)t
lateral view posexplode(split(repeat(',',datediff(end_date,start_date)),',')) tab as pos,val;

输出结果:

2)生成连续小时

---生成连续的小时
select
from_unixtime(t1.start_time+tab.pos*3600) as continue_time
from
(
    select
    unix_timestamp('2022-12-01 00:00:00') as start_time   ---生成连续小时的开始时间
		,unix_timestamp('2022-12-01 03:00:00') as end_time   ---生成连续小时的结束时间
)t1
lateral view posexplode(split(repeat(',',cast((end_time-start_time)/3600 as int)),',')) tab as pos,val;

输出结果:

3)生成连续分钟

---生成连续的分钟
select
from_unixtime(t1.start_time+tab.pos*60) as continue_time
from
(
    select
    unix_timestamp('2021-12-01 00:00:00') as start_time   ---生成连续分钟的开始时间
		,unix_timestamp('2021-12-01 00:03:00') as end_time   ---生成连续分钟的结束时间
)t1
lateral view posexplode(split(repeat(',',cast((end_time-start_time)/60 as int)),',')) tab as pos,val;

输出结果:

4)生成连续秒

---生成连续的秒
select
from_unixtime(t1.start_time+tab.pos) as continue_time
from
(
    select
    unix_timestamp('2021-12-01 00:00:00') as start_time   ---生成连续秒的开始时间
		,unix_timestamp('2021-12-01 00:00:03') as end_time   ---生成连续秒的结束时间
)t1
lateral view posexplode(split(repeat(',',cast(end_time-start_time as int)),',')) tab as pos,val;

输出结果:

5)生成连续月

---生成连续的月
SELECT
	SUBSTR( add_months ( start_date, pos ), 1, 10 ) AS month_key 
FROM
	(SELECT '2023-03-01' AS start_date ) tmp 
	lateral VIEW posexplode ( split ( space( 3 ), '' ) ) t AS pos, val;

输出结果:

6)生产今年内的连续月

---生产今年内的连续月
SELECT
	SUBSTR( add_months ( 
	FROM_UNIXTIME( unix_timestamp( SUBSTR( start_date, 1, 4 ), 'yyyy' ))
	, pos ), 1, 10 ) AS month_key 
FROM
	(SELECT concat(substr(add_months('2023-03-01',1),0,4),'-01-01') AS start_date ) tmp 
	lateral VIEW posexplode ( split ( space( 11 ), '' ) ) t AS pos, val ;

输出结果:

5、时间和秒数互相转换

1)当前时间转换成秒数

SELECT
  hour('2023-06-06 12:00:00') * 3600 + minute('2023-06-06 12:00:00') * 60 + second('2023-06-06 12:00:00')
--输出:43200

2)秒数转换为时间(时分秒)

select
  concat(
    case
      when length(cast(floor(43200 / 3600) as string)) = 1 then concat('0', floor(43200 / 3600), ':')
      when length(cast(floor(43200 / 3600) as string)) = 2 then concat(floor(43200 / 3600), ':')
      else '00:'
    end,
    case
      when length(cast(floor(43200 % 3600 / 60) as string)) = 1 then concat('0', floor(43200 % 3600 / 60), ':')
      when length(cast(floor(43200 % 3600 / 60) as string)) = 2 then concat(floor(43200 % 3600 / 60), ':')
      else '00:'
    end,
    case
      when length(cast(floor(43200 % 3600 % 60) as string)) = 1 then concat('0', floor(43200 % 3600 % 60))
      when length(cast(floor(43200 % 3600 % 60) as string)) = 2 then floor(43200 % 3600 % 60)
      else '00'
    end
  )
--输出:12:00:00

22、工作特殊日期取数(有一些为工作环境内置函数)

1)当月最后一天更新完整月份时间范围的数据

例如,2024-09-30更新近半年2024-04-01至2024-09-30的数据

where month('${yyyy-MM-dd}') != month(date_add('${yyyy-MM-dd}', 1)) -- 月末最后一天
and busi_date <= default.pretradedate(add_months(default.datekey2date(concat('${YYYYMM}', '01')), 1), 1)
and busi_date >= add_months(default.datekey2date(concat('${YYYYMM}', '01')), -5)

2024-10-28 例子:
month('${yyyy-MM-dd}'):10
date_add('${yyyy-MM-dd}', 1) :2024-10-29
month(date_add('${yyyy-MM-dd}', 1)):10
concat('${YYYYMM}', '01'):20241001
default.datekey2date(concat('${YYYYMM}', '01'):2024-10-01
add_months(default.datekey2date(concat('${YYYYMM}', '01')), 1):2024-11-01
default.pretradedate(add_months(default.datekey2date(concat('${YYYYMM}', '01')), 1), 1):2024-10-31
add_months(default.datekey2date(concat('${YYYYMM}', '01')), -5):2024-05-01

2)上月最后一个交易日

select default.pretradedate(default.datekey2date(concat('${YYYYMM}', '01')), 1) DD

3)本月第一个交易日

select default.pretradedate(default.pretradedate(default.datekey2date(concat('${YYYYMM}', '01')),1),-1)

4)如果今天不是本月自然日最后一天,则取上月的最后一个交易日,否则取当月最后一个交易日

select (CASE WHEN MONTH('${yyyy-MM-dd}') != MONTH(date_add('${yyyy-MM-dd}',1)) 
THEN default.pretradedate(add_months(default.datekey2date(concat('${YYYYMM}', '01')),1), 1)
else default.pretradedate(default.datekey2date(concat('${YYYYMM}', '01')),1) end) DD

5)如果今天不是本月自然日最后一天,则取6个月前的第一天,否则取5个月前的第一天

--如果今天不是本月自然日最后一天,则取6个月前的第一天,否则取5个月前的第一天
select (CASE WHEN MONTH('${yyyy-MM-dd}') != MONTH(date_add('${yyyy-MM-dd}',1)) 
then add_months(default.datekey2date(concat('${YYYYMM}', '01')), -5)
else add_months(default.datekey2date(concat('${YYYYMM}', '01')), -6) end) DD

--参数:2024-12-12 202412
--输出:2024-06-01

--参数:2024-12-31 202412
--输出:2024-07-01

6)任务交易日执行,取次月第一个交易日数据

例如event_date ='2024-10-31'的数据会在busi_date = '2024-11-01'的数据才出现,而busi_date = '2024-10-31'的数据是没有的,需要统计为10月份的数据,因此需要判断

where '${yyyy-MM-dd}'= default.pretradedate(default.pretradedate(default.datekey2date(concat('${YYYYMM}', '01')),1),-1) -- 本月第一个交易日
--任务交易日执行,取次月第一个交易日数据
and busi_date = default.pretradedate(default.pretradedate(default.datekey2date(concat('${YYYYMM}', '01')),1),-1)
and event_date <= default.pretradedate(default.datekey2date(concat('${YYYYMM}', '01')), 1)
and event_date >= add_months(default.datekey2date(concat('${YYYYMM}', '01')), -6)

7)如果当日是交易日则取当日的数据,如果当日非交易日则取前一个交易日的数据

select default.pretradedate(date_add('${yyyy-MM-dd}',1),1)

8)每日更新近半年截至当日的数据,如果最后一天是30号,则取6个月前的最后一天

where A.busi_date >(case when month('${yyyy-MM-dd}') <> month(date_add('${yyyy-MM-dd}', 1)) then last_day(add_months('${yyyy-MM-dd}',-6))
else add_months('${yyyy-MM-dd}',-6) end)
and A.busi_date <= '${yyyy-MM-dd}'

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

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

相关文章

【原生js案例】如何让你的网页实现图片的按需加载

按需加载&#xff0c;这个词应该都不陌生了。我用到你的时候&#xff0c;你才出现就可以了。对于一个很多图片的网站&#xff0c;按需加载图片是优化网站性能的一个关键点。减少无效的http请求&#xff0c;提升网站加载速度。 感兴趣的可以关注下我的系列课程【webApp之h5端实…

大模型运用-Prompt Engineering(提示工程)

什么是提示工程 提示工程 提示工程也叫指令工程&#xff0c;涉及到如何设计、优化和管理这些Prompt&#xff0c;以确保AI模型能够准确、高效地执行用户的指令&#xff0c;如&#xff1a;讲个笑话、java写个排序算法等 使用目的 1.获得具体问题的具体结果。&#xff08;如&…

相位小数偏差(UPD)估计基本原理

PPP中的一个关键性难题在于非差模糊度固定&#xff0c;成功固定非差模糊度可以使 PPP 的收敛速度和定位精度得到显著提升 。 相位小数偏差 (UPD) 是致使相位模糊度失去整数特性的主要因素&#xff0c;精确估计并校正 UPD 是实现非差模糊度固定的重要前提&#xff0c;也是实现…

ES倒排索引实现? ES 索引文档过程?ES并发下读写一致?

ES倒排索引实现&#xff0c; ES 索引文档过程&#xff0c;ES并发下读写一致 一、Elasticsearch的基本概念二、Elasticsearch的工作原理简述三、Elasticsearch的应用场景四、面试问题问题1&#xff1a;Elasticsearch中的分片和副本是如何工作的&#xff1f;分片和副本的大小和数…

【h5py】 提取mat文件中的HDF5格式的数据

h5py 提取mat文件中的HDF5格式的数据 使用纯Python查看数据配合Matlab后&#xff0c;使用Python查看数据 一、使用纯Python查看文件数据内容 原理&#xff1a;当HDF5存储的是struct类型数据&#xff0c;解析时要像一棵树&#xff0c;我们需要逐层次的去解析&#xff0c;直到…

【数据分享】2013-2023年我国省市县三级的逐年CO数据(免费获取\excel\shp格式)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000-2023年的省市县三级的逐年PM2.5数据、2000-2023年的省市县三级的逐年PM10数据、2013-2023年的省市县三级的逐年SO2数据、2000-2023年省市县三级的逐年O3数据和2008-2023年我国省市县三级的逐…

《九重紫》逐集分析鉴赏第一集(下)

主标题&#xff1a;《九重紫》一起追剧吧 副标题&#xff1a;《九重紫》逐集分析鉴赏第一集&#xff08;下&#xff09;/《九重紫》逐集分析鉴赏1 接上回分解&#xff0c;窦昭和宋墨都安置城外万佛寺 交谈没一会儿&#xff0c;天还未亮&#xff0c;兵临寺下 记住这个人&…

Summarizing and Understanding Large Graphs

Summarizing and Understanding Large Graphs【总结和理解大规模图】 ☆ 研究背景 大规模图的理解和可视化是一个重要的开放性问题现有的社区发现和聚类方法无法很好地总结图的特征需要一种能够发现和描述图中重要结构的方法 ★ 成果简介 提出了VoG(Vocabulary-based summar…

人工智能系统

介绍人工智能 的基础书 点击这里 1.1 深度学习的历史&#xff0c;现状与发展 本章将介绍深度学习的由来&#xff0c;现状和趋势&#xff0c;让读者能够了解人工智能系统之上的深度学习负载的由来与趋势&#xff0c;为后面理解深度学习系统的设计和权衡形成初步的基础。我们在后…

康佳Android面试题及参考答案(多张原理图)

JVM 内存分布和分代回收机制是什么? JVM 内存主要分为以下几个区域。 堆(Heap)是 JVM 管理的最大的一块内存区域,主要用于存放对象实例。所有线程共享堆内存,在堆中又分为年轻代(Young Generation)和老年代(Old Generation)。年轻代又分为 Eden 区和两个 Survivor 区(…

(css)element中el-select下拉框整体样式修改

(css)element中el-select下拉框整体样式修改 重点代码&#xff08;颜色可行修改&#xff09; // 修改input默认值颜色 兼容其它主流浏览器 /deep/ input::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.50); } /deep/ input::-moz-input-placeholder {color: rgba…

论文概览 |《Sustainable Cities and Society》2024.12 Vol.116

本次给大家整理的是《Sustainable Cities and Society》杂志2024年12月第116期的论文的题目和摘要&#xff0c;一共包括52篇SCI论文&#xff01; 论文1 Enhancing road traffic flow in sustainable cities through transformer models: Advancements and challenges 通过变压…

【电源专题】开关转换器的三种过流保护方案

开关转换器内部集成功率开关,使限流保护成为基本功能。常用限流方案有三种:恒流限流、折返限流和打嗝模式限流。 恒流限流 对于恒流限流方案,当发生过载情况时,输出电流保持恒定值(ILIMIT)。因此,输出电压会下降。这种方案通过逐周期限流实现,利用流经功率开关的峰值电感…

网络与安全

文章目录 网络协议OSI七层模型TCP/IP协议族TCP协议UDP协议HTTP协议HTTPS协议 SocketSocket编程粘包与拆包 网络安全常见网络攻击及防护放火墙网络加密技术 跨域问题 网络协议 网络协议是计算机网络中设备和系统之间进行数据交换的规则和约定。它定义了数据的格式、传输方式、处…

鸿蒙项目云捐助第六讲鸿蒙App应用的首页导航资讯推荐功能的实现

鸿蒙项目云捐助第六讲鸿蒙App应用的首页导航资讯推荐功能的实现 前面的教程中已实现了启动页&#xff0c;登录页&#xff0c;注册页及首页的部分功能。这里有一些朋友提出问题&#xff0c;如何设置登录页面的背景图片。这里稍带说一个这个功能的实现。 一、登录页面的背景图片…

SpringCloud微服务实战系列:03spring-cloud-gateway业务网关灰度发布

目录 spring-cloud-gateway 和zuul spring webflux 和 spring mvc spring-cloud-gateway 的两种模式 spring-cloud-gateway server 模式下配置说明 grayLb://system-server 灰度发布代码实现 spring-cloud-gateway 和zuul zuul 是spring全家桶的第一代网关组件&#x…

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ &#xff0c;小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \sum_{…

[代码随想录17]二叉树之最大二叉树、合并二叉树、二搜索树中的搜索、验证二叉搜索树。

前言 二叉树的题目还是要会一流程构造函数之类的。其中还有回溯的思想 题目链接 654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 一、最大二叉树 思路&#xff1a;还是考察构造二叉树&#xff0c;简单来说就是给你一个数组去构建一个二叉树&#xff0c;递归来解决就…

让 Win10 上网本 Debug 模式 QUDPSocket 信号槽 收发不丢包的方法总结

在前两篇文章里&#xff0c;我们探讨了不少UDP丢包的解决方案。经过几年的摸索测试&#xff0c;其实方法非常简单, 无需修改代码。 1. Windows 下设置UDP缓存 这个方法可以一劳永逸解决UDP的收发丢包问题&#xff0c;只要添加注册表项目并重启即可。即使用Qt的信号与槽&#…

水凝胶微机器人:复杂体内环境的“导航高手”

大家好&#xff01;今天来了解一项关于成像引导的生物可吸收声学水凝胶微型机器人&#xff08;BAM&#xff09;的研究——《Imaging-guided bioresorbable acoustic hydrogel microrobots》发表于《SCIENCE ROBOTICS》。这项研究为生物医学工程领域带来了新的突破&#xff0c;有…