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

数据库实验10 函数存储

数据库实验10

一、实验目的

  1. 掌握函数和存储过程的定义方法,包括标量函数、表值函数、存储过程的语法结构。
  2. 理解函数和存储过程的作用及原理,区分标量函数与表值函数的应用场景,掌握存储过程的参数传递、逻辑控制和错误处理机制。
  3. 能够熟练运用函数和存储过程实现数据查询、统计分析、业务逻辑处理等操作,如成绩计算、选课管理等。

二、实验内容与设计思想

(一)验证性实验

1. 函数定义与调用
  • 函数Fmax:定义标量函数,接收两个整数参数,返回较大值。调用时需指定架构名dbo,否则会因无法识别函数名称报错。

SELECT DBO.fMAX(1,2)

在这里插入图片描述

SELECT fMAX(1,2) 使用该语句会报错,如下图所示:
在这里插入图片描述

  • 函数Fc:通过CASE语句实现四则运算,根据输入的运算符返回计算结果,处理整数运算逻辑。
go
CREATE FUNCTION FC  (@x int,@y int,@C CHAR)
RETURNS int
AS
BEGIN
DECLARE @Z INT
SET  @Z = CASE @CWHEN '+' THEN @X+@YWHEN '-' THEN @X-@YWHEN '*' THEN @X*@YWHEN '/' THEN @X/@YENDRETURN(@Z)
END
go
SELECT DBO.fC(1,2,'+')

在这里插入图片描述

  • 函数Fs:基于多表连接(STUDENT、SCORE、COURSE),根据姓名和课程名查询成绩,假设姓名唯一,若存在重名需增加学号等唯一标识参数。
CREATE FUNCTION FS  (@xM NCHAR(4),@KCM VARCHAR(20))
RETURNS DECIMAL(4,1)
AS
BEGIN
DECLARE @Z DECIMAL(4,1)
SELECT @Z=DEGREE FROM  STUDENT S JOIN SCORE SC ON SC.SNO=S.SNO
JOIN COURSE C ON C.CNO=SC.CNO WHERE SNAME=@XM AND CNAME=@KCMRETURN(@Z)
ENDSELECT DBO.fS('李君帅',	'计算机导论')

在这里插入图片描述

  • 函数Fsc:返回表值函数,查询指定姓名学生的所有课程成绩,直接返回结果集,简化多表连接查询。
CREATE FUNCTION Fsc(@XM Nchar(4))
RETURNS TABLE
AS
RETURN (SELECT SNAME,CNAME,DEGREE FROM  STUDENT S JOIN SCORE SC ON SC.SNO=S.SNO
JOIN COURSE C ON C.CNO=SC.CNO WHERE SNAME=@XM )SELECT *  FROM DBO.Fsc('李君帅')SELECT *  FROM  Fsc('李君帅')

在这里插入图片描述

  • 函数Flist:联合查询学生和教师名单,支持模糊查询,通过INSERT INTO @list分两次插入学生和教师数据,处理NULL参数时默认查询所有人员。
CREATE FUNCTION Flist (@xm nvarchar(5))   --nchar(5) ???
RETURNS @list TABLE (xh  char(4) ,xm nchar(4),lb nchar(2))asbeginif ( @xm is null)set @xm='%'  insert @list   select sno,sname,'学生' from student057 where sname like '%'+@xm+'%'insert @list   select tno,tname,'教师' from teacher057 where tname like '%'+@xm+'%'returnend
goselect * from flist('李')

在这里插入图片描述

select * from flist(null)

在这里插入图片描述

Select * from Score057 sc join flist(null) f on sc.Sno=f.xh

在这里插入图片描述

2. 存储过程定义与调用
  • 存储过程printcourse:统计课程成绩分布,先创建Rank表存储分数段,通过UPDATESELECT语句更新各分数段人数,利用@@ROWCOUNT判断课程是否存在,处理异常输入。
  • 存储过程printavg_course:计算课程平均成绩,使用输出参数返回平均值,通过PRINT语句输出结果,处理课程不存在的错误提示。
  • 存储过程printclass_degree:将成绩转换为等级制,通过CASE语句实现百分制到等级的映射,直接返回分类结果。

