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

数据库实验一:学生信息管理系统数据库结构搭建和表的创建

实验项目名称:学生信息管理系统数据库结构搭建和表的创建

  • 实验目的与要求
  • 实验原理与内容
    • 1. 数据库的组织结构
    • 2. 数据库的分离和附加
    • 3. 数据库表的创建,修改和删除
  • 实验过程与结果
    • 1. 根据学生信息管理系统创建相关的数据库
    • 2. 数据库表初步设计及实现
    • 3. 实现数据库的分离和附加
  • 操作异常问题与解决方案
    • 异常1.修改文件增量/大小 报错

实验类型:综合性

实验目的与要求

1.熟悉SQL Server2012/2019的图形界面工作环境
2. 理解几个主要系统数据库
3. 掌握SQL Server Management Studio和Transact-SQL语句创建数据库的方法;
4. 理解数据库文件和文件组,掌握文件和文件组的两种增加、删除、修改文件和文件组的方法。
5. 掌握分别用SQL Server Management Studio和Transact-SQL语句两种方式修改数据库,包括(删除数据库,分离数据库,附加数据库等)
6. 掌握使用SQL Server Management Studio和T-SQL语言创建表、修改表已经删除表。
7. 掌握创建、删除和修改约束的方法。
8. 了解如何让查看表的定义、数据的依赖关系

实验原理与内容

1. 数据库的组织结构

1)逻辑存储结构
SQL Server数据库由一个表集合组成。这些表包含结构化的数据以及为支持对数据 的操作额保证数据的完整性而定义的其他对象,如视图、索引、存储过程、用户定义函数和触发器等,它们够成了数据库的逻辑存储结构,如图1-1所示。
2)物理存储结构
数据库的物理存储结构是说明包含数据库对象的数据库文件是如何在磁盘上存储的。创建数据库实际上就是在硬盘上创建数据库文件的过程,数据库文件是存放数据库数据和数据库对象的文件。
在SQL Server数据库中存在主要数据文件、次要数据文件和事务日志3种数据库文件。主要数据文件(简称主文件)包含数据库的启动信息并用于存储数据,文件扩展名为.mdf。每个数据库必须且只有一个主文件,该文件存放两种对象,即用户对象和系统对象。用户对象包含表、视图及存储过程等,用于保存用户输入的数据;系统对象有表名、数据库用户帐号、索引地址等维护数据库工作所需要的信息。系统表应该保存在主文件中,而用户数据可移动到次要数据文件中。
次要数据文件主要存储用户数据,文件的扩展名为.ndf。如果主文件包含了数据库中所有数据,则可以不要次要文件,但如果数据库非常大(如超出了单个windows文件的最大值),就应该有多个次要数据文件来辅助存放用户数据,但不能存放系统对象。使用次要数据文件可以让数据库文件不断得到扩充,并可以通过将不同的文件存放到不同的磁盘空间中实现同时对多个磁盘进行访问,从而提高数据存储的并发性。
图1-1

							图1-1

SQL Server主要通过事务日志文件来实现数据的恢复,文件扩展名为.ldf。数据库必须至少包含一个事务日志文件,每个日志文件仅能被一个数据库所拥有,数据和日志信息不应混在一起。
3)数据库文件组
为了方便数据的分配、放置和管理,SQL Server允许对文件进行分组处理, 在同一个组中的文件共同组成一个文件组。例如,可以分别在三个硬盘驱动器上创建三个数据文件Data1.ndf、Data2.ndf和Data3.ndf,并将它们指派到文件组Filegroup中,然后在Filegroup上创建一个表,这样对表中数据的查询将分散到三个磁盘上,从而查询性能得到改善。此外,将维护要求相近的表和索引分配到相同的文件组中,备份时仅备份文件组,而非数据庞大的整个数据库,能提高系统的可维护性。再有,对于不允许修改的表(如历史数据),可以将它们置于文件组中(主文件除外)然后将这些文件组标记为只读,从而起到保护数据的目的。
文件和文件组的设计遵循如下规则:一个文件或文件组不能由多个数据库使 用;一个文件只能是一个文件组的成员;事务日志文件不能属于任何文件组。

