大学数据库系统原理 Mysql数据库实验记录

news2024/11/8 21:36:22

软件版本说明:
1.Mysql数据库:sql server8.0

dd75b8600aa24161b18c74ebb24171e1.png

2.命令实现使用以及数据库可视化查看:Navicat 16

bb2edcb2729e4713983e01bc23d0f401.png

#不用Mysql Command Line 的原因是不喜欢那个黑框,也不常用,使用Navicat的MYSQL命令列界面是一样的

另外说明   实现相同的效果可能有很多种SQL语句,我的答案只是一种参考,不一定是最简单有效的哦

实验任务要求:

一、建表、插入数据

建立校级创新项目数据库的四个基本表并用INSERT 语句输入数据:

注意:

  1. 一个教师能负责多个项目
  2. 一个项目只能有一名指导老师,能有多名学生参与
  3. 一个学生能选择多个项目;

建表要求:

  1. 注意实体完整性约束以及参照完整性约束;
  2. 自定义完整性:性别约束,成绩约束(Grade在0~100之间);
  3. 成绩、年龄为int,其余均为char。

    S(Sno,Sname,Ssex,Sage,Sdept) 学生(学号,姓名,性别,年龄,系)

T(Tno,Tname, Tsex,Tdept) 教师(教师编号,教师姓名,教师所在系)

P(Pno,Pname,Tno) 项目(项目编号,项目名称,指导教师编号)

SP(Sno,Pno,Grade) 参与情况(学号,项目编号,成绩)

//代码块1 建立学生表S及运行结果
mysql> CREATE TABLE S(Sno CHAR(5) PRIMARY KEY,
        Sname char(10),
        Ssex char(2) check(Ssex in('男','女')),
        Sage int check(Sage between 0 and 100),
        Sdept char(2));

Query OK, 0 rows affected (0.02 sec)
//代码块2 建立教师表T及运行结果

mysql> CREATE TABLE T(Tno char(3) PRIMARY KEY,
        Tname char(10),
		Tsex char(2) CHECK(Tsex in('男','女')),
        Tdept char(2));

Query OK, 0 rows affected (0.02 sec)
​

 

//代码块3 建立项目P表及运行结果
mysql> CREATE TABLE P (
    Pno CHAR(5) PRIMARY KEY,
    Pname CHAR(20),
    Tno CHAR(5),
    FOREIGN KEY (Tno) REFERENCES T(Tno)
);

Query OK, 0 rows affected (0.05 sec)

 

//代码块4 建立参与情况表SP
mysql> CREATE TABLE SP(
	Sno char(6),
	Pno char(5),
	Grade int check(Grade between 0 and 100),
	foreign key (Sno) references S(Sno),
	foreign key (Pno) references P(Pno),
	primary key(Sno,Pno));
Query OK, 0 rows affected (0.03 sec)

S表数据如下:

'23121', '韩刚', '男', 20, 'CS'

'23122', '刘心语', '女', 19, 'CS'

'23123', '苏恬', '女', 19, 'CS'

'23124', '潘佳慧', '女', 19, 'CS'

'23125', '邓辉', '男', 20, 'CS'

'23126', '肖馨玥', '女', 19, 'CS'

'23127', '薛志超', '男', 20, 'CS'

'23128', '迪丽', '女', 19, 'CS'

'23201',‘罗钧一’,‘男’,20,‘MA’

'23202', '王浩然', '男', 18, 'MA'

'23203',‘马杰’,‘男’,20,‘MA’

'23204, '蔡静雯', '女', 18, 'MA'

'23205',‘刘雪彤’,‘女’,20,‘MA’

'23206', '丁一', '女', 18, 'MA'

'23321', '张立', '男', 19, 'IS'

'23322', '杨娜', '女', 19, 'IS'

