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

SQL Server:流程控制语言详解

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

文章目录

  • 一、批处理、脚本和变量
    • 局部变量和全局变量
      • 1、局部变量
      • 2、全局变量
  • 二、顺序、分支和循环结构语句
    • 1、程序注释语句
    • 2、BEGIN┅END语句块
    • 3、IF┅ELSE语句
    • 4、CASE语句
    • 5、WHILE语句
    • 6、BREAK和CONTINUE语句
      • BREAK语句
      • CONTINUE语句
  • 三、程序返回、屏幕显示等语句
    • 1、RETURN语句
    • 2、PRINT和RAISERROR语句
    • 3、WAITFOR语句
  • 四、游标概念及使用
    • 1、 游标的概念
    • 2、游标的使用

一、批处理、脚本和变量

局部变量和全局变量

1、局部变量

局部变量是以@开头的用户定义的变量,用declare语句声明

(1)局部变量的命名

DECLARE  <局部变量名1><数据类型1> [ , <局部变量名2><数据类型2>,]

(2)局部变量的赋值

SET  <局部变量名>= <表达式>

例1:在同一批中先声明二个变量,并为它们赋值,然后将它们用到SELECT语句的WHERE子句中。

Use  teaching
GO
- - 声明二个局部变量
DECLARE @student_name  varchar(20) , @student_birthday  datetime
-- 对二个局部变量赋值
SET  @student_name = '杨涛'
SET  @student_birthday =2001-01-01'
-- 根据这二个局部变量的值进行查询
SELECT  sno, sname, birthday
FROM  student
WHERE  sname=@student_name  or birthday=@student_birthday
GO

2、全局变量

全局变量是以@@开头的SQL Server系统提供并赋值的变量

【注】

  1. 用户不能建立全局变量
  2. 也不能用SET语句来修改全局变量的值
  3. 但可以将全局变量的值赋给局部变量,以便保存和处理

例2:应用三个全局变量的例子

 /* 第一类全局变量 */
-- @@rowcount表示最近一个语句影响的行数
PRINT  @@rowcount
-- @@error保存最近执行操作的错误状态
PRINT  @@error
/* 第二类全局变量 */
-- @@version表示SQL Server的版本信息
PRINT @@version

例3:将全局变量的值赋给局部变量,请读者利用在线帮助来理解@@MAX_PRECISION的含义

DECLARE  @max_p   tinyint
SET @max_p = @@MAX_PRECISION
PRINT @max_p

二、顺序、分支和循环结构语句

1、程序注释语句

① 注释语句的作用

(1)说明代码的含义;

(2)注释掉程序中暂时不用的语句;

② 注释语句的种类

(1)- -(两个减号):用于注释单行;

(2)/……/:用于注释多行;

2、BEGIN┅END语句块

BEGIN<T-SQL语句序列>
END

3、IF┅ELSE语句

IF  <逻辑表达式><T-SQL语句序列1>
[ELSE<T-SQL语句序列2>]

例4:请读者仔细阅读下列程序,并理解其含义。

Use  teachingGOIF EXISTS (select *  from student_course  where cno='10101' )BEGIN PRINT  '存在选修10101号课程的选课记录!'select  cno, avg(grade)  from student_course  where cno='10101'    group by cnoENDELSEPRINT  '不存在选修10101号课程的选课记录!'GOIF(select avg(grade)from student_course where cno='10101')>80BEGIN PRINT  '选修10101号课程学生的平均成绩大于80分!'Select s.sno,sname from student s,student_course scWhere  s.sno=sc.sno and cno='10101' and grade>=85ENDELSEPRINT  '选修10101号课程学生的平均成绩小于等于80分!'GO

4、CASE语句

【语句格式1】:根据多个选择来确定执行的内容 —— 类似于C语言中的switch...case

CASE  <条件判断表达式>WHEN <比较表达式1> THEN <结果表达式1>[WHEN <比较表达式2> THEN <结果表达式2> ………WHEN <比较表达式n> THEN <结果表达式n>] [ELSE  <结果表达式q>] 
END

例5:使用CASE语句格式1的例子

Use Teaching
GO
Select  Sno  as  '学号' , sname  as  '姓名' ,CASE  dept	-- 根据属性进行划分WHEN '电子系' THEN '是来自电子系学生’WHEN '计算机系' THEN '是来自计算机系学生'WHEN '信息系' THEN '是来自信息系学生'WHEN '机械系' THEN '是来自机械系学生'ELSE '是来自其它系的学生'END   as  '系名'
From student
Order  by  dept
GO

