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

MySQL 数据库:原理、应用与发展

摘要:本文深入探讨了 MySQL 数据库相关内容。首先介绍了 MySQL 作为开源关系型数据库管理系统的显著特点,包括易用性、跨平台性、高性能、可扩展性、开源免费以及数据安全性等方面。接着详细阐述了其安装与配置过程,涵盖在不同操作系统上的安装方式、配置文件参数的含义与设置,以及字符集和校对规则的设定。

文中进一步讲解了 MySQL 的基本概念,如数据库与表的构成、多种数据类型、不同索引类型的特点与应用场景。并对 SQL 语言在 MySQL 中的应用进行了全面分析,从数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)到数据控制语言(DCL)都给出了丰富的示例。

对于 MySQL 存储引擎,重点分析了 InnoDB 和 MyISAM 存储引擎的特性,包括事务支持、外键约束、数据存储结构以及适用场景等,同时也提及了其他存储引擎。在优化方面,从索引优化、查询优化到配置优化多个角度提供了优化策略与方法。

还详细描述了 MySQL 数据库的备份与恢复策略、方法,以及在企业级应用如电商系统、金融系统、大数据环境下的具体实践。同时探讨了 MySQL 数据库的安全管理,包括用户认证与授权、数据加密和安全审计等措施。最后展望了 MySQL 数据库与云计算结合、与大数据技术融合以及智能化数据库管理的发展趋势。

目录

一、MySQL 数据库简介

二、MySQL 数据库的安装与配置

三、MySQL 数据库的基本概念

四、SQL 语言在 MySQL 中的应用

五、MySQL 存储引擎

六、MySQL 数据库的优化

七、MySQL 数据库的备份与恢复

八、MySQL 在企业级应用中的实践

九、MySQL 数据库的安全管理

十、MySQL 数据库的发展趋势


一、MySQL 数据库简介

MySQL 是一种广泛使用的开源关系型数据库管理系统。它在众多领域中都有着重要的应用,从简单的个人项目到大型企业级的复杂系统。

MySQL 具有以下一些显著特点:

易用性:对于初学者来说,它提供了相对简单的安装和配置流程。无论是在 Windows、Linux 还是其他操作系统上,都可以较为轻松地搭建起 MySQL 环境。其基本的 SQL 操作语言直观易懂,使得开发者能够快速上手进行数据库的创建、表的设计以及数据的增删改查操作。

跨平台性:可以在多种操作系统上运行,这为开发人员提供了极大的灵活性。无论是在开发环境还是生产环境中,都可以根据实际需求选择合适的操作系统,而无需担心数据库的兼容性问题。

高性能:在数据存储和检索方面表现出色。通过优化索引、缓存等机制,MySQL 能够快速处理大量的并发查询。在处理复杂的业务逻辑和海量数据时,依然能够保持较高的响应速度。

可扩展性:支持多种存储引擎,如 InnoDB、MyISAM 等。不同的存储引擎适用于不同的应用场景,可以根据具体需求进行选择和切换。例如,InnoDB 适合事务处理密集型的应用,而 MyISAM 则在某些特定的只读场景下具有更高的性能。

开源免费:作为开源软件,它可以免费使用,这大大降低了企业和开发者的成本。同时,开源社区也为 MySQL 的发展和完善提供了强大的支持,不断有新的功能和优化被添加进来。

数据安全性:提供了多种安全机制,如用户认证、授权、数据加密等。可以通过设置复杂的用户密码、限制用户的操作权限以及对敏感数据进行加密等方式,确保数据库中的数据安全。

二、MySQL 数据库的安装与配置

安装过程

在 Windows 环境下,通常可以从 MySQL 官方网站下载安装程序。运行安装程序后,按照向导逐步进行操作,包括选择安装路径、配置端口号、设置 root 用户密码等。在 Linux 环境下,可以通过包管理工具(如 apt、yum 等)来安装 MySQL。例如,在 Ubuntu 系统中,可以使用 “sudo apt-get install mysql-server” 命令进行安装。

配置文件

