MongoDB实战面试指南:常见问题一网打尽

在这里插入图片描述

码到三十五 : 个人主页

心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 !


MongoDB是一款流行的非关系型数据库,以其高效、可扩展的特性受到开发者的青睐。了解MongoDB的架构、存储引擎和数据结构,对于构建高性能、可靠的数据库解决方案至关重要。以下的问题将测试你对MongoDB基础知识的掌握,以及在实际应用中处理数据一致性和事务的能力。无论你是新手还是资深大佬,这些问题都将帮助你深化对MongoDB的理解。

目录

      • 1. 问题:MongoDB是什么?它与关系型数据库有何不同?
      • 2. 问题:MongoDB中的索引是什么?它们的作用是什么?
      • 3. 问题:如何在MongoDB中执行聚合操作?
      • 4. 问题:MongoDB的复制集是什么?它有哪些优点?
      • 5. 问题:MongoDB的分片是什么?它如何工作?
      • 6. 问题:在MongoDB中如何处理事务?
      • 7. 问题:MongoDB中的`$lookup`是什么?如何使用它?
      • 8. 问题:如何优化MongoDB的查询性能?
      • 9. 问题:MongoDB中的`$set`和`$setOnInsert`操作符有什么区别?
      • 10. 问题:MongoDB中的地理空间索引是什么?如何使用它们进行地理空间查询?
      • 11. 问题:MongoDB中的文本索引是什么?如何使用它们进行全文搜索?
      • 12. 问题:MongoDB中的`$group`聚合操作符有什么作用?如何使用它进行分组操作?
      • 13. 问题:在MongoDB中如何执行原子性操作?
      • 14. 问题:MongoDB中的投影是什么?如何使用它?
      • 15. 问题:MongoDB中的`$elemMatch`操作符有什么作用?如何使用它?
      • 16. 问题:MongoDB中的更新操作符有哪些?它们的作用是什么?
      • 17. 问题:MongoDB中的分片(Sharding)是什么?它如何帮助扩展数据库?
      • 18. 问题:MongoDB中的复制集(Replica Set)是什么?它如何提供高可用性?
      • 19. 问题:MongoDB中的索引类型有哪些?它们各自适用于什么场景?
      • 20. 问题:MongoDB的存储引擎是什么?它有哪些特点?
      • 21. 问题:MongoDB的架构是怎样的?它如何支持高并发和可扩展性?
      • 22. 问题:MongoDB中的数据结构是怎样的?它支持哪些数据类型?
      • 23. 问题:MongoDB中的集合(Collection)和文档(Document)是什么?它们之间有什么关系?
      • 24. 问题:MongoDB中的索引是如何工作的?索引对查询性能有什么影响?
      • 25. 问题:MongoDB如何处理数据一致性和事务?
      • 26. 问题:MongoDB的写关注(Write Concern)是什么?它如何影响数据持久性?
      • 27. 问题:MongoDB的读偏好(Read Preference)是什么?它如何影响查询性能和数据一致性?
      • 28. 问题:请描述MongoDB中的聚合(Aggregation)操作,并给出一个简单的例子。

1. 问题:MongoDB是什么?它与关系型数据库有何不同?

答案:MongoDB是一个基于文档的NoSQL数据库,它使用BSON(一种类似JSON的二进制格式)来存储数据。与关系型数据库相比,MongoDB没有固定的数据模式,支持非结构化数据的存储,且水平扩展性强。MongoDB更适合于需要快速迭代开发、数据模型经常变动的应用场景。

2. 问题:MongoDB中的索引是什么?它们的作用是什么?

答案:MongoDB中的索引是一种数据结构,它允许数据库系统不必扫描整个集合,而是直接定位到满足查询条件的文档。索引可以大大提高查询性能。MongoDB支持多种类型的索引,如单字段索引、复合索引、多键索引等。

3. 问题:如何在MongoDB中执行聚合操作?