(二)设计性实验(学号后三位057)

1. 函数Fsum057
  • 功能:计算1到n的和。
  • 代码
go
CREATE FUNCTION Fsum057(@n INT)
RETURNS INT
AS
BEGINDECLARE @sum INT = 0, @i INT = 1WHILE @i <= @nBEGINSET @sum = @sum + @iSET @i = @i + 1ENDRETURN @sum
END
go
select DBO.Fsum057(10)

在这里插入图片描述

2. 函数FCJA057
  • 功能:根据姓名或部分姓名,返回学生的课程成绩及等级。
  • 代码
go
CREATE FUNCTION FCJA057(@xm NVARCHAR(10))
RETURNS TABLE
AS
RETURN (SELECT S.SNO, S.SNAME, C.CNAME, SC.DEGREE,CASE WHEN SC.DEGREE >= 90 THEN 'A'WHEN SC.DEGREE >= 80 THEN 'B'WHEN SC.DEGREE >= 70 THEN 'C'WHEN SC.DEGREE >= 60 THEN 'D'ELSE 'E'END AS 成绩等级FROM STUDENT057 SJOIN SCORE057 SC ON S.SNO = SC.SNOJOIN COURSE057 C ON SC.CNO = C.CNOWHERE S.SNAME LIKE '%' + @xm + '%'
)
GOselect * from FCJA057('李')

在这里插入图片描述

3. 函数Fclass057
  • 功能:返回指定班级男、女生平均分前二名学生的课程成绩及平均分。
  • 设计思想:先计算每个学生的平均分,按性别和平均分排序,取前两名。
  • 代码
go
CREATE FUNCTION Fclass057(@class NVARCHAR(20))
RETURNS TABLE
AS
RETURN (WITH StudentAvg AS (SELECT S.SNO, S.SNAME, S.SEX, AVG(SC.DEGREE) AS 平均分FROM STUDENT057 SJOIN SCORE057 SC ON S.SNO = SC.SNOWHERE S.CLASS = @classGROUP BY S.SNO, S.SNAME, S.SEX)SELECT sa.SNO, sa.SNAME, sa.SEX, c.CNAME, sc.DEGREE, sa.平均分FROM StudentAvg saJOIN SCORE057 sc ON sa.SNO = sc.SNOJOIN COURSE057 c ON sc.CNO = c.CNOWHERE (SELECT COUNT(DISTINCT sa2.SNO) FROM StudentAvg sa2 WHERE sa2.SEX = sa.SEX AND sa2.平均分 > sa.平均分) < 2
)
GO
4. 修改表course057
-- 添加列并设置默认值
ALTER TABLE COURSE057
ADD mn int DEFAULT 50,cn int DEFAULT 0;-- 更新已有行的 mn 列值为默认值 50
UPDATE COURSE057
SET mn = 50
WHERE mn IS NULL;-- 更新已有行的 cn 列值为默认值 0
UPDATE COURSE057
SET cn = 0
WHERE cn IS NULL;

在这里插入图片描述

三、实验环境

  • 操作系统:Windows 11
  • 数据库管理系统:SQL Server 2022
  • 开发工具:SQL Server Management Studio (SSMS)

四、实验步骤与调试过程

(一)验证性实验

  1. 函数测试
    • Fmax:调用SELECT DBO.Fmax(1,2)返回2,验证条件判断逻辑正确;直接调用Fmax(1,2)报错,确认需指定架构名dbo
    • Fc:测试不同运算符,如SELECT DBO.Fc(5,2,'/')返回2(整数除法),验证CASE语句分支正确。
    • Fs:输入存在的姓名和课程名,如SELECT DBO.Fs('李君帅','计算机导论')返回64.0,验证多表连接查询正确。
  2. 存储过程测试
    • printcourse:执行EXEC printcourse '计算机导论',查询Rank表,确认各分数段人数统计正确,测试不存在的课程时提示错误。
    • printavg_course:声明输出参数DECLARE @pavg INT,执行后通过SELECT @pavg查看平均值,验证输出参数传递正确。

