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

数据库 - Mongo数据库

目录

前言

一、MongoDB的特点

二、Mongo的核心概念

三、MongoDB的优劣势

四、使用场景

五、MongoDB与其他数据库的对比

六、如何安装MongoDB

七、数据库指令操作

(一)基本数据库操作

(1)连接 MongoDB

(2)显示所有数据库

(3)选择数据库

(4)显示当前数据库

(二)集合操作

(1)显示集合列表

(2)创建集合

(3)删除集合

(三)文档(数据)操作

(1)插入文档

(2)查询文档

(3)更新文档

(4)删除文档

(四)索引操作

(1)创建索引

(2)查看索引

(3)删除索引

(五)聚合操作

(1)基本聚合查询

(2)聚合操作符

(六)备份与恢复

(1)数据库备份

(2)数据库恢复

(七)常用条件查询符号

八、使用python操作MongoDB

(一)安装PyMongo

(二)连接 MongoDB 数据库

(三)选择数据库

(四)选择集合

(五)插入文档

(1)插入单个文档

(2)插入多个文档

(六)查询文档

(1)查询单个文档

(2)查询多个文档

(3)查询并格式化输出

(七)、更新文档

(1)更新单个文档

(2)更新多个文档

(3)更新操作符

(八)删除文档

(1)删除单个文档

(2)删除多个文档

(3)删除集合

(九)创建索引

(1)创建单字段索引

(2)创建复合字段

(3)查看索引

(4)删除索引

(十)聚合操作

(十一)数据库和集合的管理

(1)查看所有数据库

(2)查看集合列表

(3)删除数据库

(十二)完整代码示例

九、总结


前言

MongoDB 是一种开源的、面向文档的 NoSQL 数据库,由 MongoDB Inc. 开发和维护。它与传统的关系型数据库(如 MySQL、PostgreSQL)不同,使用 JSON 风格的 BSON(二进制 JSON)数据格式来存储数据,因此数据的格式更加灵活、易于扩展。由于其强大的扩展性、分布式结构和高效的查询能力,MongoDB 成为了现代大数据应用和云计算环境中常用的数据库之一。


一、MongoDB的特点

Mongo数据库的特点主要有以下几点:

  • 文档存储:MongoDB 将数据存储为类似 JSON 格式的文档(Document),但采用的是 BSON(二进制 JSON)格式。这使得数据模式更具灵活性和可扩展性。

  • 模式自由(Schema-less):与关系型数据库中需要事先定义表的模式(Schema)不同,MongoDB 不要求在创建数据时预定义字段类型,字段可以在不同文档中具有不同的结构。

  • 高效的查询语言:MongoDB 提供了强大的查询功能,如聚合操作(Aggregation)、全文搜索(Full-text search)等,能够快速处理复杂的数据分析。

  • 分布式架构:支持分片(Sharding)和复制集(Replica Set),可以轻松实现高可用性、容错性和横向扩展,能够在多台服务器上分散和复制数据。

  • 内置索引功能:MongoDB 支持各种类型的索引,如单字段索引、复合索引、地理空间索引等,大幅提高数据查询效率。

  • 自动故障恢复:通过主从复制(Replication)和自动故障转移(Automatic failover),MongoDB 能够在服务器宕机时自动恢复服务。


二、Mongo的核心概念

Mongo的核心概念主要包含以下几点:

(1)数据库(Database)

  • 数据库是 MongoDB 中存储数据的最外层容器。每个 MongoDB 实例可以包含多个数据库。

(2)集合(Collection)

  • 类似于关系型数据库中的表,一个集合包含多个文档。集合不需要预定义数据模式,因此每个文档可以有不同的字段和数据类型。

(3)文档(Document)

  • 文档是 MongoDB 中的基本数据单元,类似于关系型数据库中的行。文档使用 BSON(Binary JSON)格式存储,可以包含嵌套数组和子文档,结构非常灵活。

