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

数据库MySQL、Mariadb、PostgreSQL、MangoDB、Memcached和Redis详细介绍

以下是一些常见的后端开发数据库选型:

  1. 关系型数据库(RDBMS):关系型数据库是最常见的数据库类型,使用表格和关系模型来存储和管理数据。常见的关系型数据库包括MySQL、PostgreSQL和Oracle等。这些数据库适合处理结构化数据,具有强大的事务支持和SQL查询能力。

  2. 非关系型数据库(NoSQL):非关系型数据库是一种灵活的数据存储解决方案,适用于处理大量的非结构化数据。常见的非关系型数据库包括Memcached、MongoDB、Redis和Cassandra等。这些数据库具有高扩展性和高性能,适合处理大数据和高并发访问。

  3. 内存数据库:内存数据库将数据存储在内存中,以提供更快的读写速度。常见的内存数据库包括Redis、Memcached和Apache Ignite等。这些数据库适合处理实时数据和缓存数据,提供了快速的数据访问和响应能力。

  4. 图数据库:图数据库是专门用于存储和处理图结构数据的数据库。常见的图数据库包括Neo4j和ArangoDB等。这些数据库适合处理复杂的关系和网络数据,提供了高效的图查询和分析能力。

在选择数据库时,需要考虑以下几个因素:

• 数据模型和结构:根据应用程序的需求,选择适合的数据模型和结构,如关系型、文档型、键值对或图形等。
• 数据量和性能要求:根据数据量和性能要求,选择适合的数据库类型和配置,以确保能够处理高并发和大规模数据。
• 数据一致性和事务支持:根据应用程序的需求,选择适合的数据库,以实现数据一致性和事务支持。
• 数据安全性和保护:考虑数据安全性和保护需求,选择具有强大的安全功能和访问控制的数据库。
• 社区支持和生态系统:考虑数据库的社区支持和生态系统,选择具有活跃的开发者社区和丰富的工具和插件的数据库。

一、MySQL

MySQL是一种开源的关系型数据库管理系统(RDBMS),它是最流行的数据库之一。MySQL使用SQL语言进行数据操作和查询,具有高性能、可靠性和稳定性的特点。MySQL支持多种操作系统和编程语言,广泛应用于Web应用程序和企业级应用。

MySQL是一种广泛使用的关系型数据库管理系统,被广泛应用于各种规模的应用程序和网站。本文将深入介绍MySQL的特点、优势、架构以及一些常见的使用场景。

MySQL特点

MySQL具有以下特点:

  1. 开源性:MySQL是一款开源软件,可以免费使用,具有强大的社区支持和活跃的开发者社区。这使得MySQL成为一种经济实惠且可靠的数据库解决方案。

  2. 可靠性和稳定性:MySQL经过多年的发展和优化,已经成为一种稳定可靠的数据库系统。它具有良好的容错性和高可用性,能够处理大规模的数据和高并发访问。

  3. 高性能:MySQL通过多种优化技术和索引机制提供了出色的性能。它支持多种存储引擎,如InnoDB、MyISAM等,可以根据具体需求选择最适合的存储引擎。

  4. 强大的查询能力:MySQL支持标准的SQL语言,具有强大的查询和分析能力。它提供了丰富的函数和操作符,可以进行复杂的数据查询、过滤和聚合。

  5. 可扩展性:MySQL支持水平和垂直扩展,可以方便地进行横向扩展和纵向扩展。它可以通过主从复制、分区和集群等技术来处理大规模数据和高并发访问。

MySQL核心组件

MySQL的架构包括以下几个核心组件:

  1. 连接器(Connector):负责与客户端建立连接,并进行身份验证和权限控制。

  2. 查询缓存(Query Cache):用于缓存查询结果,提高查询性能。

  3. 查询解析器(Query Parser):负责解析SQL语句,并生成执行计划。

  4. 优化器(Optimizer):根据查询的复杂度和数据分布等因素,生成最优的执行计划。

  5. 存储引擎(Storage Engine):负责实际存储和管理数据。MySQL支持多种存储引擎,如InnoDB、MyISAM等,每种存储引擎具有不同的特点和适用场景。

应用场景

