头歌实训之存储过程、函数与触发器
🌟 各位看官好,我是maomi_9526!
🌍 种一棵树最好是十年前,其次是现在!
🚀 今天来学习C语言的相关知识。
👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦
目录
第1关:创建存储过程
第2关:创建函数-count_credit
第3关:存储过程中使用游标
第4关:创建触发器-计算总学分
第5关:创建触发器-级联删除
总结:头歌第二关及第三关
问题分析:
第1关:创建存储过程
任务描述
本关任务:创建存储过程,实现对学生姓名进行模糊查询。
相关知识
为了完成本关任务,你需要掌握:
1.存储过程的定义;
2.存储过程的创建;
3.存储过程的执行。
存储过程的定义
存储过程(Stored Procedure)是数据库中一组预编译的SQL语句集合,存储在数据库中,可以被应用程序调用。存储过程可以包含复杂的逻辑、变量、条件判断和循环等,能够实现一些复杂的业务逻辑,提高代码的复用性和执行效率。
存储过程的创建
创建存储过程格式:
DELIMITER //
CREATE PROCEDURE 过程名([参数列表])
BEGIN
-- SQL语句
END //
DELIMITER ;
- DELIMITER:MySQL 默认的语句分隔符是分号(;),但在存储过程中,分号可能会被用作语句的分隔符,因此需要使用 DELIMITER 关键字来改变分隔符,通常将其改为 // 或其他符号,以免与存储过程内部的分号冲突。
- 存储过程名称:存储过程的名称,用于后续调用存储过程时标识该存储过程。
- 参数列表:存储过程的参数,可以有输入参数(IN)、输出参数(OUT)和输入输出参数(INOUT)。参数的格式为 参数名 参数类型,例如 IN id INT 表示一个输入参数 id,类型为整数。
- BEGIN...END:存储过程的主体部分,包含需要执行的 SQL 语句。
执行存储过程
- 调用存储过程的语法如下:
CALL 存储过程名称(参数值);
- 存储过程名称:要调用的存储过程的名称。
- 参数值:调用存储过程时传递的参数值(实参),参数值的顺序和类型应与存储过程定义时的参数列表一致。
编程要求
根据提示,在右侧编辑器补充代码,创建存储过程pro_findname(IN word CHAR(1)) 对学生姓名进行模糊查找,输入任一汉字,输出姓名中含有该汉字的全部学生信息。
测试说明
平台会对你编写的代码进行测试,将调用你编写的存储过程:call pro_findname('明'),具体输出请参考右侧测试集。
开始你的任务吧,祝你成功!
use teachingdb;/****请在此编写代码,操作完毕之后点击评测******/
DELIMITER $$/**********Begin**********/create procedure pro_findname(in word char(10))Beginselect * from student where sname like concat('%',word,'%');
End $$/**********End**********/
DELIMITER ;
第2关:创建函数-count_credit
任务描述
本关任务:创建和使用存储函数。
相关知识
为了完成本关任务,你需要掌握:
- 创建存储函数;
- 调用存储函数。
创建存储函数
- 存储函数(Stored Function)是一种在数据库中存储的可调用的函数,类似于存储过程,但存储函数的主要目的是返回一个值,而存储过程主要用于执行一系列操作。存储函数可以被 SQL 语句直接调用,也可以在其他存储过程或存储函数中调用。
- 创建存储函数格式
DELIMITER //
CREATE FUNCTION 函数名称 (参数列表)
RETURNS 返回值类型 READS SQL DATA
BEGIN
-- 函数的 SQL 语句
RETURN 返回值;
END//
DELIMITER ;
调用函数
- SELECT 函数名称(参数值);
- 在表达式中使用函数名称(参数值)。
编程要求
根据提示,在右侧编辑器补充代码,设计函数 count_credit(sno CHAR(6)),根据学号(sno)计算该学生的总学分,只有当成绩大于等于60分时才能获得该门课程的学分。
测试说明
平台会对你编写的代码进行测试:本题中该学生选“马蓉”,学号为“97001”)
开始你的任务吧,祝你成功!
use teachingdb;/****请在此编写代码,操作完毕之后点击评测******//**********Begin**********/delimiter ##create Function count_credit(v_sno char(6))returns int reads sql dataBegindeclare sums int ;select sum(credit) into sums from course natural join score where grade >=60 and v_sno=sno;return sums;end ##delimiter ;/**********End**********/
第3关:存储过程中使用游标
任务描述
本关任务:创建存储过程 ,在存储过程中定义游标计算总学分。
相关知识
为了完成本关任务,你需要掌握:
1.游标的定义;
2.游标的使用。
游标的定义
游标(Cursor)主要用于存储过程和函数中,用于逐行处理查询结果集。
- 在存储过程或函数中,使用 DECLARE CURSOR 语句来创建游标。
DECLARE cursor_name CURSOR FOR select_statement;
游标的使用
- 打开游标
OPEN cursor_name;
- 获取数据
FETCH cursor_name INTO var_name1, var_name2, ...;
- 关闭游标
CLOSE cursor_name;
举例:通过游标获取users表中的id,name,并输出结果。
DELIMITER //
CREATE PROCEDURE process_users()
BEGIN
-- 声明变量
DECLARE finished INTEGER DEFAULT 0;
DECLARE user_id INT DEFAULT 0;
DECLARE user_name VARCHAR(50) DEFAULT '';
-- 声明游标
DECLARE my_cursor CURSOR FOR SELECT id, name FROM users;
-- 声明结束处理
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
-- 打开游标
OPEN my_cursor;
-- 获取数据
fetch_loop: LOOP
FETCH my_cursor INTO user_id, user_name;
IF finished = 1 THEN
LEAVE fetch_loop;
END IF;
-- 处理每一行数据
SELECT user_id, user_name;
END LOOP;
-- 关闭游标
CLOSE my_cursor;
END //
DELIMITER ;
编程要求
根据提示,在右侧编辑器补充代码,创建存储过程 p_count_credit,在存储过程中创建游标stucur保存所有学生的学号,使用loop循环从游标中提取每个学生的学号,根据当前学号调用count_credit 函数计算学生的总学分,并更新学生表中的总学分值。
测试说明
平台会对你编写的代码进行测试,将调用你编写的存储过程p_count_credit,函数的count_credit的功能和第2关中的相同,具体输出请参考右侧测试集。
开始你的任务吧,祝你成功!
use teachingdb;/****请在此编写代码,操作完毕之后点击评测******//**********Begin**********/drop procedure if exists p_count_credit;delimiter ##create procedure p_count_credit()begindeclare v_sno varchar(20);declare v_credit int default 0;declare stucur cursor for select sno from student;declare exit handler for not found close stucur ;open stucur;while true dofetch stucur into v_sno;update student set totalcredit =count_credit(v_sno) where sno=v_sno;end while;close stucur;select *from student;end ##delimiter ;/**********End**********/
第4关:创建触发器-计算总学分
任务描述
本关任务:创建触发器 sum_credit,实现对 student 表总学分的计算。
相关知识
为了完成本关任务,你需要掌握:
1.触发器的定义;
2.触发器的创建。
触发器的定义
触发器(Trigger)是一种特殊的存储过程,它在表上的数据发生变化(如INSERT、UPDATE 和 DELETE操作)时自动执行。触发器的主要作用是维护数据的完整性和一致性,或者在数据变化时执行一些自动化的操作。
- 触发时机:触发器可以设置在数据操作之前(BEFORE)或之后(AFTER)执行。
- 触发事件:可以是INSERT、UPDATE或DELETE操作。
创建触发器的语法:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN
-- 触发器要执行的SQL语句
END;
- BEFORE 或 AFTER 指定触发器应在事件之前还是之后触发。
- INSERT, UPDATE, 或 DELETE 指定触发器应该响应的事件类型。
触发器表
- 在 MySQL 触发器中,NEW 和 OLD 是两个特殊的虚拟表(实际上它们是行数据的引用),用于访问触发事件中涉及的数据。这两个虚拟表的具体含义和用途取决于触发器所关联的操作类型(INSERT、UPDATE 或 DELETE)。
- NEW 表
- NEW 表表示即将插入到表中的新行数据,或者在更新操作中表示更新后的新值。
- 可用场景: 在 BEFORE INSERT 和 AFTER INSERT 中,NEW 表示将要插入的新行。 在 BEFORE UPDATE 和 AFTER UPDATE 中,NEW 表示更新后的字段值。
- 用法:可以通过 NEW.column_name 来访问或修改某一列的值。
示例
(1)创建一触发器 t_u_s,实现在更新学生表的学号时,同时更新 grade 表中的相关记录的 student 的 id 值。
CREATE TRIGGER t_u_s
AFTER UPDATE ON student
for EACH ROW
BEGIN
UPDATE grade SET studentid = new.studentid WHERE studentid = old.studentid;
END
- OLD 表
- OLD 表表示被删除或更新的旧行数据。
- 可用场景: 在 BEFORE DELETE 和 AFTER DELETE 中,OLD 表示将要被删除的行。 在 BEFORE UPDATE 和 AFTER UPDATE 中,OLD 表示更新前的字段值。
- 用法:可以通过 OLD.column_name 来访问某一列的值,但不能对其进行修改(因为它是只读的)。
示例
(2)建一个触发器 t_d_s,当删除表 student 中某个学生的信息时,同时将 grade 表中与该学生有关的数据全部删除。
CREATE TRIGGER trigger_t1
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM grade WHERE studentid = old.studentid;
END
编程要求
根据提示,在右侧编辑器补充代码,创建触发器 sum_credit,实现对 student 表总学分的计算,当 score 中添加一条记录时,student 表总学分的值做相应改变。当课程成绩大于等于60分时,将该课程的学分加到该学生的总学分中。
测试说明
平台会对你编写的代码进行测试:平台会用“马小燕”为测试用例进行测试。
开始你的任务吧,祝你成功!
use teachingdb;/****请在此编写代码,操作完毕之后点击评测******//**********Begin**********/delimiter ##create trigger sum_creditafter insert on score for each rowBeginif(new.grade>=60) thenupdate student set totalcredit =totalcredit+(select credit from course where cno=new.cno)where student.sno=new.sno;end if;end ##delimiter ;/**********End**********/
第5关:创建触发器-级联删除
任务描述
本关任务:创建级联删除触发器 。
相关知识
为了完成本关任务,你需要掌握:
1.级联删除的定义;
2.级联删除的工作原理。
级联删除的定义
- 级联删除(Cascade Delete)是数据库管理系统中的一种功能,用于定义外键约束时指定的删除规则。当一个表中的记录被删除时,所有关联的记录也会根据级联删除规则自动删除。这确保了数据的一致性,避免出现孤立记录(即那些指向已删除记录的外键值)。
级联删除的工作原理
- 级联删除的工作原理
- 假设你有两个表:Parent 和 Child。Child 表通过外键关联到 Parent 表。当你在 Parent 表上设置级联删除时,如果从 Parent 表中删除一条记录,那么所有在 Child 表中与这条记录相关联的记录也将被自动删除。
编程要求
根据提示,在右侧编辑器补充代码,创建级联删除触发器 del_student_score,当删除 student 表中的某学生时,也删除 score 表中的对应学号的学生选课记录。
测试说明
平台会对你编写的代码进行测试。
开始你的任务吧,祝你成功!
use teachingdb;/****请在此编写代码,操作完毕之后点击评测******//**********Begin**********/delimiter ##create trigger del_studnet_scorebefore delete on student for each rowbegindelete from score where sno=old.sno;end ##delimiter ;/**********End**********/
总结:头歌第二关及第三关
常见答题系统工作原理:
问题分析:
在头歌平台的测试过程中,由于他们只进行公开测试用例的验证,部分潜在的逻辑错误可能没有被及时发现。这种情况尤其会影响到 MySQL 相关的习题,因为这些习题通常会涉及到数据库操作的细节,如果没有合适的隐藏测试用例,某些问题可能不会暴露。
例如实验五第二关:
自己代码: | 官方代码: |
use teachingdb; /****请在此编写代码,操作完毕之后点击评测******/ /**********Begin**********/ delimiter ## create Function count_credit(v_sno char(6)) returns float reads sql data Begin declare sums float; select sum(credit) into sums from course natural join score where grade >=60 and v_sno=sno; return sums; end ## delimiter ; /**********End**********/ | CREATE DEFINER=`root`@`localhost` FUNCTION `count_credit`(stuno CHAR(6)) RETURNS int(11) READS SQL DATA BEGIN DECLARE stucno CHAR(3); DECLARE cred INT DEFAULT 0; DECLARE t_cred INT DEFAULT 0; DECLARE done INT DEFAULT FALSE; -- 定义游标,从score表中获取学生所选课程编号 DECLARE stucur CURSOR FOR SELECT cno FROM score WHERE sno = stuno AND grade >= 60; -- 定义处理游标未找到数据时的行为 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN stucur; -- 循环获取课程编号并累加学分 loop_cursor: LOOP FETCH stucur INTO stucno; IF done THEN LEAVE loop_cursor; END IF; -- 获取课程学分 SELECT credit INTO cred FROM course WHERE cno = stucno; -- 累加学分 SET t_cred = t_cred + cred; END LOOP; -- 返回总学分 RETURN t_cred; END |
勘误:因为官方只进行公开实例进行测试,这里都可以进行通过
Mysql习题一般都是继续使用官方的代码进行测试,如果你在第三关依旧写出float的代码 */
use teachingdb;/****请在此编写代码,操作完毕之后点击评测******//**********Begin**********/ select sum(credit) from score natural join course where sno='96002';drop procedure if exists p_count_credit;delimiter ##create procedure p_count_credit()begindeclare v_sno varchar(20);declare v_credit float default 0;declare stucur cursor for select sno from student;declare exit handler for not found close stucur ;open stucur;while true dofetch stucur into v_sno;select sum(credit) into v_credit from score natural join course where grade>=60 and sno=v_sno;update student set totalcredit =ifnull(v_credit,0) where sno=v_sno;end while;close stucur;select *from student;end ##delimiter ;/**********End**********/
由于头歌平台的测试机制仅依赖于公开的测试用例,这导致了部分潜在的逻辑问题没有被及时发现。尽管我们无法修改平台的测试方式或其隐藏的测试用例,但我们可以选择按照平台提供的标准函数进行测试,以确保代码在实际评测时能够正确运行。
本次纠错并没有涉及复杂的新知识点,而是希望同学们能够理解,为什么在这种情况下,某些潜在的错误未被立即发现,当大家出现这种情况也可以通过下面这种方法来通过测试:
相关文章:
头歌实训之存储过程、函数与触发器
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
系统架构设计中的DSSA方法:理论、实践与行业深度应用
引言 在软件架构设计领域,DSSA(Domain-Specific Software Architecture,领域特定软件架构)是一种专注于垂直行业或业务领域的架构设计方法论。与通用架构设计不同,DSSA通过提炼领域共性需求、构建可复用资产库&am…...
设计心得——数据结构的意义
一、数据结构 在老一些的程序员中,可能都听说过,程序其实就是数据结构算法这种说法。它是由尼克劳斯维特在其著作《算法数据结构程序》中提出的,然后在一段时期内这种说法非常流行。这里不谈论其是否正确,只是通过这种提法&#…...
【C】初阶数据结构12 -- 冒泡排序
本篇文章主要讲解经典排序算法 -- 冒泡排序。 目录 1 算法思想 2 代码 3 时间复杂度与空间复杂度分析 1) 时间复杂度 2) 空间复杂度 1 算法思想 选择排序是一种经典的交换排序算法。其算法思想也比较简单,主要是比较相邻元素&…...
HTTP, AMQP, MQTT之间的区别和联系是什么?华为云如何适配?
目录 🔗 一、共同点(联系): 🔍 二、区别对比: 📘 三、简要说明 1. HTTP 2. AMQP 3. MQTT 🔗 四、三者联系(在华为云IoT平台中的应用) 🎯 …...
WPF之项目创建
文章目录 引言先决条件创建 WPF 项目步骤理解项目结构XAML 与 C# 代码隐藏第一个 "Hello, WPF!" 示例构建和运行应用程序总结相关学习资源 引言 Windows Presentation Foundation (WPF) 是 Microsoft 用于构建具有丰富用户界面的 Windows 桌面应用程序的现代框架。它…...
CrewAI Community Version(二)——Agent
目录 1. Agent总览2. Agent属性3. 创建Agent3.1 YAML配置3.2 直接用代码定义3.3 运行结果 参考 1. Agent总览 在CrewAI框架中,Agent是一个能具备下列能力的自主单元: 1. 执行特定的任务 2. 基于它的角色和目标进行决策 3. 使用工具完成任务 …...
阿里云VS AWS中国区:ICP备案全攻略与常见误区解析
导语 在中国大陆开展互联网服务时,ICP备案是必不可少的合规步骤。然而,随着云服务的多样化,许多企业在选择备案路径时常常感到困惑。本文将深入解析阿里云和AWS中国区的备案区别,为您提供清晰的操作指南,助您避开备案陷阱,确保业务合规运营。 一、备案基本原则 1. 服务器决定…...
基于libdxfrw库读取样条曲线并离散为点
在计算机辅助设计(CAD)与制造(CAM)领域,DXF(Drawing Exchange Format)格式文件被广泛用于存储与交换矢量图形信息。样条曲线作为DXF文件中常见的复杂曲线类型,其准确读取与离散化处理…...
学习 Apache Kafka
学习 Apache Kafka 是一个很好的选择,尤其是在实时数据流处理和大数据领域。以下是一个系统化的学习建议,帮助你从入门到进阶掌握 Kafka: 1. 先决条件 在开始 Kafka 之前,确保你具备以下基础: Java 基础:K…...
5.3/Q1,GBD数据库最新文章解读
文章题目:The burden and trend prediction of ischemic heart disease associated with lead exposure: Insights from the Global Burden of Disease study 2021 DOI:10.1186/s12940-025-01155-w 中文标题:与铅暴露相关的缺血性心脏病的负担…...
java智慧城管综合管理系统源码,前端框架:vue+element;后端框架:springboot;移动端:uniapp开发,技术前沿,可扩展性强
智慧城管综合执法系统采用B/S模式设计与手机等移动终端架构,采用 java编程语言前端框架:vueelement;后端框架:springboot;数据库:mysql5.7;移动端:uniapp技术开发设计。具有使用与维…...
【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码)
目录 效果一览程序获取程序内容代码分享研究内容GRU门控循环单元在锂电池剩余寿命预测中的应用摘要关键词1. 引言1.1 研究背景1.2 研究现状与问题1.3 研究目的与意义2. 文献综述2.1 锂电池剩余寿命预测传统方法2.2 深度学习在锂电池寿命预测中的应用2.3 研究空白与本文切入点3.…...
开发首个Spring Boot应用
📋 前置条件 🎯 在开始之前,请打开终端并运行以下命令以确保已安装正确版本的 Java: $ java -version openjdk version "17.0.4.1" 2022-08-12 LTS OpenJDK Runtime Environment (build 17.0.4.11-LTS) OpenJDK 64-Bi…...
2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup
2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup 2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup情报收集黑客密室逃脱 数据分析ezEvtxflowzip 密码破解EnigmaECBTraineasy_AES 逆向分析ShadowPhases 漏洞挖掘分析RuneBrea…...
HTTP 协议深度解析:从基础到实战的完整指南
HTTP(HyperText Transfer Protocol)是 应用层协议,用于客户端(浏览器、APP)与服务器之间的数据交互。以下从协议原理、核心机制到实际案例全面解析,涵盖 HTTP/1.1 到 HTTP/3 的演进。 一、HTTP 核心特性 …...
5G助力智慧城市的崛起——从概念到落地的技术实践
5G助力智慧城市的崛起——从概念到落地的技术实践 引言:智慧城市中的“隐形脉络” 随着城市化的快速推进,传统的城市管理方式已经难以满足人口增长和资源优化的需求。智慧城市的概念应运而生,通过技术创新实现智能化、可持续发展的城市生态…...
4.25test
R7-5 小黄与研究生会(20) 分数 12 全屏浏览 切换布局 作者 王秀 单位 福州大学 福州大学研究生院怡山的同学们为了在国家对抗新冠疫情期间献出自己的一份力量,他们决定为奋战在一线的医护人员送去了演出。小黄作为研究生协会的会长,他让每位男同学均带去了若干只猫或狗…...
Unity-Shader详解-其一
今天我们来介绍Unity的一大核心组件:shader。 Shader Shader就是我们的着色器,用于控制图形的渲染的计算和生成。 对于不同的引擎,具体实现渲染的方法也不一样,也就是我们俗称的不同的图形引擎API,比如OpenGL,Direct…...
WPF与C++ 动态库交互
WPF与C++动态库交互技术详解 一、基本交互方式概述 WPF应用程序与C++动态库交互主要有以下几种方式: P/Invoke调用(平台调用)COM互操作C++/CLI桥接层内存映射文件命名管道/Socket通信本文将重点介绍最常用的P/Invoke和C++/CLI两种…...
自动化测试实战篇
文章目录 目录1. 自动化实施步骤1.1 编写web测试用例1.2 自动化测试脚本开发1.3 测试报告 目录 自动化实施步骤 1. 自动化实施步骤 1.1 编写web测试用例 注: 因为这里仅作为演示,所以设计的用例并不是非常完整 1.2 自动化测试脚本开发 # common/Util…...
基于pandoc的MarkDown格式与word相互转换小工具开发(pyqt5)
这里写目录标题 开发目标准备工作源代码程序打包其他事项命令行使用pandoc关于pandoc默认表格无边框的说明 开发目标 采用word格式模板,实现高级定制样式。具备配置保存功能,方便快捷。自定义转换选项、pandoc路径。 准备工作 开发环境:Wi…...
JVM知识点(一)---内存管理
一、JVM概念 什么是JVM? 定义: Java Virtual Machine - java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写,到处运行自动内存管理,垃圾回收功能数组下标越界越界检查多态 比较jvm jre jdk区别 学习路…...
Apache NetBeans 25 发布
Apache NetBeans 25 已于 2025 年 2 月 20 日发布3。NetBeans 是一个主要面向 Java 的集成开发环境,同时支持 C/C、PHP、JavaScript 和其他编程语言1。以下是一些主要的更新内容: Gradle 的优化与增强:优化单文件测试功能,即使测试…...
【设计模式区别】装饰器模式和适配器模式区别
装饰器模式(Decorator Pattern)和适配器模式(Adapter Pattern)都是 结构型设计模式 或者说 包装模式 (Wrapper),用于解决对象的组合和扩展问题,但它们的核心目的、结构和使用场景有显…...
矫平机终极指南:特殊材料处理、工艺链协同与全球供应链管理
一、特殊材料矫平:挑战与创新解决方案 1. 高温合金(如Inconel 718)处理 技术难点: 屈服强度高达1100 MPa,传统矫平力不足 高温下易氧化,需惰性气体保护环境 解决方案: 采用双伺服电机驱动&a…...
stm32进入睡眠模式的几个注意点
(1)关闭systick (2)先关闭外设时钟,再屏蔽中断,避免先屏蔽中断再关闭外设时钟导致中断挂起无法进入睡眠模式(立即被唤醒)。 参考: 注:图片截自《RM0433参考手…...
深入理解网络安全中的加密技术
1 引言 在当今数字化的世界中,网络安全已经成为个人隐私保护、企业数据安全乃至国家安全的重要组成部分。随着网络攻击的复杂性和频率不断增加,保护敏感信息不被未授权访问变得尤为关键。加密技术作为保障信息安全的核心手段,通过将信息转换为…...
学习设计模式《六》——抽象工厂方法模式
一、基础概念 抽象工厂模式的本质是【选择产品簇(系列)的实现】; 抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类; 抽象工厂模式功能:抽象工厂的功能是为一系列相关对象或相互依…...
MySQL 数据类型
文章目录 数据类型数据类型分类数据类型tinyint类型(整型)总结bit类型(字节) 浮点类型float类型decimal类型 字符串类型char类型varchar(变长字符串) char 和 varchar的对比日期类型enum和set类型ÿ…...
基于Tcp协议的应用层协议定制
前言:本文默认读者已掌握 TCP 协议相关网络接口知识,将聚焦于应用层协议的设计与剖析,有关底层通信机制及业务逻辑部分仅作简要概述,不再展开详述。 目录 服务器 一、通信 二、协议 1.序列化与反序列化 2. 封包与解包 三、业…...
Flink反压问题解析
一、什么是反压(Backpressure)? 反压(Backpressure) 是流处理系统中的一种流量控制机制。当下游算子处理速度低于上游数据生产速度时,系统会向上游传递压力信号,迫使上游降低数据发送速率,避免数据堆积和系统崩溃。 Flink 通过动态反压机制实现这一过程,但其副作用是…...
C语言中结构体的字节对齐的应用
一、字节对齐的基本原理 计算机的内存访问通常以固定大小的块(如 4 字节、8 字节)为单位。若数据的内存地址是块大小的整数倍,称为 自然对齐。例如: int(4 字节)的地址应为 4 的倍数。 double(…...
大规模数据同步后数据总条数对不上的系统性解决方案:从字段映射到全链路一致性保障
一、引言 在数据同步(如系统重构、分库分表、多源整合)场景中,“本地数据一致,生产环境条数对不上”是典型痛点。问题常源于并发处理失控、数据库性能瓶颈、字段映射错误、缓存脏数据等多维度缺陷。本文结合实战经验,…...
美团Java后端二面面经!
场景题是面试的大头,建议好好准备 Q. [美团]如何设计一个外卖订单的并发扣减库存系统? Q.[美团]为啥初始标记和重新标记需要STW? Q.[美团]骑手位置实时更新,如何保证高并发写入? Q.[美团]订单表数据量过大导致查询…...
35-疫苗预约管理系统(微服务)
技术: RuoYi框架 后端: SpringBootMySQLspringCloudnacosRedis 前端: vue3 环境: Idea mysql maven jdk1.8 用户端功能 1.首页:展示疫苗接种须知标语、快速预约模块 2.疫苗列表:展示可接种的疫苗 3.预约接种: 用户可进行疫苗预约接种 修改预约时间 …...
Ext JS模拟后端数据之SimManager
Ext.ux.ajax.SimManager 是 Ext JS 框架中用于拦截 Ajax 请求并返回模拟数据的核心工具,适用于前后端分离开发、原型验证或独立测试场景。它通过配置灵活的规则和模拟处理器(Simlet),帮助开发者在不依赖真实后端的情况下完成前端功能开发。 simlets 是simulated servers的…...
BT169-ASEMI无人机专用功率器件BT169
编辑:ll BT169-ASEMI无人机专用功率器件BT169 型号:BT169 品牌:ASEMI 封装:SOT-23 批号:最新 引脚数量:3 特性:单向可控硅 工作温度:-40℃~150℃ BT169单向可控硅ÿ…...
4月26日星期六今日早报简报微语报早读
4月26日星期六,农历三月廿九,早报#微语早读。 1、广州多条BRT相关线路将停运,全市BRT客运量较高峰时大幅下降; 2、国务院批复:同意在海南全岛等15地设立跨境电商综合试验区; 3、我国首次实现地月距离尺度…...
如何将 sNp 文件导入并绘制到 AEDT (HFSS)
导入 sNp 文件 打开您的项目,右键单击 “Result” 绘制结果 导入后,用户可以选择它进行打印。请参阅下面的示例。要点:确保从 Solution 中选择它。...
Shell脚本-for循环应用案例
在Shell脚本编程中,for循环是一种强大的工具,用于处理重复性任务。无论是批量处理文件、遍历目录内容还是简单的计数任务,for循环都能提供简洁而有效的解决方案。本文将通过几个实际的应用案例来展示如何使用for循环解决具体的编程问题。 案…...
MATLAB基础应用精讲-【基础知识篇】发布和共享 MATLAB 代码
目录 MATLAB发布代码---生成文档pdf 分节符对发布文件的分节 实时脚本 Matlab workspace与m脚本数据共享 发布和共享 MATLAB 代码 在实时编辑器中创建和共享实时脚本 发布 MATLAB 代码文件 (.m) 添加帮助和创建文档 发布 MATLAB 代码文件 (.m) 可创建包括您的代码、注释…...
Shell脚本-while循环语法结构
在Shell脚本编程中,while循环是一种重要的流程控制语句,它允许我们重复执行一段代码,直到指定的条件不再满足为止。与for循环不同,while循环通常用于条件驱动的迭代,而不是基于列表或范围的迭代。本文将详细介绍Shell脚…...
Java基础第四章、面向对象
一、成员变量 示例: 二、JVM内存模型 类变量就是静态变量 三、构造方法 默认构造方法、定义的构造方法(不含参数、含参数) 构造方法重载: this关键字 this关键字应用:对构造方法进行复用,必须放在第一行 四、面向对象的三大特征 1…...
【基础IO上】复习C语言文件接口 | 学习系统文件接口 | 认识文件描述符 | Linux系统下,一切皆文件 | 重定向原理
1.关于文件的预备知识 1.1 文件的宏观理解 广义上理解,键盘、显示器等都是文件,因为我们说过“Linux下,一切皆文件”,当然我们现在对于这句话的理解是片面的;狭义上理解,文件在磁盘上,磁盘是一…...
linux离线部署open-metadata
OpenMetadata 环境及离线资源关闭防火墙禁止防火墙关闭 SELinux 创建用户安装JDK安装mysql安装Elasticsearch安装open-metadata 环境及离线资源 系统:CentOS Linux release 7.9.2009 (Core) JDK:17 Mysql: 8.0 OpenMetadata:1.6.…...
Exposure Adjusted Incidence Rate (EAIR) 暴露调整发病率:精准量化疾病风险
1. 核心概念 1.1 传统发病率的局限性 1.1.1 公式与定义 传统发病率公式为新发病例数除以总人口数乘以观察时间。例如在某社区观察1年,有10例新发病例,总人口1000人,发病率即为10/10001=0.01。 此公式假设所有个体暴露时间和风险相同,但实际中个体差异大,如部分人暴露时间…...
信令与流程分析
WebRTC是h5支持的重要特征之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频聊天功能。 WebRTC项目是开源的,我们可以借助WebRTC,构建自己的音视频聊缇娜功能。无论是前端JS的Web…...
声音分离人声和配乐base,vocals,drums -从头设计数字生命第6课, demucs——仙盟创梦IDE
demucs -n htdemucs --two-stemsvocals 未来之窗.mp3 demucs -n htdemucs --shifts5 之.mp3demucs -n htdemucs --shifts5 -o wlzcoutspl 未来之窗.mp3 伴奏提取人声分离技术具有多方面的重大意义,主要体现在以下几个领域: 音乐创作与制作 创作便利…...
Chrmo手动同步数据
地址栏输入 chrome://sync-internals分别点击这2个按钮即可触发手动同步...