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

横扫SQL面试——连续性登录问题

横扫SQL面试

📌 连续性登录问题

在这里插入图片描述

在互联网公司的SQL面试中,连续性问题堪称“必考之王”。💻🔍

用户连续登录7天送优惠券🌟服务器连续报警3次触发熔断⚠️图书馆连续3天人流破百开启限流⚡” …

既考察你对窗口函数的灵活运用,又考验你能否将业务场景抽象为数学模型。


博主总结一些经典题型,帮列位小伙伴拿下这类题目🤣 🤣 🤣 🤣


Tips:
暴力解法(如自连接、逐行遍历)在数据量小时勉强可用,但面对百万级📈数据时:

  • 性能灾难:自连接时间复杂度达O(n²),1万行数据需1亿次计算 🔥
  • 逻辑漏洞:简单lag/lead无法处理连续多天的复杂中断

而真正的工业级解法,只需一行窗口函数 + 虚拟分组标记,就能以O(n)时间复杂度解决问题! 🚀

🌟 连续问题通用解法框架

步骤核心操作 🔑适用场景
生成连续标记date - row_number() over(...)映射连续日期到同一虚拟组
分组统计group by 虚拟组标记计算连续天数/次数
结果筛选having count(*) >= N过滤满足条件的连续事件

话不多说——直接上题:🎈🎈🎈🎈🎈🎈🎈


🎯1. 最长连续登录天数

你正在搭建一个用户活跃度的画像,其中一个与活跃度相关的特征是“最长连续登录天数”

表名字段名描述数据类型
tb_daufdate登录日期DATE
user_id用户唯一标识INT

计算用户在指定时间段内的最长连续登录天数。例如:统计用户2023年1月的最长连续登录记录。

fdateuser_id
2023-01-0110000
2023-01-0210000
2023-01-0410000

预期结果🔑

user_idmax_consec_days
100002

博主按照解题框架 一步一步带大家看哈~🤣🤣🤣

步骤1:生成连续标记(CTE t1)🧩

为每个用户的登录日期生成序号,标记连续登录的潜在分组。

with t1 as (selectuser_id,fdate,-- 默认大家都是有基础的哈 窗口函数应该都会哈row_number() over(partition by user_id order by fdate) as rnfrom tb_dauwhere fdate between '2023-01-01' and '2023-01-31'
)

临时表 t1:✅

user_idfdatern
100002023-01-011
100002023-01-022
100002023-01-043

在这里插入图片描述

  • rn 表示用户按日期排序后的登录次数序号。
  • 连续日期的 rn 差值等于日期差值(例如:2023-01-02 是第2次登录,日期差为1天)。

步骤2:计算虚拟起始点(CTE t2)🧩

通过 date_sub(fdate, interval rn day) 将连续日期映射到同一虚拟起始点。

t2 as (selectuser_id,fdate,date_sub(fdate, interval rn day) as start_datefrom t1
)

临时表 t2:✅

user_idfdatestart_date
100002023-01-012022-12-31
100002023-01-022022-12-31
100002023-01-042023-01-01

在这里插入图片描述

  • 连续日期的 start_date 相同(如1月1日和1月2日均映射到2022-12-31)。
  • 非连续日期的 start_date 不同(如1月4日映射到2023-01-01)。

步骤3:统计连续天数(CTE t3)🧩

按用户和虚拟起始点分组,统计每组中的记录数(即连续天数)。

t3 as (selectuser_id,start_date,count(*) as cntfrom t2group by user_id, start_date
)

临时表 t3:✅

user_idstart_datecnt
100002022-12-312
100002023-01-011

在这里插入图片描述

  • cnt 表示每个虚拟起始点对应的连续登录天数。
  • 用户10000有两个连续区间:2天和1天。

最终结果取每个用户的最大连续天数。🧩
selectuser_id,max(cnt) as max_consec_days
from t3
group by user_id;

输出结果:✅

在这里插入图片描述

user_idmax_consec_days
100002
技术本质🧩

通过 date_sub(fdate, interval rn day),将连续日期的差值抵消,映射到同一虚拟起始点:

  • 连续日期fdate - rn 恒定✨(如 1月1日-1天=12月31日,1月2日-2天=12月31日)。
  • 非连续日期fdate - rn 不同(如1月4日-3天=1月1日)。