MySQL 的配置文件(通常是 my.cnf 或 my.ini)包含了许多重要的参数,这些参数可以影响数据库的性能和行为。一些常见的配置参数包括:

  • 存储引擎相关:如 “default-storage-engine=InnoDB” 可以设置默认的存储引擎为 InnoDB。
  • 缓存相关:“key_buffer_size” 用于配置 MyISAM 存储引擎的索引缓存大小;“innodb_buffer_pool_size” 用于配置 InnoDB 存储引擎的缓冲池大小。合理设置这些缓存大小可以显著提高查询性能。
  • 连接相关:“max_connections” 可以限制同时连接到数据库的最大客户端数量。

字符集和校对规则

在配置文件中还可以设置字符集和校对规则。例如,“character-set-server=utf8mb4” 可以设置服务器的字符集为 utf8mb4,“collation-server=utf8mb4_unicode_ci” 可以设置校对规则。正确设置字符集和校对规则对于处理多语言环境下的文本数据至关重要。

三、MySQL 数据库的基本概念

数据库与表

数据库是数据的集合,它可以包含多个表。表是数据库中最基本的数据存储结构,由行和列组成。每一行代表一条记录,每一列代表一个字段。例如,在一个电商系统中,可能有一个 “users” 表用于存储用户信息,其中包含 “user_id”(用户编号)、“username”(用户名)、“password”(密码)、“email”(电子邮件)等字段。

数据类型

MySQL 支持多种数据类型,包括:

  • 数值类型:如整数类型(INT、BIGINT 等)、浮点数类型(FLOAT、DOUBLE 等)、定点数类型(DECIMAL)。不同的数值类型在存储范围和精度上有所不同。
  • 字符串类型:包括定长字符串类型(CHAR)和变长字符串类型(VARCHAR)。CHAR 类型在存储时会占用固定长度的空间,而 VARCHAR 类型则根据实际存储的字符长度来占用空间。此外,还有 TEXT、MEDIUMTEXT、LONGTEXT 等用于存储较长的文本数据。
  • 日期和时间类型:如 DATE(存储日期)、TIME(存储时间)、DATETIME(存储日期和时间)、TIMESTAMP(存储时间戳,自动更新)。

索引

索引是一种特殊的数据结构,它可以加快数据的查询速度。在 MySQL 中,常见的索引类型包括:

  • B - Tree 索引:是最常用的索引类型,适用于普通的查询场景。它可以快速地定位到符合条件的数据所在的行。
  • 哈希索引:对于等值查询非常高效,但不支持范围查询。
  • 全文索引:用于对文本数据进行全文搜索,例如在文章内容中搜索特定的关键词。

四、SQL 语言在 MySQL 中的应用

数据定义语言(DDL)

  • 创建数据库:使用 “CREATE DATABASE database_name;” 语句来创建一个新的数据库。例如,“CREATE DATABASE mydb;” 创建了一个名为 mydb 的数据库。
  • 创建表:通过 “CREATE TABLE table_name (column1 datatype1, column2 datatype2,...);” 语句来创建表。例如,“CREATE TABLE students (student_id INT PRIMARY KEY, name VARCHAR (50), age INT);” 创建了一个名为 students 的表,其中包含 student_id、name 和 age 三个字段。
  • 修改表结构:可以使用 “ALTER TABLE” 语句来添加、删除或修改表中的列。例如,“ALTER TABLE students ADD COLUMN gender VARCHAR (10);” 在 students 表中添加了一个 gender 字段。

数据操纵语言(DML)

  • 插入数据:使用 “INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);” 语句来插入新的数据。例如,“INSERT INTO students (student_id, name, age) VALUES (1, 'John', 20);” 向 students 表中插入了一条记录。
  • 更新数据:“UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;” 语句用于更新表中的数据。例如,“UPDATE students SET age = 21 WHERE student_id = 1;” 将 student_id 为 1 的学生的年龄更新为 21。
  • 删除数据:“DELETE FROM table_name WHERE condition;” 语句用于删除符合条件的数据。例如,“DELETE FROM students WHERE student_id = 1;” 删除 student_id 为 1 的学生记录。