答案:MongoDB提供了聚合管道(aggregation pipeline)来执行聚合操作。聚合管道是一系列的数据处理阶段,每个阶段都会对输入的数据集进行某种处理,然后输出到下一个阶段。常见的聚合操作包括分组、过滤、排序、投影和计算等。

4. 问题:MongoDB的复制集是什么?它有哪些优点?

答案:MongoDB的复制集是一组维护相同数据集的mongod服务实例。复制集提供了数据冗余和高可用性,当主节点发生故障时,可以自动切换到其他可用的节点上。此外,复制集还可以提高读取性能,因为客户端可以从多个节点上并行读取数据。

5. 问题:MongoDB的分片是什么?它如何工作?

答案:MongoDB的分片是将数据集分布在多个MongoDB实例上的过程。分片可以提高系统的可伸缩性和性能,因为数据可以分布在多个服务器上,每个服务器只处理部分数据。MongoDB使用分片键来确定如何将文档分配给特定的分片。当执行查询时,MongoDB会根据分片键将查询路由到相应的分片上。

6. 问题:在MongoDB中如何处理事务?

答案:MongoDB从4.0版本开始支持多文档事务。事务是一组必须全部成功或全部失败的操作。MongoDB使用两阶段提交协议来处理事务,确保数据的完整性和一致性。在MongoDB中,可以使用session对象来管理事务的边界,并使用startTransactioncommitTransactionabortTransaction方法来控制事务的开始、提交和中止。

7. 问题:MongoDB中的$lookup是什么?如何使用它?

答案$lookup是MongoDB聚合管道中的一个阶段,它用于执行左外连接操作。$lookup可以从另一个集合中获取与输入文档相关联的文档,并将它们合并到输出文档中。使用$lookup时,需要指定要连接的集合、连接条件和输出字段等参数。例如,可以使用$lookup将订单集合中的订单与库存集合中的商品进行关联查询。

8. 问题:如何优化MongoDB的查询性能?

答案:优化MongoDB的查询性能可以从多个方面入手。首先,确保为常用的查询字段创建适当的索引以提高查询速度。其次,避免使用全表扫描和不必要的投影操作来减少数据传输量。此外,可以使用查询分析器(如explain()方法)来分析查询计划并找出性能瓶颈。最后,定期清理和压缩数据库以释放存储空间并提高读写性能。

9. 问题:MongoDB中的$set$setOnInsert操作符有什么区别?

答案:在MongoDB中,$set操作符用于更新文档中的字段。如果字段不存在,$set将创建该字段并将其值设置为指定的值。如果字段已存在,$set将更新该字段的值。而$setOnInsert操作符仅在upsert操作为true且导致插入新文档时才有效。如果新文档被插入,$setOnInsert将设置字段的值;如果现有文档与查询条件匹配,则不会进行任何更改。

10. 问题:MongoDB中的地理空间索引是什么?如何使用它们进行地理空间查询?

答案:MongoDB支持地理空间索引,允许用户高效地执行地理空间查询,如查找点、线和多边形之间的空间关系。MongoDB提供了2dsphere2dgeoHaystack等类型的地理空间索引。其中,2dsphere索引用于地球表面的地理空间数据,支持经纬度坐标和GeoJSON格式。使用地理空间索引时,可以使用$near$geoWithin$geoIntersects等操作符来执行地理空间查询。

11. 问题:MongoDB中的文本索引是什么?如何使用它们进行全文搜索?

答案:MongoDB中的文本索引用于支持全文搜索功能。文本索引可以包含一个或多个字段,并为这些字段中的文本内容创建索引。创建文本索引后,可以使用$text操作符在索引字段上执行全文搜索查询。此外,还可以使用$meta操作符来获取有关文本搜索结果的元数据,如搜索得分和匹配项的高亮显示。

12. 问题:MongoDB中的$group聚合操作符有什么作用?如何使用它进行分组操作?