(二)设计性实验

  1. 函数Fsum057:调用SELECT DBO.Fsum057(10)返回55,验证循环求和逻辑正确。
  2. 选课存储过程cs057:插入测试数据,模拟选课人数满员、已选课程等场景,验证事务处理和错误提示机制。

(三)调试问题与解决

  • 错误1:调用用户定义函数时未加dbo.,报错“不是可以识别的内置函数名称”。
    解决:明确用户定义函数需指定架构名,或通过SET SCHEMA设置默认架构。
  • 错误2:存储过程中表名拼写错误(如Course写成Cource),导致语法错误。
    解决:通过SSMS的语法检查和调试功能,逐行排查表名和列名拼写。

五、思考题

(一)标量函数和表值函数

  • 标量函数:返回单个数据值(如INT、CHAR),通过RETURNS指定单一类型,使用BEGIN...END包含逻辑,适合简单计算或单行查询。
  • 表值函数:返回表结果集,分为内联表值函数(直接RETURN SELECT语句,无BEGIN...END)和多语句表值函数(使用@table变量构建结果集),适合复杂查询或替代视图。

(二)函数定义和调用注意事项

  1. 定义
    • 标量函数必须包含RETURN语句返回单个值,表值函数返回表变量或查询结果。
    • 避免在函数中修改数据库状态(如UPDATEINSERT),函数设计为只读操作。
    • 参数需指定数据类型,默认不允许NULL,除非显式声明NULL允许。
  2. 调用
    • 标量函数在SELECT语句中调用,需指定架构名(如dbo.函数名)。
    • 表值函数调用时需像表一样使用,如SELECT * FROM 函数名(参数)

(三)存储过程选项

  1. SET NOCOUNT ON:禁止返回“受影响的行数”消息,减少网络传输开销,提高性能。
  2. WITH RECOMPILE:每次执行时重新编译存储过程,适用于参数分布变化较大的场景,但会增加编译开销。
  3. OUTPUT参数:用于返回多个值或计算结果,需在调用时声明变量并使用OUTPUT关键字。
  4. 错误处理:通过TRY...CATCH块或@@ERRORRAISERROR捕获和处理异常,增强存储过程的健壮性。

六、实验小结

(一)遇到的问题及解决

  1. 中英文符号混淆:编写代码时误用中文逗号、括号,导致语法错误。通过IDE的语法高亮和错误提示,逐行检查符号格式。
  2. 多表连接逻辑错误:在函数Fs中,因未正确关联表字段(如SNO拼写错误),导致查询结果为空。通过分步调试,先验证单表查询,再逐步添加连接条件。
  3. 存储过程事务处理:选课存储过程中未考虑并发选课场景,可能导致人数统计不一致。后续可添加事务(BEGIN TRANSACTION)和锁机制(如UPDLOCK)确保数据一致性。

(二)实验体会和收获

  1. 函数与存储过程的优势:封装重复逻辑,减少代码冗余,提高数据库操作的复用性和维护性。
  2. 错误处理的重要性:在存储过程中使用RAISERROR@@ROWCOUNT处理异常输入,增强程序的健壮性,避免非法数据操作。
  3. 表值函数的灵活性:通过内联表值函数直接返回查询结果集,简化复杂查询语句,提高数据检索效率。

(三)改进方向

  1. 参数验证:对存储过程的输入参数增加类型检查和范围验证,如课程号格式、成绩范围等。
  2. 性能优化:为频繁查询的表添加索引(如STUDENT.SNAME、COURSE.CNAME),提高多表连接查询速度。
  3. 文档规范:为函数和存储过程添加注释,说明功能、参数、返回值及调用示例,方便团队协作和后期维护。

通过本次实验,深入掌握了函数和存储过程的核心概念与应用场景,能够熟练运用SQL实现业务逻辑,为后续数据库开发打下坚实基础。