将连续性问题转化为分组计数问题,时间复杂度仅为 O(n)。✨

完整代码 ~

-- 定义第一个公共表表达式 (CTE) t1,用于计算每个用户登录日期的排序
with t1 as (selectuser_id,  -- 用户IDfdate,    -- 登录日期row_number() over(partition by user_id order by fdate) as rn  -- 为每个用户的登录日期生成排序编号from tb_dauwhere fdate between '2023-01-01' and '2023-01-31'  -- 选择指定日期范围内的记录
), -- 定义第二个公共表表达式 (CTE) t2,用于计算每个登录日期的起始日期
t2 as (selectuser_id,  -- 用户IDfdate,    -- 登录日期date_sub(fdate, interval rn day) as start_date  -- 计算起始日期:将登录日期减去排序编号天数from t1
), -- 定义第三个公共表表达式 (CTE) t3,用于计算每个用户在相同起始日期下的连续登录天数
t3 as (selectuser_id,  -- 用户IDcount(*) as cnt  -- 计算连续登录天数from t2group by user_id, start_date  -- 按用户和起始日期分组
)-- 从 t3 表中选择用户ID和其最大连续登录天数
selectuser_id,  -- 用户IDmax(cnt) as max_consec_days  -- 最大连续登录天数
from t3
group by user_id;  -- 按用户ID分组

🎯2. 连续出现的数字

从数字序列中找出至少连续出现3次的数字。例如:[1, 1, 1, 2, 2, 3] 中,1 连续出现3次。

表名字段名描述数据类型
logsid记录序号INT
num数字值INT
idnum
11
21
31
42
52
63
ConsecutiveNums
1

这题同理~连续性问题解法框架:
1.💡 标记连续性:使用 row_number() 生成序号。
2. 🔍生成虚拟组:通过差值(如 id - rn)抵消连续增量。
3. 🛠️分组统计:按虚拟组聚合,筛选满足条件的结果。

步骤1:生成连续标记(CTE t1)🚀

为每个数字按 id 排序生成行号,标记连续出现的潜在分组。

with t1 as (selectnum,id,row_number() over(partition by num order by id) as rnfrom logs
)

临时表 t1:✅

numidrn
111
122
133
241
252
361

在这里插入图片描述

  • rn 表示相同数字(num)按 id 排序后的出现次数序号。
  • 连续相同数字的 idrn 的差值恒定(例如:num=1 时,id - rn = 0)。

步骤2:计算虚拟分组标记(CTE t2)🚀

通过 id - rn 生成分组标记 group_id,将连续相同数字映射到同一虚拟组。

t2 as (selectnum,id - rn as group_idfrom t1
)

临时表 t2:✅

numgroup_id
10
10
10
23
23
35

在这里插入图片描述

  • 连续相同数字的 group_id 相同(如 num=1 的3条记录均为 group_id=0)。
  • 非连续或不同数字的 group_id 不同(如 num=2num=3)。

步骤3:统计连续出现次数(最终查询)🚀

numgroup_id 分组,筛选出出现次数≥3的组,并去重输出结果。

select distinct num as ConsecutiveNums
from t2
group by num, group_id
having count(*) >= 3;

分组统计结果:✅

numgroup_idcount(*)
103
232
351

在这里插入图片描述

最终输出:✅

ConsecutiveNums
1

技术本质🚀

通过 id - row_number(),将连续相同数字的差值抵消,映射到同一虚拟分组:

  • 连续相同数字id - rn 恒定🔥(如 num=1 时,id=1,2,31-1=0, 2-2=0, 3-3=0)。
  • 非连续或不同数字id - rn 不同(如 num=2 时,id=4,54-1=3, 5-2=3,但次数不足)。

如果题目要求连续出现4次,只需修改 having 条件:

having count(*) >= 4  -- 筛选连续出现4次的数字

🎯3. 新注册用户连续登录不少于3天

筛选出新注册用户在注册后至少连续登录3天的用户列表。例如:用户注册后连续登录了2023-01-01、01-02、01-03三天。