答案:在MongoDB中,我们使用聚合管道的$group阶段来进行分组操作。$group阶段将输入文档组合到具有共同值的组中,并为每个组计算聚合值。在$group阶段中,我们需要指定一个分组标识符(通常是一个或多个字段的组合),以及要计算的聚合表达式(如计数、求和、平均值等)。例如,我们可以使用$group阶段按类别对销售数据进行分组,并计算每个类别的总销售额。

然而,如果你确实想要按照某个字段的值进行分组并获取每个组的文档列表(类似于SQL中的GROUP BY),那么你需要使用MongoDB的聚合管道并结合$group$push操作符来实现。首先使用$group来分组文档,并使用$push将每个组的文档添加到一个数组中。然后你可以使用$unwind来拆分数组中的文档,以便进一步处理或输出。

但请注意,上述描述中的“按某个字段的值进行分组并获取每个组的文档列表”并不是MongoDB聚合管道的典型用法。通常情况下,我们使用聚合管道来进行更复杂的聚合计算和数据转换任务,而不是简单地按字段分组并获取文档列表。对于简单的分组和文档列表获取任务,可能需要考虑其他方法或数据结构来更有效地实现。

13. 问题:在MongoDB中如何执行原子性操作?

答案:MongoDB中的大多数写操作(如插入、更新和删除)都是单个文档级别的原子操作。这意味着当单个文档被修改时,该修改是原子的。然而,对于跨多个文档的操作,MongoDB本身不提供多文档事务的原子性保证(在MongoDB 4.0之前的版本中)。从MongoDB 4.0开始,MongoDB引入了多文档事务的功能,允许用户在多个文档上执行原子性操作。通过使用事务边界(如session.startTransaction()session.commitTransaction()session.abortTransaction()),用户可以确保一系列操作要么全部成功提交,要么全部回滚撤销,从而保证操作的原子性。需要注意的是,在使用事务时需要谨慎处理并发和隔离级别的问题以避免潜在的冲突和数据不一致性。

14. 问题:MongoDB中的投影是什么?如何使用它?

答案:在MongoDB中,投影指的是在查询操作中指定返回哪些字段的过程。使用投影可以减少从数据库传输到客户端的数据量,从而提高查询性能。在查询语句中,可以使用投影操作符(如{ field1: 1, field2: 0 })来指定要返回的字段。其中,1表示包含该字段,0表示排除该字段。例如,如果我们只想返回文档中的nameage字段,可以使用以下查询语句:db.collection.find({}, { name: 1, age: 1 })

需要注意的是,_id字段是默认包含的,除非显式地将其排除(如{ _id: 0 })。此外,投影操作符不能与$text查询操作符一起使用。

15. 问题:MongoDB中的$elemMatch操作符有什么作用?如何使用它?

答案:MongoDB中的$elemMatch操作符用于在嵌套数组字段中查询满足多个条件的元素。当数组字段中的元素是文档时,$elemMatch允许我们指定多个查询条件,并只返回满足所有条件的数组元素。使用$elemMatch时,需要在查询语句中指定数组字段名和包含查询条件的对象。例如,如果我们有一个包含嵌套文档的数组字段items,每个文档都有pricequantity字段,我们可以使用以下查询语句来查找价格大于10且数量小于5的项:db.collection.find({ items: { $elemMatch: { price: { $gt: 10 }, quantity: { $lt: 5 } } } })

需要注意的是,如果不使用$elemMatch,而是直接在数组字段上指定多个查询条件(如{ items.price: { $gt: 10 }, items.quantity: { $lt: 5 } }),则查询将选择数组字段中包含满足任一条件的元素的文档,而不是同时满足所有条件的元素。

16. 问题:MongoDB中的更新操作符有哪些?它们的作用是什么?