相关文章:

数据库实验10 函数存储

数据库实验10 一、实验目的 掌握函数和存储过程的定义方法&#xff0c;包括标量函数、表值函数、存储过程的语法结构。理解函数和存储过程的作用及原理&#xff0c;区分标量函数与表值函数的应用场景&#xff0c;掌握存储过程的参数传递、逻辑控制和错误处理机制。能够熟练运…...

SQL Server执行安装python环境

安装注意事项 启用python脚本支持 sp_configure external scripts enabled, 1; RECONFIGURE; 安装后接受 Python EULA协议 接受python授权 setup.exe /qs /ACTIONInstall /FEATURESSQL_INST_MR /INSTANCENAME您的实例名 /IACCEPTROPENLICENSETERMS1 /IACCEPTPYTHONLICENSETE…...

ActiveMQ 安全机制与企业级实践(二)

四、企业级实践案例分析 4.1 案例背景介绍 某大型电商企业拥有复杂的分布式系统&#xff0c;涵盖订单管理、库存管理、物流配送、用户服务等多个核心业务模块。在业务快速发展过程中&#xff0c;系统间的通信量呈爆发式增长&#xff0c;为了实现系统的高效解耦和异步通信&…...

ActiveMQ 安全机制与企业级实践(一)

一、引言 在当今数字化时代&#xff0c;企业级应用的架构愈发复杂&#xff0c;各个系统之间的通信和协作变得至关重要。消息队列作为一种高效的异步通信机制&#xff0c;在企业级应用集成中扮演着关键角色。ActiveMQ 作为一款广泛使用的开源消息中间件&#xff0c;以其丰富的功…...

【Python pass 语句】

在 Python 中&#xff0c;pass 语句是一个特殊的空操作&#xff08;no-op&#xff09;语句&#xff0c;它的核心作用是保持程序结构的完整性&#xff0c;同时不执行任何实际操作。以下是详细说明&#xff1a; 一、基础特性 语法占位符&#xff1a;当语法上需要一条语句&#x…...

Maven依赖未生效问题

在你描述的情况下&#xff0c;测试类无法找到 Maven 依赖的 jar 包&#xff0c;可能由以下原因导致&#xff1a; 依赖未正确添加到 pom.xml 检查 pom.xml 文件中是否正确添加了 Elasticsearch 和 JUnit 等相关依赖。例如&#xff0c;对于 Elasticsearch 的 TransportClient 相关…...

NGINX `ngx_http_auth_request_module` 模块详解基于子请求的认证授权方案

一、背景介绍 在 Web 系统中&#xff0c;我们常常需要根据外部服务&#xff08;例如单点登录、API 网关、权限中心&#xff09;的结果来判断用户是否有权限访问某个资源。NGINX 提供的 ngx_http_auth_request_module 模块&#xff0c;正是为这种场景而生。它允许通过向后端发送…...

Qwen3简要介绍(截止20250506)

Qwen3是阿里云推出的一个大语言模型系列&#xff0c;它在多个方面进行了升级和优化。以下是Qwen3的一些主要特点&#xff1a; 模型规模多样&#xff1a;Qwen3提供了一系列不同规模的模型&#xff0c;包括稠密模型&#xff08;0.6B、1.7B、4B、8B、14B、32B&#xff09;以及专家…...

精益数据分析(42/126):移动应用商业模式的深度剖析与实战要点

精益数据分析&#xff08;42/126&#xff09;&#xff1a;移动应用商业模式的深度剖析与实战要点 在创业和数据分析的学习之路上&#xff0c;我们持续探索不同商业模式的奥秘&#xff0c;今天聚焦于移动应用商业模式。我希望和大家一起进步&#xff0c;深入解读《精益数据分析…...

2025.5.6总结

昨天12&#xff1a;30睡觉&#xff0c;结果翻来覆去睡不着&#xff0c;两点半左右才睡着。看了一下最近的睡眠打卡&#xff0c;平均入睡时间是凌晨12&#xff1a;30。 自五一一个人过了5天&#xff0c;我才明白&#xff0c;人是需要社交的&#xff0c;只有在社交中才能找到自我…...