表名字段名描述数据类型
tb_usersuser_id用户唯一标识INT
reg_date用户注册日期DATE
tb_loginuser_id用户唯一标识INT
login_date用户登录日期DATE

用户表 (tb_users)✅

user_idreg_date
100012023-01-01
100022023-01-05

登录表 (tb_login)✅

user_idlogin_date
100012023-01-01
100012023-01-02
100012023-01-03
100022023-01-05
100022023-01-06

预期结果

user_id
10001
步骤1:关联用户与登录数据(CTE login_sequence)✅

筛选注册后7天内的登录记录,并为每个用户的登录日期生成行号。

with login_sequence as (selectu.user_id,l.login_date,-- 为每个用户的登录日期生成行号(按日期排序)row_number() over(partition by u.user_id order by l.login_date) as rnfrom tb_users ujoin tb_login l on u.user_id = l.user_idand l.login_date between u.reg_date and u.reg_date + interval 7 day
)

临时表 login_sequence:✅

user_idlogin_datern
100012023-01-011
100012023-01-022
100012023-01-033
100022023-01-051
100022023-01-062
  • rn 表示用户按登录日期排序后的连续次数。
  • login_date between reg_date and reg_date + 7 day 限定注册后7天内的登录行为。

限定用户注册后7天内的登录行为,聚焦新用户关键活跃期,数据进入窗口函数前剔除无效数据,避免对全量数据排序。聚焦核心业务目标(如新用户激活率、首周留存率)


步骤2:生成虚拟分组标记(CTE consec_groups)🚀

计算 login_date - rn,将连续日期映射到同一虚拟起始点。

consec_groups as (selectuser_id,login_date,-- 计算虚拟分组标记(连续日期的差值为0)date_sub(login_date, interval rn day) as group_idfrom login_sequence
)

临时表 consec_groups:✅

user_idlogin_dategroup_id
100012023-01-012022-12-31
100012023-01-022022-12-31
100012023-01-032022-12-31
100022023-01-052023-01-04
100022023-01-062023-01-04
  • 连续登录的日期差值相同(如用户10001的3次登录均映射到 2022-12-31)。🚀🚀🚀
  • 非连续登录的日期差值不同(如用户10002的2次登录映射到 2023-01-04)。

步骤3:统计连续登录天数(最终查询)

按用户和虚拟分组标记统计连续天数,筛选≥3天的用户。

distinct user_id 确保用户多次满足条件时只输出一次。

select distinct user_id
from consec_groups
group by user_id, group_id
having count(*) >= 3;

分组统计结果:✅

user_idgroup_idcount(*)
100012022-12-313
100022023-01-042

最终输出:✅

user_id
10001

💡 关键逻辑

虚拟分组标记
date_sub(login_date, interval rn day) 将连续日期映射到同一虚拟起始点,本质是公式:
连续天数 = 最大登录日期 - 最小登录日期 + 1 (若连续,则 login_date - rn 恒定)


🎯4. 图书馆高峰期检测

找出图书馆连续3天及以上人流量≥100的高峰时段。例如:2023-01-02至2023-01-04连续三天人流量达标。

表名字段名描述数据类型
infodate日期DATE
people人流量INT
datepeople
2023-01-0170
2023-01-02100
2023-01-03120
2023-01-04120
2023-01-0590

预期结果

start_dateend_dateconsecutive_days
2023-01-022023-01-043

后面博主就不再啰嗦啦 大家可以发现 套路是不是都一样~🤣🤣🤣 “标记→分组→过滤”✅✅✅

with valid_days as (select date,date - row_number() over(order by date) as grpfrom infowhere people >= 100
),
consec_groups as (selectmin(date) as start_date,max(date) as end_date,count(*) as consecutive_daysfrom valid_daysgroup by grphaving count(*) >= 3
)
select * from consec_groups;
  1. 筛选有效日期:过滤人流量≥100的天数。
  2. 生成连续组标记date - row_number() 将连续有效日期映射到同一组。
  3. 统计连续时段:按组统计起止日期和持续天数。

🎯5. 用户指标检测

从订单表中筛选出连续三天及以上每天总下单金额均超过100元的用户。例如:用户A在2023-01-01至2023-01-03每天的总消费分别为120元、150元、110元,满足条件。