答案:MongoDB提供了多个更新操作符,用于在更新文档时执行不同的操作。以下是一些常用的更新操作符及其作用:

  • $set:设置字段的值。如果字段不存在,将创建该字段并将其值设置为指定的值;如果字段已存在,将更新该字段的值。这是最常用的更新操作符之一。
  • $unset:删除指定的字段。如果字段不存在,则不执行任何操作;如果字段存在,则将其从文档中删除。
  • $inc:增加或减少字段的值。通常用于更新数字类型的字段,如计数器或评分。如果字段不存在,将创建该字段并将其值设置为指定的增量;如果字段已存在且为数字类型,则将其值增加或减少指定的增量。需要注意的是,使用$inc时应该确保字段的类型为数字,否则可能会导致错误或不可预测的结果。

17. 问题:MongoDB中的分片(Sharding)是什么?它如何帮助扩展数据库?

答案:MongoDB中的分片是一种将数据分布在多个服务器(称为分片)上的方法,以支持巨大的数据存储和处理需求。通过分片,MongoDB可以将数据集分布在多个服务器上,从而实现水平扩展。每个分片都存储数据集的一个子集,并且可以部署在不同的服务器上。MongoDB使用分片键(Shard Key)来确定数据应该存储在哪个分片上。当查询或更新操作时,MongoDB会根据分片键将请求路由到相应的分片上进行处理。

分片可以帮助扩展数据库的性能和存储容量。通过将数据分布在多个服务器上,可以并行处理更多的请求,提高吞吐量。此外,当数据集增长时,可以添加更多的分片来扩展存储容量,而无需更改应用程序代码。MongoDB的自动分片和均衡功能可以确保数据在各个分片之间均匀分布,避免单点故障和性能瓶颈。

需要注意的是,分片并不总是适合所有应用程序。对于较小的数据集或低负载的应用程序,使用单个MongoDB实例可能更简单且足够满足需求。分片引入了额外的复杂性和管理开销,因此在决定使用分片之前应该仔细评估应用程序的需求和预期的数据增长。

18. 问题:MongoDB中的复制集(Replica Set)是什么?它如何提供高可用性?

答案:MongoDB中的复制集是一组维护相同数据集的MongoDB实例。复制集提供了数据冗余和高可用性。在复制集中,一个实例被指定为主节点(Primary),负责处理写入操作,并将数据更改复制到其他实例(称为次要节点或Secondary)。如果主节点发生故障,复制集中的其他节点可以选举一个新的主节点,以确保数据的可用性和一致性。

复制集通过异步复制数据来提供高可用性。当主节点处理写入操作时,它会将数据更改记录在其操作日志(Oplog)中,并将这些更改异步复制到次要节点。次要节点可以应用于其本地数据集,以保持与主节点的同步。这种异步复制机制允许主节点继续处理写入操作,即使次要节点暂时不可用或网络延迟较高。

除了提供高可用性外,复制集还可以用于读取扩展。通过将读取请求分发到次要节点上,可以减轻主节点的负载并提高读取性能。MongoDB提供了读取偏好(Read Preference)设置,允许应用程序指定从哪个节点读取数据。例如,可以设置读取偏好为“最近”(Nearest),让应用程序从最近的可用节点读取数据,以减少网络延迟。

需要注意的是,复制集需要适当配置和管理以确保其正常运行和数据一致性。例如,需要定期监控节点的状态和性能、备份数据、处理故障转移和恢复等任务。此外,还需要考虑节点间的网络延迟和带宽限制等因素对数据复制和同步的影响。

19. 问题:MongoDB中的索引类型有哪些?它们各自适用于什么场景?