UE5 脚部贴地不穿过地板方案

UE自带的IK RIG和ControlRig技术 【UE5】角色脚部IK——如何让脚贴在不同斜度的地面(设置脚的旋转)_哔哩哔哩_bilibili 实验后这个还是有一部分问题,首先只能保证高度不能穿过,但是脚步旋转还是会导致穿模 IK前,整个模型在斜坡上会浮空 参考制作:https://www.youtube.com/w…...

Spring AI 函数调用(Function Call)系统设计方案

一、系统概述与设计目标 1.1 核心目标 从零构建一个灵活、安全、高效的函数调用系统,使大语言模型能够在对话中调用应用程序中的方法,同时保持良好的开发体验和企业级特性。 1.2 主要功能需求 支持通过注解将普通Java方法标记为可被AI调用的函数自动生成符合LLM要求的函数…...

Jupyter Notebook为什么适合数据分析?

Jupyter Notebook 是一款超实用的 Web 应用程序&#xff0c;在数据科学、编程等诸多领域都发挥着重要作用。它最大的特点就是能让大家轻松创建和共享文学化程序文档。这里说的文学化程序文档&#xff0c;简单来讲&#xff0c;就是把代码、解释说明、数学公式以及数据可视化结果…...

Leetcode Hot 100字母异位词分词

题目描述 思路 根据题意&#xff0c;我们可以得知我们需要将字符统计数一样的字符串&#xff0c;放在一起&#xff0c;并以列表进行返回。因此我们可以通过一个哈希表&#xff0c;把统计相同的放在一起&#xff0c;最终返回即可 代码 class Solution:def groupAnagrams(self…...

用python实现鼠标监听与手势交互

摘要 本文探讨了一种基于Python的数学函数可视化系统的设计与实现&#xff0c;该系统整合了Pynput鼠标事件监听机制、Matplotlib绘图引擎以及PyQt5图形用户界面框架。系统通过人机交互方式实现了函数图像的直观构建与可视化表达&#xff0c;支持多种函数类型的参数化建模与实时…...

UE5 GAS开发P47 游戏标签

FGameplayTag 是 Unreal Engine 中用于标记游戏对象的系统。它允许开发者为游戏对象分配标签&#xff0c;以便在游戏中对其进行分类、识别和操作。 FGameplayTag 结构用于表示单个游戏标签&#xff0c;而 FGameplayTagContainer 则用于表示一组游戏标签。 这些标签可以用于诸…...

C# 实现PLC数据自动化定时采集与存储(无需界面,自动化运行)

C# 实现PLC数据自动化定时采集与存储&#xff08;无需界面&#xff0c;自动化运行&#xff09; 在平时开发中&#xff0c;我们时常会遇到需要后台静默运行的应用场景&#xff0c;这些程序不需要用户的直接操作或界面展示&#xff0c;而是专注于定时任务的执行。比如说&#xf…...

Java实现堆排序算法

1. 堆排序原理图解 堆排序是一种基于二叉堆&#xff08;通常使用最大堆&#xff09;的排序算法。其核心思想是利用堆的性质&#xff08;父节点的值大于或等于子节点的值&#xff09;来高效地进行排序。堆排序分为两个主要阶段&#xff1a;建堆和排序。 堆排序步骤&#xff1a; …...

封装axios,实现取消请求

封装axios import axios from axios// 创建自定义的请求类 class CancelableRequest {constructor() {this.controller new AbortController()}abort() {this.controller.abort()} }// 创建 axios 实例 const service axios.create({baseURL: process.env.VUE_APP_BASE_API,…...

在 Laravel 12 中实现 WebSocket 通信

在 Laravel 12 中实现 WebSocket 通信主要有两种主流方案&#xff1a;‌官方推荐的 Laravel Reverb‌ 和 ‌第三方库&#xff08;如 Soketi/Pusher 或 Workerman/Swoole&#xff09;‌。以下是详细实现步骤&#xff1a; 一、官方方案&#xff1a;Laravel Reverb&#xff08;推…...