MySQL适用于各种不同的场景,包括但不限于以下几个方面:

  1. 网站和应用程序:MySQL广泛应用于各种网站和应用程序,如电子商务平台、博客、社交媒体等。它可以处理大量的数据和高并发访问,同时具有良好的可扩展性和性能。

  2. 数据分析和报表:MySQL提供了丰富的查询和聚合函数,可以进行复杂的数据分析和报表生成。它可以与各种数据分析工具和报表生成工具集成,满足不同的数据分析需求。

  3. 日志和监控系统:MySQL可以用于存储和管理日志数据,并提供快速的查询和分析能力。它可以与日志收集工具和监控系统集成,实现实时的日志分析和监控。

  4. 大数据和云计算:MySQL可以与大数据和云计算平台集成,如Hadoop、Spark等。它可以作为关系型数据库和大数据平台之间的桥梁,提供数据的存储和查询能力。

二、Mariadb

Mariadb是一个由MySQL的创始人创办的开源数据库管理系统,它是MySQL的一个分支。Mariadb保持了与MySQL兼容的API和命令,但在一些功能和性能方面进行了改进和优化。Mariadb的目标是提供一个更开放、更稳定和更快速的数据库解决方案。

MariaDB是一个开源的关系型数据库管理系统,是MySQL的一个分支。它由MySQL的原开发者创建,旨在提供一个自由、开源、稳定和高性能的数据库解决方案。

1. 背景和历史

MariaDB的起源可以追溯到2009年,当时甲骨文公司收购了MySQL,并引发了一些开发者的担忧。为了保持MySQL的开源性质和继续推动其发展,一些MySQL的原开发者创建了MariaDB项目。MariaDB的名称来自于其中一位创始人的女儿名字。

2. 特点和优势

与MySQL相比,MariaDB提供了许多新的特性和改进,以提高性能、安全性和可扩展性。
以下是一些值得注意的特点和优势:

性能优化:MariaDB采用了一些性能优化技术,如查询优化器的改进、并行复制和多线程处理等,以提供更高的性能和响应速度。

存储引擎:MariaDB支持多种存储引擎,包括InnoDB、MyISAM和Aria等。它还引入了新的存储引擎,如XtraDB和TokuDB,以提供更好的性能和可靠性。

安全性增强:MariaDB引入了一些新的安全功能,如数据加密、身份验证插件和访问控制等,以提供更高的数据安全性和保护。

兼容性:MariaDB与MySQL高度兼容,几乎可以无缝迁移。它支持标准的SQL语法和MySQL的扩展功能,使得现有的MySQL应用程序可以轻松地迁移到MariaDB上。

社区支持:MariaDB拥有一个活跃的开发者社区,提供了广泛的支持和文档。它还与其他开源项目集成,如PHP、Python和Ruby等,使得开发者可以更方便地使用MariaDB。

3. 应用场景

MariaDB适用于各种不同的应用场景,包括但不限于以下几个方面:

网站和应用程序:MariaDB可以作为后端数据库,用于存储和管理网站和应用程序的数据。它具有高性能、可靠性和可扩展性,能够处理大量的数据和高并发访问。

企业应用:MariaDB可以用于企业级应用,如电子商务平台、客户关系管理系统和供应链管理系统等。它提供了丰富的功能和工具,以满足企业的数据管理和分析需求。

云计算和大数据:MariaDB可以与云计算平台和大数据技术集成,如OpenStack、Hadoop和Spark等。它可以作为关系型数据库和大数据平台之间的桥梁,提供数据的存储和查询能力。

数据分析和报表:MariaDB提供了丰富的查询和聚合函数,可以进行复杂的数据分析和报表生成。它可以与各种数据分析工具和报表生成工具集成,满足不同的数据分析需求。

三、PostgreSQL

PostgreSQL是一个功能强大的开源关系型数据库管理系统(DBMS),它具有丰富的特性和高度的可扩展性、可靠性和安全性,被广泛应用于各种企业级应用和数据密集型应用。PostgreSQL支持复杂的数据类型、事务处理和并发控制,适用于处理大规模数据和高并发访问的场景。PostgreSQL还提供了丰富的扩展和插件,可以满足各种需求。

首先,PostgreSQL具有完整的SQL支持。作为一个关系型数据库,PostgreSQL支持标准的SQL语言,包括复杂查询、事务处理、触发器和存储过程等。它还支持常见的SQL扩展,如窗口函数、CTE(公共表表达式)和全文搜索等,使得开发者可以更灵活地进行数据操作和查询。