//代码块5 插入学生表S信息及运行结果
mysql> INSERT INTO S VALUES ('23121', '韩刚', '男', 20, 'CS'),
('23122', '刘心语', '女', 19, 'CS'),
('23123', '苏恬', '女', 19, 'CS'),
('23124', '潘佳慧', '女', 19, 'CS'),
('23125', '邓辉', '男', 20, 'CS'),
('23126', '肖馨玥', '女', 19, 'CS'),
('23127', '薛志超', '男', 20, 'CS'),
('23128', '迪丽', '女', 19, 'CS'),
('23201', '罗钧一', '男', 20, 'MA'),
('23202', '王浩然', '男', 18, 'MA'),
('23203', '马杰', '男', 20, 'MA'),
('23204', '蔡静雯', '女', 18, 'MA'),
('23205', '刘雪彤', '女', 20, 'MA'),
('23206', '丁一', '女', 18, 'MA'),
('23321', '张立', '男', 19, 'IS'),
('23322', '杨娜', '女', 19, 'IS');

Query OK, 16 rows affected (0.02 sec)
Records: 16  Duplicates: 0  Warnings: 0

T表数据如下:

'101', '梁任甫', 'CS'

'102', '陈鹤寿', 'CS'

'103', '王静安', 'MA'

'104', '赵宜仲', ‘IS’

//代码块6 插入教师表
mysql> INSERT INTO T VALUES
		('101', '梁任甫', '男', 'CS'),
        ('102', '陈鹤寿', '男', 'CS'),
        ('103', '王静安', '女', 'MA'),
        ('104', '赵宜仲', '男', 'IS');
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

P表数据如下:

'1', '数据库设计项目', '101'

'2', '无人机飞行设计项目', '103'

'3', '校园网络规划项目, '102'

'4', '操作系统设计项目', '101'

'5', '视觉处理项目', '102'

'6', '大模型构建项目', ‘104’

//7插入项目表
mysql> INSERT INTO P VALUES ('1', '数据库设计项目', '101'),
        ('2', '无人机飞行设计项目', '103'),
        ('3', '校园网络规划项目', '102'),
        ('4', '操作系统设计项目', '101'),
        ('5', '视觉处理项目', '102'),
        ('6', '大模型构建项目', '104');
Query OK, 6 rows affected (0.01 sec)
Records: 6  Duplicates: 0  Warnings: 0

SP表(可自行补充数据):

'23122', '3', 80

'23122', '2', 90

'23121', '3', 88

'23122', '5', 68

'23123', '1', 92

'23124', '2', 85

'23125', '5', 94

'23126', '3', 88

'23201', '1', 92

'23202', '1', 92

'23202', '6', 77

'23203', '2', 79

'23204', '4', 85

'23122', '6', 90

'23205', '3', 99

'23206', '5', 58

'23321', '1', 55

'23321', '6', 81

'23322', '6', 89

'23322', '2', 75

'23128', '4', 81

'23127', '4', 89

'23128', '1', 88

'23122', '1', 75

'23122', '4', 80

//代码块8 插入参与情况表
mysql> INSERT INTO SP VALUES
('23122', '3', 80),
('23122', '2', 90),
('23121', '3', 88),
('23122', '5', 68),
('23123', '1', 92),
('23124', '2', 85),
('23125', '5', 94),
('23126', '3', 88),
('23201', '1', 92),
('23202', '1', 92),
('23202', '6', 77),
('23203', '2', 79),
('23204', '4', 85),
('23122', '6', 90),
('23205', '3', 99),
('23206', '5', 58),
('23321', '1', 55),
('23321', '6', 81),
('23322', '6', 89),
('23322', '2', 75),
('23128', '4', 81),
('23127', '4', 89),
('23128', '1', 88),
('23122', '1', 75),
('23122', '4', 80);

Query OK, 25 rows affected (0.01 sec)
Records: 25  Duplicates: 0  Warnings: 0
  • 建表
  1. 建立四个基本表
  2. 用INSERT插入数据,SP表可自行补充数据,

 

二、查询

1. 查询参与 3 号项目的学生学号与该课程成绩。

mysql> SELECT Sno,Grade FROM SP WHERE Pno=3;
+-------+-------+
| Sno   | Grade |
+-------+-------+
| 23121 |    88 |
| 23122 |    80 |
| 23126 |    88 |
| 23205 |    99 |
+-------+-------+
4 rows in set (0.03 sec)