数据查询语言(DQL)

  • 简单查询:通过 “SELECT column1, column2,... FROM table_name WHERE condition;” 语句进行查询。例如,“SELECT name, age FROM students WHERE age > 18;” 查询年龄大于 18 岁的学生的姓名和年龄。
  • 连接查询:可以将多个表连接在一起进行查询。例如,在一个包含 “students” 表和 “courses” 表的数据库中,“SELECT students.name, courses.course_name FROM students JOIN courses ON students.student_id = courses.student_id;” 查询出每个学生所选课程的信息。
  • 子查询:在一个查询中嵌套另一个查询。例如,“SELECT name FROM students WHERE student_id IN (SELECT student_id FROM courses WHERE course_name = 'Math');” 查询出选修了数学课程的学生的姓名。

数据控制语言(DCL)

  • 用户授权:使用 “GRANT privileges ON database_name.table_name TO user_name;” 语句给用户授权。例如,“GRANT SELECT, INSERT ON mydb.students TO user1;” 给用户 user1 授予了对 mydb 数据库中的 students 表的查询和插入权限。
  • 撤销权限:通过 “REVOKE privileges ON database_name.table_name FROM user_name;” 语句撤销用户的权限。

五、MySQL 存储引擎

InnoDB 存储引擎

  • 事务支持:InnoDB 是 MySQL 中最常用的存储引擎之一,它提供了对事务的全面支持。事务是一组数据库操作,要么全部成功执行,要么全部失败回滚。这对于保证数据的一致性和完整性至关重要。例如,在银行转账系统中,从一个账户扣款和在另一个账户存款这两个操作必须作为一个事务来处理,以确保资金的正确转移。
  • 外键约束:支持外键约束,这有助于维护表之间的关系。例如,在一个包含 “orders” 表和 “customers” 表的数据库中,可以在 “orders” 表中设置一个外键,指向 “customers” 表中的 “customer_id” 字段,这样可以确保订单总是与有效的客户相关联。
  • 数据存储结构:InnoDB 将数据存储在表空间中,表空间可以由多个数据文件组成。它采用了 B + Tree 索引结构,既可以提高数据的查询速度,又可以保证数据的存储效率。

MyISAM 存储引擎

  • 高性能的读取操作:MyISAM 在读取操作上具有较高的性能,特别是在一些简单的查询场景下。它适合于那些以读为主的应用,如新闻网站、博客等,其中数据的读取频率远高于写入频率。
  • 不支持事务和外键:与 InnoDB 不同,MyISAM 不支持事务和外键约束。这意味着在某些复杂的业务场景下,它可能无法满足数据一致性的要求。
  • 数据存储结构:MyISAM 将数据存储在三个文件中:.frm 文件(存储表结构信息)、.MYD 文件(存储数据)和.MYI 文件(存储索引信息)。

其他存储引擎

除了 InnoDB 和 MyISAM 之外,MySQL 还支持其他存储引擎,如 Memory 存储引擎(数据存储在内存中,适合临时数据存储和高速缓存)、Archive 存储引擎(用于存储大量的归档数据,具有高压缩比)等。

六、MySQL 数据库的优化

索引优化

  • 选择合适的索引列:并非所有的列都需要创建索引,应该选择那些经常用于查询条件、连接条件和排序条件的列创建索引。例如,在一个电商系统中,如果经常根据商品的类别和价格进行搜索,那么可以在 “category” 和 “price” 列上创建索引。
  • 避免过度索引:创建过多的索引会增加数据插入、更新和删除的时间,因为每次数据操作都需要同时维护索引。应该根据实际需求合理控制索引的数量。
  • 复合索引的设计:当多个列经常一起用于查询条件时,可以考虑创建复合索引。例如,如果经常根据 “category” 和 “brand” 两个列来查询商品信息,那么可以创建一个复合索引 “category_brand_idx”。

查询优化

  • 避免全表扫描:尽量使用索引来避免全表扫描。可以通过 “EXPLAIN” 语句来分析查询语句的执行计划,查看是否使用了索引。如果发现没有使用索引,可以尝试调整查询条件或者优化索引。
  • 优化子查询:在某些情况下,子查询可以用连接查询来替代,以提高查询性能。例如,“SELECT * FROM table1 WHERE column1 IN (SELECT column1 FROM table2);” 可以改写为 “SELECT table1.* FROM table1 JOIN table2 ON table1.column1 = table2.column1;”。
  • 使用存储过程和函数:对于一些复杂的业务逻辑,可以将其封装在存储过程或函数中。存储过程和函数在数据库服务器端执行,可以减少网络传输开销,提高执行效率。