答案:MongoDB支持多种类型的索引,每种索引都适用于不同的查询模式和数据结构。以下是一些常见的MongoDB索引类型及其适用场景:

  • 单字段索引(Single Field Index):这是最基本的索引类型,用于加速对单个字段的查询。适用于经常根据某个字段进行查询或排序的场景。
  • 复合索引(Compound Index):复合索引包含多个字段,用于加速基于多个字段的查询条件。适用于需要根据多个字段进行过滤、排序或聚合的场景。复合索引的字段顺序对查询性能有影响,应该根据查询模式和数据分布来选择合适的字段顺序。
  • 多键索引(Multikey Index):多键索引用于数组字段,为数组中的每个元素创建索引条目。适用于查询数组字段中包含特定值的文档的场景。例如,如果有一个包含用户标签的数组字段,可以使用多键索引来加速基于标签的查询。
  • 地理空间索引(Geospatial Index):地理空间索引用于存储和查询地理空间数据,如点、线和多边形。MongoDB提供了2dsphere、2d和geoHaystack等类型的地理空间索引,适用于不同的地理空间数据和应用场景。例如,可以使用地理空间索引来查询某个地理位置附近的点或查询两个地理位置之间的距离。
  • 文本索引(Text Index):文本索引用于支持全文搜索功能,允许用户在字符串字段中执行复杂的文本搜索查询。适用于需要执行全文搜索的场景,如搜索文章、产品描述或用户评论等文本内容。需要注意的是,文本索引是大小写不敏感的,并且会忽略标点符号和停用词(如“和”、“是”等常用词)。此外,文本索引还支持多种语言的文本搜索。
  • 哈希索引(Hashed Index):哈希索引使用哈希函数将字段值转换为哈希值,并为这些哈希值创建索引。适用于精确匹配查询的场景,如基于电子邮件地址或用户ID的查询。哈希索引可以确保索引的均匀分布,从而提高查询性能。但需要注意的是,哈希索引不支持范围查询和排序操作。

除了上述常见的索引类型外,MongoDB还支持其他类型的索引,如稀疏索引(Sparse Index)、唯一索引(Unique Index)和TTL索引(Time-To-Live Index)等。这些索引类型可以根据具体的应用场景和需求来选择和使用。需要注意的是,索引虽然可以提高查询性能,但也会增加写入操作的开销和存储空间的占用。因此,在创建索引时需要权衡查询性能和写入性能之间的平衡,并根据实际的数据量和查询负载来选择合适的索引策略。

20. 问题:MongoDB的存储引擎是什么?它有哪些特点?

答案:MongoDB的默认存储引擎是WiredTiger。WiredTiger是一个高性能、可扩展的存储引擎,支持ACID事务、压缩、加密和快照等功能。它使用基于B-tree的索引来提供高效的查询性能,并支持多种隔离级别和数据一致性模型。WiredTiger还提供了多种压缩算法和编码方式,以减少存储空间占用和提高I/O效率。此外,它还支持在内存中缓存热点数据,以提高读取性能。

21. 问题:MongoDB的架构是怎样的?它如何支持高并发和可扩展性?

答案:MongoDB采用分布式、面向文档的架构。其核心组件包括mongod进程(处理数据存储和查询)、mongos进程(作为查询路由器,用于分片环境)和配置服务器(存储分片元数据和配置信息)。MongoDB支持水平扩展,可以通过添加更多的mongod实例来增加存储容量和处理能力。在分片环境中,数据被分布在多个分片上,每个分片由多个副本集组成,以提供高可用性和数据冗余。MongoDB使用自动分片和负载均衡机制来确保数据在各个分片之间均匀分布,从而支持高并发访问和可扩展性。

22. 问题:MongoDB中的数据结构是怎样的?它支持哪些数据类型?

答案:MongoDB使用BSON(Binary JSON)格式来存储数据。BSON是一种二进制编码格式,支持存储丰富的数据类型,包括字符串、整数、浮点数、布尔值、数组、对象和日期等。MongoDB中的数据结构是面向文档的,每个文档都可以有不同的字段和值。字段名可以是字符串,值可以是任何BSON支持的数据类型。MongoDB还支持嵌套文档和数组字段,允许存储复杂的数据结构。此外,MongoDB还支持地理空间数据、二进制数据和正则表达式等特殊数据类型。

23. 问题:MongoDB中的集合(Collection)和文档(Document)是什么?它们之间有什么关系?