其次,PostgreSQL具有高度的可扩展性。它支持水平扩展和垂直扩展两种方式。水平扩展通过分片和复制等技术,将数据分布到多个节点上,实现数据的并行处理和负载均衡。垂直扩展则通过增加硬件资源,如CPU、内存和存储等,提升系统的处理能力和容量。这使得PostgreSQL可以处理大规模的数据集和高并发的请求。

第三,PostgreSQL具有强大的数据完整性和安全性。它支持各种约束和触发器,可以保证数据的完整性和一致性。它还支持复杂的权限管理和访问控制,可以细粒度地控制用户对数据库对象的访问权限。此外,PostgreSQL还提供了强大的加密和认证功能,保护数据的安全性和隐私。

第四,PostgreSQL具有丰富的扩展和插件生态系统。它提供了大量的扩展和插件,可以满足不同应用场景的需求。例如,PostGIS扩展提供了地理空间数据处理和查询功能,hstore扩展提供了键值对数据存储和查询功能,pgcrypto扩展提供了加密和哈希算法等功能。开发者还可以通过自定义插件来扩展和定制PostgreSQL的功能。

最后,PostgreSQL具有良好的性能和可靠性。它通过多版本并发控制(MVCC)机制,实现了高并发的读写操作。它还支持高级的查询优化和索引技术,提高了查询的性能和响应速度。此外,PostgreSQL还具有强大的事务处理和崩溃恢复能力,保证了数据的一致性和可靠性。

总的来说,PostgreSQL作为一个功能强大的关系型数据库管理系统,具有完整的SQL支持、高度的可扩展性、数据完整性和安全性、丰富的扩展和插件生态系统,以及良好的性能和可靠性。它适用于各种企业级应用和数据密集型应用,如Web应用、大数据分析、地理信息系统等。开发者和企业可以利用PostgreSQL的特性和优势,构建高性能、可靠和安全的数据库应用。同时,PostgreSQL还拥有庞大的开发者社区和丰富的文档资源,提供了支持和交流的平台,方便开发者学习和使用。

四、MangoDB

MongoDB是一种流行的开源文档型的非关系型NoSQL数据库,具有许多独特的特性和功能,适用于各种不同的应用场景。其优势在于查询功能比较强大,能存储海量数据。对于中小型网站而言,MySQL和其它关系型数据库完全能胜任,不需要使用MangoDB。对于大中型网站而言,MangoDB可以作为关系性数据库很好的补充。MongoDB由于侧重海量数据写入性能, 而非事务安全, 所以很适合存储业务系统中海量“低价值”的数据。对于事务要求很高的应用比如银行交易系统,MangoDB是不适用的。

MongoDB的特点和功能

  1. 面向文档的数据模型:MongoDB使用面向文档的数据模型,数据以BSON(Binary JSON)格式存储,类似于JSON。这种灵活的数据模型使得MongoDB能够处理复杂的数据结构和变化的数据模式。

  2. 高度可扩展性:MongoDB支持水平扩展,可以在多台服务器上分布数据,以应对大规模数据和高并发访问。它具有自动分片和数据复制功能,能够提供高可用性和可靠性。

  3. 高性能和低延迟:MongoDB使用内存映射技术,将数据存储在内存中,以提供高性能和低延迟的数据访问。它还支持索引和查询优化,能够快速执行复杂的查询和聚合操作。

  4. 强大的查询和聚合功能:MongoDB提供了丰富的查询和聚合功能,包括查询条件、投影、排序、分组、聚合管道等。它还支持地理空间查询和全文搜索,能够满足各种不同的查询需求。

  5. 复制和故障恢复:MongoDB支持数据复制,可以在多个节点上复制数据,以提供高可用性和数据冗余。它还支持自动故障检测和故障恢复,能够自动处理节点故障和数据损坏。

  6. 安全性和权限控制:MongoDB提供了安全功能和权限控制,包括用户认证、角色管理、数据加密和审计功能。它还支持SSL/TLS加密传输,能够保护数据的安全性和机密性。