配置优化

  • 调整内存相关参数:根据服务器的内存大小和数据库的负载情况,合理调整缓存相关的参数,如 “innodb_buffer_pool_size”、“key_buffer_size” 等。例如,如果服务器内存较大,可以适当增大这些缓存参数,以提高数据的缓存命中率。
  • 优化磁盘 I/O:可以将数据库的数据文件和日志文件分别存储在不同的磁盘上,以减少磁盘 I/O 冲突。同时,可以使用固态硬盘(SSD)来提高磁盘的读写速度。

七、MySQL 数据库的备份与恢复

备份策略

  • 完全备份:定期对整个数据库进行完全备份,例如每天进行一次完全备份。完全备份可以确保在发生数据丢失时,能够恢复到最近一次备份的状态。
  • 增量备份:在完全备份的基础上,每隔一段时间进行增量备份,只备份自上一次备份以来发生变化的数据。增量备份可以减少备份时间和备份文件的大小。
  • 差异备份:与增量备份类似,但差异备份是备份自上一次完全备份以来发生变化的数据。

备份方法

  • 使用 mysqldump 命令:这是 MySQL 自带的备份工具,可以将数据库中的数据和结构备份到一个 SQL 文件中。例如,“mysqldump -u root -p mydb> mydb_backup.sql” 将 mydb 数据库备份到 mydb_backup.sql 文件中。
  • 使用物理备份方法:直接复制 MySQL 数据库的数据文件和日志文件。这种方法备份速度快,但需要确保在备份过程中数据库处于一致状态。

恢复方法

  • 使用 SQL 文件恢复:如果是使用 mysqldump 命令进行备份的,可以使用 “mysql -u root -p mydb < mydb_backup.sql” 命令将备份文件恢复到数据库中。
  • 物理恢复:将备份的物理文件(数据文件和日志文件)复制到原来的位置,然后启动 MySQL 服务。

八、MySQL 在企业级应用中的实践

在电商系统中的应用

  • 商品管理:MySQL 用于存储商品信息,如商品编号、名称、价格、描述、图片等。通过合理的表设计和索引优化,可以快速地进行商品的查询、添加、修改和删除操作。
  • 订单管理:订单相关的数据,如订单编号、用户信息、商品信息、订单状态等都存储在 MySQL 中。在处理订单的过程中,需要保证数据的一致性和完整性,这就需要利用 InnoDB 存储引擎的事务支持。
  • 用户管理:存储用户的基本信息、登录信息、购物历史等。通过分析用户数据,可以为用户提供个性化的推荐服务。

在金融系统中的应用

  • 账户管理:存储客户的账户信息,如账户编号、余额、交易记录等。在进行转账、存款、取款等操作时,需要对账户数据进行严格的事务处理,以确保资金的安全。
  • 交易处理:每一笔金融交易都需要记录在数据库中,包括交易时间、交易金额、交易双方等信息。MySQL 需要处理大量的并发交易,这就需要对数据库进行性能优化。
  • 风险管理:通过分析历史交易数据,利用 MySQL 进行数据挖掘和分析,评估金融风险,为决策提供支持。

在大数据环境下的应用

  • 数据存储与处理:虽然 MySQL 本身并不是专门的大数据处理工具,但在大数据环境下,它仍然可以作为数据存储的一部分。例如,将一些结构化的数据存储在 MySQL 中,然后与其他大数据处理工具(如 Hadoop、Spark 等)结合使用。
  • 数据分析与报表:利用 MySQL 的查询功能和存储过程,可以进行简单的数据分析和报表生成。对于复杂的大数据分析,可以将 MySQL 中的数据导出到专门的大数据分析平台进行处理。

九、MySQL 数据库的安全管理

用户认证与授权

  • 用户管理:创建不同的用户,并为每个用户设置不同的密码。可以通过 “CREATE USER user_name IDENTIFIED BY 'password';” 语句来创建用户。
  • 权限管理:根据用户的角色和职责,为其授予不同的权限。例如,对于普通用户,可能只授予查询和插入权限;对于管理员用户,则授予所有权限。

数据加密

  • 传输加密:使用 SSL/TLS 协议对客户端和服务器之间的数据传输进行加密,以防止数据在网络传输过程中被窃取或篡改。
  • 存储加密:对数据库中的敏感数据进行加密存储。例如,可以使用 MySQL 自带的加密函数(如 AES_ENCRYPT、AES_DECRYPT 等)对密码、信用卡信息等敏感数据进行加密。