2. 查询负责项目名为'无人机飞行设计项目'的教师姓名。

mysql> select Tname FROM P,T 
        WHERE T.Tno=P.Tno and Pname='无人机飞行设计项目';
+--------+
| Tname  |
+--------+
| 王静安 |
+--------+
1 row in set (0.03 sec)

mysql> SELECT T.Tname FROM T 
        JOIN P ON T.Tno = P.Tno 
        WHERE Pname = '无人机飞行设计项目';
+--------+
| Tname  |
+--------+
| 王静安 |
+--------+
1 row in set (0.02 sec)

3. 查询没有参与 2 号项目的学生姓名与专业。

mysql> select S.Sname,S.Sdept from S 
        WHERE Sno not in
        (select Sno from SP where Pno=2);
+--------+-------+
| Sname  | Sdept |
+--------+-------+
| 韩刚   | CS    |
| 苏恬   | CS    |
| 邓辉   | CS    |
| 肖馨玥 | CS    |
| 薛志超 | CS    |
| 迪丽   | CS    |
| 罗钧一 | MA    |
| 王浩然 | MA    |
| 蔡静雯 | MA    |
| 刘雪彤 | MA    |
| 丁一   | MA    |
| 张立   | IS    |
+--------+-------+
12 rows in set (0.04 sec)

这里where里面的Sno如果写为S.Sno,那么结果就会有很多重复的相同结果,需要在select后面加distinct才会得到同样的输出,但是这样效率低,花费时间为0.05sec。原理是如果用的S.Sno,是把所有的Sno一起,挨个和选择出的not in 结果比较,每比较一次得到一些结果后就再拿全部Sno去比较下一个not in 结果(一个学生可以多个项目),所以会有重复出现的结果

4. 查询参加了所有项目的学生姓名。

mysql> SELECT S.Sname
FROM S
WHERE NOT EXISTS (
    SELECT *
    FROM P
    WHERE NOT EXISTS (
        SELECT *
        FROM SP
        WHERE SP.Sno = S.Sno AND SP.Pno = P.Pno
    )
);
+--------+
| Sname  |
+--------+
| 刘心语 |
+--------+
1 row in set (0.03 sec)

这个还挺难写的 

5. 查询只参加一个项目的学生的学号。

mysql> select Sno from 
        (select Sno,count(*) as p_count from SP GROUP BY Sno) as p_counts 
        where p_count=1;
+-------+
| Sno   |
+-------+
| 23121 |
| 23123 |
| 23124 |
| 23125 |
| 23126 |
| 23127 |
| 23201 |
| 23203 |
| 23204 |
| 23205 |
| 23206 |
+-------+
11 rows in set (0.03 sec)

mysql> SELECT Sno
FROM SP
GROUP BY Sno
HAVING COUNT(*) = 1;
+-------+
| Sno   |
+-------+
| 23121 |
| 23123 |
| 23124 |
| 23125 |
| 23126 |
| 23127 |
| 23201 |
| 23203 |
| 23204 |
| 23205 |
| 23206 |
+-------+
11 rows in set (0.08 sec)

 每一个派生的关系都需要起一个别名,比如这里的p_count和p_counts

6. 查询所有项目成绩均及格的学生的学号和平均成绩,其结果按平均成绩的降序排列。(平均成绩:参与项目成绩/参与项目数)

mysql> SELECT Sno, AVG(Grade) AS 平均成绩
FROM SP
GROUP BY Sno
HAVING MIN(Grade) >= 60
ORDER BY 平均成绩 DESC;
+-------+----------+
| Sno   | 平均成绩 |
+-------+----------+
| 23205 | 99.0000  |
| 23125 | 94.0000  |
| 23123 | 92.0000  |
| 23201 | 92.0000  |
| 23127 | 89.0000  |
| 23121 | 88.0000  |
| 23126 | 88.0000  |
| 23124 | 85.0000  |
| 23204 | 85.0000  |
| 23128 | 84.5000  |
| 23202 | 84.5000  |
| 23322 | 82.0000  |
| 23122 | 80.5000  |
| 23203 | 79.0000  |
+-------+----------+
14 rows in set (0.04 sec)