答案:在MongoDB中,集合(Collection)是一组文档的容器,类似于关系数据库中的表(Table)。文档(Document)是MongoDB中存储数据的基本单位,类似于关系数据库中的行(Row)。每个文档都是一个键值对的集合,其中键是字段名,值是字段值。字段值可以是任何BSON支持的数据类型。MongoDB中的集合是动态模式的,意味着同一个集合中的文档可以有不同的字段和结构。集合和文档之间的关系是包含与被包含的关系,一个集合可以包含多个文档,而每个文档都属于某个集合。

24. 问题:MongoDB中的索引是如何工作的?索引对查询性能有什么影响?

答案:MongoDB中的索引用于加速查询操作。索引是一种数据结构,它根据指定的字段值对数据进行排序和存储,以便快速定位到满足查询条件的文档。MongoDB支持多种类型的索引,包括单字段索引、复合索引、多键索引、地理空间索引和文本索引等。当执行查询操作时,MongoDB会根据查询条件选择合适的索引进行扫描,以减少需要扫描的文档数量并提高查询速度。索引对查询性能有显著影响,正确的索引策略可以大大提高查询效率,而错误的索引选择可能导致查询性能下降甚至无法执行查询。因此,在设计MongoDB数据库时需要根据查询模式和数据分布来选择合适的索引策略。

25. 问题:MongoDB如何处理数据一致性和事务?

答案:MongoDB在4.0版本之后引入了多文档事务支持,使得它在处理数据一致性方面有了显著的提升。事务可以确保一系列操作要么全部成功,要么全部失败,从而保证数据的一致性。MongoDB的事务遵循ACID原则(原子性、一致性、隔离性、持久性)。通过使用startTransactioncommitTransactionabortTransaction等命令,可以在MongoDB中执行事务操作。

然而,需要注意的是,虽然事务提供了更强的一致性保证,但它们也可能增加系统的复杂性和开销。因此,在设计应用程序时,需要仔细考虑是否真正需要事务,并权衡数据一致性和性能之间的平衡。

26. 问题:MongoDB的写关注(Write Concern)是什么?它如何影响数据持久性?

答案:MongoDB的写关注(Write Concern)是一种设置,用于定义写操作(如插入、更新和删除)的确认级别。它告诉MongoDB客户端,一个写操作必须满足什么条件才能被认为是成功的。不同的写关注级别会影响数据的持久性、性能和一致性。

MongoDB提供了多种写关注级别,如:

  • acknowledged: 默认的写关注级别。写操作完成后,MongoDB会返回一个确认信息给客户端。这种级别确保数据已经写入并持久化到主节点。
  • unacknowledged: 客户端发送写请求后,不等待MongoDB的确认就返回。这种级别性能最高,但可能会丢失数据。
  • majority: 写操作被复制到大多数数据节点后才返回确认。这种级别提供了更强的数据一致性保证。
  • journaled: 写操作被写入到主节点的日志文件中才返回确认。这种级别确保了数据的持久性。

27. 问题:MongoDB的读偏好(Read Preference)是什么?它如何影响查询性能和数据一致性?

答案:MongoDB的读偏好(Read Preference)是一种设置,用于定义客户端从哪个节点读取数据。它允许客户端在读取数据时权衡性能和一致性之间的平衡。MongoDB提供了多种读偏好设置,如:

  • primary: 默认设置。只从主节点读取数据。这种设置确保读取的数据是最新的,但可能受限于主节点的处理能力。
  • primaryPreferred: 首选从主节点读取数据,如果主节点不可用,则从次要节点读取。这种设置在保持数据相对新的同时提供了更好的可用性。
  • secondary: 只从次要节点读取数据。这种设置可以分担主节点的负载,但读取的数据可能不是最新的。
  • secondaryPreferred: 首选从次要节点读取数据,如果次要节点不可用或无法满足查询要求,则从主节点读取。这种设置在提供更高读取性能的同时保持了可用性。
  • nearest: 从网络延迟最低的节点读取数据,无论它是主节点还是次要节点。这种设置可以提供最快的读取性能,但可能牺牲数据一致性。