(4)字段(Field)

  • 字段是文档中存储数据的键值对(Key-Value Pair)。它类似于关系数据库中的列(Column)。

(5)索引(Index)

  • 索引用于提高数据库的查询效率。MongoDB 支持多种索引类型,包括单字段索引、复合索引和地理空间索引等。

(6)集合锁(Locking)

  • MongoDB 使用集合级别的锁而非数据库级别的锁,因此能够在某种程度上实现并发操作,提高了多用户环境下的访问性能。

(7)复制集(Replica Set)

  • 复制集是 MongoDB 中用于高可用性和故障恢复的机制。一个复制集由一个主节点(Primary)和一个或多个从节点(Secondary)组成。主节点用于处理写操作,而从节点用于读取和备份数据。

(8)分片(Sharding)

  • 分片是一种将数据水平切分到多个服务器的技术。MongoDB 的分片机制可以实现数据的自动分布、负载均衡和高性能处理。


三、MongoDB的优劣势

优势:

  1. 灵活的文档模型: 文档模型更接近现实世界的数据结构,不需要固定的数据模式(Schema)。

  2. 高效的读写性能: MongoDB 的插入和查询操作速度较快,适合处理大规模的数据集。

  3. 可扩展性: 支持水平扩展(通过分片)和自动数据分片(Sharding)。

  4. 丰富的功能: 支持全文搜索、数据聚合、索引管理、地理空间数据处理等多种复杂操作。

  5. 内置复制与容错: 通过复制集(Replica Set)实现数据冗余和自动故障恢复,保障数据安全。

劣势:

  1. 数据一致性问题: MongoDB 默认使用最终一致性模型,因此在某些场景下可能出现短暂的读写不一致。

  2. 高内存消耗: 由于使用 BSON 格式存储数据,比传统的 JSON 格式占用更多的内存空间。

  3. 复杂的管理: 对于分布式系统和分片机制的管理难度较高,维护起来需要较高的技术水平。


四、使用场景

MongoDB的使用场景主要有:

(1)内容管理系统(CMS)

  • 适合使用 MongoDB 存储内容管理系统中的文章、博客、产品描述等信息。文档模型可以很容易地表示各种内容类型。

(2)大数据分析

  • MongoDB 的聚合框架(Aggregation Framework)和 MapReduce 可以高效地进行数据分析和挖掘。

(3)实时数据处理

  • 适用于需要实时处理海量数据的场景,如社交网络数据流、日志分析、在线广告数据等。

(4)物联网(IoT)

  • 由于 MongoDB 可以处理高吞吐量的写入操作,适合用于存储物联网设备的大量传感器数据。

(5)电商应用

  • MongoDB 可以用来存储商品目录、用户信息、订单数据,并且能够通过分片轻松扩展数据库容量。


五、MongoDB与其他数据库的对比