要查询所有项目成绩均及格的学生的学号和平均成绩,首先需要计算每个学生的平均成绩,然后筛选出平均成绩均及格的学生,并按平均成绩的降序排列。

SELECT Sno, AVG(Grade) AS 平均成绩 FROM SP GROUP BY Sno HAVING MIN(Grade) >= 60 ORDER BY 平均成绩 DESC;

这个查询首先按学号分组,然后计算每个学生的平均成绩。接着使用HAVING子句过滤出平均成绩均大于等于60分的学生,并按平均成绩的降序排列。

 

7. 查询参与1号项目,且成绩排名第2的学生姓名。(成绩相同按相同名次处理,比如88,88,85,则85为第2名)

mysql> SELECT S.Sname
FROM S
JOIN SP ON S.Sno = SP.Sno
WHERE Pno = 1
ORDER BY Grade DESC
LIMIT 1 OFFSET 1;

+--------+
| Sname  |
+--------+
| 罗钧一 |
+--------+
1 row in set (0.06 sec)

mysql> SELECT S.Sname
FROM S
JOIN SP ON S.Sno = SP.Sno
WHERE Pno = 1
ORDER BY Grade DESC
LIMIT 1,1;

+--------+
| Sname  |
+--------+
| 罗钧一 |
+--------+
1 row in set (0.04 sec)

三、数据修改、删除与视图

1. 把4号项目的成绩降低5%。

c73ad815ec0e4e109007902aceb71a16.png

mysql> update SP set Grade=Grade*0.95 where Pno=4;

Query OK, 4 rows affected (0.02 sec)
Rows matched: 4  Changed: 4  Warnings: 0

388604221c10440b98ffc7742be75772.png

2. 在P表和 SP表中删除项目号为5的所有数据。(删除后做回滚处理)

 

//因为之前执行过语句了,所以被影响的行是0
mysql> START TRANSACTION;
DELETE FROM P WHERE Pno = 5;
DELETE FROM SP WHERE Pno = 5;
ROLLBACK;
Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

0863f2943a3e4a3296f4ae1eb77343c0.png

192bfa1767794bdbb0775d4e4c8db994.png

3. 建立女学生的视图,属性包括学号、姓名、参与项目名字和成绩。

mysql> CREATE VIEW Femal_Student AS 
    SELECT S.Sno, S.Sname,P.Pname,SP.Grade 
    from S 
    join SP ON S.Sno=SP.Sno 
    JOIN P on SP.Pno=P.Pno 
    WHERE S.Ssex='女';

Query OK, 0 rows affected (0.01 sec)

dc8b44d47184437b8489f767ebec40f6.png

4. 在女学生视图中查询平均成绩大于 80 分的学生学号与姓名。

mysql> select Sno,Sname from Femal_Student group by Sname,Sno having AVG(Grade)>80;
+-------+--------+
| Sno   | Sname  |
+-------+--------+
| 23122 | 刘心语 |
| 23123 | 苏恬   |
| 23124 | 潘佳慧 |
| 23126 | 肖馨玥 |
| 23128 | 迪丽   |
| 23204 | 蔡静雯 |
| 23205 | 刘雪彤 |
| 23322 | 杨娜   |
+-------+--------+
8 rows in set (0.07 sec)

5. 建立成绩视图,计算每个学生的参与项目数目、平均成绩。

mysql> CREATE VIEW Grade_View AS 
SELECT Sno,COUNT(Pno) as 参与项目数, avg(grade) as 平均成绩 
from SP group by Sno;
Query OK, 0 rows affected (0.01 sec)

dc81c327a95d4fd0ba5860816fffd0d2.png

6. 使用 GRANT 语句,把对基本表 SP 的所有权限,S,P,T表的查询权限授给Root3。

mysql> create user Root3;
Query OK, 0 rows affected (0.01 sec)
//先创建了Root3