28. 问题:请描述MongoDB中的聚合(Aggregation)操作,并给出一个简单的例子。

答案:MongoDB中的聚合操作是一种处理数据并返回计算结果的功能强大的工具。它允许用户对数据进行分组、过滤、排序和计算等操作,从而生成汇总报告、统计数据或其他需要的信息。

一个简单的例子是使用$group$sum操作符来计算某个集合中每个类别的文档数量:

db.orders.aggregate([
  { $group: { _id: "$category", total: { $sum: 1 } } }
])

这个例子中,我们假设有一个名为orders的集合,其中包含订单信息,每个文档都有一个category字段表示订单类别。通过使用$group操作符,我们按照category字段对文档进行分组,并使用$sum操作符计算每个分组中的文档数量。结果将返回一个包含_id(即类别)和total(即该类别的文档数量)的文档列表。

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

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

相关文章

python 基础知识点(蓝桥杯python科目个人复习计划63)

今日复习内容:做题 例题1:蓝桥骑士 问题描述: 小蓝是蓝桥王国的骑士,他喜欢不断突破自我。 这天蓝桥国王给他安排了N个对手,他们的战力值分别为a1,a2,...,an,且按顺序阻挡在小蓝的前方。对于这些对手小…

剪辑设计软件如何跨系统使用?PC也能用Mac Final Cut

我猜你工作中,常常遇到这样那样的麻烦: 临时接手一个项目,之前的同事用Final Cut,而你是Windows系统; 临时有紧急需求要调整,而本地电脑却没有工作软件/性能不给力; 那这样的情况&#xff0c…

SSL证书如何实现数据加密传输?

在当前互联网的洪流中,用户对网站隐私与安全性的重视程度日益提升。为了确保用户信息和交易数据的安全传输,SSL证书在网络世界中扮演了关键角色。本文将深入解析SSL证书的核心功能及其重要作用。 1、SSL证书采用加密技术保障数据传输安全 通过应用公钥加…

Mysql 无法启动,mysql-bin.日志丢失删除处理