安全审计

  • 日志记录:启用 MySQL 的日志功能,如二进制日志、错误日志、查询日志等。通过分析这些日志,可以了解数据库的运行情况,发现安全隐患。
  • 安全事件监控:使用专门的安全监控工具对 MySQL 数据库进行实时监控,及时发现异常的访问行为和安全事件。

十、MySQL 数据库的发展趋势

与云计算的结合

  • 云数据库服务:越来越多的云服务提供商提供基于 MySQL 的云数据库服务,如亚马逊的 RDS for MySQL、阿里云的 PolarDB 等。这些云数据库服务提供了高可用性、可扩展性和便捷的管理方式,用户无需关心数据库的硬件和软件维护。
  • 容器化部署:随着 Docker 等容器技术的发展,MySQL 可以很方便地进行容器化部署。容器化部署可以提高数据库的部署效率,实现快速的弹性伸缩。

与大数据技术的融合

  • 数据湖架构:在数据湖架构中,MySQL 可以作为数据湖中的一个数据源,与其他数据存储(如 Hive、HBase 等)一起构成一个统一的数据存储和处理平台。
  • 实时数据分析:结合流式处理技术(如 Kafka、Flink 等),MySQL 可以实现实时数据的采集、存储和分析,满足企业对实时数据处理的需求。

智能化数据库管理

  • 自动化运维:利用人工智能和机器学习技术,实现数据库的自动化运维。例如,通过分析数据库的性能指标和日志数据,自动调整数据库的配置参数,优化数据库的性能。
  • 智能查询优化:根据用户的查询历史和数据的分布情况,自动优化查询语句,提高查询效率。

相关文章:

MySQL 数据库:原理、应用与发展

摘要&#xff1a;本文深入探讨了 MySQL 数据库相关内容。首先介绍了 MySQL 作为开源关系型数据库管理系统的显著特点&#xff0c;包括易用性、跨平台性、高性能、可扩展性、开源免费以及数据安全性等方面。接着详细阐述了其安装与配置过程&#xff0c;涵盖在不同操作系统上的安…...

7.2图像旋转

实验原理 在OpenCV中&#xff0c;图像旋转也是一种常见的几何变换&#xff0c;它可以用来调整图像的方向。图像旋转通常涉及绕着图像中心点旋转一定角度的操作。与图像平移类似&#xff0c;旋转也可以通过仿射变换来实现&#xff0c;但是旋转需要使用到旋转矩阵来定义旋转的角…...

学学vue-2

1.7 指令修饰符 keyup.enter&#xff1a;监听键盘回车事件&#xff0c;回车触发事件keyup.enter代码 v-model修饰符&#xff1a; v-model.trim&#xff1a;去首尾空格v-model.number&#xff1a;变数字&#xff08;如果是数字的话&#xff0c;转变为数字&#xff09; 事件名.…...

什么是 Grafana?

什么是 Grafana&#xff1f; Grafana 是一个功能强大的开源平台&#xff0c;用于创建、查看、查询和分析来自多个来源的数据。通过可视化仪表盘&#xff08;Dashboard&#xff09;&#xff0c;它能够帮助用户监控实时数据、生成历史报告&#xff0c;甚至进行预测分析。Grafana…...

【Prompt Engineering:思维树 (ToT)、检索增强生成 (RAG)、自动推理并使用工具 (ART)】

思维树 (ToT) 对于需要探索或预判战略的复杂任务来说&#xff0c;传统或简单的提示技巧是不够的。最近&#xff0c;Yao et el. (2023)(opens in a new tab) 提出了思维树&#xff08;Tree of Thoughts&#xff0c;ToT&#xff09;框架&#xff0c;该框架基于思维链提示进行了总…...

【习题】应用/元服务上架

判断题 1. 一个完整的发布软件包必须包含一个Profile文件。 A、正确(True) B、错误(False) 2. 编译打包的软件包存放在项目目录build > outputs > default下。 A、正确(True) B、错误(False) 单选题 1. 创建应用时&#xff0c;应用包名需要和在DevEco …...

性能测试的复习3-jmeter的断言、参数化、提取器

