MySQL的版本从5.7跳到了8.0有哪些原因?

MySQL的版本从5.7跳到了8.0的原因?

  • 一、引言
    • 1.1、MySQL是什么?
    • 1.2、MySQL 5.7和8.0的历史背景
  • 二、MySQL 8.0的新功能
    • 2.1、更好的安全性
    • 2.2、更高的性能
    • 2.3、更好的可扩展性
    • 2.4、JSON支持
  • 三、MySQL 8.0的重要改进
    • 3.1、更严格的数据类型检查
    • 3.2、其他重要的改进和变化
  • 四、为何直接从5.7升级到8.0
    • 4.1、技术差距和功能改进
    • 4.2、推广和使用最新的数据库技术
  • 五、从5.7升级到8.0的注意事项
  • 六、总结
    • 6.1、MySQL 8.0对于数据管理带来的改变
    • 6.2、未来MySQL发展的趋势

一、引言

1.1、MySQL是什么?

MySQL是一种开源的关系型数据库管理系统,它采用标准SQL查询语言进行操作。MySQL可以运行在各种操作系统上,并支持多种编程语言。MySQL被广泛应用于Web应用程序的开发中,如电子商务网站、社交网络和基于云计算的应用等。

MySQL的内部概念包括:

  1. 数据库:MySQL是一个数据库管理系统,可以存储和组织数据,并提供对这些数据进行访问和修改的方法。在MySQL中,数据库由多个表组成。
  2. 表:在MySQL中,表是由行和列组成的二维数据结构,用于存储相关数据。每个表都有一个唯一的名称,并且可以定义不同类型的列,例如整数、字符串、日期等。
  3. 列:在MySQL中,列代表表中的属性或字段,通常具有特定的数据类型,例如整数、字符串、日期等。
  4. 行:在MySQL中,行代表表中的记录或条目,包含各种列的值。每行都有一个唯一的标识符,称为主键。
  5. 主键:主键是唯一标识表中每个行的标识符,它可以用来唯一地标识每个行。主键可以是单个列或多个列的组合。
  6. 索引:索引是一种数据结构,用于加速对表中数据的访问。它可以帮助在表中搜索数据时更快地定位到所需的行。
  7. 视图:视图是与表类似的虚拟表格,它们通过查询从现有表中派生而来。视图允许用户在不修改现有表的情况下查看数据。
  8. 存储过程:存储过程是一组预定义的SQL语句,可以被多次调用。它们允许将复杂的操作封装在一个单独的单元中,并在需要时以相同的方式重复使用。
  9. 事务:事务是数据库操作的单个逻辑单元。如果在事务执行期间出现错误或故障,则所有更改都会回滚到事务开始时的状态。这确保了数据的完整性和一致性。

在这里插入图片描述

1.2、MySQL 5.7和8.0的历史背景

MySQL 5.7是MySQL的一个稳定版本,于2016年发布。这个版本引入了很多新特性和改进,包括更好的性能、可扩展性和安全性。其中一些特性包括:JSON函数支持、InnoDB引擎优化、查询性能提升等等。

MySQL 8.0是MySQL的最新版本,于2018年发布。该版本引入了一系列新特性和改进,包括更好的性能、可扩展性和安全性。其中一些特性包括:支持原生的JSON数据类型、更强的加密功能、优化的SQL执行计划等等。此外,MySQL 8.0还通过支持分析和自动处理数据集合,提高了对大数据和云架构的支持。

MySQL 5.7和8.0都在继续提高MySQL作为开源关系型数据库管理系统的性能、功能和安全性。与此同时,MySQL也在不断适应和应对现代数据操作的需求和挑战。

二、MySQL 8.0的新功能

2.1、更好的安全性