【语句格式2】:依次判断where后的<逻辑表达式1>是否为TRUE,若是的话则执行后面的 结果表达式

CASEWHEN <逻辑表达式1> THEN <结果表达式1>
[WHEN <逻辑表达式2> THEN <结果表达式2> ………WHEN <逻辑表达式n> THEN <结果表达式n>] [ELSE  <结果表达式q>] 
END

例6:使用CASE语句格式2的例子

Use Teaching
GO
Select sc.sno  as  '学号', sname  as  '姓名' ,sc.cno  as  '课程号', cname  as  '课程名',CASE WHEN  grade>=90  THEN  '优秀'WHEN  grade>=80  THEN  '良好'WHEN  grade>=70  THEN  '中等'WHEN  grade>=60  THEN  '及格' ELSE  '不及格'END  as  '成绩'
from student  s, student_course  sc, course  c
where  s.sno=sc.sno  and  sc.cno=c.cno
order by  s.sno
go

5、WHILE语句

使用WHILE可以在条件成立的时候重复执行一条或多条T-SQL语句

WHILE <逻辑表达式><T-SQL语句序列>  

注:与IF…ELSE语句一样,WHILE语句只能执行一条T-SQL语句,如果希望包含多条T-SQL语句,就应该使用BEGIN…ENG结构

例7:计算s = 1+2+3+…+99+100的和

  DECLARE  @x  int , @s  intSET @s=0SET @x=1WHILE @x<=100BEGINSET @s=@s+@xSET @x=@x+1ENDPRINT  'S='+convert(char(4) , @s )GO
-- 其中convert (char(4) , @s )为转换数据类型的函数

6、BREAK和CONTINUE语句

BREAK语句

BREAK语句用于退出最内层的WHILE循环

WHILE <逻辑表达式><T-SQL语句序列1>BREAK<T-SQL语句序列2>

例8:利用BREAK语句跳出循环的例子

  DECLARE @x int , @s intSET @s=0SET @x=1WHILE  @x<=100BEGINSET @s=@s+@xIF @s>2000BREAKSET @x=@x+1ENDPRINT 'x='+convert (char(3), @x )PRINT 'S='+convert (char(4), @s )GO

CONTINUE语句

CONTINUE语句用于重新开始一次WHILE循环

WHILE <逻辑表达式><T-SQL语句序列1>CONTINUE<T-SQL语句序列2>

例9:使用CONTINUE语句的例子

  DECLARE @x int , @s intSET @s=0SET @x=1WHILE @x<=100BEGINSET @s=@s+@xSET @x=@x+1IF @x<=50CONTINUEELSEBREAKENDSET @x=@x-1PRINT 'x='+convert (char(3) , @x )PRINT 'S='+convert (char(4) , @s )GO

三、程序返回、屏幕显示等语句

1、RETURN语句

RETURN语句可以在过程、批和语句块中的任何位置使用

语法格式如下:

RETURN  [<整数表达式>]

例10:使用RETURN语句返回整数的例子

use teaching
go
create  procedure  checkstate  @param  char(7)
as
if (select  dept  from  student where  sno =@param) = '电子系'RETURN  1
else RETURN  2
go
declare  @return_status  int
exec  @return_status=checkstate @param='0012301'
select  @return_status  as  'Return Status'
go

2、PRINT和RAISERROR语句

(1)PRINT语句

PRINT语句的作用是在屏幕上显示用户消息

PRINT  <字符串>|局部变量|全局变量

(2)RAISERROR语句

RAISERROR语句的作用是将错误信息显示在屏幕上,同时也可以记录在NT日志中

3、WAITFOR语句

WAITFOR语句可以将它之后的语句在一个指定的时间间隔之后执行,或在未来的某一指定时间执行

WAITFOR { DELAY ‘time1’ | TIME ‘time2’}

例11:使用WAITFOR语句的例子

-- 以下代码指示SQL Server等待两秒后查询student表
WAITFOR  DELAY  '00:00:02'
Select  *  from  teaching.dbo.student
GO
/*以下代码指示SQL Server等待到当天上午09:15:10,才执行查询操作*/
Use  teaching
GO
WAITFOR  TIME  '09:15:10'
Select  *  from  student
GO

四、游标概念及使用

1、 游标的概念