一、断言、参数化、提取器 需求&#xff1a; 提取查天气获取城市名请求的响应结果&#xff1a;城市对查天气获取城市名的响应结果进行响应断言和json断言对查天气获取城市名添加用户参数 1、步骤 查看天气获取城市名 json提取器&#xff08;对响应结果提取、另一个接口请求…...

ORB-SLAM2关键点总结

1.ORB-SLAM2的总体框架是怎样的 ORB-SLAM2一共有三个线程&#xff0c;分别是Tracking、Local Mapping、Loop Closing线程&#xff0c;&#xff0c;其中Tracking负责完成关键点提取&#xff0c;并进行帧间匹配&#xff0c;同时初步选取关键帧&#xff1b;Local Mapping线程主要…...

拱式桥安全结构健康监测解决方案

拱式桥作为一种常见的桥梁结构&#xff0c;其拱形设计不仅美观&#xff0c;还具有较高的承载能力。然而&#xff0c;随着使用年限的增加和环境因素的影响&#xff0c;拱式桥的结构健康和稳定需要持续监测和评估。自动化监测技术的应用&#xff0c;可以提升拱式桥的监测效率和准…...

windows和linux安装mysql5.7.31保姆级教程

一&#xff0c;资源如下&#xff0c;里面有windows和linux版的安装软件&#xff0c;内含Visual C2013中文版windows系统插件 windows资源地址&#xff1a;https://download.csdn.net/download/l1o3v1e4ding/89725150 linux&#xff08;centos&#xff09;资源地址&#xff1a;…...

如何使用 PowerShell 脚本来自动化 Windows 开发流程的教程(包括理论介绍和实践示例)

PowerShell 是一种强大的任务自动化和配置管理框架&#xff0c;它为系统管理员和开发人员提供了管理 Windows 操作系统和应用程序的能力。下面是一个关于如何使用 PowerShell 脚本来自动化 Windows 开发流程的教程&#xff0c;包括理论介绍和实践示例。 第一部分&#xff1a;理…...

CTFHub技能树-信息泄露-HG泄漏

目录 漏洞产生原因 解题过程 当开发人员使用 Mercurial 进行版本控制&#xff0c;对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。 漏洞产生原因 Mercurial(hg)是一种分布式版本控制系统&#xff0c;它与Git类似也可以用于管…...

OpenCV结构分析与形状描述符(18)比较两个轮廓相似度的函数matchShapes()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 比较两个形状。 该函数用于比较两个形状。所有三个实现的方法都使用了 Hu 不变矩&#xff08;参见 HuMoments&#xff09; 函数原型 double c…...

CCS811二氧化碳传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ccs811.h文件 ccs811.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 CCS811模块是一种气体传感器&#xff0c;可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2…...

Navicat 17 新特性 | 聚焦 MongoDB

随着 Navicat 17 的盛大发布&#xff0c;其一系列创新特性赢得了广大用户的热烈反响。它不仅在模型设计上实现了突破性优化&#xff0c;提升了查询与配置的效率&#xff0c;还大幅优化了用户界面的交互体验&#xff0c;原生支持国产平台与操作系统&#xff0c;同时增强 BI 能力…...

openssl的使用

1、编译 Github下载&#xff1a;https://github.com/openssl/openssl 官网下载&#xff1a;https://openssl-library.org/source/index.html 官网历史版本&#xff1a;https://www.openssl.org/source/old/ 1.1 Windows下编译 我的文章&#xff1a;OPC UA使用 Openssl库编译…...

ICETEK-DM6437-AICOM—— DMA直接存储器访问设计

#一、设计目的&#xff1a; 1 进一步了解 ICETEK-DM6437-AF 的内部存储器空间的分配及指令寻址方式&#xff1a; 内部存储器空间分配&#xff1a;研究 ICETEK-DM6437-AF 的存储器架构&#xff0c;包括但不限于片内 SRAM、片外 DRAM 和其他存储器模块。了解这些存储器的大小、起…...

【AcWing】快速排序的Go实现

快速排序的Go实现 这一部分参考了AcWing当中使用Go语言实现快速排序的题解&#xff1a;https://www.acwing.com/activity/content/code/content/296206/。 其中有很多部分非常值得参考&#xff0c;故写一个博客进行记录。 Code package mainimport "fmt"func qui…...