MySQL 8.0拥有更好的安全性,其主要体现在以下方面:

  1. 更强的密码策略:MySQL 8.0 引入了新的密码策略,包括密码过期、强密码选项、密码复杂度检查等。这些功能可以确保用户密码的安全性,减少恶意攻击的风险。
  2. 改进的加密功能:MySQL 8.0 支持 TLS 1.3 加密协议,提供更高级别的安全性和性能。此外,MySQL 8.0 还支持 SHA-256 和 SHA-512 哈希加密算法,提供更好的数据安全性。
  3. 权限管理改进:MySQL 8.0 引入了更细粒度的权限管理,允许管理员更好地控制用户的访问权限。这可以防止未经授权的访问和恶意操作。
  4. 安全审计日志:MySQL 8.0 可以在安全审计日志中记录重要事件,如登录失败、DDL 操作、特权命令执行等,以便管理员监控数据库的安全状况。
  5. 更好的默认配置:MySQL 8.0 默认关闭远程 root 登录、空密码认证和匿名用户等不安全的配置,从而降低了数据库的攻击面。

MySQL 8.0 的安全性得到了大幅提升,可以更好地保护用户的数据和业务。

2.2、更高的性能

MySQL 8.0通过优化查询处理、存储引擎、缓存机制等方面的性能,使得其具有更高的执行效率和更好的扩展性,满足了对高性能数据库的需求。

  1. 改进了查询优化器。MySQL 8.0引入了Cost Model和Join Buffer Optimization等新的优化技术,提高了查询的执行效率。同时还支持更多的索引类型和算法,例如全文索引、Hash索引等。
    2.增强了InnoDB存储引擎。MySQL 8.0使用了新的版本的InnoDB存储引擎,支持了更多的功能,例如多版本并发控制(MVCC)、空间数据类型、在线DDL等。这些改进使得InnoDB在处理大量并发查询时具有更高的性能表现。
  2. 支持更多的并行操作。MySQL 8.0支持更多的并行操作,例如并行复制、并行查询等。这样可以充分利用服务器上的多核处理器,提高系统的并发性能。
  3. 引入了新的缓存机制。MySQL 8.0引入了新的缓存机制,例如Query Cache和InnoDB Buffer Pool等。这些缓存机制可以加速查询的处理速度,减少磁盘I/O和网络传输的开销,提高系统的响应速度。
  4. 增强了大事务处理能力。MySQL 8.0增强了对大事务的处理能力,能够更好地处理大量的并发事务,并且支持了更高的事务并发度,提高系统的吞吐量。

2.3、更好的可扩展性

MySQL 8.0通过增加分区表功能、支持更多的集群方案、引入新的数据类型等方面的改进,使得它具有更好的可扩展性和可用性,能够更好地满足现代应用对高可扩展性数据库的需求。

  1. 增加了分区表功能。MySQL 8.0引入了分区表功能,可以将表数据按照一定的规则划分成多个分区,每个分区可以单独管理和查询。这样可以提高大型表的查询效率,并且能够更好地利用多核处理器和存储设备,提高系统的吞吐量。
  2. 支持更多的集群方案。MySQL 8.0支持更多的集群方案,例如MySQL InnoDB Cluster、MySQL Group Replication等。这些方案可以将多个MySQL实例组成一个集群,提高了系统的可用性和可扩展性。
  3. 引入了新的数据类型。MySQL 8.0引入了新的数据类型,例如JSON、GIS等。这些数据类型可以更好地满足现代应用的需求,例如Web开发、地理信息系统等。
  4. 改进了多线程处理能力。MySQL 8.0通过改进多线程处理能力,以及增强锁机制和事务处理能力等方面的功能,使得它具有更好的并发性能和可扩展性。
  5. 支持更多的分布式存储方案。MySQL 8.0支持更多的分布式存储方案,例如MySQL Fabric、MySQL Router等。这些方案可以将多个MySQL实例组成一个分布式数据库,提高了系统的可扩展性和容错能力。

2.4、JSON支持

MySQL 8.0引入了新的JSON数据类型,并且添加了许多内置函数来支持JSON数据的操作。通过引入新的JSON数据类型和内置函数,以及支持JSON路径表达式、JSON索引和JSON检查约束等特性,使得开发者能够更好地存储、查询和操作JSON数据。