iPhone或iPad想要远程投屏到Linux系统电脑,要怎么办?

苹果手机自带AirPlay投屏功能&#xff0c;对于苹果电脑&#xff0c;自然可以随时投屏。但如果电脑是Linux系统&#xff0c;而且还想要远程投屏呢&#xff1f;这时候要怎么将iPhone或iPad投屏到Linux电脑&#xff1f; 方法很简单&#xff0c;用AirDroid Cast的网页版即可。 步骤…...

Ubuntu 22.04 安装配置远程桌面环境指南

在云服务器或远程主机上安装图形化桌面环境,可以极大地提升管理效率和用户体验。本文将详细介绍如何在 Ubuntu 22.04 (Jammy Jellyfish) 系统上安装和配置 Xfce4 桌面环境,并通过 VNC 实现远程访问。 系统环境 操作系统:Ubuntu 22.04 LTS (Jammy Jellyfish)架构:AMD64安装…...

【Redis | 基础总结篇 】

目录 前言&#xff1a; 1.Redis的介绍&#xff1a; 2.Redis的类型与命令&#xff1a; 3.Redis的安装&#xff1a; 3.1.Windows版本 3.2.Linux版本 4.在java中使用Redis&#xff1a; 4.1.介绍 4.2.Jedis 4.3.Spring Data Redis 前言&#xff1a; 本篇主要讲述了Redis的…...

如何通过外网访问内网?对比5个简单的局域网让互联网连接方案

在实际应用中&#xff0c;常常需要从外网访问内网资源&#xff0c;如远程办公访问公司内部服务器、在家访问家庭网络中的设备等。又或者在本地内网搭建的项目应用需要提供互联网服务。以下介绍几种常见的外网访问内网、内网提供公网连接实现方法参考。 一、公网IP路由器端口映…...

iMeta | 临床研究+scRNA-seq的组合思路 | 真实世界新辅助研究,HER2⁺就一定受益?单细胞揭示真正的“疗效敏感克隆”

&#x1f44b; 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助&#xff0c;别忘了点赞、关注、评论&#xff0c;一起学习 近年来&#xff0c;临床医学与单细胞组学的结合开启了全新的研究范式&#xff0c;让临床医生能以“显微镜”般的精度&#xff0c;深入理解疾病机制与疗效…...

国标GB28181视频平台EasyCVR安防系统部署知识:如何解决异地监控集中管理和组网问题

在企业、连锁机构及园区管理等场景中&#xff0c;异地监控集中管控与快速组网需求日益迫切。弱电项目人员和企业管理者亟需整合分散监控资源&#xff0c;实现跨区域统一管理与实时查看。 一、解决方案 案例一&#xff1a;运营商专线方案​ 利用运营商专线&#xff0c;连接各分…...

220V降12V1000mA非隔离芯片WT5110

220V降12V1000mA非隔离芯片WT5110 以下是采用WT5110芯片的非隔离降压电源电路设计&#xff0c;将220V电压转换为12V、1000mA输出&#xff1a; 一、WT5110芯片简介 WT5110是一款用于非隔离降压应用的集成电路&#xff0c;具备宽输入电压范围和高效的转换功能。它可以将高输入电…...

【ES】Elasticsearch字段映射冲突问题分析与解决

在使用Elasticsearch作为搜索引擎时&#xff0c;经常会遇到一些映射(Mapping)相关的问题。本文将深入分析字段映射冲突问题&#xff0c;并通过原生的Elasticsearch API请求来复现和解决这个问题。 问题描述 在实际项目中&#xff0c;我们遇到以下错误&#xff1a; Transport…...

【上位机——MFC】绘图

相关类 CDC类(绘图设备类)&#xff1a;封装了各种绘图相关的函数&#xff0c;以及两个非常重要的成员变量m_hDC和m_hAttribDC CPaintDC类&#xff0c;封装了在WM_PAINT消息中绘图的绘图设备 CClientDC类&#xff0c;封装了在客户区绘图的绘图设备 CGdiObject类(绘图对象类) 封…...