游标提供了一种在服务器内部处理结果集的方法,它可以识别一个数据集合内部指定的工作行,从而可以有选择地按行进行操作

无需借助于高级语言来实现,导致不必要的数据传输,从而延长执行的时间

1)声明游标

DECLARE  <游标名>  [ INSENSITIVE ] [ SCROLL ] CURSOR   FOR  <SELECT语句>[ FOR  { READ ONLY | UPDATE [ OF <列名1> [ , <列名2>] ] } ]

有关参数的说明:

① < 游标名 >是为声明的游标所取的名字

② 使用insensitive关键字定义的游标会将提取出来的数据放在一个Tempdb的数据库创建的临时表中,如若不选用insensitive关键字,则用户对基本表所做的任何改动都将在游标中得到体现

③ 使用 SCROOL 关键字定义的游标,包括如下6种取数功能

  • FIRST —— 表示取第一行数据
  • LAST —— 表示取最后一行数据
  • PRIOR —— 表示取前一行数据
  • NEXT —— 表示取后一行数据(默认)
  • RELATIVE —— 表示按相对位置取数据
  • ABSOLUTE —— 表示按绝对位置取数据

④ < SELECT 语句 > 主要用来定义游标所要进行处理的结果集,在声明游标的SELECT语句中不允许使用 computecompute byinto关键字

⑤ READ ONLY 表示声明只读游标,不允许通过只读游标进行数据的更新

⑥ UPDATE [ OF <列名1> [ , <列名2>… ] ] 表示定义在这个游标里的可更新列

例12:先定义一个可在student表中所有行上进行操作的游标,再定义一个可对游标处理的结果集进行筛选和排序的只读游标

use  teaching
go
-- 定义可在student表中所有行上进行操作的游标
DECLARE  student_ cursor1  CURSOR
FOR   select * from  student
go
/*定义可对游标处理的结果集进行筛选和排序的只读游标 */
DECLARE student_cursor2  CURSOR
FOR  select  sno , sname  from  studentwhere  dept = '计算机系' order by sno
FOR  READ ONLY
go

2)打开游标

在使用游标之前,必须先打开游标

OPEN  <游标名>	

3)关闭游标

不使用游标时应关闭游标,以通知服务器释放游标所占用的资源

CLOSE  <游标名>

4)释放游标

游标结构本身也会占用一定的计算机资源,所以在使用完游标后应该回收被游标占用的资源和空间,彻底将游标释放

DEALLOCATE  <游标名>

例13:说明游标的定义、打开、关闭和释放的过程。

use teaching
go 
DECLARE  student_course_cursor  CURSORFOR  select  *  from  student_coursewhere  cno='10106'
SELECT  @@CURSOR_ROWS  
/* 返回值为0,表示游标还没被打开 */
open  student_course_cursor
fetch  next  from  student_course_cursor  
/* 返回满足条件的第一个记录 */
select  @@CURSOR_ROWS  
/* 返回值为-1,表示游标是动态的 */
close  student_course_cursor
deallocate  student_course_cursor
go

2、游标的使用

1)使用游标取数

打开游标后,就可以利用游标提取数据了

FETCH  [ [ NEXT | PRIOR | FIRST | LAST| ABSOLUTE { n | @nvar } | RELATIVE { n | @nvar }] FROM ] <游标名>[ INTO  <局部变量1> [ , <局部变量2>,]]
-- 在使用INTO子句对局部变量赋值时,局部变量必须和声明游标时使用的select语句中引用到的数据列在数量、顺序和数据类型上保持一致,否则服务器返回提示错误

例14:使用游标取数的操作与循环语句相结合的例子。

use  teaching 
go
-- 定义局部变量
DECLARE @sno  char(7) , @sname  varchar(20)
-- 声明游标
DECLARE  student_cursor1  CURSORFOR  select sno , sname  from  studentwhere  spec= '计算机' order  by  sno
-- 打开游标
OPEN  student_cursor1
-- 执行第一次取操作数并对局部变量赋值
FETCH   NEXT   FROM   student_cursor1  INTO  @sno , @sname
/* 检查上一次操作的执行状态,若@@FETCH_STATUS为0,则表示成功,可以打印并继续取数,否则停止取数 */
WHILE  @@FETCH_STATUS = 0BEGINPRINT '学号:'+@sno+'姓名:'+@snameFETCH  NEXT  FROM  student_cursor1 INTO  @sno , @snameEND
-- 关闭游标
CLOSE  student_cursor1
-- 释放游标
DEALLOCATE  student_cursor1
GO

