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(即该类别的文档数量)的文档列表。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ETH共识升级之路

简介 根据我们之前的介绍,了解到ETH网络的共识方式,已经从 PoW 切换到了 PoS,今天我们就回顾下升级之路,以及升级带来的影响 最早的共识机制 PoW 以太坊创建之初采用了类似比特币的工作量证明机制,即矿工通过计算哈希函…

CircuitBreaker熔断器

CircuitBreaker熔断器 1、Hystrix目前也进入维护模式 ​ Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下&…

C++演变历史

C 从 C 98 版本到今年确定的 C23,共经历了 6 个版本的迭代。上面这张图里,列出了每次版本更新变化的内容。顶部黑体字的大小说明了版本变化的大小,其中 C14 是字体最小,这个版本是 C11 的增量版本,之所以没有大的变动&…

Server-Sent Events (SSE) 实现从服务器到客户端的实时数据流

前期回顾 避免阻塞主线程 —— Web Worker 示例项目-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136721297?spm1001.2014.3001.5501 目录 CSDN 彩色之外 📝 前言 🛠️ 安装 ✂️ 运行服务器 ✂️ 运行index.html ♻️ 贡献…

引领短剧风尚,打造全新观影体验——短剧APP开发之旅

随着移动互联网的迅猛发展,短视频和短剧成为了大众休闲娱乐的新宠。为了满足用户对于高质量、快节奏内容的需求,我们决定开发一款全新的短剧APP,为用户带来前所未有的观影体验。 这款短剧APP将集合丰富多样的短剧资源,涵盖各种题…

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?

目录 一、面试官心理分析 二、面试题剖析 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 一、面试官心理分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题&#x…

B/S基于云计算的云HIS智慧医院管理系统源码带电子病历编辑器

目录 一、系统概述 二、开发环境 三、系统功能 1、门诊部分 2、住院部分 3、电子病历 4、药物管理 5、统计报表 6、综合维护 7、运营运维 云HIS系统:病案首页 云his系统源码 SaaS应用 功能易扩 统一对外接口管理 现如今,大数据、云计算、移动…

【WPF】Canvas的Path画线 颜色值偏差和面积不准确

图像中左上角2个红色线段 颜色值有偏差&#xff0c;且线段高度不准确&#xff08;我设置的是Red,1&#xff09;。 解决方案&#xff1a; 1、PathGeometry PathFigure LineSegment 2、Stretch设置Fill <Path Stretch"Fill" Stroke"Red"…

Axure软件安装汉化教程

Axure软件安装汉化教程 一、准备教程 下载Axure的软件&#xff0c;并解压打开 二、安装过程 双击Axure软件的运行程序&#xff0c;修改安装程序的路径&#xff0c;默认下一步即可。 三、软件汉化 打开Axure的软件安装路径&#xff0c;将汉化包复制粘贴进入到Axure RP 9安装…

C语言从入门到实战————数组和指针的深入理解

前言 在C语言中&#xff0c;数组和指针有的密切得联系&#xff0c;因为数组名本身就相当于一个指针常量。指针是一个变量&#xff0c;专门用来存储另一个变量的内存地址&#xff0c;通过这个地址可以访问和操作该变量的值&#xff0c;同时也包括数组。数组是一组连续存储的同类…

【CKA模拟题】查询消耗CPU最多的Pod

题干 For this question, please set this context (In exam, diff cluster name) 对于此问题&#xff0c;请设置此上下文&#xff08;在考试中&#xff0c;diff 集群名称&#xff09; kubectl config use-context kubernetes-adminkubernetesFind the pod that consumes the …

QT信号与槽实现方式

1、第一种实现方式 在QT开发工具UI界面先拖入按钮&#xff0c;然后鼠标右键拖入按钮&#xff0c;点击选中槽&#xff0c;在页面选着需要的信号&#xff0c;然后OK&#xff0c;随即将会跳转到类的.cpp文件&#xff0c;&#xff08;这种UI代码结合的方式&#xff0c;会自动去绑定…

在SwiftUI中使用Buider模式创建复杂组件

在SwiftUI中使用Buider模式创建复杂组件 我们在前面的博客闲聊SwiftUI中的自定义组件中聊到了如何在SwiftU中创建自定义组件。 在那里&#xff0c;我们创建了一个非常简单的组件RedBox&#xff0c;它将展示内容增加一个红色的边框。 RedBox非常简单&#xff0c;我们用普通的方…

腾讯春招后端一面(算法篇)

前言&#xff1a; 哈喽大家好&#xff0c;前段时间在小红书和牛客上发了面试的经验贴&#xff0c;很多同学留言问算法的具体解法&#xff0c;今天就详细写个帖子回复大家。 因为csdn是写的比较详细&#xff0c;所以更新比较慢&#xff0c;大家见谅~~ 就题目而言&#xff0c;…

深度学习_GoogLeNet_4

目标 知道GoogLeNet网络结构的特点能够利用GoogLeNet完成图像分类 一、开发背景 GoogLeNet在2014年由Google团队提出&#xff0c; 斩获当年ImageNet(ILSVRC14)竞赛中Classification Task (分类任务) 第一名&#xff0c;VGG获得了第二名&#xff0c;为了向“LeNet”致敬&#x…

Linux学习之网络

目录 认识协议 网络协议初始 协议分层 OSI七层模型 TCP/IP的四层模型 数据包封装和分用 以太网通信 ip地址与MAC地址 网络编程套接字 端口号&#xff08;port&#xff09; 认识协议 网络字节序 socket接口 网络的产生是计算机历史的必然性&#xff0c;是计算机发展…

SwiftUI组件-DatePicker

SwiftUI组件-DatePicker 本文记录一下SwiftUI组件-DatePicker import SwiftUIstruct DatePickerBootCamp: View {State var selectedDate: Date Date()var dateFormatter: DateFormatter {let formatter DateFormatter()formatter.dateStyle .shortformatter.timeStyle .…

AI-逻辑回归模型

&#x1f606;&#x1f606;&#x1f606;感谢大家的支持~&#x1f606;&#x1f606;&#x1f606; 逻辑回归的应用场景 逻辑回归&#xff08;Logistic Regression&#xff09;是机器学习中的 一种分类模型 &#xff0c;逻辑回归是一种分类算法&#xff0c;虽然名字中带有回…

《天软行业全景画像》报告第7期

内容概要&#xff1a; 传媒、环保、美容护理行业的拥挤度较高&#xff0c;实际投资交易应注意&#xff1b;煤炭行业动量较强&#xff0c;医药生物、综合、环保行业动量较弱&#xff0c;业绩整体表现较差&#xff1b;食品饮料、公用事业行业景气度较高&#xff0c;财务基本面状况…

【黑马程序员】Python文件、异常、模块、包

文章目录 文件操作文件编码什么是编码为什么要使用编码 文件的读取openmodel常用的三种基础访问模式读操作相关方法 文件的写入注意代码示例 异常定义异常捕获捕获指定异常捕获多个异常捕获所有异常异常else异常finally 异常的传递 python 模块定义模块的导入import模块名from …