Spark SQL 每年的1月1日算当年的第一个自然周, 给出日期,计算是本年的第几周

一、问题

按每年的1月1日算当年的第一个自然周
(遇到跨年也不管,如果1月1日是周三,那么到1月5号(周日)算是本年的第一个自然周, 如果按周一是一周的第一天)
计算是本年的第几周,那么 spark sql 如何写 ?

二、分析

难点 :

  1. Spark SQL 的 DAYOFWEEK 函数返回的每周第一天是周日。
  2. 边界值的处理,即第一周如何判定、第二周从哪天开始计算。

对应的伪代码

int day_of_week(int day) {if ( day == 7) {return 1;} else {return day + 1;}
}dayofyear = DAYOFYEAR(your_date_column)
if(dayofyear <= 7 - day_of_week(first_day_of_year_week_number) + 1) {return 1;
} else {return ceil( (dayofyear - 1) / 7.0);
}

先给出 sql 关键逻辑

CASE WHEN DAYOFWEEK(your_date_column) = 1 THEN 7ELSE DAYOFWEEK(your_date_column) - 1
END AS day_of_week,CASE WHEN DAYOFWEEK(to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd')) = 1 THEN 7ELSE DAYOFWEEK(to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd')) - 1
END AS first_day_of_year_week_number,to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd') as first_day_of_year,// 上面的 sql 是内层CASE WHEN DAYOFYEAR(your_date_column) <= 8 - first_day_of_year_week_number THEN 1ELSE CEIL(  (DAYOFYEAR(your_date_column) - day_of_week ) / 7.0 ) + 1
END AS week_number,

多找一些边界值测试一下。

DAYOFWEEK(your_date_column)分别返回

周日		周一 	周二 	周三		周四		周五		周六
1		2		3		4		5		6		7

如果要让周一是第一天,那么需要调整偏移量

int day_of_week(int day) {if ( day == 7) {return 1;} else {return day + 1;}
}

调整后的函数逻辑

周一 	周二 	周三		周四		周五		周六		周日
1		2		3		4		5		6		7

sql 逻辑

 CASE WHEN DAYOFWEEK(your_date_column) = 1 THEN 7ELSE DAYOFWEEK(your_date_column) - 1END AS day_of_week,

在这里插入图片描述
2023-01-01 年是周日,
那么 DAYOFWEEK(your_date_column) 返回的是 1,即本周第一天。
WEEKOFYEAR(your_date_column) 返回的是 52, 即 2022 年最后一周。
但实际上我们要求的结果应该是 2023 年的第一周。

2023-01-02 年是周一,
那么 DAYOFWEEK(your_date_column) 返回的是 2,即本周第二天。
WEEKOFYEAR(your_date_column) 返回的是 1, 即 2023 年第一周。
但实际上我们要求的结果应该是 2023 年的第二周。

在这里插入图片描述

在这里插入图片描述

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

三、验证