MongoDB的优势和应用场景

  1. 灵活的数据模型:MongoDB的文档型数据模型非常灵活,可以存储和查询各种不同类型的数据。它适用于半结构化数据、变化频繁的数据和快速迭代的开发环境。

  2. 大数据和高并发:MongoDB具有良好的可扩展性和高性能,可以处理大规模数据和高并发访问。它适用于大型网站、社交网络、物联网和实时分析等应用场景。

  3. 实时数据分析:MongoDB支持复杂的查询和聚合操作,能够快速执行实时数据分析。它适用于数据仓库、报表生成、实时监控和业务智能等应用场景。

  4. 云计算和微服务:MongoDB与云计算和微服务架构非常契合,能够提供弹性扩展和灵活部署。它适用于云原生应用、容器化部署和微服务架构。

  5. 互联网和移动应用:MongoDB的高性能和低延迟特点非常适合互联网和移动应用。它适用于用户数据、社交数据、日志数据和位置数据等应用场景。

  6. 存储爬虫爬来的数据,存储网站的日志,存储海量用户的评论等。

MongoDB作为一种流行的文档型数据库,具有面向文档的数据模型、高度可扩展性、高性能和低延迟等特点。它适用于各种不同的应用场景,包括大数据和高并发、实时数据分析、云计算和微服务、互联网和移动应用等。开发者和企业可以利用MongoDB的优势和功能,构建灵活、可扩展和高性能的应用系统。作为一种开源数据库,MongoDB还拥有庞大的开发者社区和丰富的生态系统,提供了大量的工具、插件和文档资源。开发者可以通过社区获得支持和交流,并利用丰富的资源来提高开发效率。

五、Memcached

Memcached是一种开源的高性能分布式内存对象缓存系统,它被广泛应用于提升Web应用的性能和扩展性。接下来深入介绍Memcached的特点、优势以及适用场景。

Memcached的原理和特点

  1. 内存缓存:Memcached将数据存储在内存中,以提供低延迟的数据访问。相比于传统的磁盘存储,内存存储具有更高的读写速度和响应性能。

  2. 键值存储:Memcached采用键值对的方式存储数据,每个键对应一个唯一的值。这种简单的数据结构使得数据的读写操作非常高效。

  3. 分布式架构:Memcached支持分布式架构,可以在多台服务器上分布数据。通过哈希算法,它将键映射到不同的服务器上,实现数据的分片和负载均衡。

  4. 缓存失效:Memcached支持设置缓存失效时间,当缓存超过设定的时间后,数据将自动从内存中清除。这种机制可以避免缓存过期数据的使用,保证数据的实时性。

  5. 高并发性:Memcached采用多线程架构,可以同时处理多个并发请求。它还支持CAS(Compare and Swap)操作,保证并发更新的一致性。

  6. 简单的API:Memcached提供简单易用的API,包括get、set、add、delete等基本操作。开发者可以轻松地集成和使用Memcached,提升应用的性能和扩展性。

Memcached的优势和应用场景

Memcached是内存型数据库,数据以Key-Value形式存储,主要用来提供高性能分布式内存缓存服务。在实际Web开发过程中,学会利用缓存是非常重要的。在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面。这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了。缓存就是为了防止重复计算,把那些消耗了大量资源的结果保存起来,下次访问时就不用再次计算了,这样可以大大减轻数据库的负载(缓存热点数据)。

由于memcached保存的数据都存储在memcached内置的内存存储空间中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。

  1. 提升性能:Memcached通过将热点数据存储在内存中,减少了数据库的访问次数,提升了应用的响应速度和吞吐量。它适用于读多写少的场景,如新闻网站、博客平台等。

  2. 缓解数据库压力:Memcached作为一个独立的缓存层,可以缓解数据库的压力,提高数据库的性能和可扩展性。它适用于高并发的Web应用、电子商务平台等。

  3. 分布式存储:Memcached支持分布式架构,可以在多台服务器上分布数据,提供高可用性和可靠性。它适用于大规模的数据存储和高并发访问的场景,如社交网络、实时数据分析等。

  4. 数据共享和同步:Memcached可以作为多个应用之间的数据共享和同步机制。通过将数据存储在公共的缓存中,不同的应用可以共享数据,提高系统的整体性能和一致性。

  5. 分布式锁和计数器:Memcached支持原子性的操作,可以实现分布式锁和计数器。它适用于多个应用之间的资源竞争和计数统计等场景。

六、Redis

Redis是一个开源的内存key-value数据结构存储系统,通过将数据存储在内存中,提供了快速的读写性能和低延迟的数据访问。与Memcached类似,Redis将大部分数据存储在内存中,但支持数据类型更多,包括:字符串、哈希表、链表等。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis一般也用来提供高效的缓存服务,而不是做数据的永久存储。

