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

青少年编程与数学 02-011 MySQL数据库应用 07课题、表的操作

青少年编程与数学 02-011 MySQL数据库应用 07课题、表的操作

  • 一、数据库表(Table)
  • 二、创建表
      • 语法格式
      • 示例
      • 注意事项
  • 三、字段的命名规则
      • 基本规则
      • 命名规范建议
      • 示例
  • 四、字段数据类型
      • 数值类型
      • 字符串类型
      • 日期和时间类型
      • 其他类型
  • 五、选择合适的数据类型
      • 1. **基于数据的性质选择**
      • 2. **考虑数据的范围和精度**
      • 3. **基于性能和存储效率考虑**
      • 4. **遵循业务规则和约束**
      • 示例
  • 六、表定义示例
      • 字段说明

课题摘要: 本文介绍了MySQL数据库中表的操作,包括创建、修改、删除表,以及插入、查询、更新和删除数据等基本操作。详细解释了CREATE TABLEALTER TABLEDROP TABLETRUNCATE TABLERENAME TABLE等语句的使用方法和示例。同时,强调了在创建表时选择合适的数据类型的重要性,并提供了数值类型、字符串类型、日期和时间类型等常见数据类型的详细介绍。文章还提供了创建表的示例,展示了如何定义字段、数据类型和完整性约束条件。此外,还介绍了字段命名规则和选择合适数据类型的指导原则,帮助用户优化数据库性能和存储效率。


一、数据库表(Table)

在MySQL数据库中,针对表可以执行多种操作,这些操作允许你创建、修改、查询和删除数据。以下是一些常见的表操作:

  1. CREATE TABLE

    • 用于创建一个新的数据库表。
    • 示例:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
  2. ALTER TABLE

    • 用于更改现有的表结构,比如添加或删除列、修改列的类型等。
    • 示例:ALTER TABLE table_name ADD column_name datatype;
    • 示例:ALTER TABLE table_name DROP COLUMN column_name;
  3. DROP TABLE

    • 用于删除一个已有的表及其所有数据。
    • 示例:DROP TABLE table_name;
  4. TRUNCATE TABLE

    • 用于删除表中的所有数据行,但保留表结构。
    • 示例:TRUNCATE TABLE table_name;
  5. RENAME TABLE

    • 用于重命名一个已存在的表。
    • 示例:RENAME TABLE old_table_name TO new_table_name;
  6. INSERT INTO

    • 用于向表中插入新的数据行。
    • 示例:INSERT INTO table_name (column1, column2) VALUES (value1, value2);
  7. SELECT

    • 用于从表中查询数据。
    • 示例:SELECT column1, column2 FROM table_name WHERE condition;
  8. UPDATE

    • 用于更新表中已有的数据行。
    • 示例:UPDATE table_name SET column1 = value1 WHERE condition;
  9. DELETE FROM

    • 用于从表中删除数据行。
    • 示例:DELETE FROM table_name WHERE condition;
  10. SHOW CREATE TABLE

    • 显示创建表时使用的语句。
    • 示例:SHOW CREATE TABLE table_name;
  11. DESCRIBE 或 DESC

    • 显示表的结构信息。
    • 示例:DESCRIBE table_name;DESC table_name;
  12. EXPLAIN

    • 用来分析SQL查询,显示MySQL如何执行查询计划。
    • 示例:EXPLAIN SELECT * FROM table_name;

以上只是MySQL中一些基本的表操作。根据具体的需求,还可能涉及到索引、视图、存储过程、触发器等更高级的操作。每个命令都有其特定的语法和使用场景,因此在实际应用时需要根据具体情况来选择合适的命令。

二、创建表

在MySQL数据库中,创建表通常使用CREATE TABLE语句,以下是具体的介绍:

语法格式

CREATE TABLE 表名 (字段1 数据类型 [完整性约束条件],字段2 数据类型 [完整性约束条件],...字段n 数据类型 [完整性约束条件]
) [表级完整性约束条件];

示例

假设我们要创建一个名为students的表,用于存储学生信息,包含学号、姓名、性别、年龄、入学日期等字段,具体SQL语句如下:

CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,gender ENUM('男', '女') NOT NULL,age INT CHECK (age BETWEEN 16 AND 30),enrollment_date DATE NOT NULL
);
  • id字段是整型,设置为主键(PRIMARY KEY),并且开启自动增长(AUTO_INCREMENT),用于唯一标识每个学生。
  • name字段是长度为50的可变长字符串类型(VARCHAR(50)),且不能为空(NOT NULL)。
  • gender字段是枚举类型(ENUM),只能取“男”或“女”,且不能为空。
  • age字段是整型,通过检查约束(CHECK)限制年龄在16到30岁之间。
  • enrollment_date字段是日期类型(DATE),且不能为空,用于存储入学日期。