drop table your_table;CREATE TABLE your_table (id INT,your_date_column DATE
);CREATE OR REPLACE TEMPORARY VIEW temp_view AS 
SELECT 1 as id, to_date('2023-01-01', 'yyyy-MM-dd') as your_date_column
UNION ALL SELECT 2, to_date('2023-01-02', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-03', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-04', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-05', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-06', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-07', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-08', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-09', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-10', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-11', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-12', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-13', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-14', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-15', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-16', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-17', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-18', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-19', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-20', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-21', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-22', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-23', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-24', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-25', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-26', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-27', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-28', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-29', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-30', 'yyyy-MM-dd')
UNION ALL SELECT 2, to_date('2023-01-31', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-01', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-02', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-03', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-04', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-05', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-06', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-07', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-08', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-09', 'yyyy-MM-dd')
UNION ALL SELECT 3, to_date('2023-02-15', 'yyyy-MM-dd')
UNION ALL SELECT 4, to_date('2023-12-31', 'yyyy-MM-dd')
UNION ALL SELECT 5, to_date('2024-01-01', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-02', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-03', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-04', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-05', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-06', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-07', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-08', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-09', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-10', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-11', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-12', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-13', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-14', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-15', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-16', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-17', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-18', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-19', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-20', 'yyyy-MM-dd')
UNION ALL SELECT 6, to_date('2024-01-21', 'yyyy-MM-dd')
;INSERT INTO your_table
SELECT * FROM temp_view;SELECT your_date_column,DAYOFYEAR(your_date_column),8 - first_day_of_year_week_number,(DAYOFYEAR(your_date_column) - day_of_week ),(DAYOFYEAR(your_date_column) - day_of_week ) / 7.0 ,CEIL(  (DAYOFYEAR(your_date_column) - day_of_week ) / 7.0 ),CEIL(  (DAYOFYEAR(your_date_column) - day_of_week ) / 7.0 ) + 1,CASE WHEN DAYOFYEAR(your_date_column) <= 8 - first_day_of_year_week_number THEN 1ELSE CEIL(  (DAYOFYEAR(your_date_column) - day_of_week ) / 7.0 ) + 1END AS week_number, // 所求的结果*
FROM (SELECT'|',your_date_column,DAYOFWEEK(your_date_column),DAYOFYEAR(your_date_column),CASE WHEN DAYOFWEEK(your_date_column) = 1 THEN 7ELSE DAYOFWEEK(your_date_column) - 1END AS day_of_week,CASE WHEN DAYOFWEEK(to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd')) = 1 THEN 7ELSE DAYOFWEEK(to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd')) - 1END AS first_day_of_year_week_number, // 每年第一天是周几,如果是周一返回 1,周日返回 7to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd') as first_day_of_year, // 每年第一天的日期date_format(your_date_column, 'EEEE') as WEEKFROMyour_table
);
2023-01-01	1	1	-6	-0.857143	0	1	1	|	2023-01-01	1	1	7	7	2023-01-01	Sunday
2023-01-02	2	1	1	0.142857	1	2	2	|	2023-01-02	2	2	1	7	2023-01-01	Monday
2023-01-03	3	1	1	0.142857	1	2	2	|	2023-01-03	3	3	2	7	2023-01-01	Tuesday
2023-01-04	4	1	1	0.142857	1	2	2	|	2023-01-04	4	4	3	7	2023-01-01	Wednesday
2023-01-05	5	1	1	0.142857	1	2	2	|	2023-01-05	5	5	4	7	2023-01-01	Thursday
2023-01-06	6	1	1	0.142857	1	2	2	|	2023-01-06	6	6	5	7	2023-01-01	Friday
2023-01-07	7	1	1	0.142857	1	2	2	|	2023-01-07	7	7	6	7	2023-01-01	Saturday
2023-01-08	8	1	1	0.142857	1	2	2	|	2023-01-08	1	8	7	7	2023-01-01	Sunday
2023-01-09	9	1	8	1.142857	2	3	3	|	2023-01-09	2	9	1	7	2023-01-01	Monday
2023-01-10	10	1	8	1.142857	2	3	3	|	2023-01-10	3	10	2	7	2023-01-01	Tuesday
2023-01-11	11	1	8	1.142857	2	3	3	|	2023-01-11	4	11	3	7	2023-01-01	Wednesday
2023-01-12	12	1	8	1.142857	2	3	3	|	2023-01-12	5	12	4	7	2023-01-01	Thursday
2023-01-13	13	1	8	1.142857	2	3	3	|	2023-01-13	6	13	5	7	2023-01-01	Friday
2023-01-14	14	1	8	1.142857	2	3	3	|	2023-01-14	7	14	6	7	2023-01-01	Saturday
2023-01-15	15	1	8	1.142857	2	3	3	|	2023-01-15	1	15	7	7	2023-01-01	Sunday
2023-01-16	16	1	15	2.142857	3	4	4	|	2023-01-16	2	16	1	7	2023-01-01	Monday
2023-01-17	17	1	15	2.142857	3	4	4	|	2023-01-17	3	17	2	7	2023-01-01	Tuesday
2023-01-18	18	1	15	2.142857	3	4	4	|	2023-01-18	4	18	3	7	2023-01-01	Wednesday
2023-01-19	19	1	15	2.142857	3	4	4	|	2023-01-19	5	19	4	7	2023-01-01	Thursday
2023-01-20	20	1	15	2.142857	3	4	4	|	2023-01-20	6	20	5	7	2023-01-01	Friday
2023-01-21	21	1	15	2.142857	3	4	4	|	2023-01-21	7	21	6	7	2023-01-01	Saturday
2023-01-22	22	1	15	2.142857	3	4	4	|	2023-01-22	1	22	7	7	2023-01-01	Sunday
2023-01-23	23	1	22	3.142857	4	5	5	|	2023-01-23	2	23	1	7	2023-01-01	Monday
2023-01-24	24	1	22	3.142857	4	5	5	|	2023-01-24	3	24	2	7	2023-01-01	Tuesday
2023-01-25	25	1	22	3.142857	4	5	5	|	2023-01-25	4	25	3	7	2023-01-01	Wednesday
2023-01-26	26	1	22	3.142857	4	5	5	|	2023-01-26	5	26	4	7	2023-01-01	Thursday
2023-01-27	27	1	22	3.142857	4	5	5	|	2023-01-27	6	27	5	7	2023-01-01	Friday
2023-01-28	28	1	22	3.142857	4	5	5	|	2023-01-28	7	28	6	7	2023-01-01	Saturday
2023-01-29	29	1	22	3.142857	4	5	5	|	2023-01-29	1	29	7	7	2023-01-01	Sunday
2023-01-30	30	1	29	4.142857	5	6	6	|	2023-01-30	2	30	1	7	2023-01-01	Monday
2023-01-31	31	1	29	4.142857	5	6	6	|	2023-01-31	3	31	2	7	2023-01-01	Tuesday
2023-02-01	32	1	29	4.142857	5	6	6	|	2023-02-01	4	32	3	7	2023-01-01	Wednesday
2023-02-02	33	1	29	4.142857	5	6	6	|	2023-02-02	5	33	4	7	2023-01-01	Thursday
2023-02-03	34	1	29	4.142857	5	6	6	|	2023-02-03	6	34	5	7	2023-01-01	Friday
2023-02-04	35	1	29	4.142857	5	6	6	|	2023-02-04	7	35	6	7	2023-01-01	Saturday
2023-02-05	36	1	29	4.142857	5	6	6	|	2023-02-05	1	36	7	7	2023-01-01	Sunday
2023-02-06	37	1	36	5.142857	6	7	7	|	2023-02-06	2	37	1	7	2023-01-01	Monday
2023-02-07	38	1	36	5.142857	6	7	7	|	2023-02-07	3	38	2	7	2023-01-01	Tuesday
2023-02-08	39	1	36	5.142857	6	7	7	|	2023-02-08	4	39	3	7	2023-01-01	Wednesday
2023-02-09	40	1	36	5.142857	6	7	7	|	2023-02-09	5	40	4	7	2023-01-01	Thursday
2023-02-15	46	1	43	6.142857	7	8	8	|	2023-02-15	4	46	3	7	2023-01-01	Wednesday
2023-12-31	365	1	358	51.142857	52	53	53	|	2023-12-31	1	365	7	7	2023-01-01	Sunday
2024-01-01	1	7	0	0.000000	0	1	1	|	2024-01-01	2	1	1	1	2024-01-01	Monday
2024-01-02	2	7	0	0.000000	0	1	1	|	2024-01-02	3	2	2	1	2024-01-01	Tuesday
2024-01-03	3	7	0	0.000000	0	1	1	|	2024-01-03	4	3	3	1	2024-01-01	Wednesday
2024-01-04	4	7	0	0.000000	0	1	1	|	2024-01-04	5	4	4	1	2024-01-01	Thursday
2024-01-05	5	7	0	0.000000	0	1	1	|	2024-01-05	6	5	5	1	2024-01-01	Friday
2024-01-06	6	7	0	0.000000	0	1	1	|	2024-01-06	7	6	6	1	2024-01-01	Saturday
2024-01-07	7	7	0	0.000000	0	1	1	|	2024-01-07	1	7	7	1	2024-01-01	Sunday
2024-01-08	8	7	7	1.000000	1	2	2	|	2024-01-08	2	8	1	1	2024-01-01	Monday
2024-01-09	9	7	7	1.000000	1	2	2	|	2024-01-09	3	9	2	1	2024-01-01	Tuesday
2024-01-10	10	7	7	1.000000	1	2	2	|	2024-01-10	4	10	3	1	2024-01-01	Wednesday
2024-01-11	11	7	7	1.000000	1	2	2	|	2024-01-11	5	11	4	1	2024-01-01	Thursday
2024-01-12	12	7	7	1.000000	1	2	2	|	2024-01-12	6	12	5	1	2024-01-01	Friday
2024-01-13	13	7	7	1.000000	1	2	2	|	2024-01-13	7	13	6	1	2024-01-01	Saturday
2024-01-14	14	7	7	1.000000	1	2	2	|	2024-01-14	1	14	7	1	2024-01-01	Sunday
2024-01-15	15	7	14	2.000000	2	3	3	|	2024-01-15	2	15	1	1	2024-01-01	Monday
2024-01-16	16	7	14	2.000000	2	3	3	|	2024-01-16	3	16	2	1	2024-01-01	Tuesday
2024-01-17	17	7	14	2.000000	2	3	3	|	2024-01-17	4	17	3	1	2024-01-01	Wednesday
2024-01-18	18	7	14	2.000000	2	3	3	|	2024-01-18	5	18	4	1	2024-01-01	Thursday
2024-01-19	19	7	14	2.000000	2	3	3	|	2024-01-19	6	19	5	1	2024-01-01	Friday
2024-01-20	20	7	14	2.000000	2	3	3	|	2024-01-20	7	20	6	1	2024-01-01	Saturday
2024-01-21	21	7	14	2.000000	2	3	3	|	2024-01-21	1	21	7	1	2024-01-01	Sunday
Time taken: 8.512 seconds, Fetched 63 row(s)在这个查询中:
date_format 函数的第二个参数 'EEEE' 指定返回完整的星期名称(如 Monday, Tuesday 等)。
DAYOFYEAR(your_date_column) 计算出年中的天数。
DAYOFWEEK(your_date_column) 返回一周中的某天(以周日为一周的第一天)。
// 直接求结果,整理后的 sql 表达式
SELECT your_date_column,CASE WHEN DAYOFYEAR(your_date_column) <= 8 - first_day_of_year_week_number THEN 1ELSE CEIL(  (DAYOFYEAR(your_date_column) - day_of_week ) / 7.0 ) + 1END AS week_number
FROM (SELECTyour_date_column,CASE WHEN DAYOFWEEK(your_date_column) = 1 THEN 7ELSE DAYOFWEEK(your_date_column) - 1END AS day_of_week,CASE WHEN DAYOFWEEK(to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd')) = 1 THEN 7ELSE DAYOFWEEK(to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd')) - 1END AS first_day_of_year_week_number,to_date(CONCAT( cast(YEAR(your_date_column) as string), '-01-01'), 'yyyy-MM-dd') as first_day_of_year,date_format(your_date_column, 'EEEE') as WEEKFROMyour_table
);2023-01-01	1
2023-01-02	2
2023-01-03	2
2023-01-04	2
2023-01-05	2
2023-01-06	2
2023-01-07	2
2023-01-08	2
2023-01-09	3
2023-01-10	3
2023-01-11	3
2023-01-12	3
2023-01-13	3
2023-01-14	3
2023-01-15	3
2023-01-16	4
2023-01-17	4
2023-01-18	4
2023-01-19	4
2023-01-20	4
2023-01-21	4
2023-01-22	4
2023-01-23	5
2023-01-24	5
2023-01-25	5
2023-01-26	5
2023-01-27	5
2023-01-28	5
2023-01-29	5
2023-01-30	6
2023-01-31	6
2023-02-01	6
2023-02-02	6
2023-02-03	6
2023-02-04	6
2023-02-05	6
2023-02-06	7
2023-02-07	7
2023-02-08	7
2023-02-09	7
2023-02-15	8
2023-12-31	53
2024-01-01	1
2024-01-02	1
2024-01-03	1
2024-01-04	1
2024-01-05	1
2024-01-06	1
2024-01-07	1
2024-01-08	2
2024-01-09	2
2024-01-10	2
2024-01-11	2
2024-01-12	2
2024-01-13	2
2024-01-14	2
2024-01-15	3
2024-01-16	3
2024-01-17	3
2024-01-18	3
2024-01-19	3
2024-01-20	3
2024-01-21	3
Time taken: 0.493 seconds, Fetched 63 row(s)
23/11/14 14:27:07 INFO SparkSQLCLIDriver: Time taken: 0.493 seconds, Fetched 63 row(s)

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

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