mysql> GRANT ALL ON SP TO Root3;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT SELECT ON S TO Root3;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT SELECT ON P TO Root3;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT SELECT ON T TO Root3;
Query OK, 0 rows affected (0.01 sec)

 

四、触发器

1.首先解除S表和SP表的参照关系。然后在Student表上创建一个触发器,使更新一个学生的学号信息时能够级联的更新此学生在SP表中的学号信息,并进行验证。

mysql> alter table SP drop foreign key SP_ibfk_1;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> CREATE TRIGGER Update_SP_Sno
after update on s
for each row
begin
UPDATE SP
SET Sno=NEW.Sno
where Sno=old.Sno;
end;
Query OK, 0 rows affected (0.01 sec)

 

mysql> select Sno from S  ;
+-------+
| Sno   |
+-------+
| 23121 |
| 23122 |
| 23123 |
| 23124 |
| 23125 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23206 |
| 23321 |
| 23322 |
+-------+
16 rows in set (0.03 sec)

mysql> select DISTINCT Sno from SP  ;
+-------+
| Sno   |
+-------+
| 23121 |
| 23122 |
| 23123 |
| 23124 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23321 |
| 23322 |
+-------+
14 rows in set (0.04 sec)  

mysql> UPDATE S SET Sno='11111' WHERE Sno='23121';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select Sno from S  ;
+-------+
| Sno   |
+-------+
| 11111 |
| 23122 |
| 23123 |
| 23124 |
| 23125 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23206 |
| 23321 |
| 23322 |
+-------+
16 rows in set (0.03 sec)

mysql> select DISTINCT Sno from SP  ;
+-------+
| Sno   |
+-------+
| 11111 |
| 23122 |
| 23123 |
| 23124 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23321 |
| 23322 |
+-------+
14 rows in set (0.03 sec)


// 删除外键

mysql> UPDATE S SET Sno='22222' WHERE Sno='11111';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select Sno from S  ;
+-------+
| Sno   |
+-------+
| 22222 |
| 23122 |
| 23123 |
| 23124 |
| 23125 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23206 |
| 23321 |
| 23322 |
+-------+
16 rows in set (0.03 sec)

mysql> select DISTINCT Sno from SP  ;
+-------+
| Sno   |
+-------+
| 11111 |
| 23122 |
| 23123 |
| 23124 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23321 |
| 23322 |
+-------+
14 rows in set (0.03 sec)

//为了验证触发器,先将SP表的'11111'手动改为'22222'
UPDATE SP SET Sno='22222' WHERE Sno='11111';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select DISTINCT Sno from SP  ;
+-------+
| Sno   |
+-------+
| 22222 |
| 23122 |
| 23123 |
| 23124 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23321 |
| 23322 |
+-------+
14 rows in set (0.03 sec)
//此时数据相同但是没有关联

mysql> CREATE TRIGGER Update_SP_Sno
after update on s
for each row
begin
UPDATE SP
SET Sno=NEW.Sno
where Sno=old.Sno;
end;
Query OK, 0 rows affected (0.01 sec)

mysql> UPDATE S SET Sno='23121' WHERE Sno='22222';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select DISTINCT Sno from S  ;
+-------+
| Sno   |
+-------+
| 23121 |
| 23122 |
| 23123 |
| 23124 |
| 23125 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23206 |
| 23321 |
| 23322 |
+-------+
16 rows in set (0.03 sec)

mysql> select DISTINCT Sno from SP  ;
+-------+
| Sno   |
+-------+
| 23121 |
| 23122 |
| 23123 |
| 23124 |
| 23126 |
| 23127 |
| 23128 |
| 23201 |
| 23202 |
| 23203 |
| 23204 |
| 23205 |
| 23321 |
| 23322 |
+-------+
14 rows in set (0.03 sec)

2.在 S 表中编写 insert 的触发器,假如表的学生不能超过 18个,如果低于此数,添加可以完成;如果超过此数,则插入将不能实现。进行验证。

mysql> CREATE TRIGGER Check_Student_Count
BEFORE INSERT ON S
FOR EACH ROW
BEGIN
    DECLARE student_count INT;
    SELECT COUNT(*) INTO student_count FROM S;
    IF student_count >= 18 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '学生数量已达上限';
    END IF;