注意事项

  • 数据类型选择:要根据字段实际存储的数据类型来选择合适的MySQL数据类型,如整型(INTTINYINT等)、浮点型(FLOATDOUBLE等)、字符串类型(CHARVARCHAR等)、日期时间类型(DATEDATETIME等)等。
  • 完整性约束
    • 主键约束(PRIMARY KEY:用于唯一标识表中的每一行记录,一个表只能有一个主键,主键字段的值不能重复且不能为空。
    • 唯一约束(UNIQUE:确保字段中的值唯一,但可以有多个唯一约束,且允许有空值。
    • 非空约束(NOT NULL:限制字段的值不能为空。
    • 默认值约束(DEFAULT:为字段指定一个默认值,当插入记录时未明确指定该字段的值,则自动填充默认值。
    • 外键约束(FOREIGN KEY:用于建立两个表之间的关联关系,确保数据的参照完整性,但创建外键时需要先确保被引用表和字段已存在,且数据类型和约束条件等匹配。
    • 检查约束(CHECK:用于限制字段的值必须满足某个条件,但MySQL早期版本对检查约束的支持有限,部分版本可能需要通过其他方式(如触发器等)来实现类似功能。
  • 字符编码:在创建表时,还可以指定表的字符编码,如CHARACTER SET utf8mb4,以支持存储多种语言的字符,特别是对于存储中文等非英文字符的字段,合适的字符编码很重要。
  • 存储引擎:可以指定表的存储引擎,如ENGINE=InnoDB,不同的存储引擎有不同的特点和适用场景,InnoDB支持事务、行级锁等特性,而MyISAM则不支持事务但读取速度相对较快等。

三、字段的命名规则

在MySQL中,字段命名需要遵循一定的规则和规范,以下是详细的介绍:

基本规则

  • 字符组成:字段名可以由字母(A-Z、a-z)、数字(0-9)、下划线(_)等字符组成。不能包含空格、特殊符号(如!@#等)。
  • 首字符限制:字段名的首字符不能是数字,必须是字母或下划线。例如,1stname是非法的字段名,而firstname_1stname是合法的。
  • 长度限制:MySQL对字段名的长度也有一定限制,通常最大长度为64个字符。过长的字段名会影响数据库的可读性和性能。

命名规范建议

  • 见名知意:字段名应尽量简洁明了且具有描述性,能够直观地反映字段所存储的数据内容或含义。例如,存储学生姓名的字段命名为student_name,而不是snnm等模糊的缩写。
  • 使用小写字母:建议使用小写字母来命名字段,这样可以避免在不同操作系统(如Linux对大小写敏感,Windows对大小写不敏感)下可能出现的大小写问题,保证数据库的兼容性和一致性。
  • 避免使用保留字:MySQL有许多保留字,如SELECTINSERTUPDATEDELETETABLECOLUMN等,这些保留字在SQL语句中有特殊的语法意义,不能直接用作字段名。如果非要使用保留字作为字段名,需要用反引号(```)将其括起来,但这样做会增加SQL语句的复杂性和可读性,所以最好避免使用保留字。
  • 统一命名风格:在同一个数据库项目中,应保持字段命名风格的一致性。常见的命名风格有:
    • 下划线分隔命名法:使用下划线将多个单词分隔开,如user_idorder_number等。这种命名风格在MySQL中比较常见,清晰易读。
    • 驼峰命名法:将多个单词组合在一起,从第二个单词开始每个单词的首字母大写,如userIdorderNumber等。这种命名风格在一些编程语言中较为常见,但在MySQL中使用时需要注意保持一致性,且在SQL语句中可能会与一些函数或保留字产生混淆。

示例

假设我们要创建一个存储员工信息的表,以下是一些符合命名规则和规范的字段名示例:

  • employee_id:用于存储员工编号,采用下划线分隔命名法,清晰明了。
  • first_name:存储员工名字,同样使用下划线分隔,易于理解。
  • last_name:存储员工姓氏,命名风格与first_name保持一致。
  • email_address:存储员工邮箱地址,详细描述了字段内容。
  • hire_date:存储员工入职日期,简洁且具有描述性。

而以下是一些不符合命名规则或规范的字段名示例:

  • 1st_name:首字符为数字,违反了基本规则。
  • email@address:包含特殊符号@,不符合字符组成规则。
  • EmployeeName:采用驼峰命名法,虽然在某些情况下可读性尚可,但在MySQL中使用时可能与其他命名风格不一致,建议谨慎使用。
  • select:使用了MySQL的保留字,直接使用会导致语法错误,需用反引号括起来才能使用,如select,但最好避免使用保留字。

四、字段数据类型

MySQL提供了丰富多样的数据类型,用于满足不同场景下数据存储的需求,以下是一些常见的数据类型分类及详细介绍:

数值类型

  • 整数类型
    • TINYINT:范围为-128到127(有符号)或0到255(无符号),占用1个字节。
    • SMALLINT:范围为-32768到32767(有符号)或0到65535(无符号),占用2个字节。
    • MEDIUMINT:范围为-8388608到8388607(有符号)或0到16777215(无符号),占用3个字节。
    • INTINTEGER:范围为-2147483648到2147483647(有符号)或0到4294967295(无符号),占用4个字节。
    • BIGINT:范围为-9223372036854775808到9223372036854775807(有符号)或0到18446744073709551615(无符号),占用8个字节。适用于存储大整数值,如用户ID、订单号等。
  • 定点数类型
    • DECIMAL(M,D)NUMERIC(M,D):用于存储精确的小数值,其中M表示数字的最大位数,D表示小数点后的位数。例如DECIMAL(5,2)可以存储像123.45这样的数值,适用于财务数据等对精度要求较高的场景。
  • 浮点数类型
    • FLOAT(M,D):单精度浮点数,M表示数字的最大位数,D表示小数点后的位数。其存储范围和精度相对有限,但占用空间较小。
    • DOUBLE(M,D)DOUBLE PRECISION(M,D):双精度浮点数,同样MD含义与FLOAT相同,但具有更大的存储范围和更高的精度,适用于科学计算等领域。

字符串类型

  • 定长字符串类型
    • CHAR(N):固定长度的字符串,N表示字符的最大长度,范围为0到255。当存储的字符串长度不足N时,会用空格填充至N个字符。适用于存储长度固定的数据,如性别(用MF表示)等。
  • 变长字符串类型
    • VARCHAR(N):可变长度的字符串,N表示最大字符数,范围为0到65535。实际占用的空间为字符串的实际长度加上1或2个字节(用于存储长度信息)。适用于存储长度不固定的数据,如姓名、地址等。
    • TINYTEXT:最大长度为255个字符的文本数据,适合存储较短的文本信息。
    • TEXT:最大长度为65535个字符的文本数据,可用于存储较长的文本,如文章内容、评论等。
    • MEDIUMTEXT:最大长度为16777215个字符的文本数据,适用于存储非常长的文本,如书籍内容等。
    • LONGTEXT:最大长度为4294967295个字符的文本数据,是MySQL中最大的文本类型,可用于存储超大文本数据。
  • 二进制字符串类型
    • BINARY(N):固定长度的二进制字符串,与CHAR(N)类似,但存储的是二进制数据。
    • VARBINARY(N):可变长度的二进制字符串,与VARCHAR(N)类似,用于存储可变长度的二进制数据。
    • TINYBLOBBLOBMEDIUMBLOBLONGBLOB:分别对应TINYTEXTTEXTMEDIUMTEXTLONGTEXT,用于存储二进制大对象数据,如图片、音频、视频等文件内容。

日期和时间类型

  • DATE:用于存储日期值,格式为YYYY-MM-DD,范围为1000-01-019999-12-31,适用于存储生日、入职日期等仅包含日期的数据。
  • TIME:用于存储时间值,格式为HH:MM:SS,范围为-838:59:59838:59:59,可以用于存储时间段、营业时间等。
  • DATETIME:用于存储日期和时间的组合值,格式为YYYY-MM-DD HH:MM:SS,范围为1000-01-01 00:00:009999-12-31 23:59:59,是存储具体时间点(如订单创建时间、文章发布时间等)的常用类型。
  • TIMESTAMP:也用于存储日期和时间,格式与DATETIME相同,但其范围为1970-01-01 00:00:012038-01-19 03:14:07(UTC时间),并且具有自动更新的特性(当表中的其他字段值发生变化时,TIMESTAMP字段可以自动更新为当前时间戳),适用于需要记录数据最后修改时间等场景。
  • YEAR:用于存储年份值,可以是两位或四位数字,范围为190121550000,适用于存储毕业年份、产品生产年份等仅包含年份的数据。

其他类型

  • 枚举类型(ENUM:允许在创建表时定义一组固定的字符串值,字段的值必须是这个集合中的一个。例如ENUM('男','女'),适用于性别、状态等具有固定选项的字段。
  • 集合类型(SET:与ENUM类似,但可以同时选择多个值,其值是集合中值的组合。例如SET('篮球','足球','乒乓球'),可以存储用户喜欢的多个运动项目。
  • 位字段类型(BIT:用于存储位字段值,可以存储二进制数据,长度范围为1到64位,适用于存储一些特定的二进制标志或位掩码等数据。

在实际使用中,选择合适的数据类型对于优化数据库性能、节省存储空间以及确保数据的准确性和完整性都至关重要。需要根据字段所存储数据的特点、范围、精度要求等因素综合考虑来选择最恰当的数据类型。

五、选择合适的数据类型

在MySQL中创建表时,为字段选择合适的数据类型是一个关键步骤,这不仅影响数据的存储效率,还关系到查询性能和数据完整性。以下是一些选择数据类型的指导原则和建议:

1. 基于数据的性质选择

  • 数值数据
    • 整数:如果数据是整数且范围较小(如性别用0和1表示),可以选择TINYINT;如果范围较大(如用户ID、订单号等),则根据实际范围选择SMALLINTMEDIUMINTINTBIGINT
    • 小数:对于需要精确计算的小数(如财务数据),应使用DECIMAL类型,指定精度和小数位数,以避免浮点数计算的精度问题。对于科学计算等对精度要求不是特别严格但需要较大范围或更高效计算的场景,可以选择FLOATDOUBLE
  • 文本数据
    • 短文本:如姓名、地址等较短的文本信息,使用VARCHAR类型,并根据实际最大长度设置合适的长度参数,避免浪费空间。
    • 长文本:对于文章内容、描述等较长的文本,根据长度选择TEXTMEDIUMTEXTLONGTEXT。注意,过长的文本可能会影响查询性能,应谨慎使用。
    • 固定长度文本:如果文本长度固定,如电话号码格式,可以使用CHAR类型,这样可以提高比较和排序的效率。
  • 日期和时间数据
    • 仅日期:如果只需要记录日期(如生日、入职日期等),使用DATE类型。
    • 仅时间:记录时间段、营业时间等仅与时间相关的信息时,使用TIME类型。
    • 日期和时间:对于需要同时记录日期和时间的场景(如订单创建时间、日志时间等),优先选择DATETIME类型。如果需要记录数据的创建或修改时间,并且希望自动更新时间戳,可以使用TIMESTAMP类型。
    • 年份:仅记录年份信息时,使用YEAR类型,节省空间且查询效率高。

2. 考虑数据的范围和精度

  • 在选择数值类型时,要明确数据可能出现的最大值和最小值,确保所选类型能够覆盖这个范围。例如,对于一个存储年龄的字段,TINYINT通常就足够了(假设年龄范围在0到127岁之间);而对于存储全球人口数量的字段,则需要BIGINT
  • 对于小数类型,要根据实际业务需求确定精度(即数值的总位数)和小数位数。比如,存储商品价格时,如果价格精确到分,且最大价格不超过99999.99元,可以选择DECIMAL(7,2)

3. 基于性能和存储效率考虑

  • 存储空间:选择数据类型时,应考虑其占用的存储空间。例如,TINYINT占用1个字节,而INT占用4个字节。在能够满足数据存储需求的前提下,选择占用空间较小的数据类型可以节省存储资源,提高存储效率。
  • 查询性能:较小的数据类型通常在查询时速度更快。例如,INT类型的比较和排序操作通常比BIGINT类型更快。此外,对于频繁查询的字段,选择合适的数据类型可以提高查询性能。比如,使用ENUM类型存储具有固定选项的字段(如性别、状态等),在查询时可以更高效地进行比较和筛选操作。

4. 遵循业务规则和约束

  • 数据完整性:根据业务需求,为字段选择合适的数据类型有助于维护数据的完整性。例如,使用ENUM类型可以限制字段的值只能是预定义的几个选项之一,从而避免非法数据的插入。
  • 业务逻辑:考虑字段在业务逻辑中的用途。例如,对于需要进行数学运算的数值字段,应避免使用字符串类型存储,以防止在运算时出现类型转换错误或性能问题。

示例

假设我们要创建一个存储图书信息的表,包含图书ID、书名、作者、出版日期、价格等字段,字段数据类型的选择可以如下:

CREATE TABLE books (book_id INT PRIMARY KEY AUTO_INCREMENT,  -- 图书ID,使用INT类型,范围足够且可自动增长title VARCHAR(255) NOT NULL,  -- 书名,使用VARCHAR类型,长度设置为255,可存储较长的书名author VARCHAR(100) NOT NULL,  -- 作者,使用VARCHAR类型,长度100足够存储常见的作者名publish_date DATE NOT NULL,  -- 出版日期,使用DATE类型,仅需记录日期price DECIMAL(10,2) NOT NULL  -- 价格,使用DECIMAL类型,总位数10位,其中2位小数,可存储较大范围的价格且保证精度
);

通过以上步骤和原则,可以为MySQL表中的字段选择最合适的数据类型,从而优化数据库的性能和存储效率,同时确保数据的准确性和完整性。

六、表定义示例

以下是一个示例脚本,用于创建一个名为employees的表,该表用于存储员工信息,包括员工ID、姓名、性别、年龄、入职日期、部门ID和工资等字段:

CREATE TABLE employees (employee_id INT PRIMARY KEY AUTO_INCREMENT,  -- 员工ID,主键,自动增长name VARCHAR(100) NOT NULL,  -- 员工姓名,最大长度100,不能为空gender ENUM('男', '女') NOT NULL,  -- 员工性别,只能是“男”或“女”,不能为空age INT CHECK (age BETWEEN 18 AND 60),  -- 员工年龄,范围限制在18到60岁之间hire_date DATE NOT NULL,  -- 入职日期,不能为空department_id INT NOT NULL,  -- 部门ID,假设与部门表的部门ID关联,不能为空salary DECIMAL(10, 2) CHECK (salary > 0)  -- 工资,总位数10位,其中2位小数,且工资必须大于0
);

字段说明

  • employee_id:员工的唯一标识,使用INT类型作为主键,并开启自动增长功能,这样在插入新员工记录时,MySQL会自动为employee_id生成一个唯一的值。
  • name:员工的姓名,使用VARCHAR(100)类型,最大长度为100个字符,且不能为空(NOT NULL),确保每条员工记录都有姓名信息。
  • gender:员工的性别,使用ENUM('男', '女')类型,这样性别字段的值只能是“男”或“女”,且不能为空,有助于保证数据的准确性和一致性。
  • age:员工的年龄,使用INT类型,并通过检查约束(CHECK (age BETWEEN 18 AND 60))限制年龄在18到60岁之间,确保年龄数据的合理性。
  • hire_date:员工的入职日期,使用DATE类型,记录格式为YYYY-MM-DD,且不能为空,用于存储员工入职的具体日期。
  • department_id:员工所属部门的ID,假设与另一个存储部门信息的表(如departments表)中的部门ID字段关联,使用INT类型,且不能为空,表示每个员工都必须属于某个部门。
  • salary:员工的工资,使用DECIMAL(10, 2)类型,总位数为10位,其中2位小数,这样可以精确地存储工资金额,并且通过检查约束(CHECK (salary > 0))确保工资大于0,避免出现不合理的工资数据。

这个表定义示例脚本涵盖了多种常见的数据类型和约束条件,可以根据实际的业务需求进行调整和扩展。例如,如果需要存储员工的联系方式,可以添加一个phone_number字段,类型为VARCHAR;如果需要记录员工的离职日期,可以添加一个leave_date DATE字段等。

相关文章:

青少年编程与数学 02-011 MySQL数据库应用 07课题、表的操作

青少年编程与数学 02-011 MySQL数据库应用 07课题、表的操作 一、数据库表(Table)二、创建表语法格式示例注意事项 三、字段的命名规则基本规则命名规范建议示例 四、字段数据类型数值类型字符串类型日期和时间类型其他类型 五、选择合适的数据类型1. **…...

【详细解决】pycharm 终端出现报错:“Failed : 无法将“Failed”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

昨天在终端一顿操作后突然打开pycharm时就开始报错: 无法将“Failed”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 Failed to act…...

AcWing 839:模拟堆 ← multiset + unordered_map

【题目来源】 https://www.acwing.com/problem/content/841/ 【题目描述】 维护一个集合,初始时集合为空,支持如下几种操作: 1. I x,插入一个数 x; 2. PM,输出当前集合中的最小值; 3. DM&#…...

cmake教程

CMake 是一个跨平台的自动化构建系统,广泛用于管理软件构建过程。它使用 CMakeLists.txt 文件来配置项目的构建过程,并生成适用于不同编译器和操作系统的构建文件(如 Makefile、Visual Studio 项目文件等)。以下是一个简单的 CMak…...

小蓝的括号串1(栈,蓝桥云课)

问题描述 小蓝有一个长度为 nn 的括号串,括号串仅由字符 ( 、 ) 构成,请你帮他判断一下该括号串是否合法,合法请输出 Yes ,反之输出 No 。 合法括号序列: 空串是合法括号序列。 若 ss 是合法括号序列,则 (…...

软考系统架构设计师考试学习和考试的知识点大纲,覆盖所有考试考点

以下是软考系统架构设计师考试的知识点大纲,覆盖所有官方考点,分为基础知识、核心技术、系统设计、案例分析、论文写作五大模块,帮助系统性学习和备考: 一、基础知识模块 计算机组成与体系结构 计算机硬件组成(CPU、内…...

车载以太网网络测试-18【传输层-DOIP协议-1】

目录 1 摘要2 DOIP协议的概述2.1 DOIP协议背景2.2 ISO 13400概述 3 DOIP报文的帧结构以及实例3.1 DOIP报文帧结构3.2 实例示例 总结 1 摘要 在汽车网络通信中,诊断扮演了非常重要的角色,无论是故障诊断、整车下线配置,还是ECU的软件更新、远…...

密码学(Public-Key Cryptography and Discrete Logarithms)

Public-Key Cryptography and Discrete Logarithms Discrete Logarithm 核心概念:离散对数是密码学中一个重要的数学问题,特别是在有限域和循环群中。它基于指数运算在某些群中是单向函数这一特性。也就是说,给定一个群 G G G和一个生成元 …...

自然语言处理|深入解析 PEGASUS:从原理到实践

一、引言 在信息爆炸的时代,互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态,还是各类报告文档,我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本…...

矩阵指数的定义和基本性质

1. 矩阵指数的定义 矩阵指数 e A t e^{\boldsymbol{A}t} eAt 定义为幂级数的形式: e A t ∑ k 0 ∞ ( A t ) k k ! e^{\boldsymbol{A}t} \sum_{k0}^\infty \frac{(\boldsymbol{A}t)^k}{k!} eAtk0∑∞​k!(At)k​ 当 A \boldsymbol{A} A 为 n n n \times n …...

react 技术栈请问该如何优化 DOM 大小

针对 React 应用中 DOM 大小过大 的问题,以下是详细的优化方案和具体操作步骤,帮助你提升 Lighthouse 性能评分和用户体验: 一、问题根源分析 DOM 大小过大(如超过 1500 个节点或深度超过 32 层)会导致: …...

redis,tar.gz安装后,接入systemctl报错解决

1. WARNING Memory overcommit must be enabled! 这种报错,有两种解决方法 1.1 修改系统参数 编辑 /etc/sysctl.conf 文件,设置 overcommit_memory 为 1 vm.overcommit_memory 11.2 修改redis的最大使用内存 修改配置文件 redis.conf maxmemory 1g…...

YOLOv5部署全场景问题解决方案手册(2025版)

YOLOv5部署全场景问题解决方案手册(2025版) 文章目录 YOLOv5部署全场景问题解决方案手册(2025版)[TOC]一、环境配置问题1.1 CUDA与PyTorch版本冲突1.2 依赖库缺失问题 二、模型转换问题2.1 ONNX导出失败2.2 TensorRT转换问题 三、…...

Canal 解析与 Spring Boot 整合实战

一、Canal 简介 1.1 Canal 是什么? Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析(Binlog)中间件,它模拟 MySQL 的从机(Slave)行为,监听 MySQL 主机的二进制日志(Binl…...

AI第一天 自我理解笔记--微调大模型

目录 1. 确定目标:明确任务和数据 2. 选择预训练模型 3. 数据预处理 (1) 数据清洗与格式化 (2) 划分数据集 (4) 数据加载与批处理 4. 构建微调模型架构 (1) 加载预训练模型 (2) 修改模型尾部(适配任务) (3) 冻结部分层(…...

SpringBoot日志

目录 一、日志的用途 二、日志的使用 1.打印日志 2.在程序中得到日志对象 3.使用日志对象打印日志 4.日志格式说明 5.日志框架的了解 门面模式(外观模式) 6.日志级别 7.日志配置 配置日志级别 日志持久化 配置日志文件分割 配置日志格式 三、…...

Redis数据结构详解--列表

Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令: LPUSH key value1 [value2...] 在列表头部插入一个或多个值RPUSH key value1 [value2...] 在列表尾部插入一个或多个值LPOP key 移除并获取列表头部第一个元素RPOP key 移除并获取…...

[项目]基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信

基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信 一.Si24Ri原理图二.Si24R1芯片手册解读三.驱动函数讲解五.移植2.4g通讯(飞控部分)六.移植2.4g通讯(遥控部分)七.通讯模块的完成(遥控部分)七.通讯模块的完成&a…...

ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)

ElasticSearch 7.x 集群 Kibana 部署完全指南(5节点) 一、基础环境准备 1. 系统要求 CentOS 7/Ubuntu 18.04JDK 11(Elasticsearch 7自带JDK)内存:建议每个节点≥8GB磁盘:≥50GB(根据数据量调…...

前端项目中应该如何选择正确的图片格式

在前端项目中选择正确的图片格式是优化页面性能、提升用户体验的关键步骤之一。以下是常见图片格式的特点、适用场景及选择建议,帮助你在不同场景下做出最优决策: 一、常见图片格式对比 格式特点适用场景不适用场景JPEG- 有损压缩,文件小- 不…...

Python实现WYY音乐下载

一、需求背景 WYY音乐作为国内主流音乐平台,其歌曲资源丰富但下载接口存在多重加密保护。本文将通过Python结合JS逆向技术,解析其核心加密逻辑,实现免费歌曲的下载功能。 二、技术难点分析 1. 接口加密机制 通过抓包分析可知,网易云核心接口使用两次加密: 第一次:获取…...

药房链路轨道“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用

总论 随着智能医疗技术的快速发展,药房自动化系统已成为现代医院运营的核心基础设施。本文以“空间拓扑优化动态算法决策多级容错控制”三重链式编程技术为核心研究对象,探讨其如何通过跨学科技术融合实现药房链路轨道系统的精准化、高效化与可靠化运行…...

笔记本运行边缘计算

笔记本电脑可以用来运行PCDN(Peer-to-Peer Content Delivery Network)服务。实际上,如果你有闲置的笔记本电脑,并且它具备一定的硬件条件和网络环境,那么它可以成为一个不错的PCDN节点。 运行PCDN的基本要求 硬件需求…...

IMX8MP Android 10系统编译SDK

概述: 本文描述了在Ubuntu 20.04操作系统上搭建IMX8MP Android10系统编译环境。 ubuntu主机端设置 1. ubuntu 20.04 1. 450G Free Disk space 2. 16GB RAM以上 3. 安装 sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop …...

项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建系统最小框架<三>

MCUBoot项目创建完成后,接下来我们需要搭建多节点OTA系统最小框架,再将系统分模块搭建逐层完善,直到实现最终完整系统。开始动手干吧! 目录 一、创建项目 ​二、配置FSP ​2.1 配置RS485属性 ​2.2 配置定时器0 2.3 创建初始化进程并配置属性 ​2.4 创建RS485进程并…...

汇能感知高品质的多光谱相机VSC02UA

VSC02UA概要 VSC02UA是一款高品质的200万像素的光谱相机,适用于工业检测、农业、医疗等领域。VSC02UA 包含 1600 行1200 列有源像素阵列、片上 10 位 ADC 和图像信号处理器。它带有 USB2.0 接口,配合专门的电脑上位机软件使用,可进行图像采集…...

Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点

Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点 目录 Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点Fisher 通过似然估计求解真实数据和权重参数之间的差异**1. Fisher 信息矩阵的定义****2. 计算对数似然函数的二阶导数****3. 代入 Fisher 信息矩阵定义…...

Xilinx系列FPGA视频采集转HDMI2.0输出,基于HDMI 1.4/2.0 Transmitter Subsystem方案,提供6套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我已有的 GT 高速接口解决方案我已有的FPGA图像处理方案 3、详细设计方案设计框图硬件设计架构FPGA开发板输入Sensor之-->OV5640摄像头动态彩条Video In To AXI4-S…...

dify重磅升级:从0.15.3安全升级1.1.0新手避坑指南

Docker Compose 部署 备份自定义的 docker-compose YAML 文件(可选) cd docker cp docker-compose.yaml docker-compose.yaml.-$(date +%Y-%m-%d-%H-%M).bak从 main 分支获取最新代码 git checkout main git pull origin main停止服务,命令,请在 docker 目录下执行...

工业相机选型

工业相机选型 一、工业相机分类二、相机的主要参数2.1 分辨率2.2 速度2.3 光学接口 / 接口类型2.4 相机靶面尺寸2.5 像元尺寸2.6 精度 三、镜头介绍及选型方法3.1 工作距离(WD)3.2 视场角(FOV)3.3 (镜头)靶面尺寸3.4 帧率3.5 光圈…...

Vue3:构建高效用户界面的利器

一、Vue.js 简介​ Vue.js(读音 /vjuː/, 类似于 view)是一套构建用户界面的渐进式框架。它只关注视图层,采用自底向上增量开发的设计。Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 ,学习起来非常简单…...

mysql与redis的日志策略

MySQL 和 Redis 在日志记录方面采用了不同的策略,分别对应写前日志(Write-Ahead Logging, WAL)和写后日志(Write-After Logging)。以下是它们的详细说明: 1. MySQL:写前日志(Write-A…...

在 Spring Boot 中调用 AnythingLLM 的发消息接口

整体逻辑: 自建系统的web UI界面调用接口: 1.SpringBoot接口:/anything/chatMessageAnything 2.调用anythingLLM - 调用知识库deepseek r1 . Windows Installation ~ AnythingLLMhttps://docs.anythingllm.com/installation-desktop/windows http://localhost:3…...

Kotlin 基础语法

1. 🌟 Kotlin:Java 的“超级进化体”? Kotlin 是一门由 JetBrains 开发的 现代静态类型编程语言,支持 JVM、Android、JavaScript、Native 等多平台: Kotlin 与 Java 深度兼容,Kotlin 会编译为 JVM 字节码&#xff0c…...

设计模式使用Java案例

代码设计要有可维护性,可复用性,可扩展性,灵活性,所有要使用设计模式进行灵活设计代码 创建型 简单工厂模式(Simple Factory) 简单工厂模式(Simple Factory Pattern)是一种创建型…...

LORA的AB矩阵是针对Transformer的多头还是MLP

LORA的AB矩阵是针对Transformer的多头还是MLP Transformer中的矩阵是一个整体还是分开的每个小矩阵 在LORA(Low-Rank Adaptation)中,AB矩阵的应用位置和Transformer中的矩阵拆分方式如下: 1. LORA的AB矩阵作用对象 LORA的AB矩阵主要作用于Transformer的多头注意力模块和…...

【Gitee】删除仓库的详细步骤

文章目录 1、点击个人主页2、点击仓库3、点击想要删除的仓库4、点击管理5、点击侧边栏的删除仓库 1、点击个人主页 进入gitee官网,登录后点击个人主页 2、点击仓库 点击仓库跳转,如下图所示: 3、点击想要删除的仓库 这个页面会展示你所…...

DNS缓存使用中有什么问题?DNS缓存有哪些作用?

此前已经给大家介绍过刷新dns缓存的方法和流程以及dns缓存中毒和清楚dns缓存的知识介绍。那么你知道dns缓存使用中有什么问题吗?dns缓存有哪些作用? 以下是有关dns缓存的一些知识介绍。 一、DNS缓存使用中有什么问题? 1、缓存刷新不受控 当企业的域名发生变更时&#xf…...

Ollama + Open WebUI 本地部署DeepSeek

文章目录 前言一、环境准备最低系统要求必要软件 二、安装 Ollama通过 Docker 部署验证安装 三、部署 Open WebUI快速启动配置说明 四、加载 DeepSeek 模型通过 Ollama 拉取模型支持模型列表 五、使用 Web 界面交互首次使用功能特性 六、高级配置GPU 加速(NVIDIA&am…...

STM32-汇编

学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有: 初始化异常向量表; 初始化各工作模…...

word中老是有一个空白页删不掉

1、首先第一种:最后一页空白页删除方法 如果空白页是出现在最后一页的话,一般的删除方法是可行的,我们可以直接按Backspace或者Delete直接删除 2、缩小行距 如果空白页只有一行,而且还删不掉,我们可以在这一行点击鼠…...

docker需要sudo才能使用

一种方法是添加当前用户到docker组里去,当时添加的时候貌似是没问题的,但是现在又不可以了 产生的报错 ❯ docker images Cannot connect to the Docker daemon at unix:///home/ying/.docker/desktop/docker.sock. Is the docker daemon running?解决…...

Unity导出WebGL,无法显示中文

问题:中文无法显示 默认字体无法显示中文 在编辑器中设置了中文和英文的按钮,中文按钮无法显示 导出后无法显示中文 解决办法: 自己添加字体,导入项目,并引用 示例 下载一个字体文件,这里使用的阿里…...

理解大模型的function call ,思维链COT和MCP 协议

在大模型中,function call 是指模型调用外部功能或工具以完成特定任务的过程。这种机制使得模型不仅能生成文本,还能执行特定的操作,如生成图像、获取数据或进行计算。 关键特点 功能扩展:通过调用外部函数,模型可以实…...

K8S学习之基础三十三:K8S之监控Prometheus部署程序版

部署 Prometheus 通常包括以下步骤: 1. 下载 Prometheus 首先,从 Prometheus 官方网站 下载适用于你操作系统的最新版本。 bash 复制 wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar…...

c语言笔记 结构体指针运用

目录 1.结构体指针与结构体变量 2.结构体指针与结构体数组 c语言其实有时候基本知识还是一样只是说换了一个名称但是所表示的含义是一样的。 结构体指针是指针的一种类型,可以指向结构体变量或者结构体数组,下面我们来探究一下结构体指针跟结构体变量的…...

科普类——双目立体视觉与 RGBD 相机的简单对比

双目立体视觉与 RGBD 相机生成的深度图在原理、性能和应用场景上有显著差异。以下是两者的详细对比和分析: 1. 原理差异 (1) 双目立体视觉 (Stereo Vision) 原理: 通过两个摄像头模拟人眼视差,计算匹配像素点的水平位移(视差&…...

为什么要用linux?

使用 Linux 有许多独特的优势,尤其适合技术爱好者、开发者和企业用户。以下是 选择 Linux 的主要理由,涵盖不同场景的需求: --- 1. 开源与自由 🆓 - 完全免费:无需支付系统或软件授权费用,节省成本。 - 开放…...

Linux系统管理与编程05:网络管理番外篇

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 0.安装VMware workstation(以下简称VW)、MobaXterm和CentOS7.x minimal版 CentOS7.x minimal安装时选择网卡连接为nat,过程参照我的博客(略)。 1.…...

(2025|ICLR|华南理工,任务对齐,缓解灾难性遗忘,底层模型冻结和训练早停)语言模型持续学习中的虚假遗忘

Spurious Forgetting in Continual Learning of Language Models 目录 1. 引言 2. 动机:关于虚假遗忘的初步实验 3. 深入探讨虚假遗忘 3.1 受控实验设置 3.2 从性能角度分析 3.3 从损失景观角度分析 3.4 从模型权重角度分析 3.5 从特征角度分析 3.6 结论 …...