与传统的关系型数据库相比,Redis具有以下几个显著的特点和优势。

首先,Redis支持多种数据结构。除了常见的字符串、列表、集合和哈希等数据结构外,Redis还支持有序集合和位图等特殊数据结构。这些丰富的数据结构使得Redis可以灵活地存储和操作各种类型的数据,满足不同应用场景的需求。

其次,Redis具有高性能和低延迟。由于数据存储在内存中,Redis可以实现非常快速的读写操作,响应时间通常在微秒级别。此外,Redis还采用了单线程的架构,避免了多线程的线程切换和锁竞争,进一步提高了性能和响应速度。

第三,Redis支持持久化。除了将数据存储在内存中,Redis还可以将数据持久化到磁盘上,以防止数据丢失。Redis提供了两种持久化方式:RDB(Redis Database)和AOF(Append-Only File)。RDB是将数据以快照的形式保存到磁盘上,而AOF是将数据的操作日志追加到文件中。开发者可以根据需求选择适合的持久化方式。

第四,Redis具有高可用性和可扩展性。Redis支持主从复制和哨兵机制,可以实现数据的备份和故障转移。通过配置主从复制,可以将数据复制到多个从节点,提高数据的可用性和读写性能。通过哨兵机制,可以监控主节点的状态,并在主节点故障时自动切换到备用节点。此外,Redis还支持分片机制,可以将数据分布到多个节点上,实现数据的水平扩展。

最后,Redis还提供了丰富的功能和特性。例如,Redis支持事务和管道操作,可以保证多个操作的原子性和一致性。Redis还支持发布订阅模式,可以实现消息的发布和订阅。此外,Redis还提供了Lua脚本和过期策略等功能,方便开发者进行高级操作和管理。

总的来说,Redis作为一种高性能的内存数据结构存储系统,具有多种数据结构、高性能低延迟、持久化、高可用性和可扩展性等优势。它适用于各种应用场景,如缓存、计数器、排行榜、消息队列等。开发者和企业可以利用Redis的功能和特性,提高应用的性能和可靠性。同时,Redis还拥有庞大的开发者社区和丰富的生态系统,提供了大量的工具、插件和文档资源,方便开发者进行开发和运维。

七、MySQL、Mariadb、PostgreSQL之间的区别

MySQL、Mariadb和PostgreSQL都是关系型数据库管理系统,它们有一些共同的特点和功能,例如支持SQL语言、提供事务处理和索引等。它们之间的区别主要体现在以下几个方面:

  1. 开发者和社区:MySQL和Mariadb由不同的开发者团队维护,它们有不同的社区支持和发展方向。PostgreSQL由PostgreSQL全球开发组维护,拥有一个活跃的全球社区。

  2. 功能和性能:MySQL和Mariadb在功能和性能方面比较接近,但Mariadb在某些方面进行了改进和优化。PostgreSQL在功能和性能方面更加强大,支持更复杂的查询和数据类型。

  3. 兼容性:MySQL和Mariadb在API和命令上基本兼容,可以无缝切换使用。PostgreSQL在语法和功能上与MySQL和Mariadb有一些差异,需要进行一定的迁移工作。

  4. 扩展和插件:MySQL和Mariadb提供了一些扩展和插件,但相对较少。PostgreSQL提供了丰富的扩展和插件,可以满足更多的需求。

MySQL、Mariadb和PostgreSQL都有各自的优点和缺点,选择适合的数据库取决于具体的需求和场景。MySQL适用于简单的应用程序和小规模数据,具有较好的性能和易用性。Mariadb在MySQL的基础上进行了改进和优化,提供了更好的性能和稳定性。PostgreSQL适用于复杂的数据处理和高并发访问,具有更强大的功能和扩展性。

八、Memcached和Redis的区别

Redis和Memcached都可以设置缓存数据过期。在实际Web开发中,数据库缓存Redis和Memcached基本上是二选一。目前企业中使用Redis的最多。