例15:定义一个滚动游标,以实现更灵活的数据提取

Use teaching 
GO
-- 首先执行一遍查询语句以提供滚动游标操作成功与否的对比
select  sno, sname  FROM  student
Where  birthday between '1996-01-01' and '1997-12-31'
Order  by  sno
-- 定义滚动游标
DECLARE  student_cursor2  SCROLL  CURSORFOR  select  sno , sname  FROM  studentwhere  birthday between  '1996-01-01'  and  '1997-12-31'order   by   sno
-- 打开游标           
OPEN  student_cursor2
-- 提取数据集中的最后一行
FETCH  LAST  FROM  student_cursor2
-- 提起当前游标所在行的上一行
FETCH  PRIOR  FROM  student_cursor2
-- 提取当前数据集中的第5行
FETCH  ABSOLUTE  5  FROM   student_cursor2
-- 提取当前行的前2行
FETCH  RELATIVE -2  FROM   student_cursor2
-- 关闭游标
CLOSE  student_cursor2
-- 释放游标
DEALLOCATE  student_cursor2
GO

2)利用游标修改数据

要使用游标进行数据的修改,其前提条件是该游标必须被声明为可更新的游标。在进行游标声明时,没有带READONLY关键字的游标都是可更新的游标

UPDATE <表名>
SET <列名1>=<表达式l>[,<列名2>=<表达式2>,…]
WHERE   CURRENT  OF  <游标名>
-- 其中CURRENT OF <游标名>表示当前游标的当前数据行。CURRENT OF子句只能使用在UPDATE和DELETE操作的语句中

使用游标还可以进行数据的删除,其方法与上雷同,下面仅给出它的语法结构,其语句格式如下

DELETE FROM <表名> WHERE  CURRENT  OF <游标名>

注:在使用游标进行数据的更新或删除之前,用户必须事先获得相应数据库对象的更新或删除的权力,这是进行这类操作的必要前提。

在这里插入图片描述

相关文章:

SQL Server:流程控制语言详解

文章目录 一、批处理、脚本和变量局部变量和全局变量1、局部变量2、全局变量 二、顺序、分支和循环结构语句1、程序注释语句2、BEGIN┅END语句块3、IF┅ELSE语句4、CASE语句5、WHILE语句6、BREAK和CONTINUE语句BREAK语句CONTINUE语句 三、程序返回、屏幕显示等语句1、RETURN语句…...

2、用命令行编译Qt程序生成可执行文件exe

一、创建源文件 1、新建一个文件夹&#xff0c;并创建一个txt文件 2、重命名为main.cpp 3、在main.cpp中添加如下代码 #include <QApplication> #include <QDialog> #include <QLabel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QDi…...

【追求卓越08】算法--排序算法

引导 今天开始介绍我们在工作中经常遇到的算法--排序。排序算法有很多&#xff0c;我们主要介绍以下几种&#xff1a; 冒泡排序 插入排序 选择排序 归并排序 快速排序 计数排序 基数排序 桶排序 我们需要了解每一种算法的定义以及实现方式&#xff0c;并且掌握如何评…...

Linux fork笔试练习题

1.打印结果&#xff1f; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main() {int i0;for(;i<2;i){fork();printf("A\n");}exit(0); } 结果打印 A A A A A A 2.将上面的打印的\n去掉,结果如何? printf("…...

Jenkins 整合 Docker 自动化部署

Docker 安装 Jenkins 配置自动化部署 1. Docker 安装 Jenkins 1.1 拉取镜像文件 docker pull jenkins/jenkins1.2 创建挂载文件目录 mkdir -p $HOME/jenkins_home1.3 启动容器 docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkin…...

竞赛选题 题目:基于大数据的用户画像分析系统 数据分析 开题

文章目录 1 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…...

selenium已知一个元素定位同级别的另一个元素

1.需求与实际情况 看下图来举例 &#xff08;1&#xff09;需求 想点击test22&#xff08;即序号-第9行&#xff09;这一行中右边的“复制”这一按钮 &#xff08;2&#xff09;实际情况 只能通过id或者class定位到文件名这一列的元素&#xff0c;而操作这一列的元素是不…...

Kotlin中 for in 是有序的吗?forEach呢?