特性MongoDBMySQLRedis
数据模型文档模型关系模型键值对
数据格式BSON 格式表格模式内存中的键值对
水平扩展支持分片通过分区实现支持集群模式
读写性能较高(特别是海量数据场景中等,取决于索引极高(在内存中操作)
事务支持仅支持多文档事务完整事务支持不支持事务
主要使用场景内容管理、大数据、实时数据处理传统业务系统、金融数据管理缓存、实时分析、消息队列

六、如何安装MongoDB

MongoDB 可以在 Windows、macOS 和 Linux 系统上安装。具体步骤根据操作系统有所不同。通常,使用以下命令即可启动 MongoDB 服务:

1.安装(以 Ubuntu 为例)

sudo apt-get update
sudo apt-get install -y mongodb

2.启动 MongoDB 服务:

sudo service mongodb start

七、数据库指令操作

(一)基本数据库操作

(1)连接 MongoDB

mongo

连接默认的本地 MongoDB 实例。如果需要连接远程服务器,使用以下命令:

mongo <server_ip>:<port>

例如,连接远程 IP 地址 192.168.1.10027017 端口:

mongo 192.168.1.100:27017

(2)显示所有数据库

show dbs

该命令用于列出当前 MongoDB 实例上的所有数据库,并显示每个数据库的大小。

(3)选择数据库

use <database_name>

例如,选择 test 数据库:

use test

注意: 如果该数据库不存在,使用 use 命令时会自动创建该数据库,但该数据库在插入数据之前不会被实际创建。

(4)显示当前数据库

db

该命令显示当前操作的数据库名称。

(二)集合操作

(1)显示集合列表

show collections

列出当前数据库中的所有集合,类似于 SQL 中的表。

(2)创建集合

db.createCollection("<collection_name>")

例如,创建一个名为 students 的集合:

db.createCollection("students")

(3)删除集合

db.<collection_name>.drop()

例如,删除 students 集合:

db.students.drop()

(三)文档(数据)操作

(1)插入文档

MongoDB 使用 insert()insertOne()、或 insertMany() 方法插入文档。

db.<collection_name>.insert({ <document> })

例如,在 students 集合中插入一个文档:

db.students.insert({ name: "John", age: 18, grade: "A" })

插入多个文档:

db.students.insertMany([{ name: "Alice", age: 19, grade: "B" },{ name: "Bob", age: 20, grade: "C" }
])

(2)查询文档

使用 find() 方法来查询集合中的数据。

db.<collection_name>.find({ <query_conditions> })

例如,查询 students 集合中所有年龄大于 18 的文档:

db.students.find({ age: { $gt: 18 } })

查询结果格式化输出:

db.students.find().pretty()

(3)更新文档

使用 update()updateOne()updateMany() 来更新文档。

db.<collection_name>.update({ <query_conditions> }, { $set: { <new_values> } }
)

例如,将 nameJohn 的学生的年龄更新为 19:

db.students.update({ name: "John" },{ $set: { age: 19 } }
)

如果只想更新第一个匹配项,可以使用 updateOne

db.students.updateOne({ name: "John" },{ $set: { grade: "A+" } }
)

注意: 在 MongoDB 中,默认的 update 操作会替换整个文档,如果不使用 $set 操作符,则会丢失未指定的字段。

(4)删除文档

使用 remove() 方法删除符合条件的文档。

db.<collection_name>.remove({ <query_conditions> })

例如,删除 nameAlice 的文档:

db.students.remove({ name: "Alice" })

如果只删除第一个匹配项,可以指定 justOne 参数:

db.students.remove({ name: "Alice" }, { justOne: true })

(四)索引操作

(1)创建索引

使用 createIndex() 方法为字段创建索引:

db.<collection_name>.createIndex({ <field_name>: <1 | -1> })

例如,在 email 字段上创建升序索引:

db.users.createIndex({ email: 1 })

(2)查看索引

db.<collection_name>.getIndexes()

例如,查看 users 集合的索引:

db.users.getIndexes()

(3)删除索引

db.<collection_name>.dropIndex({ <field_name>: <1 | -1> })

例如,删除 email 字段上的索引:

db.users.dropIndex({ email: 1 })

(五)聚合操作

MongoDB 提供了强大的聚合框架,可以对文档进行复杂的数据处理。

(1)基本聚合查询

使用 aggregate() 方法进行聚合操作:

db.<collection_name>.aggregate([ { <stage1> }, { <stage2> }, ... ])

例如,按 age 字段进行分组,并计算每个年龄段的用户数量:

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

(2)聚合操作符

  • $match:过滤文档,类似 find() 中的查询条件。

  • $group:对文档进行分组,并执行聚合操作。

  • $project:修改输出文档的结构,只保留所需字段。

  • $sort:对结果进行排序。

例如,按年龄降序排列 users 集合中的所有文档:

db.users.aggregate([{ $sort: { age: -1 } }
])

(六)备份与恢复

(1)数据库备份

使用 mongodump 命令行工具进行备份:

mongodump --db <database_name> --out <backup_directory>

例如,将 test 数据库备份到 ./backup 目录:

mongodump --db test --out ./backup

(2)数据库恢复

使用 mongorestore 工具进行数据库恢复:

mongorestore --db <database_name> <backup_directory>

例如,从 ./backup 目录恢复 test 数据库:

mongorestore --db test ./backup/test

(七)常用条件查询符号

MongoDB常用的查询符号有以下几种:

  • $eq:等于(相当于 SQL 中的 =

  • $gt:大于

  • $gte:大于等于

  • $lt:小于

  • $lte:小于等于

  • $ne:不等于

  • $in:在指定数组中的任意值

  • $nin:不在指定数组中的任意值

  • $and:多个条件全部成立

  • $or:多个条件任意一个成立

  • $not:条件不成立时

  • $exists:字段是否存在

  • $regex:使用正则表达式匹配字段内容


八、使用python操作MongoDB

在 Python 中使用 MongoDB 通常需要使用 pymongo 库,这是一个官方提供的 MongoDB 驱动程序,可以帮助我们在 Python 中轻松地进行数据库操作。下面,我将详细介绍如何通过 pymongo 进行 MongoDB 的连接、数据库操作、集合管理、数据操作等。

(一)安装PyMongo

在开始之前,请确保已经安装了 pymongo 库。可以使用以下命令进行安装:

pip install pymongo

(二)连接 MongoDB 数据库

首先,需要使用 pymongo 创建一个数据库连接。连接 MongoDB 的语法格式如下:

from pymongo import MongoClient# 创建一个 MongoDB 客户端
client = MongoClient("mongodb://localhost:27017/")

这里 localhost:27017 是默认的 MongoDB 服务器地址和端口号。如果你的 MongoDB 服务器在其他主机或使用了自定义端口,可以根据实际情况修改连接字符串,例如:mongodb://username:password@server_ip:port/

(三)选择数据库

在 MongoDB 中,每个数据库由多个集合组成。可以使用 client.<database_name> 或者 client['database_name'] 来选择数据库:

# 选择数据库(如果数据库不存在,会在插入数据时创建)
db = client['test_database']

(四)选择集合

集合类似于关系数据库中的表。可以使用 db.<collection_name> 或者 db['collection_name'] 来选择集合:

# 选择集合(如果集合不存在,会在插入数据时创建)
collection = db['users']

(五)插入文档

(1)插入单个文档

使用 insert_one() 插入单个文档:

# 插入一个文档
user = {"name": "Alice", "age": 25, "email": "alice@example.com"}
collection.insert_one(user)

(2)插入多个文档

使用 insert_many() 插入多个文档:

# 插入多个文档
users = [{"name": "Bob", "age": 30, "email": "bob@example.com"},{"name": "Charlie", "age": 28, "email": "charlie@example.com"},
]
collection.insert_many(users)

(六)查询文档

(1)查询单个文档

使用 find_one() 查询单个文档:

# 查询 name 为 "Alice" 的文档
result = collection.find_one({"name": "Alice"})
print(result)

(2)查询多个文档

使用 find() 查询符合条件的所有文档。可以通过 for 循环遍历查询结果:

# 查询所有年龄大于 25 的用户
results = collection.find({"age": {"$gt": 25}})
for user in results:print(user)

(3)查询并格式化输出

使用 pprint 模块对查询结果进行格式化输出:

from pprint import pprint# 查询所有文档,并格式化输出
results = collection.find({})
for user in results:pprint(user)

(七)、更新文档

(1)更新单个文档

使用 update_one() 更新第一个符合条件的文档:

# 将 name 为 "Alice" 的用户的年龄更新为 26
collection.update_one({"name": "Alice"}, {"$set": {"age": 26}})

(2)更新多个文档

使用 update_many() 更新所有符合条件的文档:

# 将所有年龄大于 25 的用户的 email 域名改为 "example.org"
collection.update_many({"age": {"$gt": 25}}, {"$set": {"email": "user@example.org"}})

(3)更新操作符

  • $set:设置一个字段的值(如果字段不存在,则创建)

  • $unset:删除字段

  • $inc:递增或递减某个字段的值

  • $rename:重命名字段

例如,将用户 Bob 的年龄增加 5 岁:

collection.update_one({"name": "Bob"}, {"$inc": {"age": 5}})

(八)删除文档

(1)删除单个文档

使用 delete_one() 删除第一个符合条件的文档:

# 删除 name 为 "Charlie" 的文档
collection.delete_one({"name": "Charlie"})

(2)删除多个文档

使用 delete_many() 删除所有符合条件的文档:

# 删除所有年龄小于 30 的用户
collection.delete_many({"age": {"$lt": 30}})

(3)删除集合

删除整个集合:

# 删除集合 users
collection.drop()

(九)创建索引

索引是提高查询速度的一个重要机制。可以通过 create_index() 方法为某个字段创建索引。

(1)创建单字段索引

# 为 name 字段创建升序索引
collection.create_index([("name", 1)])

(2)创建复合字段

# 为 name 和 age 字段创建复合索引
collection.create_index([("name", 1), ("age", -1)])

(3)查看索引

# 查看当前集合的所有索引
print(collection.index_information())

(4)删除索引

# 删除 name 字段上的索引
collection.drop_index("name_1")

(十)聚合操作

聚合操作是处理和分析数据的一个强大功能。例如,统计每个年龄段用户的数量:

# 按 age 字段分组,并统计每个年龄的用户数量
pipeline = [{"$group": {"_id": "$age", "count": {"$sum": 1}}}
]
results = collection.aggregate(pipeline)
for result in results:print(result)

(十一)数据库和集合的管理

(1)查看所有数据库

print(client.list_database_names())

(2)查看集合列表

print(db.list_collection_names())

(3)删除数据库

client.drop_database('test_database')

(十二)完整代码示例

以下是一个完整的 MongoDB 操作示例代码:

from pymongo import MongoClient# 连接 MongoDB
client = MongoClient("mongodb://localhost:27017/")
db = client['test_database']
collection = db['users']# 插入数据
collection.insert_one({"name": "Alice", "age": 25, "email": "alice@example.com"})# 查询数据
user = collection.find_one({"name": "Alice"})
print("查询结果:", user)# 更新数据
collection.update_one({"name": "Alice"}, {"$set": {"age": 26}})
print("更新后的数据:", collection.find_one({"name": "Alice"}))# 删除数据
collection.delete_one({"name": "Alice"})
print("删除后的数据:", collection.find_one({"name": "Alice"}))# 关闭数据库连接
client.close()

九、总结

MongoDB 是一个功能强大、灵活且易于扩展的 NoSQL 数据库,特别适合处理复杂的、非结构化的数据以及大规模数据存储和分布式部署。尽管在事务处理和数据一致性上与传统的关系数据库(如 MySQL、PostgreSQL)存在差距,但在大数据和高并发场景下,它提供了更多的优势和可扩展性。通过合理配置和管理,MongoDB 可以为现代 Web 应用、云计算、大数据等领域提供强有力的支持。

相关文章:

数据库 - Mongo数据库

目录 前言 一、MongoDB的特点 二、Mongo的核心概念 三、MongoDB的优劣势 四、使用场景 五、MongoDB与其他数据库的对比 六、如何安装MongoDB 七、数据库指令操作 &#xff08;一&#xff09;基本数据库操作 &#xff08;1&#xff09;连接 MongoDB &#xff08;2&am…...

工业控制过等保三级需要的网络安全设备及详细讲解

在工业控制系统&#xff08;ICS&#xff09;的安全性日益受到重视的背景下&#xff0c;网络安全等级保护&#xff08;过等保&#xff09;三级作为一种重要的安全标准&#xff0c;对保障工业控制系统的安全运行有着重要的意义。过等保三级主要针对那些对安全性要求较高的系统&am…...

Android开发高级篇:MVVM框架与数据双向绑定

在Android开发中&#xff0c;MVVM&#xff08;Model-View-ViewModel&#xff09;架构模式以其高效、简洁的特点&#xff0c;成为越来越多开发者的首选。MVVM不仅实现了界面&#xff08;UI&#xff09;与业务逻辑的分离&#xff0c;还通过数据双向绑定技术&#xff0c;极大地简化…...

智能招聘系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;企业管理&#xff0c;招聘信息管理&#xff0c;应聘信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;招聘信息&#xff0c;我的 开发系统&…...

Wireshark抓包GRPC协议查看Protobuf编码内容

1.说明 对通过GRPC协议进行通信的流量进行抓包后&#xff0c; 需要先转换为HTTP2协议&#xff0c; 因为默认解析的HTTP协议和TCP协议无法进行后续的查看操作&#xff0c; 然后再通过加载protobuf文件&#xff0c; 对GRPC内的DATA字段进行解码。 2.抓包 本文为了测试方便&…...

selenium 强制、隐式、显示等待(11种预置条件)

注&#xff1a;显示等待和隐式等待不可混用 强制等待 让当前正在执行的代码线程暂停运行。 示例&#xff1a;在电商网站的商品搜索页面&#xff0c;等待 5 秒之后&#xff0c;点击搜索按钮&#xff0c;如果页面加载速度很快&#xff0c;在 2 秒内生成&#xff0c;那么还需要…...

ffmpeg拉取rtsp网络视频流报错解析

在使用ffmpeg调用api方式对一个rtsp网络视频流拉流播放时&#xff0c;应用程序出现了一些错误提示&#xff0c;并且拉流播放的画面也出现了一些马赛克的现象。所以这里便对应用程序所产生的错误提示进行了详细的研究和分析。这里将分析结果贴在下面&#xff0c;若其他朋友遇到类…...

c# iTextSharp 读取PDF

安装 iTextSharp&#xff1a; 可以通过 NuGet 包管理器安装 iTextSharp&#xff1a; Install-Package itext7创建 PDF 文件&#xff1a; using System; using System.IO; using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element;class Program {static voi…...

<<迷雾>> 第5章 从逻辑学到逻辑电路(3)--与门 示例电路

与门及其符号&#xff08;2输入端&#xff09; info::操作说明 鼠标单击开关切换开合状态 系统中使用 半方形半圆形 表示与门 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch05-11…...

Java应用的数据库连接池连接超时处理

Java应用的数据库连接池连接超时处理 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java应用中&#xff0c;数据库连接池是管理数据库连接的重要组件。然而&#xff0c;当数据库负载过高或网…...

机器学习:opencv--摄像头OCR

目录 前言 一、三个函数 1.显示图像 2.点排序 3.透视变换 二、代码实例 1.打开摄像头 2.图像预处理 3.检测特定轮廓 4.对轮廓进行处理 5.释放资源 前言 摄像头OCR指的是利用摄像头捕捉图像中的文字信息&#xff0c;并通过光学字符识别&#xff08;OCR&#xff09;技…...

基于二分查找的动态规划 leetcode 300.最长递增子序列

如题&#xff1a; https://leetcode.cn/problems/longest-increasing-subsequence/description/ 其实常规动态规划的解法就没什么好说的了&#xff0c;有意思的是官方放出了一个二分查找的动态规化解法&#xff0c;时间复杂度能降到O(nlog(n))&#xff0c;但是为什么这样能解&…...

Java8 IntStream流sum的Bug

做. - 力扣&#xff08;LeetCode&#xff09;的时候发现 IntStream流中的sum在相加的过程中会加到突破Int上限导致数据不对&#xff0c;需要装成LongStream流才能有正确的输出。 long sum Arrays.stream(milestones).asLongStream().sum(); 要这样子写&#xff0c;只把sum改…...

PCL 索引空间采样

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 索引空间采样 2.1.2 可视化原始点云和下采样后的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xf…...

PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(三)

作为“贴代码”力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服&#xff01;下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里可以下载这个PasteForm的项目案例 目前“贴代码”对外使用PasteForm的项目有"贴Builder(PasteSpide…...

【无标题】logistic映射

当Logistic映射中的控制参数 μ \mu μ 为负数时&#xff0c;系统的行为与正数 μ \mu μ 的情况截然不同。Logistic映射的一般形式是&#xff1a; x ( t 1 ) μ x ( t ) ( 1 − x ( t ) ) x(t1) \mu x(t) (1 - x(t)) x(t1)μx(t)(1−x(t))其中 x ( t ) x(t) x(t) 表示时…...

基于Node.js+Express+MySQL+VUE科研成果网站发布查看科研信息科研成果论文下载免费安装部署

目录 1.技术选型‌ ‌2.功能设计‌ ‌3.系统架构‌ ‌4.开发流程‌ 5.开发背景 6.开发目标 7.技术可行性 8.功能可行性 8.1功能图 8.2 界面设计 8.3 部分代码 构建一个基于Spring Boot、Java Web、J2EE、MySQL数据库以及Vue前后端分离的科研成果网站&#xff0c;可…...

提升C++代码质量的一些建议

文章目录 1. 命名清晰2. 简洁性3. 一致性4. 注释5. 避免复杂性6. 重构7. 测试8. 错误处理9. 文档10. 代码复用11. 性能优化12. 安全性- 代码规范推荐 C开发中&#xff0c;写出优雅且可维护的代码不仅能提升代码质量&#xff0c;还能提高团队协作效率和项目长期的可扩展性。以下…...

起重机防摇摆技术如何达标-武汉正向科技

武汉正向科技防摇摆控制器 主要技术参数 1、防摇摆精度&#xff1a; 0.4 2、行车到达目标位置偏差位置偏差&#xff1a; 25mm 3、通讯方式&#xff1a;PROFINET / PROFIBUS / RS232 / RS422 / RS485&#xff1b; 4、消除载荷的摇摆达 96% 以上&#xff1b; 5、技术先进…...

[大语言模型-论文精读] MoRAG - 基于多部分融合的检索增强型人体动作生成

MoRAG--Multi-Fusion Retrieval Augmented Generation for Human Motion KS Shashank, S Maheshwari, RK Sarvadevabhatla - arXiv preprint arXiv:2409.12140, 2024 MoRAG - 基于多部分融合的检索增强型人体动作生成 1. 目录 MoRAG--Multi-Fusion Retrieval Augmented Generat…...

解决端口被占用

当你被你的编译器提醒&#xff0c; 当前端口被占用&#xff0c; 但明明你的服务什么的都没有启用&#xff0c;这时有三种解决办法&#xff1a; 1 。 重启 。 重启解决80%的问题 2 。 修改你的端口号 。 3 。 去windows命令行中查看&#xff0c;端口占用情况 第一步 &#xf…...

【递归】7. leetcode 404 左叶子之和

1 题目描述 题目链接&#xff1a;左叶子之和 2 解答思路 递归分为三步&#xff0c;接下来就按照这三步来思考问题 第一步&#xff1a;挖掘出相同的子问题 &#xff08;关系到具体函数头的设计&#xff09; 第二步&#xff1a;只关心具体子问题做了什么 &#xff08;关系…...

react+antdMobie实现消息通知页面样式

一、实现效果 二、代码 import React, { useEffect, useState } from react; import style from ./style/index.less; import { CapsuleTabs, Ellipsis, Empty, SearchBar, Tag } from antd-mobile; //消息通知页面 export default function Notification(props) {const [opti…...

Git 撤销一个已经push到远端仓库的commit

在 Git 中&#xff0c;撤销一个已经推送到远程仓库的改动有几种不同的方法&#xff0c;具体取决于你是否想要完全删除改动&#xff0c;还是只是恢复文件的某个状态。以下是常见的几种方法&#xff1a; git revert 撤销特定的commit git revert 是最安全的方法&#xff0c;因为…...

lambda表达式底层实现

一、lambda 代码 & 反编译 原始Java代码 假设我们有以下简单的Java程序&#xff0c;它使用Lambda表达式来遍历并打印一个字符串列表&#xff1a; import java.util.Arrays; import java.util.List;public class LambdaExample {public static void main(String[] args) {…...

鸿蒙NEXT开发-组件事件监听和状态管理(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

《More Effective C++》的学习

引用与指针 没有所谓的null reference reference一定需要代表某个对象&#xff0c;所以C要求reference必须有初值。 QString &s; 使用reference可能比使用pointer更高效。 因为reference一定是有效的&#xff0c;而指针可能为空&#xff08;需要多加一个判断&#xff0…...

Leetcode面试经典150题-322.零钱兑换

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

python17_len()函数

len()函数 A B "" C "hello world" D 18 E 18def len_test(s):try:# 尝试计算字符串的长度length len(s)return lengthexcept TypeError:# 如果不是字符串&#xff0c;则返回 None 或者提示错误return Noneif __name__ "__main__":# 单…...

车视界系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;汽车品牌管理&#xff0c;汽车颜色管理&#xff0c;用户管理&#xff0c;汽车信息管理&#xff0c;汽车订单管理系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;汽车信息&#xff0c;我…...

移动终端开发是学什么/seo搜索引擎优化是什么意思

定义全选删除的路由 // 全选删除Route::delete(user/delall,UserControllerdelall); 在控制器中实现全选删除 public function delall(Request $request){$ids$request->get(id);User::destroy($ids);return [status>0,msg>全选删除成功];} 模板编写JS if(aut…...

flash中国官网/桔子seo工具

今天在做jasper report生成pdf文档的时候&#xff0c;需要引入亚洲字体jar包。maven仓库是有这个jar包&#xff0c;但是在项目pom文件始终不能下载。无奈只有将jar包安装到maven本地仓库。 1 将jar包放到电脑的某个位置&#xff0c;如&#xff1a;C:\E\Received\FireFox\itext-…...

网站 收录 做301/昆明百度关键词优化

PIXHAWK、PX4、APM APM固件专为Arduupilot开发的固件&#xff0c;现也用于PIXHAWK。有ArduCopter社区支撑、开放&#xff0c;功能全、迭代升级快&#xff0c;适合直接用。由于有较多的历史兼容性需求&#xff0c;软件代码体系相对杂乱&#xff0c;还封装了PX4的内核&#xff0…...

北京网站建设 一流/新浪疫情实时数据

面向对象程序设计上机练习十二&#xff08;运算符重载&#xff09; Time Limit: 1000MS Memory Limit: 65536KBSubmit StatisticProblem Description 处理一个复数与一个double数相加的运算&#xff0c;结果存放在一个double型变量d1中&#xff0c;输出d1的值。定义Complex(复数…...

免费二级域名解析网站/公众号推广合作平台

Weaver博客地址更改通知 http://blog.sina.com.cn/weaver转载于:https://www.cnblogs.com/Weaver/archive/2009/07/12/1521854.html...

wordpress 分类目录/怎么优化自己网站

版本过高错误 比如我的webpack是3.6.0版本 而我的css-loader是5.0.0 这里就会出现这个错误 解决办法&#xff1a; 1&#xff0c;手动设置&#xff0c;然后采用npm install 重新下载 2&#xff0c;卸载重装 npm uninstall css-loader //卸载 npm install css-loader3.0.0 --s…...