Memcached和Redis这是两种常见的内存缓存系统,它们在功能和特性上有一些区别。

  1. 数据类型支持:Redis支持更丰富的数据类型,包括字简单的k/v类型的数据、符串、列表、哈希、集合和有序集合等。而Memcached只支持简单的键值对存储。

  2. 持久化支持:Redis支持数据的持久化存储,可以将数据保存到磁盘上,以便在重启后恢复数据。而Memcached不支持数据的持久化,数据只存在于内存中,重启后数据会丢失。

  3. 数据一致性:Redis支持主从复制和哨兵模式,可以实现数据的高可用和容灾。而Memcached没有内置的复制和容灾机制,需要通过客户端实现。

  4. 内存管理:Redis使用了多种内存管理技术,如内存回收、压缩和虚拟内存等,可以更有效地利用内存资源。而Memcached简单地使用LRU(最近最少使用)算法进行内存管理。

  5. 功能扩展:Redis提供了丰富的扩展和插件,如发布订阅、Lua脚本和地理空间索引等。而Memcached的功能相对较简单,主要用于缓存数据。

  6. 性能:由于Redis支持更多的数据类型和功能,以及较为复杂的内存管理,因此在某些场景下可能比Memcached稍微慢一些。但是在大多数情况下,Redis和Memcached的性能差异并不明显。

  7. 事务性:Redis内部是支持事务的,Memcached不支持。

  8. 文件缓存:Memcached支持缓存图片和小文件(比如用户头像),redis不支持。

  9. 存储数据安全:memcache挂掉后,数据没了;redis可以通过持久化设置进行定期保存到磁盘。

  10. 灾难恢复:memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;

相关文章:

数据库MySQL、Mariadb、PostgreSQL、MangoDB、Memcached和Redis详细介绍

以下是一些常见的后端开发数据库选型: 关系型数据库(RDBMS):关系型数据库是最常见的数据库类型,使用表格和关系模型来存储和管理数据。常见的关系型数据库包括MySQL、PostgreSQL和Oracle等。这些数据库适合处理结构化数…...

【ArcGIS Pro实操第七期】栅格数据合并、裁剪及统计:以全球不透水面积为例

【ArcGIS Pro实操第七期】批量裁剪:以全球不透水面积为例 准备:数据下载ArcGIS Pro批量裁剪数据集1 数据拼接2 数据裁剪3 数据统计:各栅格取值3.1 栅格计算器-精确提取-栅格数据特定值3.2 数据统计 4 不透水面积变化分析 参考 准备&#xff1…...

【Linux】Image、zImage与uImage的区别

1、Image 1.1 什么是 Image Image 是一种未压缩的 Linux 内核镜像文件,包含了内核的所有代码、数据和必要的元信息。它是 Linux 内核在编译过程中生成的一个原始的二进制文件,未经过任何压缩或额外的封装处理。由于未压缩,Image 文件相对较…...

算子加速(3):自定义cuda扩展