MySQL 8.0支持以下JSON相关特性:

  1. JSON数据类型:MySQL 8.0可以将JSON格式的数据存储在JSON类型的列中,这样就能够更好地存储和查询JSON数据。
  2. JSON函数:MySQL 8.0提供了许多JSON函数,例如JSON_OBJECT和JSON_ARRAY等,这些函数可以用于创建和操作JSON对象和数组。
  3. JSON路径表达式:MySQL 8.0支持JSON路径表达式,这种语法允许开发者使用点号和方括号来访问JSON数据的属性和元素。
  4. JSON索引:MySQL 8.0支持在JSON列上创建索引,这样就可以更快地查询JSON数据。
  5. JSON检查约束:MySQL 8.0还支持在JSON列上添加检查约束,这样可以确保JSON数据符合特定的格式要求。

使用示例:

(1)创建表格:

CREATE TABLE `books` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `details` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

(2)插入数据:

INSERT INTO `books` (`title`, `author`, `details`) VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', '{"pages": 180, "publisher": "Scribner", "year": 1925}');
INSERT INTO `books` (`title`, `author`, `details`) VALUES ('To Kill a Mockingbird', 'Harper Lee', '{"pages": 336, "publisher": "J.B. Lippincott & Co.", "year": 1960}');
INSERT INTO `books` (`title`, `author`, `details`) VALUES ('1984', 'George Orwell', '{"pages": 328, "publisher": "Secker & Warburg", "year": 1949}');

(3)查询所有书籍的详情:

SELECT id, title, details FROM books;

(4)查询所有书籍的页数总和:

SELECT SUM(JSON_EXTRACT(details, '$.pages')) AS total_pages FROM books;

(5)查询出版年份为1949年的书籍:

SELECT title, author FROM books WHERE JSON_EXTRACT(details, '$.year') = '1949';

(6)更新某本书的作者信息:

UPDATE books SET details = JSON_SET(details, '$.author', 'Ernest Hemingway') WHERE id = 1;

(7)删除某个键值对:

UPDATE books SET details = JSON_REMOVE(details, '$.publisher') WHERE id = 2;

三、MySQL 8.0的重要改进

3.1、更严格的数据类型检查

MySQL 8.0引入了更严格的数据类型检查,可以通过以下两种方式来实现:

(1)STRICT_TRANS_TABLES 模式。

在 MySQL 8.0 中,STRICT_TRANS_TABLES 模式已成为默认模式之一。在此模式下,MySQL 不会进行隐式转换和截断,而是执行更严格的数据类型检查。如果存在任何不符合规范的数据,则会返回错误。

(2)数据类型检查增强功能。MySQL 8.0 还引入了一些新的数据类型检查增强功能,包括:

  • 禁止使用非字符串值进行字符串操作。
  • 禁止将字符串转换为数字时忽略其非数字字符。
  • 禁止将数字转换为字符串时指定精度和小数位数

这些增强功能可以帮助开发人员编写更健壮的代码,并减少由于数据类型错误引起的潜在问题。

示例:

CREATE TABLE test (id INT, value VARCHAR(10));
INSERT INTO test VALUES (1, '12345');
SELECT * FROM test WHERE value < 100;

在 MySQL 8.0 中,上面的查询会返回以下错误:

Error Code: 1292. Truncated incorrect DOUBLE value: '12345'

这是因为 MySQL 8.0 不允许将字符串值与数字进行比较,并且在严格模式下,它不会进行隐式转换或截断。因此,如果您想将字符串值与数字进行比较,您需要显式地将其转换为数字。例如:

SELECT * FROM test WHERE CAST(value AS SIGNED) < 100;

3.2、其他重要的改进和变化

  1. MySQL 8.0在多方面都有了性能上的改进。其中最为显著的是在读写压力下的性能明显提升,这主要得益于InnoDB存储引擎的高度优化以及新功能如“多线程复制”等。
  2. MySQL 8.0 在安全方面有了很大改进,引入了更严格的密码策略、支持用户管理和审核等功能,并支持加密连接和数据加密。
  3. MySQL 8.0 对JSON格式的支持进行了改进,包括更好的JSON函数、更高效的索引查询以及更好的存储和检索能力。
  4. MySQL 8.0还引入了许多其他新特性,如更好的批量操作、更灵活的自增列、更好的窗口函数、更好的空间数据支持等。