相关文章

kubernetes集群编排——etcd

备份 从镜像中拷贝etcdctl二进制命令 [rootk8s1 ~]# docker run -it --rm reg.westos.org/k8s/etcd:3.5.6-0 sh 输入ctrlpq快捷键&#xff0c;把容器打入后台 获取容器id [rootk8s1 ~]# docker ps 从容器拷贝命令到本机 docker container cp c7e28b381f07:/usr/local/bin/etcdc…

cadence virtuoso layout drc error

问题&#xff1a; The BORDER layer must enclose all chip layout patterns, which all chip layout patterns include seal ring if seal ring has been added by designers. This rule checking includes the layers of DNW,AA,NW,NC,PC,MVN, MVP,DG,GT,SN,SP,SAB,CT,M1,V1…

C语言——分割单向链表

本文的内容是使用C语言分割单向链表&#xff0c;给出一个链表和一个值&#xff0c;要求链表中小于给定值的节点全都位于大于或等于给定值的节点之前&#xff0c;打印原始链表的所有元素和经此操作之后链表的所有元素。 分析&#xff1a;本题只是单向链表的分割&#xff0c;不涉…

年薪百万的人怎么做好工作复盘和总结

我们在为谁工作&#xff1f; 在大山宏泰《我们为什么工作》一书中有提到过&#xff1a; 70%左右的人认为工作只是维持生计的存在&#xff1b; 20%左右的人认为工作是个人价值的体现&#xff1b; 不到10%的人才会认为工作是幸福的。 人类的终极幸福有四重&#xff1a;被爱&…