表名字段名描述数据类型
order_tableid订单编号INT
dt下单日期DATE
amount订单金额INT
iddtamount
10012021-12-12123
10022021-12-1245
10012021-12-1343
10012021-12-1345
10012021-12-14230

预期结果

user_id
1001
-- 步骤1:按用户和日期汇总金额,过滤每天金额>100的记录
with daily_summary as (selectid as user_id,dt,sum(amount) as total_amountfrom order_tablegroup by user_id, dthaving sum(amount) > 100
),
-- 步骤2:生成连续标记
sequence_marker as (selectuser_id,dt,date_sub(dt, interval row_number() over(partition by user_id order by dt) day) as grpfrom daily_summary
),
-- 步骤3:统计连续天数
consec_groups as (selectuser_id,grp,count(*) as consec_days,min(dt) as start_date,max(dt) as end_datefrom sequence_markergroup by user_id, grphaving count(*) >= 3  -- 连续3天及以上
)
-- 步骤4:输出结果
select distinct user_id
from consec_groups;
  1. 按天汇总金额group by user_id, dt 处理一天多笔订单。
  2. 生成虚拟分组date_sub(dt, interval row_number() day) 将连续日期映射到同一虚拟组。
  3. 统计连续天数:筛选连续≥3天的用户。

🎯6. 用户最大连续缴费次数

计算每个用户的最长连续缴费天数。例如:用户U002在2023-01-03至2023-01-05连续缴费3天,结果为3。

表名字段名描述数据类型
payment_loguser_id用户唯一标识VARCHAR
pay_date缴费日期DATE
amount缴费金额INT
user_idpay_dateamount
U0012023-01-01100
U0012023-01-02200
U0012023-01-04150
U0022023-01-0380
U0022023-01-0490
U0022023-01-05120

预期结果

user_idmax_consec_days
U0012
U0023

with payment_sequence as (selectuser_id,pay_date,date_sub(pay_date, interval row_number() over(partition by user_id order by pay_date) day) as grpfrom payment_log
),
consec_groups as (selectuser_id,grp,count(*) as consec_daysfrom payment_sequencegroup by user_id, grp
)
selectuser_id,max(consec_days) as max_consec_days
from consec_groups
group by user_id;
  1. 生成虚拟分组date_sub(pay_date, interval row_number() day) 标记连续缴费序列。
  2. 统计连续天数:按用户和虚拟组计算连续缴费次数。
  3. 取最大值max(consec_days) 获取每个用户的最大连续天数。

🧩 连续性问题的通用解法框架

步骤核心操作适用场景
数据清洗按业务需求聚合数据(如按天汇总金额)处理多笔记录/噪声数据
生成连续标记date - row_number() 映射连续日期到虚拟组统一连续序列的时空标识
分组统计group by 虚拟组标记计算连续天数/次数
结果筛选havingmax() 过滤目标结果输出满足条件的用户或时段

这一套组合拳下来✅✅✅ 相信列位面试在遇到连续性登录问题 丝毫不慌了😂


留个作业~ 有些难度哈——合并用户停留位置

给定用户位置停留记录,需要对同一个用户在同一个位置的连续多条记录进行合并合并原则为开始时间取最早时间,停留时长加和。

表名字段名字段含义数据类型
用户位置停留记录表user用户标识VARCHAR
location位置标识VARCHAR
start_time停留开始时间DATETIME
stay_duration停留的时长(分钟)INT
userlocationstart_timestay_duration
UserALocationA2018-01-01 08:00:0060
UserALocationA2018-01-01 09:00:0060
UserALocationB2018-01-01 10:00:0060
UserALocationA2018-01-01 11:00:0060

结果预期:

userlocationstart_timestay_duration
UserALocationA2018-01-01 08:00:00120(08:00:00 开始的 60 分钟和 09:00:00 开始的 60 分钟合并)
UserALocationB2018-01-01 10:00:0060
UserALocationA2018-01-01 11:00:0060

很熟悉的套路啦

第一步:按照 用户 、 地点 分组 起始时间 去排序。

在这里插入图片描述

第二步:按照连续登录问题 A列 - 排序列 做一个 分组标记

在这里插入图片描述

第3步 分组之后 min sum聚合即可~