MySQL 8.0带来了很多重要的改进和变化,这些改进和变化都有助于提高MySQL的性能、安全性和可靠性。

四、为何直接从5.7升级到8.0

4.1、技术差距和功能改进

MySQL 8.0在性能、安全性、JSON支持、复制和集群等方面都有很大的改进和扩展,使得它成为更强大、更灵活的数据库管理系统。

  1. 更好的性能:MySQL 8.0比5.7提供更好的性能,包括更快的查询速度和更低的延迟。这得益于对内部数据结构和算法的改进,以及对多核CPU的更好支持。
  2. 更强大的安全性:MySQL 8.0增加了一些新的安全特性,包括密码安全策略、权限管理的增强、支持TLS1.3加密协议等。
  3. 更多的JSON支持:MySQL 8.0增强了对JSON数据类型的支持,并增加了许多针对JSON数据的新函数和操作符。此外,还引入了新的JSON路径表达式语言,使得在JSON文档中查找和修改数据更容易。
  4. 更好的复制和集群功能:MySQL 8.0新增了多个复制和集群相关功能,包括增量备份、自动故障转移、自动sharding等。
  5. 更好的开发者体验:MySQL 8.0增加了一些新的开发者工具和API,包括Python MySQL X DevAPI、MySQL Shell、MySQL Router等,这些工具可以帮助开发者更方便地使用MySQL。

4.2、推广和使用最新的数据库技术

Mysql从5.7升级到8.0是为了推广和使用最新的数据库技术,以提高性能、安全性和可靠性。MySQL 8.0增加了许多新功能和改进,例如更好的JSON支持、更快的查询执行速度、更强大的密码策略和更好的数据复原能力。此外,MySQL 8.0还可以通过使用InnoDB引擎中的新功能来提高数据一致性和可靠性。因此,升级到MySQL 8.0对于那些想要利用最新技术优势的组织和个人来说是必要的。

五、从5.7升级到8.0的注意事项

(1)备份数据。在从5.7升级到8.0的过程中,备份数据是非常重要的一步,以防止数据丢失或损坏;建议在升级之前进行多次备份,以确保有紧急情况下的备份文件。在备份完成后,通过运行一些测试查询来验证备份文件的完整性和准确性。

(2)确认系统要求。检查硬件和软件的兼容性:确保设备符合8.0版本的最低硬件和软件要求。硬件上要求至少 512MB 的内存、至少 1GHz 的 CPU、至少 2GB 的磁盘空间;软件上如果是Java 运行环境(JRE)需要 Java 8 或更高版本支持,如果是C++需要使用 C++ 编译器编译等。

(3)需要进行测试以确保数据和应用程序的兼容性。在升级后,需要监控数据库的性能并及时处理问题。尤其是在高负载和大数据量的情况下,需要注意性能和稳定性的问题。

六、总结

6.1、MySQL 8.0对于数据管理带来的改变

MySQL 8.0对于数据管理带来了很多改变,使得MySQL成为一个更强大、更灵活和更易于使用的数据库管理系统。

  1. MySQL 8.0提供了更好的JSON支持,包括更快的JSON函数和表达式,以及新的JSON数据类型和索引。
  2. MySQL 8.0引入了窗口函数,这些函数可以用来计算分析函数的结果并根据指定的排序规则进行分组。
  3. MySQL 8.0提供了更好的空间数据支持,包括新的空间数据类型和函数,例如ST_Distance_Sphere函数,它可以计算两个点之间的球面距离。
  4. MySQL 8.0提供了更好的安全性,包括更安全的默认配置、更严格的密码策略、更多的SSL/TLS选项等。
  5. MySQL 8.0提供了更好的性能,包括新的索引算法、更好的查询优化器、更好的并发控制等。

6.2、未来MySQL发展的趋势

MySQL是目前最受欢迎的关系型数据库管理系统之一,它在企业和个人项目中广泛使用。