需要自定义某个层,或有时候用c++实现你的操作(c++扩展)可能会更好: 例如:需要实现一个新型的激活函数例如: bevfusion用cuda实现bevpool加速自定义扩展的步骤 (1) 首先用纯pytorch和python 实现我们所需的功能,看看效果再决定要不要进一步优化(2) 明确优化方向,用C++ (或CU…...

信息安全数学基础(14)欧拉函数

前言 在信息安全数学基础中,欧拉函数(Eulers Totient Function)是一个非常重要的概念,它与模运算、剩余类、简化剩余系以及密码学中的许多应用紧密相关。欧拉函数用符号 φ(n) 表示,其中 n 是一个正整数。 一、定义 欧…...

7-17 汉诺塔的非递归实现

输入样例: 3输出样例: a -> c a -> b c -> b a -> c b -> a b -> c a -> c 分析&#xff1a; 不会汉罗塔的uu们&#xff0c;先看看图解&#xff1a; 非递归代码&#xff1a; #include<iostream> #include<stack> using namespace std; s…...

word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32

前提&#xff1a; windows环境下&#xff0c;并且安装了office套装&#xff0c;比如word,如果需要调用excel.也需要安装。在另外的文章会介绍。这种是直接调用word的。所以还原度会比较高。 需求&#xff1a; word文档转pdf,要求使用命令行形式&#xff0c;最终发布为api接口…...

海康威视相机在QTcreate上的使用教程

文章目录 前言&#xff1a;基础夯实&#xff1a;效果展示&#xff1a;图片展示&#xff1a;视频展示&#xff1a; 参考的资料&#xff1a;遇到问题&#xff1a;问题1&#xff1a;int64 does not问题2&#xff1a;LNK2019配置思路(这个很重要)配置关键图片&#xff1a;配置具体过…...

进程状态、进程创建和进程分类

文章目录 进程进程常见的状态进程调度进程状态变化关系 进程标识示例--进程标识的使用以及简介 进程创建fork函数vfork函数示例--使用fork函数创建子进程&#xff0c;并了解进程之间的关系 创建进程时发生的变化虚拟内存空间的变化示例--验证fork函数创建进程时的操作 对文件IO…...

java后端请求调用三方接口

java后端请求调用三方接口 /*** param serverURL http接口地址&#xff08;例&#xff1a;http://www.iwsu.top:8016/dataSyn/bay/statsCar&#xff09;* param parm 参数&#xff08;可以是json&#xff0c;也可以是json数组&#xff09;*/ public void doRestfulPostBody(St…...

C#使用TCP-S7协议读写西门子PLC(三)

接上篇 C#使用TCP-S7协议读写西门子PLC(二)-CSDN博客 这里我们进行封装读写西门子PLC的S7协议命令以及连接西门子PLC并两次握手 新建部分类文件SiemensS7ProtocolUtil.ReadWrite.cs 主要方法&#xff1a; 连接西门子PLC并发送两次握手。两次握手成功后&#xff0c;才真正连…...

铝型材及其常用紧固件、连接件介绍

铝型材介绍&#xff08;包括紧固件和连接件以及走线&#xff09; 铝型材 铝型材一般是6063铝合金挤压成型&#xff0c;分为欧标和国标两个标准。&#xff08;左边国标&#xff0c;右边欧标&#xff0c;欧标槽宽一点&#xff09; 由于槽型不一样&#xff0c;相关的螺栓和螺母也…...

【裸机装机系列】7.kali(ubuntu)-安装开发所需工具

如果你是后端或是人工智能AI岗&#xff0c;可以安装以下推荐的软件&#xff1a; 1> sublime sublime官网 下载deb文件 安装命令 sudo dpkg -i sublime-text_build-4143_amd64.deb2> vscode 安装前置软件 sudo apt install curl gpg software-properties-common apt-t…...

[C语言]第九节 函数一基础知识到高级技巧的全景探索

目录 9.1 函数的概念 9.2 库函数 9.2.1 标准库与库函数 示例&#xff1a;常见库函数 9.2.2 标准库与头文件的关系 参考资料和学习工具 如何使用库函数 ​编辑 9.3 ⾃定义函数 9.3.1 函数的语法形式 9.3.2函数的举例 9.4 实参与形参 9.4.1 什么是实参&#xff1f; 9…...

1.1 计算机网络基本概述

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 前言一、网络的基本概念二、集线器、交换机和路由器三、互连网与互联网四、网络的类型五、互连网的组成1. 边缘部分2. 核心部分 六、网络协议 前言 计算机网络是现代信息社会…...

Linux环境基础开发工具使用(gcc/g++与makefile)

1.Linux编译器-gcc/g使用 1. 背景知识 接下来的操作&#xff0c;我以gcc为例&#xff0c;因为两者选项都是通用的&#xff0c;所以也就相当于间接学习了 1.预处理&#xff08;进行宏替换) 2.编译&#xff08;生成汇编) 3.汇编&#xff08;生成机器可识别代码&#xff09;…...

PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用

目录 介绍核心思想及其实现核心思想实现步骤 如何改进PointNet**局部几何结构的处理****动态图的引入****特征聚合的灵活性****全局和局部特征的结合** 论文题目&#xff1a;Dynamic Graph CNN for Learning on Point Clouds发布期刊&#xff1a;TOG作者单位&#xff1a;麻省理…...

FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析

GetBitContext结构体和其相关的函数分析&#xff1a; FFmpeg中位操作相关的源码&#xff1a;GetBitContext结构体&#xff0c;init_get_bits函数、get_bits1函数和get_bits函数分析 FFmpeg源码&#xff1a;skip_bits、skip_bits1、show_bits函数分析 一、skip_bits函数 skip…...

加密

一、加密 加密运算需要两个输入&#xff1a;密钥和明文 解密运算也需要两个输入&#xff1a;密钥和密文 密文通常看起来都是晦涩难懂、毫无逻辑的&#xff0c;所以我们一般会通过传输或者存储密文来保护私密数据&#xff0c;当然&#xff0c;这建立在一个基础上&#xff0c;…...

Kibana:如何使用魔法公式创建具有影响力的可视化效果?(第 1 部分)

作者&#xff1a;来自 Elastic Vincent du Sordet 我们将看到 Kibana Lens 编辑器中的神奇数学公式如何帮助突出显示高值。 简介 在上一篇博文《作为非设计师设计直观的 Kibana 仪表板》中&#xff0c;我们强调了创建直观仪表板的重要性。它展示了简单的更改&#xff08;分组…...

iview-admin静态资源js按需加载配置

iview-admin2.0版本默认加载所有组件的JS&#xff0c;实际情况下&#xff0c;用户访问后台并不会每个页面都浏览。这样就会造成流量及带宽的浪费。可通过修改配置文件vue.config.js来实现按需加载&#xff0c;具体配置如图 image © 著作权归作者所有,转载或内容合作请联系…...

【ArcGIS Pro微课1000例】0072:如何自动保存编辑内容及保存工程?

文章目录 一、自动保存编辑内容二、自动保存工程在使用ArcGIS或者ArcGIS Pro时,经常会遇到以下报错,无论点击【发送报告】,还是【不发送】,软件都会强制退出,这时如果对所操作没有保存,就会前功尽弃。 此时,自动保存工作就显得尤为重要,接下来讲解两种常见的自动保存方…...

OpenJudge | 大整数乘法

总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积。 输入 有两行&#xff0c;每行是一个不超过200位的非负整数&#xff0c;没有多余的前导0。 输出 一行&#xff0c;即相乘后的结果。结果里不能有多余的前导0&#xff0c;即如果结果是342&am…...

OpenCV 图像通道的分离与合并

一、知识点 1、一张彩色图像可以由R、G、B三个通道的灰度图合并而成。 2、void split(InputArray m, OutputArrayOfArrays mv); (1)、将多通道阵列划分为几个单通道阵列。 (2)、参数说明: m: 要分离的多通道阵列。 mv: 输出的vector容器&#xff0c;每个元素都…...

基于Scala实现Flink的三种基本时间窗口操作

目录 代码结构 代码解析 (1) 主程序入口 (2) 窗口联结&#xff08;Window Join&#xff09; (3) 间隔联结&#xff08;Interval Join&#xff09; (4) 窗口同组联结&#xff08;CoGroup&#xff09; (5) 执行任务 代码优化 (1) 时间戳分配 (2) 窗口大小 (3) 输出格式…...

现代前端框架的发展与演进

现代前端框架的发展与演进是一个非常值得关注的话题&#xff0c;反映了整个前端生态系统的不断演化与技术深度的提升。以下是这一趋势的详细解析&#xff1a; &#x1f4c8; 现代前端框架的发展与演进 &#x1f539; 第一阶段&#xff1a;jQuery 时代&#xff08;2006-2013&am…...

【LLM-Agent】智能体的记忆缓存设计

note 实践&#xff1a;https://modelscope-agent.readthedocs.io/zh-cn/latest/modules/memory.html 文章目录 note一、Agent的记忆实现二、相关综述三、记忆体的构建四、cursor的记忆设计1. 记忆生成提示词2. 记忆评估提示词 五、记忆相关的MCPReference 一、Agent的记忆实现…...

Doris查询Hive数据:实现高效跨数据源分析的实践指南

#### 1. Doris与Hive的集成背景 在大数据生态中&#xff0c;Hive作为基于Hadoop的数据仓库工具&#xff0c;广泛用于海量数据的批处理分析。而Apache Doris&#xff08;原百度 Palo&#xff09;是一种高性能、实时分析的MPP&#xff08;大规模并行处理&#xff09;数据库&…...

快捷键的记录

下面对应的ATL数字 ATL4 显示编译输出 CTRL B 编译 CTRLR 运行exe 菜单栏 ALTF ALTE ALTB ALTD ALTH...

【CATIA的二次开发22】关于抽象对象Document概念详细总结

在CATIA VBA开发中,Document对象是最核心、最基础的对象之一。它代表了当前在CATIA会话中打开的一个文档(文件)。 几乎所有与文件操作、模型访问相关的操作都始于获取一个Document对象。 一、Document对象概述 1、获取Document对象: 当前活动文档: 最常见的方式是获取用户…...