END;
Query OK, 0 rows affected (0.01 sec)
mysql> insert into S values('88888','何何','男',22,'CS');
Query OK, 1 row affected (0.01 sec)

mysql> insert into S values('88889','何何','男',22,'CS');
Query OK, 1 row affected (0.00 sec)

mysql> insert into S values('88890','何何','男',22,'CS');
1644 - 学生数量已达上限

 

3.在 SP 表上编写 update 触发器,当修改 SP表中的 Grade 字段时将其修改前后的信息保存在 SC_log 表中。实验完成后,撤消建立的基本表和视图。

mysql> CREATE TABLE SC_log (
    Sno INT,
    Pno INT,
    Old_Grade INT,
    New_Grade INT
);

CREATE TRIGGER Update_Grade_Log
AFTER UPDATE ON SP
FOR EACH ROW
BEGIN
    INSERT INTO SC_log (Sno, Pno, Old_Grade, New_Grade)
    VALUES (OLD.Sno, OLD.Pno, OLD.Grade, NEW.Grade);
END;
Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.00 sec)

 

 

 

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

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

相关文章

Junit单元测试笔记

常用mock类框架 在软件测试和开发过程中,Mock框架扮演着至关重要的角色,它们允许开发者模拟对象的行为,以便在不需要实际依赖的情况下进行测试。以下是一些常用的Mock框架: MockitoPowerMockEasyMockJMockSpock 初始化mock/spy…

解决ONENOTE复制文字到外部为图片(Ditto)

默认情况下,在ONENOTE中记录的文字,在复制粘贴到外部时,会成为一张图片格式 如下图这段文字,粘贴到QQ中变为了图片 解决办法:安装Ditto Ditto下载链接 点击Download下载 双击安装.exe,选择安装路径后&…

JVM上篇:内存与垃圾回收篇-07-方法区

笔记来源:尚硅谷 JVM 全套教程,百万播放,全网巅峰(宋红康详解 java 虚拟机) 文章目录 7. 方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里?7.2.2. 方法区的基本理解7.2.3. HotSp…

编译 wolfssl 库

wolfssl github: https://github.com/wolfSSL/wolfssl 编译 .lib 或者 .dll wolfssl 很好的提供了 win32 的工程》sln 文件 这样就不用折腾 CMakeLists 文件了,使用 Visual Studio 打开 sln 文件后,设置好 Static 编译库即可,开箱即用 编译 .…

项目开始后,拒绝客户提出的新需求是否会违约?

大家好,我是不会魔法的兔子,在北京从事律师工作,日常分享项目管理风险预防方面的内容。 序言 当一个项目已经开展后,对于项目组而言,最难以忍受的可能要数需求突然发生变化了,尤其是在项目已经进行一半或…

【Netty】Netty时间轮实践与源码解析

目录 定时任务JDK定时任务Timer原理 ScheduledThreadPoolExecutor 时间轮算法netty时间轮架构 netty时间轮 源码解析基本使用HashedWheelTimer 初始化createWheel 创建HashedWheelBucket数组 newTimeout 添加任务执行任务时间轮的优缺点 品一品优秀设计实际的生产环境选择 定时…

css中块,行内块,行内元素转换

参考 元素作用范围 块元素 会在显示时自动换行,例如p标签div等 行内元素 例如span,可以认为是一个不换行的块,其他还有label等 行内块元素 例如img标签显示图片,但不换行 区别 块元素可以设置宽高,但行元素不…

C/C++语言基础--结构体知识详解(包括:结构体数组、字节对齐、位段等内容)

本专栏目的 更新C/C的基础语法,包括C的一些新特性 前言 C语言地结构体是核心内容之一,他运行自定义数据类型,可以将不同地数据类型当作成一个整体,变成一个数据类型,运用及其广泛欢迎点赞 收藏 关注,本…

UE管理内容 —— Alembic File Importer