我们要遍历一个数组、一个列表&#xff0c;经常会用到kotlin的 for in 语法&#xff0c;但是 for in 是不是有序的呢&#xff1f;forEach是不是有序的呢&#xff1f;这就需要看一下它们的本质了。 数组的 for in // 调用&#xff1a; val arr arrayOf(1, 2, 3) for (ele in …...

每日一练2023.11.27———连续因子【PTA】

题目链接&#xff1a;L1-006 连续因子​​​​​​​ 题目要求&#xff1a; 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3567&#xff0c;其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N&#xff0c;要求编写程序求出最长连续因子的个数&#…...

P8A002-CIA安全模型-配置Linux描述网络安全CIA模型之可用性案例

【预备知识】 可用性(Availability) 数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力…...

SpringCloudAlibaba之sentinel 流量卫兵(流控,熔断降级) ——详细讲解

目录 一、什么是sentinel 二、sentinel使用 1. sentinel dashboard的安装 2.启动 3.访问web界面 ​编辑 4.登录 三、sentinel 实时监控服务 1.创建项目引入依赖 2.配置 3.启动服务 4.访问dashboard界面查看服务监控 5.开发服务 6.启动进行调用 7.查看监控界面 四、senti…...

C++封装dll和lib 供C++调用

头文件interface.h #pragma once #ifndef INTERFACE_H #define INTERFACE_H #define _CRT_SECURE_NO_WARNINGS #define FENGZHUANG_API _declspec(dllexport) #include <string> namespace FengZhuang {class FENGZHUANG_API IInterface {public:static IInterface* Cre…...

ffmpeg播放器实战(播放器流程)

1.流程图 1.main窗口创建程序窗口 程序窗口构造函数执行下面内容 2.开启播放 3.开启解码 4.开启渲染 5.反馈给ui 本文福利&#xff0c; 免费领取C音视频学习资料包学习路线大纲、技术视频/代码&#xff0c;内容包括&#xff08;音视频开发&#xff0c;面试题&#xff0c;FFmpeg…...

Android 13.0 开机过滤部分通知声音(莫名其妙的通知声音)

1.概述 在13.0的系统定制开发产品的中,有时候在系统开机的时候会有一些通知的声音,但是由于系统模块太多,也搞不清楚到底是哪个模块发出的通知声音,所以就需要从通知的流程来屏蔽这些通知声音,接下来看具体怎么实现在开机的时候过滤开机声音的功能 2.开机过滤部分通知声音…...

Adversarial Attack and Defense on Graph Data: A Survey(2022 IEEE Trans)

Adversarial Attack and Defense on Graph Data: A Survey----《图数据的对抗性攻击和防御&#xff1a;综述》 图对抗攻击论文数据库&#xff1a; https://github.com/safe-graph/graph-adversarial-learning-literature 摘要 深度神经网络&#xff08;DNN&#xff09;已广泛应…...

css中flex两列布局(一列自适应其他固定)

问题 最近写一个布局的时候&#xff0c;遇到一个问题。如下图的布局。在没有图片的时候布局是正常的&#xff0c;如果有图片且设置了width:100%;height: 100%; 则会出现图片将自适应布局撑开的情况。 我的解决方式是让图片不缩放&#xff0c;图片外层再添加一个div元素。形如…...

【深度学习】gan网络原理实现猫狗分类

【深度学习】gan网络原理实现猫狗分类 GAN的基本思想源自博弈论你的二人零和博弈&#xff0c;由一个生成器和一个判别器构成&#xff0c;通过对抗学习的方式训练&#xff0c;目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…...

⑨【Stream】Redis流是什么?怎么用?: Stream [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ⑨Redis Stream基本操作命令汇总 一、Redis流 …...

浙江启用无人机巡山护林模式,火灾扑救效率高

为了保护天然的森林资源&#xff0c;浙江当地林业部门引入了一种创新技术&#xff1a;林业无人机。这些天空中的守护者正在重新定义森林防火和护林工作的方式。 当下正值天气干燥的季节&#xff0c;这些无人机开始了它们的首次大规模任务。它们在指定的林区内自主巡逻&#xff…...

Starrocks异步物化视图的使用以及注意事项

最近在使用starrocks来进行实时数据项目的开发&#xff0c;尝试使用了一下starrocks的异步物化视图。 使用版本: 3.1.2-4f3a2ee 创建三个测试表, 注意只有test_mv_table1为分区表&#xff0c;其他两个都是非分区表: CREATE TABLE test_mv_table1 (periodday DATE NOT NULL CO…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...