MySQL未来的发展趋势是云化、自动化、渐进式数据处理、更严格的安全性和全球化。

  1. 云化:MySQL将更多地朝向云化方向发展,包括提供更好的云服务、集成云计算平台等。这意味着MySQL将更加注重可伸缩性、高可用性以及安全性。
  2. 自动化:MySQL将更多地朝向自动化方向发展,例如自动扩展、自动备份、自动调优等。这将使MySQL的使用更简单、更高效,同时降低维护成本。
  3. 渐进式数据处理:MySQL将更加注重渐进式数据处理,这意味着MySQL可以处理更大的数据集,并且可以更快地进行查询和分析。
  4. 更严格的安全性:MySQL将更加注重安全性,包括更加严格的密码策略、更多的加密选项、更好的审计功能等。这将使MySQL更加适用于敏感数据的存储和处理。
  5. 全球化:MySQL将更多地朝向全球化方向发展,包括更好的本地化支持、更好的多语言支持等。这将使MySQL在国际市场上更有竞争力。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CSS3系列】第七章 · 过渡和动画

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

群晖nas(DS423+)和百度云盘互相自动备份

群晖nas提供了云同步功能&#xff0c;使用该功能&#xff0c;可以将百度云盘和群晖nas设置成互为备份&#xff0c;这样我们nas上的的重要数据就有多了一层保护。 通过设置&#xff0c;可以将nas上的某个目录同步到百度云盘的一个目录中&#xff0c;同步的方向可以自行定义&…

五、浅析[ElasticSearch]底层原理与分组聚合查询

目录 一、ElasticSearch文档分值_score计算底层原理1.boolean model2.relevance score算法2、分析一个document上的_score是如何被计算出来的 二、分词器工作流程1.character filter、tokenizer、token filter2、内置分词器的简单介绍3、定制分词器3.1默认的分词器--standard3.…

Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务

目录 一、事务的相关配置 1. 添加测试标签 2. 添加对应方法 3. 测试 二、事务的传播行为 三、事务的隔离级别 四、注解配置声明式事务 1. 注册事务注解驱动 2. 加上注解 3. 配置类代替xml文件中的注解事务支持 4. 测试 往期专栏&文章相关导读 1. Maven系列专栏…

【三维编辑】Editing Conditional Radiance Fields 编辑条件辐射场

Editing Conditional Radiance Fields&#xff08;ICCV 2021&#xff09; 作者单位&#xff1a;Steven Liu, Xiuming Zhang, Zhoutong Zhang, Richard Zhang MIT, Adobe Research, CMU 代码地址&#xff1a;https://github.com/stevliu/editnerf 文章目录 摘要前言一、相关工作…

23. 数据结构之位图

前言 之前在讲散列表的时候&#xff0c;提到过位图的概念。位图&#xff08;Bitmap&#xff09;作为一种特殊的数据结构&#xff0c;它使用一系列位来表示数据&#xff0c;每个位只有两个状态&#xff08;0或1&#xff09;。由于它的高效性和节省空间的特性&#xff0c;位图在…

MySQL事务相关笔记

杂项 InnoDB最大特点&#xff1a;支持事务和行锁&#xff1b; MyISAM不支持事务 介绍 一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元&#xff0c;只有当事务中的所有操作都正常执行完了&#xff0c;整个事务才会被提交给数据库。事务有如下特性…

使用传统图像处理算法+机器学习进行shadow detection

前言 阴影是图像中常见的现象&#xff0c;它们对于场景理解和分析非常重要。由于阴影区域通常比较暗淡&#xff0c;而且与周围物体区别较大&#xff0c;因此在图像处理和计算机视觉领域中&#xff0c;阴影检测是一个重要的研究方向。传统的阴影检测算法通常基于阈值或边缘检测…

SVM算法的介绍

一、SVM算法的介绍 1.什么是SVM算法&#xff1f; SVM&#xff08;Support Vector Machine&#xff09;是一种常见的监督学习算法&#xff0c;用于进行二分类或多分类任务。它的主要思想是找到一个最优的超平面&#xff0c;将不同类别的样本分隔开。 超平面最大间隔介绍&#…