Poly风格模型的创建与使用_unity基础开发教程

Poly风格模型的创建与使用 安装Poly相关组件Poly模型的创建Poly模型编辑 安装Poly相关组件 打开资源包管理器Package Manager 在弹出的窗口左上角Packages选择Unity Registry 搜索框搜索 Poly 搜索结果点击Polybrush 点击右下角 Install 同时也别忘了导入一下模型示例&#…

openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-144) - 验证

文章目录 openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-144) - 验证概述笔记重复数字IO的问题想法手工实现程序实现确定要摘掉的数字重合线自动化测试的问题测试程序的场景测试程序的运行效果测试程序实现备注END openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-14…

Jenkins的一些其他操作

Jenkins的一些其他操作 1、代码仓库Gogs的搭建与配置 Gogs 是一款极易搭建的自助 Git 服务&#xff0c;它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发&#xff0c;支持了 Go 语言支持的所有平台&#xff0…

find和grep命令的简单使用

find和grep命令的简单使用 一、find例子--不同条件查找 二、grep正则表达式的简单说明例子--简单文本查找例子--结合管道进行查找 一、find find 命令在指定的目录下查找对应的文件。 find [path] [expression]● path 是要查找的目录路径&#xff0c;可以是一个目录或文件名…

asp.net core mvc 之 依赖注入