【AI】Ubuntu 22.04 evalscope 模型评测 Qwen3-4B-FP8

安装evalscope mkdir evalscope cd evalscope/ python3 -m venv venv source venv/bin/activate pip install evalscope[app,perf] -U -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.compip install tiktoken omegaconf -i https://mirrors.aliyu…...

js var a=如果ForRemove=true,是“normal“,否则为“bold“

你是想根据变量 ForRemove 的布尔值来给变量 a 赋值&#xff0c;如果 ForRemove 为 true&#xff0c;则 a 的值是 "normal"&#xff0c;否则为 "bold"。在 JavaScript 里&#xff0c;你可以使用 if...else 语句或者三元运算符来实现。 方法一&#xff1a;…...

JavaScript性能优化实战:从瓶颈分析到解决方案

前言 在当今快节奏的互联网环境中&#xff0c;用户对网站性能的期望日益提高。 JavaScript作为前端开发的核心语言&#xff0c;其性能直接影响用户体验。本文将深入探讨JavaScript代码中常见的性能瓶颈&#xff0c;并结合实际案例分享优化技巧和工具&#xff0c;帮助开发者提升…...

CyberSentinel AI开源程序 是一个自动化安全监控与AI分析系统

​一、软件介绍 文末提供程序和源码下载 CyberSentinel AI 开源程序是一个强大的自动化安全监控与AI分析系统&#xff0c;旨在帮助安全研究人员和爱好者 实时追踪最新的安全漏洞 (CVE) 和 GitHub 上的安全相关仓库&#xff0c;并利用 人工智能技术进行深度分析&#xff0c;最终…...

C++23 std::generator:用于范围的同步协程生成器 (P2502R2, P2787R0)

文章目录 引言C23新特性概述std::generator基本概念定义作用模板参数 std::generator特性分析与协程的结合范围视图内存管理 std::generator使用示例std::generator的优势与挑战优势挑战 总结 引言 在C的发展历程中&#xff0c;每一个新版本都带来了许多令人期待的新特性和改进…...

FoMo 数据集是一个专注于机器人在季节性积雪变化环境中的导航数据集,记录了不同季节(无雪、浅雪、深雪)下的传感器数据和轨迹信息。

2025-05-02&#xff0c;由加拿大拉瓦尔大学北方机器人实验室和多伦多大学机器人研究所联合创建的 FoMo 数据集&#xff0c;目的是研究机器人在季节性积雪变化环境中的导航能力。该数据集的意义在于填补了机器人在极端季节变化&#xff08;如积雪深度变化&#xff09;下的导航研…...

Github上如何准确地搜索开源项目

Github上如何准确地搜索开源项目&#xff1a; 因为寻找项目练手是最快速掌握技术的途径&#xff0c;而Github上有最全最好的开源项目。 就像我的毕业设计“机器翻译”就可以在Github上查找开源项目来参考。 以下搜索针对&#xff1a;项目名的关键词&#xff0c;关注数限制&a…...

从 MDM 到 Data Fabric:下一代数据架构如何释放 AI 潜能

从 MDM 到 Data Fabric&#xff1a;下一代数据架构如何释放 AI 潜能 —— 传统治理与新兴架构的范式变革与协同进化 引言&#xff1a;AI 规模化落地的数据困境 在人工智能技术快速发展的今天&#xff0c;企业对 AI 的期望已从 “单点实验” 转向 “规模化落地”。然而&#…...

个人Unity自用面经(未完)

目录标题 1.在 2D 平台跳跃游戏项目中&#xff0c;你使用了对象池来生成和回收怪物包含阵亡的动画预制件。在对象池回收对象时&#xff0c;如何确保动画状态被正确重置&#xff0c;避免下次使用时出现异常&#xff1f;2.在僵尸吃脑子模拟项目中&#xff0c;你创建了继承于IAspe…...

【Pandas】pandas DataFrame agg

