实验7 数据库编程

news2024/12/23 10:22:39

第1关 定义一个名为PROC_COUNT的无参数存储过程

任务描述
定义一个名为PROC_COUNT的无参数存储过程,查询工程名称中含有“厂”字的工程数量,并调用该存储过程。

相关知识
1、工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
J表如下图:
在这里插入图片描述
现已构建J表,结构信息如下:
在这里插入图片描述
2、存储过程定义
定义一个存储过程语句的语法格式如下:

CREATE [OR REPLACE ] PROCEDURE <模式名.存储过程名> [WITH ENCRYPTION]
[(<参数名>  <参数模式>  <参数数据类型> [<默认值表达式>]
{,<参数名>  <参数模式>  <参数数据类型> [<默认值表达式>] })] 
AS | IS
   [<说明语句端段>]
BEGIN
  <执行语句段>
  [Exception
    <异常处理语句段>]
END;

其中:
(1)<模式名.存储过程名>:指明被创建的存储过程的名称。
(2)<参数名>:指明存储过程参数的名称。
(3) WITH ENCRYPTION:为可选项,如果指定 WITH ENCRYPTION 选项,则对 BEGINEND 之间的语句块进行加密,防止非法用户查看其具体内容,加密后的存储过程或存储函数的定义可在 SYS.SYSTEXTS 系统表中查询。
(4)<参数模式>:指明存储过程参数的输入/输出方式。参数模式可设置为 INOUTIN OUT(OUT IN),默认为 IN 类,IN 表示向存储过程传递参数,OUT表示从存储过程返回参数。而IN OUT表示传递参数和返回参数。 (5)<参数数据类型>:指明存储过程参数的数据类型。 (6)<说明语句端段>:由变量、游标和子程序等对象的申明构成。 (7)<执行语句段>:由SQL语句和过程控制语句构成的执行代码。 (8)<异常处理语句段>:各种异常的处理程序,存储过程执行异常时调用,可默认。 注意:使用该语句的用户必须是DBA或该存储过程的拥有者且具有CREATE PROCEDURE数据库权限的用户;参数的数据类型只能指定变量类型,不能指定长度。 相关操作: ①DECLARE定义变量 DECLARE用于定义变量,在存储过程和函数中通过declare定义变量在BEGIN…END`中,且在语句之前,定义变量语法为:

 DECLARE 变量名 变量类型 [DEFAULT 初始化值]

例如:

 DECLARE a, b INT DEFAULT 5;

SET定义用户变量
SET语句可用于向系统变量或用户变量赋值,用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效,针对用户变量的定义如下:

SET @var_name = expr [, @var_name = expr] ...

例如:

 SET @name = 'abc', @weight = 20;

③ 存储过程调用:CALL命令 过程体调用CALL sp_name[(传参)];
④ 查看存储过程:SHOW PROCEDURE STATUS命令 SHOW PROCEDURE STATUS where db='数据库名'; 命令查看对应数据库中存在哪些存储过程
⑤ 存储过程修改:ALTER PROCEDURE命令 MySQL 中修改存储过程的语法格式如下: ALTER PROCEDURE 存储过程名 [ 特征 ... ] 注意:ALTER PROCEDURE 语句用于修改存储过程的某些特征。如果要修改存储过程的内容,可以先删除原存储过程,再以相同的命名创建新的存储过程;如果要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。
⑥ 存储过程删除:DROP PROCEDURE命令 存储过程被创建后,就会一直保存在数据库服务器上,直至被删除。当 MySQL 数据库中存在废弃的存储过程时,我们需要将它从数据库中删除。 MySQL 中使用 DROP PROCEDURE
语句来删除数据库中已经存在的存储过程。语法格式如下: DROP PROCEDURE [ IF EXISTS ] <过程名> 语法说明如下:
• 过程名:指定要删除的存储过程的名称。
IF EXISTS:指定这个关键字,用于防止因删除不存在的存储过程而引发的错误。
注意:存储过程名称后面没有参数列表,也没有括号,在删除之前,必须确认该存储过程没有任何依赖关系,否则会导致其他与之关联的存储过程无法运行。
OUT参数输出:SELECT @变量名 例:存储过程create procedure out_param(out p_out int);调用后输出OUT参数方法如下: CALL out_param(@pp_out); SELECT @pp_out;
注意:pp_out可与 p_out同名
⑧ 修改命令结束符:DELIMITER命令
在这里插入图片描述
⑨ 使用SELECT …INTO语句为变量赋值
MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量。SELECT …INTO语句的语法格式如下:

 SELECT col_name[,...] INTO var_name[,...] table_expr

col_name:要从数据库中查询的列字段名;
var_name:变量名,列字段名按照在列清单和变量清单中的位置对应,将查询得到的值赋给对应位置的变量;
table_exprSELECT语句其余部分,包括可选的FROM子句和WHERE子句。 需要注意的是,在使用SELECT
INTO语句时,变量名不能和数据表中的字段名不能相同,否则会出错。 例如:

在这里插入图片描述

⑩ 将变量值返回给调用者
在存储过程中定义的变量,经过一系列的处理之后,结果值可能需要返回给存储过程调用者。那么如何返回呢?方便的做法是使用SELECT语句将变量作为结果集返回,例如:
在这里插入图片描述
创建存储过程样例:创建一个存储过程,查询某用户ID在T表中的用户名
在这里插入图片描述

DELIMITER $
CREATE PROCEDURE PROC_COUNT()
BEGIN
SELECT COUNT(*) FROM J WHERE JNAME LIKE '%厂';
END ;$
DELIMITER ;
CALL PROC_COUNT();

第2关 定义一个名为PROC_JNAME的有参数存储过程

任务描述
定义一个名为PROC_JNAME的有参数存储过程,查询输入任意城市的工程项目名称。

DELIMITER $
CREATE PROCEDURE PROC_JNAME(IN TEMPNAME CHAR(10))
BEGIN
SELECT JNAME FROM J WHERE J.CITY=TEMPNAME;
END;$
DELIMITER ;

第3关 定义一个名为PROC_JINFO的有参数存储过程

任务描述
定义一个名为PROC_JINFO的有参数存储过程,查询输入任意城市的工程项目名称、零件名称以及各零件总数量,结果先按工程项目名称升序排序,再按零件名称升序排序。

DELIMITER $
CREATE PROCEDURE PROC_JINFO(IN TEMPNAME VARCHAR(10))
BEGIN
SELECT DISTINCT JNAME,PNAME,SUM(QTY) AS SUM_QTY
FROM SPJ
RIGHT JOIN J
ON J.JNO = SPJ.JNO
LEFT JOIN P
ON P.PNO = SPJ.PNO
WHERE CITY =  TEMPNAME
GROUP BY SPJ.JNO,SPJ.PNO
ORDER BY JNAME,PNAME;
END ;$
DELIMITER ;

第4关 定义一个名为PROC_AVGGRADE的有参数存储过程

任务描述
定义一个名为PROC_AVGGRADE的有参数存储过程,统计任意一门课的平均成绩。
相关知识
1、课程表Course由课程号(Cno)、课程名(Cname)、先行课(Cpno)、学分(Ccredit)组成。
Course表如下图:
在这里插入图片描述
现已构建Course表,结构信息如下:
在这里插入图片描述
创建Course表的Mysql代码为:

CREATE TABLE Course(
    Cno CHAR(4) PRIMARY KEY,
    Cname CHAR(9),
    Cpno CHAR(4),
    Ccredit INT
);

INSERT INTO Course VALUES('1','数据库','5',4);
INSERT INTO Course VALUES('2','离散数学','',2);
INSERT INTO Course VALUES('3','信息系统','1',4);
INSERT INTO Course VALUES('4','操作系统','6',3);
INSERT INTO Course VALUES('5','数据结构','7',4);
INSERT INTO Course VALUES('6','数据处理','',2);
INSERT INTO Course VALUES('7','PaSCal语言','6',4);

2、学生选课表SC由学号(Sno)、课程号(Cno)、成绩(Grade)组成。
SC表如下图:
在这里插入图片描述
现已构建SC表,结构信息如下:
在这里插入图片描述
创建SC表的Mysql代码为:

CREATE TABLE SC(
    Sno CHAR(9),
    Cno CHAR(4),
    Grade INT,
    PRIMARY KEY(Sno, Cno)
);

INSERT INTO SC VALUES('200215121','1',92);
INSERT INTO SC VALUES('200215121','2',85);
INSERT INTO SC VALUES('200215121','3',88);
INSERT INTO SC VALUES('200215122','2',90);
INSERT INTO SC VALUES('200215122','3',80);
INSERT INTO SC VALUES('200215123','1',60);
INSERT INTO SC VALUES('200215123','2',75);
INSERT INTO SC VALUES('200215124','1',52);
INSERT INTO SC VALUES('200215124','2',63);
INSERT INTO SC VALUES('200215125','1',100);
INSERT INTO SC VALUES('200215125','2',100);
INSERT INTO SC VALUES('200215126','2',34);
INSERT INTO SC VALUES('200215126','3',45);
INSERT INTO SC VALUES('200215127','2',86);
INSERT INTO SC VALUES('200215127','3',88);
DELIMITER $
CREATE PROCEDURE PROC_AVGGRADE(IN TEMPNAME VARCHAR(10))
BEGIN
SELECT AVG(Grade) AS AVG_Grade
FROM SC,Course
WHERE Cname = TEMPNAME 
AND Course.Cno=SC.Cno;
END;$
DELIMITER ;

第5关 定义一个名为PROC_SINFO的有参数存储过程

任务描述
定义一个名为PROC_SINFO的有参数存储过程,查询输入任意供应商供应的工程项目名称、零件名称以及各零件总数量,结果先按工程项目名称升序排序,再按零件名称升序排序。

DELIMITER $
CREATE PROCEDURE PROC_SINFO(IN TEMPNAME VARCHAR(10))
BEGIN
SELECT DISTINCT JNAME,PNAME,SUM(QTY) AS SUM_QTY
FROM SPJ
RIGHT JOIN J
ON J.JNO = SPJ.JNO
RIGHT JOIN S
ON S.SNO = SPJ.SNO
LEFT JOIN P
ON P.PNO = SPJ.PNO
WHERE SNAME =  TEMPNAME
GROUP BY SPJ.JNO,SPJ.PNO
ORDER BY JNAME,PNAME;
END ;$
DELIMITER ;

第6关 定义一个名为PROC_JSEARCH的有参数存储过程

任务描述
定义一个名为PROC_JSEARCH的有参数存储过程,当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME),结果先按供应商名称升序排序,再按零件名称升序排序。

DELIMITER $
CREATE PROCEDURE PROC_JSEARCH(IN TEMPNAME CHAR(3))
BEGIN
SELECT DISTINCT SNAME,PNAME,JNAME
FROM SPJ
RIGHT JOIN J
ON J.JNO = SPJ.JNO
RIGHT JOIN S
ON S.SNO = SPJ.SNO
LEFT JOIN P
ON P.PNO = SPJ.PNO
WHERE J.JNO =  TEMPNAME
GROUP BY SPJ.JNO,SPJ.PNO
ORDER BY SNAME,PNAME;
END ;$
DELIMITER ;

第7关 定义一个名为PROC_SUPDATE的有参数存储过程

任务描述
定义一个名为PROC_SUPDATE的有参数存储过程,按用户输入值更新“供应商表S”,根据输入的供应商代码,将S表中的供应商名称改为输入的供应商名称、城市名称改为输入的城市名称。
注意存储过程的输入参数为供应商代码、供应商名称、城市名称。

DELIMITER $
CREATE PROCEDURE PROC_SUPDATE(IN SNOTEMP CHAR(3),IN SNAMETEMP CHAR(10),IN CITYTEMP CHAR(10))
BEGIN
UPDATE S
SET SNO = SNOTEMP,SNAME = SNAMETEMP,CITY = CITYTEMP
WHERE SNO = SNOTEMP;
END;$
DELIMITER ;

第8关 定义一个名为PROC_AVGWEIGHT的有参数存储过程

任务描述
定义一个名为PROC_AVGWEIGHT的有参数存储过程,要求求出“用户输入的供应商”提供给“用户输入的工程”的“对应所有零件的平均重量”,并将平均重量结果通过输出变量AVG_WEIGHT返回,按照输入供应商为S2,工程为J1,执行上述存储过程。(注意要考虑零件数量)

DELIMITER $
CREATE PROCEDURE PROC_AVGWEIGHT(IN SNOTEMP CHAR(3),IN JNOTEMP CHAR(3),OUT TEMP INT(11))
BEGIN 
SELECT AVG(WEIGHT) INTO TEMP
FROM P
WHERE P.PNO IN(
SELECT DISTINCT PNO
FROM SPJ 
WHERE SNO=SNOTEMP 
AND JNO=JNOTEMP
);
END;$
DELIMITER ;
CALL PROC_AVGWEIGHT('S2','J1',@AVG_WEIGHT);
SELECT @AVG_WEIGHT;

第9关 定义一个名为PROC_JGRADE的有参数存储过程

任务描述
定义一个名为PROC_JGRADE的有参数存储过程,查看某个工程JNO使用零件数量的分布情况,按照S档<1000,M档1000-2000,L档>2000分段统计,按照输入某个工程JNO,输出为该工程号JNO的档次JTYPE

DELIMITER $
CREATE PROCEDURE PROC_JGRADE(IN JNOTEMP VARCHAR(10),OUT TEMP VARCHAR(10))
BEGIN
DECLARE NUMBER INT(4);
SELECT SUM(QTY) INTO NUMBER
FROM SPJ
WHERE JNO =JNOTEMP;
IF (NUMBER < 1000)
THEN SET TEMP ='S';
ELSEIF (NUMBER > 1000 & NUMBER < 2000)
THEN SET TEMP ='M';
ELSEIF (NUMBER > 2000)
THEN SET TEMP ='L';
END IF;
END;$
DELIMITER ;

第10关 定义一个名为PROC_UPDATEGRADE的存储过程

任务描述
定义一个名为PROC_UPDATEGRADE的存储过程,将学生选课成绩从百分制改为等级制(即ABCDE),其中A为[90,100],B为[80,90),C为[70,80),D为[60,70),E为[0,60)。

DELIMITER $
CREATE PROCEDURE PROC_UPDATEGRADE()
BEGIN
UPDATE SC SET rank='A' WHERE Grade >=90 AND Grade<=100; 
UPDATE SC SET rank='B' WHERE Grade >=80 AND Grade<90; 
UPDATE SC SET rank='C' WHERE Grade >=70 AND Grade<80;  
UPDATE SC SET rank='D' WHERE Grade >=60 AND Grade<70;
UPDATE SC SET rank='E' WHERE Grade >=0 AND Grade<60;  
END;$
DELIMITER ;
CALL PROC_UPDATEGRADE();

第11关 使用游标定义一个名为PROC_JGRADE无参存储过程

任务描述
使用游标定义一个名为PROC_JGRADE无参存储过程,统计各工程使用零件数量的分布情况,按照S档<1000,M档1000-2000,L档>2000分段统计,即输出工程JNO、每个工程使用零件个数、每个工程使用零件个数的分档,结果按工程号JNO升序排序。
相关知识
1、供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY
SPJ表如下图:
在这里插入图片描述
现已构建SPJ表,结构信息如下:
在这里插入图片描述
2、游标
游标的操作
① 游标的定义

DECLARE 光标名称 CURSOR FOR 查询语法

例:

DECLARE CURSOR_NAME CURSOR FOR SELECT_STATEMENT;

② 打开游标

 OPEN 光标名称

例:

OPEN CURSOR_NAME;

③ 取游标中的数据

FETCH 光标名称 INFO VAR_NAME [,VAR_NAME ].....

例:

FETCH CURSOR_NAME INFO VAR_NAME;

④ 关闭游标

 CLOSE 光标名称

例:

 CLOSE CURSO_NAME;

⑤ 释放游标

DEALLOCATE 光标名称

例:

DEALLOCATE CURSOR_NAME;

游标使用示例: 使用游标创建一个存储过程,统计STUDENT表年龄大于19的记录的数量,如下为STUDENT表的创建代码:

 CREATE TABLE STUDENT(
    STUID INT PRIMARY KEY AUTO_INCREMENT,
    STUNAME VARCHAR(20),
    STUSEX VARCHAR(2),
    STUAGE INT
);
INSERT INTO STUDENT(STUNAME,STUSEX,STUAGE) VALUES
('小明','男',20),
('小花','女',19),
('大赤','男',20),
('可乐','男',19),
('莹莹','女',19);

使用游标创建存储过程代码:

DELIMITER $
CREATE PROCEDURE PROC_STAT()
BEGIN
    # 创建 用于接收游标值的变量
    DECLARE ID,AGE,TOTAL INT;
    DECLARE NAME,SEX CHAR(10);
    # 游标结束的标志
    DECLARE DONE INT DEFAULT 0;
    # 声明游标
    DECLARE CUR CURSOR FOR SELECT STUID,STUNAME,STUSEX,STUAGE FROM STUDENT WHERE STUAGE > 19;
    # 指定游标循环结束时的返回值 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;
    # 打开游标
    OPEN CUR;
    # 初始化变量
    SET TOTAL = 0;
    # WHILE 循环
    WHILE DONE != 1 DO
        FETCH CUR INTO ID,NAME,SEX,AGE;
          IF DONE != 1 THEN
             SET TOTAL = TOTAL + 1;
          END IF;    
    END WHILE;
    # 关闭游标
    CLOSE CUR;
    # 输出累计的结果
    SELECT TOTAL;
END$
DELIMITER ;
# 调用存储过程
CALL PROC_STAT();
DELIMITER $
CREATE PROCEDURE PROC_JGRADE()
BEGIN
DECLARE PTYPE CHAR(10);
DECLARE NJNO CHAR(10);
DECLARE JNOTEMP INT DEFAULT 0;
DECLARE QTYTEMP INT DEFAULT 0;
DECLARE TEMP CURSOR FOR SELECT JNO,SUM(QTY)

FROM SPJ 
GROUP BY JNO 
ORDER BY JNO;
OPEN TEMP;
CREATE TEMPORARY TABLE temp_table(
SJNO CHAR(10) NOT NULL,
SQTY CHAR(10) NOT NULL,
JTYPE CHAR(10) NOT NULL
);
REPEAT 
FETCH TEMP INTO NJNO,QTYTEMP;
IF(QTYTEMP<1000)
THEN
SET PTYPE='S';
ELSEIF(1000<=QTYTEMP AND QTYTEMP <=2000)
THEN
SET PTYPE='M';
ELSEIF(QTYTEMP>2000)
THEN
SET PTYPE='L';
END IF;
INSERT INTO temp_table VALUES(NJNO,QTYTEMP,PTYPE);
SET JNOTEMP =JNOTEMP+1;
UNTIL JNOTEMP>=5
END REPEAT;
CLOSE TEMP;
SELECT*FROM temp_table;
END;$
DELIMITER ;

第12关 使用游标定义一个名为PROC_NUMGRADE有参存储过程

任务描述
使用游标定义一个名为PROC_NUMGRADE有参存储过程,统计某课程的成绩分布情况,即按照各分数段统计人数,按照100,[90,100),[80,90),[70,80),[60,70),[0,60)分段统计。
相关知识
1、课程表Course由课程号(Cno)、课程名(Cname)、先行课(Cpno)、学分(Ccredit)组成。
Course表如下图:
在这里插入图片描述
现已构建Course表,结构信息如下:
在这里插入图片描述
创建Course表的Mysql代码为:

CREATE TABLE Course(
    Cno CHAR(4) PRIMARY KEY,
    Cname CHAR(9),
    Cpno CHAR(4),
    Ccredit INT
);

INSERT INTO Course VALUES('1','数据库','5',4);
INSERT INTO Course VALUES('2','离散数学','',2);
INSERT INTO Course VALUES('3','信息系统','1',4);
INSERT INTO Course VALUES('4','操作系统','6',3);
INSERT INTO Course VALUES('5','数据结构','7',4);
INSERT INTO Course VALUES('6','数据处理','',2);
INSERT INTO Course VALUES('7','PaSCal语言','6',4);

2、学生选课表SC由学号(Sno)、课程号(Cno)、成绩(Grade)组成。
SC表如下图:
在这里插入图片描述
现已构建SC表,结构信息如下:
在这里插入图片描述
创建SC表的Mysql代码为:

CREATE TABLE SC(
    Sno CHAR(9),
    Cno CHAR(4),
    Grade INT,
    PRIMARY KEY(Sno, Cno)
);

INSERT INTO SC VALUES('200215121','1',92);
INSERT INTO SC VALUES('200215121','2',85);
INSERT INTO SC VALUES('200215121','3',88);
INSERT INTO SC VALUES('200215122','2',90);
INSERT INTO SC VALUES('200215122','3',80);
INSERT INTO SC VALUES('200215123','1',60);
INSERT INTO SC VALUES('200215123','2',75);
INSERT INTO SC VALUES('200215124','1',52);
INSERT INTO SC VALUES('200215124','2',63);
INSERT INTO SC VALUES('200215125','1',100);
INSERT INTO SC VALUES('200215125','2',100);
INSERT INTO SC VALUES('200215126','2',34);
INSERT INTO SC VALUES('200215126','3',45);
INSERT INTO SC VALUES('200215127','2',86);
INSERT INTO SC VALUES('200215127','3',88);
DELIMITER $
CREATE PROCEDURE PROC_NUMGRADE(IN TEMPCNAME CHAR(9))
BEGIN
    # 创建 用于接收游标值的变量
    DECLARE TEMPGRADE INT;
    # 游标结束的标志
    DECLARE DONE INT DEFAULT 0;
    # 声明游标
    DECLARE CUR CURSOR FOR
    SELECT Grade
    FROM Course,SC
    WHERE Cname = TEMPCNAME AND Course.Cno = SC.Cno;
    # 指定游标循环结束时的返回值 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = 1;
    # 创建临时表
    CREATE TEMPORARY TABLE TMEP_TABLE(
        Type CHAR(30),
        Num INT
    );
    INSERT INTO TMEP_TABLE VALUES('100', 0);
    INSERT INTO TMEP_TABLE VALUES('[90,100)', 0);
    INSERT INTO TMEP_TABLE VALUES('[80,90)', 0);
    INSERT INTO TMEP_TABLE VALUES('[70,80)', 0);
    INSERT INTO TMEP_TABLE VALUES('[60,70)', 0);
    INSERT INTO TMEP_TABLE VALUES('[0,60)', 0);
    # 打开游标
    OPEN CUR;
    # WHILE 循环
    WHILE DONE != 1 DO
        FETCH CUR INTO TEMPGRADE;
        IF DONE != 1 THEN
            IF TEMPGRADE=100 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='100';
            ELSEIF TEMPGRADE>=90 AND TEMPGRADE<100 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[90,100)';
            ELSEIF TEMPGRADE>=80 AND TEMPGRADE<90 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[80,90)';
            ELSEIF TEMPGRADE>=70 AND TEMPGRADE<80 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[70,80)';
            ELSEIF TEMPGRADE>=60 AND TEMPGRADE<70 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[60,70)';
            ELSEIF TEMPGRADE>=0 AND TEMPGRADE<60 THEN UPDATE TMEP_TABLE SET Num=Num+1 WHERE Type='[0,60)';
            END IF;  
        END IF; 
    END WHILE;
    # 关闭游标
    CLOSE CUR;
    # 输出累计的结果
    SELECT * FROM TMEP_TABLE;
END;$
DELIMITER ;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络-网络层:IP协议

目录 一、IP协议格式 二、IP地址管理 1.动态地址分配&组建私网 1.1 动态地址分配DHCP 1.2 NAT技术组建私网 2. 早期网络划分方式 3. 当前网络划分方式CIDR方案 4. 特殊IP地址 5. 公网与私网&#xff08;外网与内网&#xff09; 6. 路由选择 网络层&#xff1a;负…

JavaScript Date对象中的常用方法有哪些?

JavaScript中的日期对象用来处理日期和时间。例如&#xff0c;秒杀活动中日期的实时显示、时钟效果、在线日历等。下面将对日期对象进行详细讲解。 日期对象的使用 JavaScript中的日期对象需要使用new Date()实例化对象才能使用&#xff0c;Date()是日期对象的构造函数。在创…

服务访问质量(QoS)介绍与技术 一

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。个人爱好: 编程&#xff0c;打篮球&#xff0c;计算机知识个人名言&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石…

【LeetCode每日一题】——1290.二进制链表转整数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 链表 二【题目难度】 简单 三【题目编号】 1290.二进制链表转整数 四【题目描述】 给你一个单…

Python时间模块之time模块

在项目开发中做功能经常会用到关于时间的操作。比如会员过期的定时任务&#xff0c;一些代码的延迟执行。今天介绍时间模块中的time模块。 目录 1.表示时间的方式&#xff1a; 2.格式化时间中字符的含义&#xff1a; 3.函数转换关系 4.函数介绍及应用 time() localtime() …

10Gb每秒!SM4的单核“心”!海泰携手海量数据安全“闪”护

引言 密码技术是保护网络与信息系统安全的核心技术&#xff0c;已经广泛应用到金融、能源、通信、交通、水利等各行各业&#xff0c;为国家安全和经济发展发挥重要作用。商用密码应用安全性评估&#xff08;简称密评&#xff09;&#xff0c;是指在釆用商用密码技术、产品和服务…

[附源码]计算机毕业设计汽车租赁管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【numpy简介、入门、数组创建】

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

基于jsp+mysql+ssm学生网上请假系统-计算机毕业设计

项目介绍 随着高校招生规模的逐步扩大和教学方式的改革&#xff0c;在校学生人数将不断增加。另一方面&#xff0c;我国高等学校基层学生考核工作的内容杂&#xff0c;管理细&#xff0c;要求高&#xff0c;头绪多&#xff0c;传统的手工档案式管理办法已基本不适应新形势的要…

[附源码]JAVA毕业设计社区管理与服务(系统+LW)

[附源码]JAVA毕业设计社区管理与服务&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

XX集团BIM项目解决方案

目 录 一、BIM发展现状 二、集团BIM建设总体规划&#xff08;建议&#xff09; 1、BIM实施目标 2、BIM实施的范围 3、BIM实施原则 4、集团BIM项目组织架构 4.1职能分配 4.2建模组织形式 4.3人员匹配建议 5、集团BIM应用功能架构 5.1 BIM平台对集团管理层面的价值 5…

原来Python自带了数据库,用起来真方便

Python作为数据科学主流语言&#xff0c;被广泛用于数据读存、处理、分析、建模&#xff0c;可以说是无所不能。 数据一般存放在本地文件或者数据库里&#xff0c;之前介绍过如何使用python读取本地文件&#xff0c;也对# PyMySQL、cx_Oracle等数据库连接库做过简单的使用分享…

乾元通多卡聚合通信设备应急指挥车视频图传解决方案

行业现状 1) 不稳定&#xff1a;单一通信链路受运营商网络覆盖影响&#xff0c;不同区域信号强度不一样&#xff0c;无法实现。 2) 网速慢&#xff1a;受基站信号质量及拥塞影响&#xff0c;单路网速较差&#xff0c;高清视频监控等由于网络带宽不够&#xff0c;只能以低画质…

基于jsp+ssm的新生入学报道系统-计算机毕业设计

项目介绍 众多高校为了响应国家的号召&#xff0c;很多管理办法都落实到科学管理&#xff0c;通过计算机来实现对学校的具体管理办法当中&#xff0c;不仅仅促进了学校里计算机系统管理的发展&#xff0c;同时一定程度上加大了对学校的管理力度&#xff0c;数据量的不断增加&a…

Java常问面试题概要答案

文章目录1.JDK、JRE、JVM的区别2.hashcode()与equals()之间的关系3.String、StringBuffer、StringBuilder的区别4.Java泛型5.ArrayList和LinkedList区别6.ConcurrentHashMap7. B树和B树8.负载均衡常见策略1.JDK、JRE、JVM的区别 JDK&#xff1a;java标准开发包&#xff0c;包含…

【安全测试】渗透测试神器BurpSuite环境搭建

工欲善其事&#xff0c;必先利其器&#xff0c;要想更好的进行安全测试&#xff0c;就需要有一个趁手的工具&#xff0c;BurpSuite就是一个不错的选择&#xff0c;是广大安全测试工程师的必备工具&#xff0c;今天就带着大家把这个工具给装上&#xff0c;开启大家的安全测试之旅…

数据结构与算法基础-学习-06-线性表之创建循环链表、创建尾指针循环链表、两个尾指针循环链表连接

一、测试环境 名称值cpu12th Gen Intel Core™ i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2gcc 版本4.8.5 20150623 二、个人理解 1、循环链表优点 无论指针指向哪个节点&#xff0c;都可以访问任何一个其他节点。 2、尾指针循环链表优点 同上…

实现端口扫描

实现原理 tcp扫描 创建tcp客户端然后与目标地址的每个端口建立连接&#xff0c;如果能连接成功说明目标地址此端口已经被打开。 判断是什么协议 连接成功后读取字节&#xff0c;如ssh协议的端口会读取到如这种的数据SSH-2.0-OpenSSH_7.4;创建http/s客户端与已经扫描出来的端…

LINUX漏洞复现篇之ShellShock漏洞

简介 ShellShock漏洞, 中文称为"破壳漏洞", 是Unix Shell中的安全漏洞 在一些网络服务器的部署中, 使用bash来处理某些请求, 允许攻击者通过低版本的bash执行任意Shell命令 此漏洞在调用BashShell之前使用payload创建环境变量, 这些环境变量包含Shell代码, 在Shel…

家庭生活开支如何记录,怎么记账一目了然

家庭日常开支明细怎么记账一目了然呢&#xff1f;很多上了年龄的人比较擅长使用传统的方法纸笔记录家庭账目&#xff0c;可是统计起来就比较麻烦&#xff1b;而年轻人则比较跟随时代潮流&#xff0c;喜欢使用一些电子记账工具&#xff0c;比如借助电脑手机上的记账类软件来记录…