一、视图中使用依赖注入 1、core目录下添加 LogHelperService.cs 类 public class LogHelperService{public void Add(){}public string Read(){return "日志读取";}} 2、Startup.cs 文件中 注入依赖注入 3、Views目录中 _ViewImports.cshtml 添加引用 4、视图使用…

软文推广中媒体矩阵的优势在哪儿

咱们日常生活中是不是经常听到一句俗语&#xff0c;不要把鸡蛋放在同一个篮子里&#xff0c;其实在广告界这句话也同样适用&#xff0c;媒介矩阵是指企业在策划广告活动时&#xff0c;有目的、有计划的利用多种媒体进行广告传播&#xff0c;触达目标用户。今天媒介盒子就来和大…

Hbase 迁移小结:从实践中总结出的最佳迁移策略

在数据存储和处理领域&#xff0c;HBase作为一种分布式、可扩展的NoSQL数据库&#xff0c;被广泛应用于大规模数据的存储和分析。然而&#xff0c;随着业务需求的变化和技术发展的进步&#xff0c;有时候我们需要将现有的HBase数据迁移到其他环境或存储系统。HBase数据迁移是一…

缓存穿透、缓存击穿、缓存雪崩

目录 一、缓存的概念 1.为什么需要把用户的权限放入redis缓存 2.为什么减低了数据库的压力呢&#xff1f; 3.那么什么情况下用redis,什么情况下用mysql呢&#xff1f; 4.关于权限存入redis的逻辑&#xff1f; 二、使用缓存出现的三大情况 1.缓存穿透 1.1概念 1.2出现原…