在这里插入图片描述


后续还会继续更新奥 求关注 求订阅~🌟🌟🌟🌟

相关文章:

横扫SQL面试——连续性登录问题

横扫SQL面试 📌 连续性登录问题 在互联网公司的SQL面试中,连续性问题堪称“必考之王”。💻🔍 用户连续登录7天送优惠券🌟,服务器连续报警3次触发熔断⚠️,图书馆连续3天人流破百开启限流⚡” …...

爱因斯坦求和 torch

目录 向量点积 矩阵乘法 矩阵转置 向量转换相机坐标系 在 Python 的科学计算库(如 NumPy)中,einsum 是一个强大的函数,它可以简洁地表示各种张量运算。下面是几个不同类型的使用示例: 向量点积 向量点积是两个向量…...

Spring Initializr搭建spring boot项目

介绍 Spring Initializr 是一个用于快速生成 Spring Boot 项目结构的工具。它为开发者提供了一种便捷的方式,可以从预先定义的模板中创建一个新的 Spring Boot 应用程序,从而节省了从头开始设置项目的大量时间。 使用 Spring Initializr,你…...

【实战】渗透测试下的文件操作

目录 Linux查找文件 Windows查找文件 查找可写目录 windows Linux 创建 Windows Linux 压缩 解压 远程解压文件 Linux查找文件 >find / -name index.php 查找木马文件 >find . -name *.php | xargs grep -n eval( >find . -name *.php | xargs grep -n ass…...

MATLAB 控制系统设计与仿真 - 30

用极点配置设计伺服系统 方法2-反馈修正 如果我们想只用前馈校正输入,从而达到伺服控制的效果,我们需要很精确的知道系统的参数模型,否则系统输出仍然具有较大的静态误差。 但是如果我们在误差比较器和系统的前馈通道之间插入一个积分器&a…...

P1091 [NOIP 2004 提高组] 合唱队形

题目链接: 思路: 题目意思,找出最少的同学出列,保证学生 1-t 上升, t-n 下降。我们只要求出每个点的最长上升子序列和最长不上升子序列,然后总人数-最长上升子序列和最长不上升子序列1,就是最少…...

小林coding-12道Spring面试题

1.说一下你对 Spring 的理解?spring的核心思想说说你的理解? 2.Spring IoC和AOP 介绍一下?Spring的aop介绍一下?IOC和AOP是通过什么机制来实现的?怎么理解SpringIoc?依赖倒置,依赖注入,控制反转分别是什么?依赖注…...

通过Spring Boot集成WebSocket进行消息通信

文章目录 通过Spring Boot集成WebSocket进行消息通信1. 创建 Spring Boot 项目2. 添加 WebSocket 依赖3. 配置 WebSocket4. 创建 WebSocket 处理器5. 创建控制器(可选)6. 前端页面测试7. 运行项目注意事项 通过Spring Boot集成WebSocket进行消息通信 1.…...

ComfyUI发展全景:从AI绘画新星到多功能创意平台的崛起

在人工智能技术迅猛发展的浪潮中,ComfyUI作为基于Stable Diffusion的开源工具,已经从最初的AI绘画辅助软件成长为支持多模态创作的强大平台。本文将全面梳理ComfyUI的发展历程、技术特点、应用场景及其在AIGC生态中的独特地位,同时展望这一工…...

11-项目涉及设备的问题

我们部门在开发一些项目时,确实需要借用设备,但每次开发新需求时都要从硬件部门借设备,开发完成后又要归还。这种频繁的借还流程不仅增加了沟通成本,还导致项目负责人和开发人员对设备的功能和应用场景缺乏直观的了解。有时甚至连…...

将 Markdown 表格结构转换为Excel 文件

在数据管理和文档编写过程中,我们经常使用 Markdown 来记录表格数据。然而,Markdown 格式的表格在实际应用中不如 Excel 方便,特别是需要进一步处理数据时。因此,我们开发了一个使用 wxPython 的 GUI 工具,将 Markdown…...

C++学习之Linux文件编译、调试及库制作

目录 1.rwx对于文件和目录的区别 2.gcc编译过程 3.数据段合并和地址回填说明 4.gcc编译其他参数 5.函数库简介 6.静态库的使用 7.动态库的简介 8.动态库制作基本流程 9.启动APP错误解决方案12 10.启动APP错误解决方案34 11.makefile一组规则 12.makefile的两个函数 …...

neo4j中导入csv格式的三元组数据

csv数据格式: head_entity,relation,tail_entity 02.02类以外的脂肪乳化制品,包括混合的和(或)调味的脂肪乳化制品,允许添加,β-胡萝卜素 02.02类以外的脂肪乳化制品,包括混合的和(或)调味的脂…...

高项第十六章——项目采购管理

什么是采购管理?项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。 项目采购管理包括编制和管理协议所需的管理和控制过程。 16_1 管理基础 什么是协议?协议是用于明确项目初步意向的任何文件或沟通结果,协议的范…...

架构师面试(二十二):TCP 协议

问题 今天我们聊一个非常常见的面试题目,不管前端还是后端,也不管做的是上层业务还是底层框架,更不管技术方向是运维还是架构,都可以思考和参与一下哈! TCP协议无处不在,我们知道 TCP 是基于连接的端到端…...

五.ubuntu20.04 - ffmpeg推拉流以及Nginx、SRS本地部署

一.本地部署nginx 1.编译ffmpeg,参考这位博主的,编译选项有的enable找不到的不需要的可以直接删除,但是像sdl(包含ffplay)、h264、h265这些需要提前下载好,里面都有下载指令。 Ubuntu20.04 编译安装 FFmp…...

JS 手撕题高频考点

前端面试中,JS 手撕题是高频考点,主要考察 编程能力、算法思维、JS 核心知识。以下是最常见的手撕题分类 代码示例: 目录 📌 1. 手写函数柯里化📌 2. 手写 debounce(防抖)📌 3. 手写…...

Hyperlane框架临时上下文数据管理:提升Web开发效率的利器

Hyperlane框架临时上下文数据管理:提升Web开发效率的利器 在现代Web开发中,临时上下文数据管理是实现高效请求处理的关键。Hyperlane框架通过创新的临时上下文存储机制,为开发者提供了一套简洁、安全的解决方案,让数据在请求生命…...

QT操作PDF文件

Qt 早期本身不提供原生的 PDF 操作功能。从 Qt 5.15 开始,Qt 提供了 PDF 模块,可以显示和提取 PDF 内容。Qt中有如下几种方式实现 PDF 文件的生成、读取和操作。 1、使用 QPrinter 生成 PDF 2、使用 Qt PDF 模块 (Qt 5.15+) 3、使用第三方库(比如:Poppler) 一、使用 Q…...

【算法手记8】NC95 数组中的最长连续子序列 字母收集

🦄个人主页:修修修也 🎏所属专栏:刷题 ⚙️操作环境:牛客网 目录 一.NC95 数组中的最长连续子序列 题目详情: 题目思路: 解题代码: 二.字母收集 题目详情: 题目思路: 解题代码: 结语 一.NC95 数组中的最长连续子序列 牛客网题目链接(点击即可跳转):NC95 …...

AI渗透测试:网络安全的“黑魔法”还是“白魔法”?

引言:AI渗透测试,安全圈的“新魔法师” 想象一下,你是个网络安全新手,手里攥着一堆工具,正准备硬着头皮上阵。这时,AI蹦出来,拍着胸脯说:“别慌,我3秒扫完漏洞&#xff0…...

使用perf工具分析Linux系统的性能瓶颈

想获取更多高质量的Java技术文章?欢迎访问Java技术小馆官网,持续更新优质内容,助力技术成长 Java技术小馆官网https://www.yuque.com/jtostring 使用perf工具分析Linux系统的性能瓶颈 在现代计算系统中,性能瓶颈是一个经常遇到…...

知识就是力量——HELLO GAME WORD!

你好!游戏世界! 简介环境配置前期准备好文章介绍创建头像小功能组件安装本地中文字库HSV颜色空间音频生成空白的音频 游戏UI开发加载动画注册登录界面UI界面第一版第二版 第一个游戏(贪吃蛇)第二个游戏(俄罗斯方块&…...

LeetCode算法题(Go语言实现)_20

题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中: answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。 answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成…...

ES拼音分词自动补全实现

#测试拼音分词 POST /_analyze { "text":"如家酒店真不错", "analyzer": "pinyin" } #这里把拼音的首字母放到这里,也说明了这句话没有被分词,而是作为一个整体出现的 #还把每一个字都形成了一个拼音&#…...

Spring Boot 日志 配置 SLF4J 和 Logback

文章目录 一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback 一、前言 在开发 Java 应用时,日志记录是不可或缺的一部分。日志可以记录应用的运行状态、错误信息和调试信息,帮助开发者…...

构建大语言模型应用:数据准备(第二部分)

本专栏通过检索增强生成(RAG)应用的视角来学习大语言模型(LLM)。 本系列文章 简介数据准备(本文)句子转换器向量数据库搜索与检索大语言模型开源检索增强生成评估大语言模型服务高级检索增强生成 RAG 如上…...

mac m 芯片 动态切换 jdk 版本jdk8.jdk11.jdk17

下载 jdk 版本. 默认安装路径在. /Library/Java/JavaVirtualMachines配置环境变量 # 动态获取所有 JDK 路径 export JAVA_8_HOME$(/usr/libexec/java_home -v 1.8) export JAVA_11_HOME$(/usr/libexec/java_home -v 11) export JAVA_17_HOME$(/usr/libexec/java_home -v 17)#…...

如何通过python将视频转换为字符视频

请欣赏另类的老鼠舞 字符老鼠舞 与原版对比 对比 实现过程 1. 安装库 pip install numpy pip install Pillow pip install opencv-python pip install moviepy 2. 读取视频帧并转换为灰度图 import cv2def make_video(input_video_path, output_video_path):video_cap cv2…...

如何高效备考蓝桥杯(c/c++)组

以下是针对蓝桥杯C/C组的高效备考策略,结合你的当前基础(C语法简单算法题),分阶段提升竞赛能力,重点突破高频考点: 一、蓝桥杯C/C组核心考点梳理 根据历年真题,重点考察以下内容(按…...

两数之和-力扣

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1…...

react撤销和恢复

创建一个历史记录栈past,和一个撤销过的栈future,,在每次操作store的时候,将当前的store的数据,存入历史记录栈past中,, 如果是撤销操作,,就从这个历史栈中取最后面那个数…...

华为机试—密码验证合格程序

题目 你需要书写一个程序验证给定的密码是否合格。 合格的密码要求: 长度超过 8 位必须包含大写字母、小写字母、数字、特殊字符中的至少三种不能分割出两个独立的、长度大于 2 的连续子串,使得这两个子串完全相同;更具体地,如果…...

分布式ID生成器:雪花算法原理与应用解析

在互联网分布式系统中,生成全局唯一的ID是一个核心问题。传统的数据库自增ID、UUID虽然各有优缺点,但在高并发、分库分表场景下往往无法满足需求。美团Leaf分布式ID生成器便是为了解决这些问题而诞生的,其核心实现便是基于Snowflake&#xff…...

搭建Flutter开发环境 - MacOs

一、配置Flutter SDK 1.1 到官网下载Flutter SDK 打开Flutter中文社区网址,往下滚动,找到下载并安装Flutter,选择适合自己电脑的安装包进行下载。下载完毕后,解压放到你想要放置的目录下,我放到了 User/账户/develop…...

【Flutter学习(1)】Dart访问控制

疑问代码片段&#xff1a; class _MyHomePageState extends State<MyHomePage> {int _counter 0;void _incrementCounter() {setState(() {_counter;});} }对Flutter初始文件里下划线的疑问 为什么这里的类和申明的计数器都要在前面加一个下划线&#xff1f; 在 Dart 中…...

Day50 单词规律

给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 class Solution {public boolean wordPattern(String p…...

HTTP和HTTPS区别

一&#xff1a;工作原理 HTTP 超文本传输协议。 一种应用层协议&#xff0c;用于在客户端&#xff08;如浏览器&#xff09;和服务器之间传输超文本数据&#xff08;如HTML、图片&#xff09;。 明文传输&#xff0c;无加密。 HTTPS 安全的超文本传输协议。 是HTTP的加密…...

拥抱AI变革机遇,联易融自研供应链金融垂直领域大模型“蜂联 AI”

2025年3月25日&#xff0c;中国领先的供应链金融科技解决方案服务商联易融科技集团&#xff08;09959.HK&#xff0c;以下简称“联易融”&#xff09;发布2024年业绩公告。2024年公司总收入及收益达10.3亿元&#xff0c;同比增长19%&#xff1b;受益于产品结构优化与运营效率改…...

常用数据库

模式的定义于删除 1.定义模式 CREATE SCHEMA [ <模式名> ] AUTHORIZATION < 用户名 >;要创建模式&#xff0c;调用该命令的用户必须拥有数据库管理员权限&#xff0c;或者获得了DBA授权 eg:为用户WANG定义一个模式S-C-SC CREATE SCHEMA "S-C-SC" AUT…...

Hive UDF开发实战:构建高性能JSON生成器

目录 一、背景与需求场景 二、开发环境准备 2.1 基础工具栈 2.2 Maven依赖配置 三、核心代码实现...

数字电子技术基础(三十六)——利用Multisim软件实现3线-8线译码器

目录 1 手动方式实现3线-8线译码器 2 使用字选择器实现3线-8线译码器 现在尝试利用Multisim软件来实现3线-8线译码器。本实验目的是验证74LS138的基本功能&#xff0c;简单来说就是“N中选1”。 实验设计&#xff1a; &#xff08;1&#xff09;使能信号&#xff1a;时&am…...

解析 HTML 网站架构规范

2025/3/28 向全栈工程师迈进&#xff01; 一、网页基本的组成部分 网页的外观多种多样&#xff0c;但是除了全屏视频或游戏&#xff0c;或艺术作品页面&#xff0c;或只是结构不当的页面以外&#xff0c;都倾向于使用类似的标准组件。 1.1页眉 通常横跨于整个页面顶部有一…...

小智机器人关键函数解析,Application::OutputAudio()处理音频数据的输出的函数

以下是对 Application::OutputAudio() 函数的详细解释&#xff1a; 源码&#xff1a; void Application::OutputAudio() { // 扬声器的输出auto now std::chrono::steady_clock::now();auto codec Board::GetInstance().GetAudioCodec();const int max_silence_seconds 10;…...

基于javaweb的SpringBoot驾校预约学习系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

《边缘计算风云录:FPGA与MCU的算力之争》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章&#xff1a;边城烽烟——数据洪流压境****第二章&#xff1a;寒铁剑匣——FPGA的千机变****第三章&#xff1a;枯木禅杖——MCU的至简道****第四章&#xff1a;双生契…...

3.3 元组

元组&#xff08;tuple&#xff09;&#xff1a; 1.元组的定义&#xff1a; -通过 tuple&#xff08;&#xff09; &#xff01;&#xff01;&#xff01;元组中的元素不能发生改变&#xff01;&#xff01;&#xff01; #测试元组的定义 # - 定义空元组 tuple1 ()print(tu…...

PyTorch版本过低导致属性错误-Linux服务器

问题 在 Jupyter Lab 中配置 Python 环境&#xff08;如 PyTorch 或其他库&#xff09;通常涉及以下几个步骤&#xff1a; 1. 检查当前 Jupyter Lab 的内核环境 运行以下命令查看当前可用的内核&#xff1a; !jupyter kernelspec list或者 jupyter kernelspec list这会显示 …...

一文解读DeepSeek大模型在政府工作中具体的场景应用

引言 本文以政务内部管理的视角&#xff0c;介绍DeepSeek大模型在政务数字化在转型中的提质增效应用&#xff01;政务本是一个复杂的系统&#xff0c;对外要提供公共服务&#xff0c;对内有严格的安全管理要求。DeepSeek大模型在政务系统中的应用&#xff0c;对外提升服务水平&…...

场馆预约小程序的设计与实现

摘 要 时代在进步&#xff0c;人们对日常生活质量的要求不再受限于衣食住行。现代人不仅想要一个健康的身体&#xff0c;还想拥有一身宛如黄金比例的身材。但是人们平常除了上下班和上下学的时间&#xff0c;其余空余时间寥寥无几&#xff0c;所以我们需要用体育场馆预约来节省…...