使用C++11的`std::future`和`std::promise`实现异步网络通信

使用C11的std::future和std::promise实现异步网络通信 在现代C编程中&#xff0c;异步编程是一个重要的主题。C11引入了std::future和std::promise&#xff0c;为异步编程提供了强大的工具。本文将详细介绍如何使用std::future和std::promise实现异步网络通信&#xff0c;并提…...

【C++登堂入室】类与对象(上)

目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 八、this指针 …...

【西电电装实习】5. 无人机模块及作用、上位机的操作

文章目录 前言一、硬件结构电源、电源电压测试电路晶振外围陀螺仪信号放大电路及天线空心杯&#xff08;电极&#xff09;驱动电路 软件设置整机装配PID 参数设置公式 参考文献 前言 西电电装实习&#xff0c;无人机原理图、上位机的调节方法 一、硬件结构 电源、电源电压测试…...

有关WSL和docker的介绍

目录标题 如何利用在windows上配置docker实现linux和windows容器修改WSL默认安装&#xff08;也就是linux子系统&#xff09;目录到其他盘 如何利用在windows上配置docker实现linux和windows容器 wsl的基本命令&#xff1a;参考网页 docker入门到实践&#xff1a;参考网页 官方…...

以太坊入门

1. 以太坊简介 Vitalik Buterin 在 2013 年 11 月提出了以太坊的概念&#xff0c;其关键思想是&#xff1a;开发一种图灵完备&#xff08;Turing-Complete) 的语言&#xff0c;以允许开发用于区块链和去中心化应用的任意程序&#xff08;智能合约&#xff09;。该概念与比特比相…...

秃姐学AI系列之:实战Kaggle比赛:狗的品种识别(ImageNet Dogs)

目录 前置准备 整理数据集 图片增广 读取数据集 微调预训练模型 训练函数 训练和验证模型 Kaggle提交结果 前置准备 常规导包 import os import torch import torchvision from torch import nn from d2l import torch as d2l 使用小规模数据样本 d2l.DATA_HUB[dog…...

图神经网络介绍3

1. 图同构网络&#xff1a;Weisfeiler-Lehman 测试与图神经网络的表达力 本节介绍一个关于图神经网络表达力的经典工作&#xff0c;以及随之产生的另一个重要的模型——图同构网络。图同构问题指的是验证两个图在拓扑结构上是否相同。Weisfeiler-Lehman 测试是一种有效的检验两…...

浅谈 React Fiber

想象一下&#xff0c;你正在搭建一个乐高积木城堡。 传统的搭建方式&#xff1a;一次性把所有积木拼好&#xff0c;如果中途发现某个地方拼错了&#xff0c;就需要拆掉重新拼。这个过程就像 React 15 之前的版本&#xff0c;一旦开始渲染&#xff0c;就很难中断&#xff0c;效…...

Winform实现石头剪刀布小游戏

1、电脑玩家类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace RockScissorsClothApp {public class Computer{public Card Play(){Random random new Random();int num random.Next(0, 3…...

计算机的错误计算(九十)

摘要 计算机的错误计算&#xff08;八十九&#xff09;探讨了反双曲余切函数 acoth(x)在 附近的计算精度问题。本节讨论绝对值为大数的反双曲余切函数值的计算精度问题。 Acoth(x) 函数的定义为&#xff1a; 其中 x 的绝对值大于 1 . 例1. 计算 acoth(1.000000000002e15) .…...

对游戏语音软件Oopz遭遇DDoS攻击后的一些建议

由于武汉天气太热&#xff0c;因此周末两天就没怎么出门。一直在家打《黑神话&#xff1a;悟空》&#xff0c;结果卡在广智这里一直打不过去&#xff0c;本来想找好友一起讨论下该怎么过&#xff0c;但又没有好的游戏语音软件。于是在网上搜索了一些信息&#xff0c;并偶然间发…...

解锁Android开发利器:MVVM架构_android的mvvm

// 从网络或其他数据源获取天气数据return Weather(city, "25C") }} 2.定义View&#xff1a;class WeatherActivity : AppCompatActivity() { private lateinit var viewModel: WeatherViewModel override fun onCreate(savedInstanceState: Bundle?) {super.onCre…...