目录 从Maya导出ABC缓存 导入ABC到UE 导入为静态网格体 导入为几何体缓存 导入为Skeletal Alembic文件格式(.abc)是一个开放的计算机图形交换框架,将复杂的动画化场景浓缩成一组非过程式的、与应用程序无关的烘焙几何结果;可以在外部自由地创建复杂…

如何查看ubuntu版本

在当前的技术环境中,了解操作系统的具体版本对于用户来说至关重要。这不仅能确保软件兼容性,还有助于进行系统管理和故障排查。对于使用Ubuntu系统的用户来说,有几种不同的方法可以查看当前系统的版本。下面将详细介绍如何查看您的Ubuntu系统…

CSS文本样式(二)

一、水平对齐文本 1、text-align属性 text-align​属性指定元素中文本的​水平对齐方式​。 默认情况下,您网站上的文字左对齐。 但是,有时您可能需要不同的对齐方式。 文本对齐属性值如下:​left​,​right​,​cen…

数据结构(Java实现):链表与LinkedList

文章目录 1. 单向链表1.1 链表的概念及结构1.2 链表的实现1.2.1 单向链表类和节点1.2.2 打印每个节点的值1.2.3 计算链表长度1.2.4 头插节点1.2.5 尾插节点1.2.6 在指定下标插入新节点1.2.7 判断是否存在某个节点1.2.8 移除某个节点1.2.9 移除所有指定节点1.2.10 清空链表1.2.1…

【Linux:管道】

进程间通信背景: 每一个进程想要访问物理内存,都是通过访问进程虚拟地址空间当中的虚拟地址进行访问,访问时,通过各自的页表结构,造成了每一个进程和每一个进程的数据独立,由于进程独立性的存在&#xff0c…

Java | Leetcode Java题解之第373题查找和最小的K对数字

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {int m nums1.length;int n nums2.length;/*二分查找第 k 小的数对和的大小*/int left nums1[0] nums2[0];int right nums…

Github 2024-08-25 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel: 以优雅语法简化Web开发 创建周期:4028 天开发语言:PHP协议类型:MIT LicenseStar数量:30824 个Fork数量:1052…

windows安装wsl,出现错误WslRegisterDistribution failed with error: 0x8007019e的解决方案

错误WslRegisterDistribution failed with error: 0x8007019e 笔者直接从Microsoft Store 安装 WSL后&#xff0c;没有其他操作&#xff0c;直接打开WSL&#xff0c;结果出现Error: 0x8007019e错误提示&#xff1a; Error 0x8007019e 解决方案 &#xff08;1&#xff09;Win…

滑块自动化分析

大家好!我是炒青椒不放辣,关注我,收看每期的编程干货。 滑块分析是爬虫工程师进阶必备技能,当我们遇到一个问题时可能会有多种解决途径,而如何做出高效的抉择和完善的解决流程又需要经验的积累。本期文章将以实战的方式,带你使用 playwright 进行滑块分析,不仅会告诉你应…

iPhone抹掉数据后能恢复吗?详解数据恢复的可能性与方法

在使用iPhone的过程中&#xff0c;有时候我们会因为各种原因选择“抹掉所有内容和设置”&#xff0c;以期望将手机恢复到出厂状态。然而&#xff0c;一旦执行了这个操作&#xff0c;很多用户就会开始担心&#xff1a;iPhone抹掉数据后&#xff0c;这些数据还能恢复吗&#xff1…

VMware安装Ubuntu20.04

1. 下载 整理的镜像链接 阿里网盘&#xff1a;阿里云盘快传 2. 新建虚拟机向导 选择自定义&#xff0c;然后下一步。 默认配置&#xff0c;下一步。 选择稍后安装操作系统&#xff0c;下一步。 选择操作系统Linux&#xff0c;版本Ubuntu64位&#xff0c;下一步。 给虚拟机命名…

2534. 乘方 [CSP-J 2022]

代码 #include<bits/stdc.h> using namespace std; int main() {long long n,m,i,sum1;cin>>n>>m;for(i1;i<m;i){sum*n;if(sum>1000000000){cout<<-1;return 0;;}}cout<<sum;return 0; } 记得点赞关注收藏&#xff01;&#xff01;&…