在linux操作系统中,当mysql无法启动时候,先看日志 2024-03-15T05:20:16.352075Z 0 [Warning] [MY-000081] [Server] option max_allowed_packet: unsigned value 107374182400 adjusted to 1073741824. 2024-03-15T05:20:16.352156Z 0 [Warning] [MY-010…

(008)Unity StateMachineBehaviour的坑

文章目录 StateMachineBehaviour同名函数的调用问题StateMachineBehaviour 的 OnState*、OnStateMachine* 的区别 StateMachineBehaviour同名函数的调用问题 1.如果脚本中,两个同名的函数都存在,那么两个函数都会被调用;如果只有其中一个同名…

IO流——字节流

常见字符集 标准ASCII码字符集 ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括英文、符号等标准ASCII码使用1个字节存储一个字符,首位是0,总共可表示128个字符 而对于国内而言&a…

橡胶工厂5G智能制造数字孪生可视化平台,推进橡胶工业数字化转型

橡胶5G智能制造工厂数字孪生可视化平台,推进橡胶工业数字化转型。随着信息技术的迅猛发展和智能制造的不断推进,数字化转型已成为制造业转型升级的重要方向。橡胶工业作为传统制造业的重要领域,正面临着产业升级和转型的迫切需求。橡胶5G智能…

计算机网络笔记(湖科大教书匠版本)

第一章、 ①三种交换方式 电路交换、分组交换、报文交换(被分组交换所取代) 1.电路交换:会一直占用通道,不适合计算机之间的数据通信 2.分组交换:通常我们把表示该数据的整块数据称为一个报文。 先把较长的报文划…

MySQL—redo log、undo log以及MVCC

MySQL—redo log、undo log以及MVCC 首先回忆一下MySQL事务的四大特性:ACID,即原子性、一致性、隔离性和持久性。其中原子性、一致性、持久性实际上是由InnoDB中的两份日志保证的,一份是redo log日志,一份是undo log日志&#xff…

Linux——基础指令

一、Linux目录结构 1、树形结构 Linux只有一个根目录 / ,所有文件都在它下面 2、Linux路径的描述方式 在Linux系统中,路径之间的层级关系,使用: / 来表示 eg: /usr/local/hello.txt 注意: 开头/表示根…

解决:黑马webpack视频中出现的问题总结

问题 1 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 解决 Webpack 中 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 问题 黑马AJAX-Node.js-Webpack教学视频(BV1MN411y7pw 其中P98)中webpack部分&#xff0c…

phpcms上传导致getshell详解及案例

一、环境 这里我根据大佬的文章将环境复原 phpcms上传导致getshell详解及案例 | 离别歌 回忆phpcms头像上传漏洞以及后续影响 | 离别歌 二、代码&#xff1a; php&#xff1a; <?php header("Content-Type:text/html; charsetutf-8"); require_once(pclzip…

Unload-labs

function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传的文件类型var allow_ext ".jpg|.png|.gif";//提取上传文件的类…

Pytorch学习 day10(L1Loss、MSELoss、交叉熵Loss、反向传播)

Loss loss的作用如下&#xff1a; 计算实际输出和真实值之间的差距为我们更新模型提供一定的依据&#xff08;反向传播&#xff09; L1Loss 绝对值损失函数&#xff1a;在每一个batch_size内&#xff0c;求每个输入x和标签y的差的绝对值&#xff0c;最后返回他们平均值 M…

python创建虚拟环境-Anaconda安装配置和使用

Anaconda提供了一个名为conda的包管理工具&#xff0c;可以方便地创建、管理和分享Python环境。用户可以根据自己的需要创建不同的环境&#xff0c;每个环境都可以拥有自己的Python版本、库和依赖项&#xff0c;这样就可以避免因为不同项目之间的依赖关系而导致的冲突问题。 一…

Vscode中关于Java的一些问题

前言 在使用Vscode的时候&#xff0c;总是会有这么一种感觉&#xff1a;有时得这样&#xff0c;有时得那样&#xff0c;这让我甚是困惑&#xff0c;于是写下来这篇解答文章 为什么java文件有时候会有class文件&#xff0c;有时候没有 在编写Java代码时&#xff0c;我会有一种…

【Java基础】IO流(二)字符集知识

目录 字符集知识 1、GBK字符集 2、Unicode字符集&#xff08;万国码&#xff09; 3、乱码 4、Java中编码和解码的方法 字符集知识 字符&#xff08;Character&#xff09;&#xff1a;在计算机和电信技术中&#xff0c;一个字符是一个单位的字形、类字形单位或符号的基本信…

智能合约开发基础知识:最小信任机制、智能合约、EVM

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 专栏的前面几篇详细了介绍了区块链的核心基础知识 有兴趣学习的小伙伴可以看看http://t.csdnimg.cn/fCD5E关于区块…

光伏便携式EL检测仪是什么?—科技助农

光伏便携式EL监测仪是一种专门用于检测光伏电池组件性能的高效、实用的设备。它利用电致发光&#xff08;Electroluminescence&#xff0c;EL&#xff09;原理&#xff0c;通过检测光伏板在受到光照后产生的电流所激发出的光线&#xff0c;来评估光伏板的性能。这种设备通常具有…

Linux搭建我的世界(MC)整合包服务器,All the Mods 9(ATM9)整合包开服教程

Linux使用MCSM面板搭建我的世界(Minecraft)整合包服务器&#xff0c;MC开服教程&#xff0c;All the Mods 9(ATM9)整合包搭建服务器的教程。 本教程使用Docker来运行mc服&#xff0c;可以方便切换不同Java版本&#xff0c;方便安装多个mc服版本。 视频教程&#xff1a;https:…