2023/11/15JAVA学习

如何多开一个程序

企业设备巡检的痛点和解决方案

在设备巡检过程中&#xff0c;企业常面临多种痛点。首先&#xff0c;信息管理不足是一个关键问题&#xff0c;企业往往缺乏全面、准确的设备信息记录&#xff0c;这导致巡检工作缺乏针对性和效率。其次&#xff0c;巡检流程的非标准化使得巡检结果出现不一致&#xff0c;重要的…

RGB转Bayer,一个小数点引发的血案

前几天写了一个RGB数据转Bayer格式的函数&#xff0c;经过测试功能正常。后来把这个函数用到一个数据库构建中&#xff0c;结果数据库出来的结果一直是一张黑图&#xff0c;追查了好几个小时&#xff0c;总算把这只虫子找出来了&#xff0c;原来是一个整数后面的小数点作祟。 …

Docker 和 Kubernetes:技术相同和不同之处

Docker和Kubernetes是当今最流行的容器化技术解决方案。本文将探讨Docker和Kubernetes的技术相似之处和不同之处&#xff0c;以帮助读者更好地理解这两种技术。 Docker和Kubernetes&#xff1a;当今最流行的容器化技术解决方案 在当今的IT领域&#xff0c;Docker和Kubernetes无…

阿里云99元VS腾讯云88元,双11云服务器价格战,谁胜谁负?

在2023年的双十一优惠活动中&#xff0c;阿里云推出了一系列令人惊喜的优惠活动&#xff0c;其中包括99元一年的超值云服务器。本文将带您了解这些优惠活动的具体内容&#xff0c;以及与竞争对手腾讯云的价格对比&#xff0c;助您轻松选择最适合的云服务器。 99元一年服务器优…

23000 个恶意流量代理的 IPStorm 僵尸网络被拆除

美国司法部今天宣布&#xff0c;联邦调查局取缔了名为 IPStorm 的僵尸网络代理服务的网络和基础设施。 IPStorm 使网络犯罪分子能够通过世界各地的 Windows、Linux、Mac 和 Android 设备匿名运行恶意流量。 与此案相关的俄罗斯裔摩尔多瓦籍公民谢尔盖马基宁 (Sergei Makinin)…

传统工艺的数字时代转变:十八数藏的文化创新

在传统工艺和数字时代的交汇之处&#xff0c;十八数藏以其独特的文化创新走在了前列。这场数字时代的转变为传统工艺注入了新的生命和活力。 十八数藏的文化创新并非简单的数字应用&#xff0c;而是一场深刻的转变。通过数字技术&#xff0c;传统工艺被赋予了新的表达方式&…

【echarts】实现单线与多线滚轮联动、隐藏拖拽、关闭动画

单线滚轮联动 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>ECharts DataZoom</title><script src"https://cdn.jsdelivr.net/npm/echarts5.2.0/dist/echarts.min.js"></script> </hea…