2. 数据库的分离和附加

数据库的分离和附加是一对互逆的操作。分离数据库是指将数据库从SQL Server实例中删除,即从数据库的逻辑结构中删除,但并不会将其物理文件(数据文件和日志文件)从磁盘上删除,之后,就可以使用这些文件将数据库附加到任何SQL Server实例,包括分离该数据库的服务器。当需要将数据库物理文件从当前位置移到另一磁盘或存储路径下时,可先分离再附加数据库。通常,附加数据库时会将数据库重置为它分离或复制时的状态。

在进行数据库分离操作时,要注意以下几点:
(1)不能对数据库对象进行更新操作和运行任务,用户也不能连接在该数据库上。
(2)在移动数据库之前,最好为数据库做一个完整的备份。
(3)确保数据库要移动的目标位置及将来数据增长能有足够的空间。

3. 数据库表的创建,修改和删除

(1)基本表的创建
定义基本表
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ]

[,<表级完整性约束条件> ] );
<表名>:所要定义的基本表的名字
<列名>:组成该表的各个属性(列)
<列级完整性约束条件>:涉及相应属性列的完整性约束条件
<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

(2)基本表的修改
ALTER TABLE <表名>
[ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><数据类型> ] ;
<表名>是要修改的基本表
ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
DROP COLUMN子句用于删除表中的列
如果指定了CASCADE短语,则自动删除引用了该列的其他对象
如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
DROP CONSTRAINT子句用于删除指定的完整性约束条件
ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型
(3)基本表的删除
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除

实验过程与结果

1. 根据学生信息管理系统创建相关的数据库

1.1 使用SQL Server Management Studio创建数据库,要求创建主数据文件(.mdf),次要数据文件(.ndf),日志文件等。文件的具体参数组别自己决定,但要阐述设置该参数的理由。要求:数据库名为:mydb。
答:
在这里插入图片描述

1.2 使用SQL Server Management Studio删除1.1创建的数据库
答:
在这里插入图片描述

附加另一种方式(上面的已经是答案):
drop database mydb;
在这里插入图片描述

1.3 使用Transact-SQL语句创建数据库,要求创建主数据文件,次要数据文件,日志文件等。文件的具体参数组别自己决定,但至少包含3个数据文件,文件的增量要包含具体数字和百分比两种形式。阐述设置相关参数的理由。
答:

create database mydb
on primary	--指定显式定义用来存储数据库数据部分的磁盘文件
(
name=mydb,
filename="E:\SQLtext\test_data.mdf",	--数据库文件的路径
size=5MB,		--文件大小
maxsize=20MB,	--文件可增长到最大大小
filegrowth=10%	--文件的自动增量
),( NAME = 'MyDB_FG1_Dat1',FILENAME ='E:\SQLtext\MyDB_FG1_1.ndf',SIZE = 1MB,MAXSIZE=10MB,FILEGROWTH=1MB)log on	--指定显式定义用来存储数据库日志的磁盘文件(日志文件)
(
name=test_log,
filename="E:\SQLtext\test_log.ldf",	--事务日志文件的路径
size=1MB,
maxsize=5MB,
filegrowth=10%
)

参考资料:
CREATE DATABASE
SQL server数据库的操作步骤·Transact-SQL创建

CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON[ PRIMARY ] <filespec> [ ,...n ][ , <filegroup> [ ,...n ] ][ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]<option> ::=
{FILESTREAM ( <filestream_option> [,...n ] )| DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }| DEFAULT_LANGUAGE = { lcid | language_name | language_alias }| NESTED_TRIGGERS = { OFF | ON }| TRANSFORM_NOISE_WORDS = { OFF | ON }| TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>| DB_CHAINING { OFF | ON }| TRUSTWORTHY { OFF | ON }| PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='<Filepath to folder on DAX formatted volume>' )| LEDGER = {ON | OFF }
}<filestream_option> ::=
{NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }| DIRECTORY_NAME = 'directory_name'
}<filespec> ::=
{
(NAME = logical_file_name ,FILENAME = { 'os_file_name' | 'filestream_path' }[ , SIZE = size [ KB | MB | GB | TB ] ][ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ][ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]<filespec> [ ,...n ]
}

1.4 设计一种情景,阐述需要修改数据库的数据文件和日志文件,并修改它们。
答:

use master 
go
alter database mydb
MODIFY FILE
(name = 'MyDB_FG1_Dat1', --修改次要数据文件FILEGROWTH = 9MB --修改增量
)
gouse master 
go
alter database mydb
MODIFY FILE
(name=test_log, --修改日志文件size=4MB --修改大小
)
go

2. 数据库表初步设计及实现

2.1 根据相关的业务要求,在数据服务器上用Transact-SQL语句创建相关的表。至少包含以下3个表以及合理的相关属性:学生表(至少含8个属性),班级表(至少含6个属性)和宿舍表(至少含5个属性)。三个表中属性的数据类型,包含数字型(整型和浮点型),字符串性(可变和不可变),日期型,货币等不同数据类型。
数据字典可以参考如下:

属性 类型 完整性 备注
Sno Char(11) 主键 学生的学号
Sname varchar(50) 非空 学生的姓名
Cno Char(10) 外键 班级编号
Birthday Data 允许为空 出生日期
Gender Char(2) 男/女 性别
Age tinyint 根据出生日期计算 年龄
Telephone Char(11) 唯一,不允许为空 手机号
Email varchar(50) 唯一,不允许为空 email

班级表:Class
属性 类型 完整性 备注
Cno Char(10) 主键 班级编号
Cname varchar(50) 唯一,非空 班级名称
Sdeptname Char(30) 非空 专业名称
Cnum Char(10) 非空 辅导员编号
Counselor Char(8) 非空 辅导员姓名
Ctel Char(11) 允许为空 辅导员电话

宿舍表:Dorm
属性 类型 完整性 备注
Dno Char(10) 联合主键 宿舍编号
Sno Char(11) 联合主键、外键 学生学号
Dname varchar(50) 唯一,非空 宿舍名称
Dnum Tinyint 非空
取值范围(0-12) 床位号
Accommodation money 非空 住宿费
Degree Numerice(8,2) 默认(0.0) 该生月用电度数
Price Numerice(8,2) 非空 电费

答:

drop table if exists Student; --如果有就删除create table Student(
Sno char(11) PRIMARY KEY,
Sname varchar(50) not null,
Cno char(10),
Birthday date,
Gender char(2) check(Gender = '男' or Gender = '女'),
Age tinyint ,
Telephone char(11) NOT NULL UNIQUE,
Email varchar(50) NOT NULL UNIQUE,
);drop table if exists Class;create table Class(
Cno Char(10) PRIMARY KEY,
Cname varchar(50) not null UNIQUE ,
Sdeptname Char(30) not null,
Cnum Char(10) not null,
Counselor Char(8) not null,
Ctel Char(11) ,
);alter table Student add FOREIGN KEY (Cno) REFERENCES  Class(Cno); create table Dorm(
Dno Char(10) ,
Sno Char(11) FOREIGN KEY  REFERENCES Student(Sno),
Dname varchar(50) not null UNIQUE,
Dnum Tinyint not null check(Dnum >= 0 and Dnum <= 12),
Accommodation money not null,
Degree Numeric(8,2) DEFAULT(0.0),
Price Numeric(8,2) not null,
PRIMARY KEY(Dno , Sno),
);

2.2 考虑表相互间的约束条件和本身字段的约束条件,并实现
答:
学生需要有班级,添加外键约束

alter table Student add FOREIGN KEY (Cno) REFERENCES  Class(Cno); 

2.3 设计某种情景,要修改和删除表里面的约束条件,并实现
答:
删除约束:

alter table Student drop constraint CK__Student__Gender__398D8EEE;

然后再添加回来 , 情景:需要约束性别选项

alter table Student add constraint CK__Student__Gender__398D8EEE Check(Gender = '男' or Gender = '女');

2.4 三个表中,任选其中一个表,根据某种业务逻辑,创建索引
答:create index one on Student(Sno);
(注:没有业务逻辑,只是创建索引)

2.5 使用SQL Server Management Studio,每个表至少输入3条有效数据。要求学生表中增加包括自己与其后或前的3位同学的信息,并对应增加其选课信息。
答:

insert into Class(Cno ,Cname , Sdeptname, Cnum, Counselor)
values('1' ,'1' , 'fe' ,'1','1' );--添加数据
insert into Class(Cno ,Cname , Sdeptname, Cnum, Counselor)
values('2' ,'2' , 'ge' ,'2','2' );insert into Student (Sno , Sname ,Birthday ,Email , Telephone ,Cno)
values('1','a','2001-1-1','www','10086' ,  '1');
insert into Student (Sno , Sname ,Birthday ,Email , Telephone ,Cno)
values('2','b','2001-1-2','eee','1008611' ,  '2');
--第三位自己写吧

2.6 请用两种不同方法,实现删除学生表和对应宿舍表中的数据(提示:级联删除)
答:
前置设置:

-- 已经删除上次建立的外键关系
alter table Student add FOREIGN KEY (Cno) REFERENCES  Class(Cno) on delete cascade;  --添加外键关系(声明了级联删除)insert into Class(Cno ,Cname , Sdeptname, Cnum, Counselor)
values('1' ,'1' , 'fe' ,'1','1' );--添加数据insert into Student (Sno , Sname ,Birthday ,Email , Telephone ,Cno)
values('1','a','2001-1-1','www','10086' ,  '1');
delete Class where Cno='1';

在这里插入图片描述
这时候会发现Student表中行1数据也被删除了,这就是级联删除

2.7 请实现完全删除学生表和宿舍表(包含表数据及其定义)
答:

drop table Student ;
drop table Dorm ;
--执行前已经在面板中删除相关关系

3. 实现数据库的分离和附加

3.1 使用SQL Server Management Studio分离1.3所创建的数据库
答:

在这里插入图片描述
如果报错勾上中间两个选项即可
3.2 附加分离的数据库
答:
在这里插入图片描述
选择添加你想要的即可

操作异常问题与解决方案

异常1.修改文件增量/大小 报错

对于查询语句:

use master 
go
alter database mydb
MODIFY FILE
(name = 'MyDB_FG1_Dat1', --修改次要数据文件FILEGROWTH = 100MB --修改增量
)
gouse master 
go
alter database mydb
MODIFY FILE
(name=test_log, --修改日志文件size=4MB --修改大小
)
go

报错

消息 5169,级别 16,状态 1,第 3 行
FILEGROWTH 不能大于文件 'MyDB_FG1_Dat1' 的 MAXSIZE。
消息 5039,级别 16,状态 1,第 13MODIFY FILE 失败。指定的大小小于或等于当前大小。

修改:

use master 
go
alter database mydb
MODIFY FILE
(name = 'MyDB_FG1_Dat1', --修改次要数据文件FILEGROWTH = 9MB --修改增量 -- 不能大于MAXSIZE
)
gouse master 
go
alter database mydb
MODIFY FILE
(name=test_log, --修改日志文件size=5MB --修改大小 --修改地方 -- 必须大于原来的值
)
go

MAXSIZE参考创建代码

( NAME = 'MyDB_FG1_Dat1',FILENAME ='E:\SQLtext\MyDB_FG1_1.ndf',SIZE = 1MB,MAXSIZE=10MB, -- MAXSIZEFILEGROWTH=1MB)

相关文章:

数据库实验一:学生信息管理系统数据库结构搭建和表的创建

实验项目名称&#xff1a;学生信息管理系统数据库结构搭建和表的创建 实验目的与要求实验原理与内容1. 数据库的组织结构2. 数据库的分离和附加3. 数据库表的创建&#xff0c;修改和删除 实验过程与结果1. 根据学生信息管理系统创建相关的数据库2. 数据库表初步设计及实现3. 实…...

解决 vscode使用Prettier格式化js文件报错:Cannot find module ‘./parser-babylon‘

报错如下&#xff1a; ["ERROR" - 11:48:58] Error formatting document. ["ERROR" - 11:48:58] Cannot find module ./parser-babylon Require stack: - d:\VueCode\VueProject\myqqmusic\node_modules\prettier\index.js - c:\Users\Administrator.SKY-2…...

汉服商城小程序的作用是什么

汉服在日常生活中越来越常见&#xff0c;大街小巷也有不少年轻人装扮甚是漂亮帅气&#xff0c;有些地区甚至还有相关的比赛等&#xff0c;作为近几年曝光的服饰&#xff0c;汉服市场规模持续增加中&#xff0c;各地线上线下商家也多了起来。 然而在实际经营中&#xff0c;汉服…...

9月大型语言模型研究论文总结

大型语言模型(llm)在今年发展迅速&#xff0c;随着新一代模型不断地被开发&#xff0c;研究人员和工程师了解最新进展变得非常重要。本文总结9-10月期间发布了一些重要的LLM论文。 这些论文涵盖了一系列语言模型的主题&#xff0c;从模型优化和缩放到推理、基准测试和增强性能…...

微信小程序--小程序框架

目录 前言&#xff1a; 一.框架基本介绍 1.整体结构&#xff1a; 2.页面结构&#xff1a; 3.生命周期&#xff1a; 4.事件系统&#xff1a; 5.数据绑定&#xff1a; 6.组件系统&#xff1a; 7.API&#xff1a; 8.路由&#xff1a; 9.模块化&#xff1a; 10.全局配置&…...

Java 全栈体系(三)

第一章 Java 基础语法 八、标识符 业内大多数程序员都在遵守阿里巴巴的命名规则。 1. 硬性要求 必须要这么做&#xff0c;否则代码会报错。 必须由数字、字母、下划线_、美元符号$组成。数字不能开头不能是关键字区分大小写的。 2. 软性建议 如果不这么做&#xff0c;代…...

爬虫学习日记第七篇(爬取github搜索仓库接口,其实不算爬虫)

github提供的搜索仓库的API https://api.github.com/ # 连接数据库 db mysql.connector.connect(host"***",user"***",password"***",database"***" ) # 创建游标 cursor db.cursor() # 从数据库中读取CVE ID cursor.execute("…...

子组件监听父组件消息,随之变化与不变化

父组件通过props传递给子组件消息&#xff0c;子组件有两种情况接收处理&#xff1a; 1、子组件监听父组件props的变化&#xff0c;同时随之变化【可以直接取props中的值展示&#xff0c;也可以监听值得变化处理】 2、子组件初始化时更新&#xff0c;随后不再随父组件变化 示…...

计算机操作系统面试题自用

什么是操作系统&#xff1a; 操作系统是管理硬件和软件的一种应用程序。操作系统是运行在计算机上最重要的一种软件 操作系统的主要功能 解释一下操作系统的主要目的是什么 操作系统是一种软件&#xff0c;它的主要目的有三种 1 管理计算机资源&#xff0c;这些资源包括 C…...

redis作为消息队列的缺点

Redis作为消息队列的不足。 1、基于内存 Redis是一种基于内存的数据库产品&#xff0c;这意味着数据存储在内存中&#xff0c;当内存不足时&#xff0c;Redis会使用基于磁盘的虚拟内存来存储数据。虽然这种虚拟内存机制可以增加Redis的存储容量&#xff0c;但也会降低Redis的…...

Redis五大数据类型的底层设计

SDS 无论是 Redis 的 Key 还是 Value&#xff0c;其基础数据类型都是字符串。虽然 Redis是使用标准 C 语言开发的&#xff0c;但并没有直接使用 C 语言中传统的字符串表示&#xff0c;而是自定义了一 种字符串。这种字符串本身的结构比较简单&#xff0c;但功能却非常强大&…...

logback的简单配置详解

<?xml version"1.0" encoding"UTF-8"?> <!--logback配置的根元素。scantrue表示logback将定期扫描配置文件以检测更改。scanPeriod"30 Period" 扫描间隔为30s--> <configuration scan"true" scanPeriod"30 seco…...

TatukGIS Developer Kernel使用教程:如何为FMX创建第一个应用程序

概述&#xff1a;TatukGIS Developer Kernel&#xff08;DK&#xff09;是一个用于开发自定义地理信息系统&#xff08;GIS&#xff09;应用程序以及解决方案的综合性软件开发工具包&#xff08;SDK&#xff09;。本篇文章主要介绍用DK11为FMX创建一个应用程序&#xff0c;现在…...

Ant Design Vue设置表格滚动 宽度自适应 不换行

Ant Design Vue设置表格滚动 宽度自适应 不换行 添加以下属性即可解决这个问题&#xff1a; <a-table :columns"columns" :data-source"list":pagination"false"bordered:scroll"{ x: max-content }" >...

在Linux上开启文件服务,需要安装并配置Samba

在Linux上开启文件服务&#xff0c;需要安装并配置Samba。以下是具体步骤&#xff1a; 安装Samba软件包&#xff1a;在终端中输入以下命令进行安装&#xff1a; 复制代码 sudo apt-get update && sudo apt-get install samba 配置Samba&#xff1a;编辑Samba配置文件…...

TypeScript 类型兼容性

TypeScript 类型兼容性 在前端开发中&#xff0c;使用 TypeScript 可以提供更强大的类型检查和类型安全。然而&#xff0c;了解 TypeScript 中的类型兼容性是至关重要的&#xff0c;因为它涉及如何处理不同类型之间的关系&#xff0c;以及在这些类型之间进行无缝的交互。本文将…...

【多线程】线程的状态

我们可以通过下面的这段代码来查看线程一共有哪几种状态 //线程的状态是一个枚举类型 Thread.State for(Thread.State state : Thread.State.values()){System.out.println(state); }NEW&#xff08;新建状态&#xff09;&#xff1a; 当线程对象已经被创建&#xff0c;但是 s…...

pytorch 对图片进行归一化处理

如题&#xff0c;神经网络通常使用浮点数张量作为输入&#xff0c;我们要做的第一件事情就是将图片转化为浮点数&#xff0c;并且做归一化操作。 import torch import imageio import osdata_dirF:\\work\\deep_learning\\pytorch\\dlwpt-code-master\\data\\p1ch4\\image-cat…...

零售数据分析师熬夜整理:人、货、场、供、财这样做

在零售数据分析中&#xff0c;人、货、场、供、财数据分析非常重要&#xff0c;它们分别是指人员、商品、场所、供应和财务&#xff0c;对这些要素进行数据分析&#xff0c;可以更好地了解市场需求、优化商品供应链、调整销售策略和提高盈利能力。零售数据量大、分析指标多且复…...

基于SSM的学生选课管理系统

基于SSM的高校校园学生选课系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 专业管理 教师管理 课程管理 成绩管理 摘要 基于SSM的学生选课管…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

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

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

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...