人体姿态估计技术的理解(Human Pose Estimination)

本人毕设题目是人体姿态估计技术的相关课题&#xff0c;本人按照自己对人体姿态估计技术的学习和理解进行论述&#xff0c;如有不足&#xff0c;请大家指正&#xff01;&#xff01;&#xff01; 首先讨论一个问题&#xff1a;什么是姿态估计? “姿势估计?……姿势这个词对…

opencv如何使用GPU的三种方法

我在工作实验涉及到图像和视频处理时&#xff0c;通常使用opencv提供的库来做处理&#xff0c;虽然OpenCV是一个广泛使用的库&#xff0c;它提供了丰富的功能和工具。然而&#xff0c;有时候在处理大量图片或视频时&#xff0c;我们可能会面临速度受限的问题。 opencv执行图像…

【C/C++】之内存管理(超详细练气篇)

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

基本 SQL 命令 、重要的 SQL命令、SQL 约束 及 SQL语句 的 执行顺序

学习目标&#xff1a; 学习目标如下&#xff1a; SQL语句执行顺序 学习内容&#xff1a; 基本 SQL 命令&#xff1a; FROMONJOINWHEREGROUP BYAGG_FUNCWITHHAVINGSELECT 从数据库中提取数据UNIONDISTINCTORDER BY 排序LIMIT 重要的sql命令&#xff1a; 1、SELECT - 从数据…

Finalshell安全吗?Xshell怎么样?

文章目录 一、我的常用ssh连接工具二、Xshell2.1 下载&#xff1a;认准官网2.2 Xshell 配置2.3 Xftp和WinSCP 一、我的常用ssh连接工具 之前讲过&#xff1a; 【服务器】远程连接选SSH&#xff08;PUTTY、Finalshell、WinSCP&#xff09; 还是 远程桌面&#xff08;RDP、VNC、…

解决 CentOS/Alma 安装 libpcap-devel 报错:No match for argument: libpcap-devel

环境&#xff1a;Alma 8.5、Centos 7.x 解决方案 Linux 安装软件的时候&#xff0c;需要 libpcap-devel 这个组件&#xff0c;执行命令&#xff1a;yum install libpcap-devel &#xff0c;然后报错如下&#xff1a; Last metadata expiration check: 0:05:24 ago on Mon 12…

【算法】数学相关知识总结

文章目录 gcd 和 lcm取模运算 %求一个点和一片矩形区域之间的最短距离 本文用于记录一些关于算法题中偶尔被使用到的数学相关知识。 gcd 和 lcm gcd 和 lcm 分别是 最大公约数&#xff08;Greatest common divisor&#xff09; 和 最小公因数&#xff08;Least Common Multip…

机器学习——决策树算法

一、实验目的 掌握如何实现决策树算法&#xff0c;用并决策树算法完成预测。 二、实验内容 本次实验任务我们使用贷款申请样本数据表&#xff0c;该数据表中每列数据分别代表ID、年龄、高薪、有房、信贷情况、类别&#xff0c;我们根据如下数据生成决策树&#xff0c;使用代…

二值化的mask生成yolov5-7.0的实例分割训练标签

背景&#xff1a;要用yolov5-7.0训练分割&#xff0c;这里使用自己的数据&#xff0c;mask是二值化的数据&#xff0c;要先转换成COCO格式&#xff0c;这里用imantics实现。 详见&#xff1a;https://zhuanlan.zhihu.com/p/427096258 截取部分代码如下图&#xff0c;读取image图…

ninja的简单使用

文章目录 Ninja安装windows环境Linux环境 入门使用与CMake一起使用 Ninja安装 windows环境 问题的解决通常有多种方法。按照结果的好坏程度&#xff0c;可以将解决方法简单的划分为&#xff0c;上中下三个层次&#xff0c;见:为什么谋士总喜欢提上中下三策&#xff1f; 在w…

C++静态和动态链接库导出和使用

1、简介 代码开发过程中会遇到很多已有的函数库&#xff0c;这些函数库是现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。 本质上来说库是一种…