Pandas2.2 DataFrame Function application, GroupBy & window 方法描述DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴&#xff08;行或列&#xff09;应用一个函数DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数DataFrame.a…...

LearnOpenGL---绘制三角形

绘制三角形 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream>const unsigned int SCR_WIDTH 800; const unsigned int SCR_HEIGHT 600;/// <summary> /// 当用户改变窗口大小时&#xff0c;视口也应该被调整&#xff0c;因此编…...

使用 Poco C++ 库构建轻量级 HTTP 服务器

在现代 C 后端开发中&#xff0c;如果你需要构建一个轻量、高性能、可嵌入式的 HTTP 服务&#xff0c;而不愿引入重量级框架如 Boost.Beast 或 cpp-httplib&#xff0c;那么 Poco C Libraries 提供了一个优雅的解决方案。Poco 是一套广泛使用的 C 框架&#xff0c;涵盖网络、线…...

【Java EE初阶 --- 多线程(初阶)】多线程的基本内容

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 文章目录 前言认识多线程(Thread的…...

CTF-DAY8

[LitCTF 2023]babyLCG 题目&#xff1a; from Crypto.Util.number import * from secret import flagm bytes_to_long(flag) bit_len m.bit_length() a getPrime(bit_len) b getPrime(bit_len) p getPrime(bit_len1)seed m result [] for i in range(10):seed (a*see…...

CSS--图片链接垂直居中展示的方法

原文网址&#xff1a;CSS--图片链接垂直居中展示的方法-CSDN博客 简介 本文介绍CSS图片链接垂直居中展示的方法。 图片链接 问题复现 源码 <html xml:lang"cn" lang"cn"><head><meta http-equiv"Content-Type" content&quo…...

用html+js+css实现的战略小游戏

效果图: 兄弟们&#xff0c;话不多说&#xff0c;直接上代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...

【落羽的落羽 C++】list及其模拟实现

文章目录 一、list介绍二、list模拟实现1. 节点2. 迭代器3. list 一、list介绍 list是我们之前学过的带头双向链表的类模板&#xff0c;具有链表的一系列性质&#xff0c;也有多种多样的接口便于使用&#xff0c;使用方法与vector大体相似&#xff1a; 函数接口说明list()构造…...

深入理解高性能网络通信:从内核源码到云原生实践

深入理解高性能网络通信&#xff1a;从内核源码到云原生实践 前言 随着互联网业务规模的高速增长&#xff0c;服务端网络通信能力成为系统性能的核心瓶颈。如何支撑百万级连接、在极限场景下实现低延迟高吞吐&#xff1f;本篇博客将围绕Linux通信机制内核剖析、性能调优实战、…...

全格式文档转 Markdown 工具,Docker 一键部署,支持 API 调用

以下是简要介绍&#xff1a; 这是一款可以快速将任意文档文件转markdown格式内容的工具&#xff0c;提供API转换接口&#xff0c;方便集成与应用原理就是利用libreoffice、pandoc文件转换工具&#xff0c;把所有文档类型的文件逐步转化&#xff0c;最终转成markdown格式的内容…...

算法思想之深度优先搜索(DFS)、递归以及案例(最多能得到多少克黄金、精准核酸检测、最富裕的小家庭)

深度优先搜索&#xff08;DFS&#xff09;、递归 深度优先搜索&#xff08;Depth First Search&#xff0c;DFS&#xff09;是一种用于遍历或搜索树或图的算法。在 DFS 算法中&#xff0c;从起始节点开始&#xff0c;沿着一条路径尽可能深地访问节点&#xff0c;直到到达叶子节…...

Windows玩游戏的时候,一按字符键就显示桌面

最近打赛伯朋克 2077 的时候&#xff0c;不小心按错键了&#xff0c;导致一按字符键就显示桌面。如下&#xff1a; 一开始我以为是输入法的问题&#xff08;相信打游戏的人都知道输入法和奔跑键冲突的时候有多烦&#xff09;&#xff0c;但是后来解决半天发现并不是。在网上搜…...