python操作mongodb
1、安装包
pyMongo是MongoDB官方推荐的Python驱动程序,它提供了访问MongoDB数据库所需的接口。安装PyMongo非常简单,可以通过pip包管理工具来安装最新版本:
pip install pymongo
安装完成后,我们可以使用以下Python代码来检查是否成功安装了PyMongo:
import pymongoprint("pymongo version: ", pymongo.__version__)
2、mongo连接
数据库连接管理是开发过程中十分关键的一环。合理地管理连接可以提高程序的性能,避免不必要的资源浪费。
2.1、配置MongoDB连接参数
MongoDB的URI格式如下:mongodb://用户名:密码@服务器IP或域名:端口。通常MongoDB的默认端口是27017。以下是一个连接字符串的示例:
connection_string = "mongodb://username:password@localhost:27017/"
# mongodb://root:mongo@123@192.168.203.6:27017/
简化使用默认参数:
connection_string = "mongodb://localhost:27017/"
2.2、建立数据库连接
使用PyMongo建立连接,通常只需要导入pymongo库并使用MongoClient类即可:
from pymongo import MongoClientclient = MongoClient(connection_string)
MongoClient创建了一个MongoDB连接实例。默认情况下,MongoClient实例会自动连接到MongoDB服务器。这里 connection_string 是之前我们设置的连接字符串。
2.3、pymongo连接测试
网上大都上述方式,但连接时总是失败。遇到两个错误:
S1、pymongo.errors.InvalidURI: Username and password must be escaped according to RFC 3986, use urllib.parse.quote_plus()
解决方式:python连接Mongo问题:pymongo.errors.InvalidURI: Username and password must be escaped according to RFC... - 简书
S2、pymongo.errors.ServerSelectionTimeoutError: Could not reach any servers in [('localhost', 27017)]
解决方式:pymongo pymongo.errors.ServerSelectionTimeoutError: Could not reach any servers in [('localhost', 27017)] - 你说夕阳很美 - 博客园
# 最终测试通过代码
from urllib import parse
from pymongo import MongoClient# 转义用户名和密码
user = parse.quote_plus("用户名") # 根据RFC 3986转义
passwd = parse.quote_plus("密码") # 根据RFC 3986转义
connection_string = "mongodb://{0}:{1}@IP:PORT/?directConnection=true".format(user, passwd) # ?directConnection=true是关键client = MongoClient(connection_string)# 连接到mydatabase数据库
db = client["mydatabase"]
# 尝试执行一个简单的命令,例如查看所有集合
collections = db.list_collection_names()
print(collections)# 关闭客户端连接
client.close()
未报错,则运行成功!
3、数据库操作
3.1、创建数据库
如,创建的数据库 testdb:
db = client["mydatabase"] # 创建的数据库
# 或 db = client.get_database("mydatabase")
在 MongoDB 中,数据库只有在内容插入后才会创建,就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。
3.2、判断指定的数据库是否存在
可以读取 MongoDB 中的所有数据库,并判断指定的数据库是否存在:
dblist = client.list_database_names() # 查看所有数据库名称
if "test" in dblist:print("数据库已存在!")
4、集合基本操作
4.1、集合创建
MongoDB 中的集合类似 SQL 的表,MongoDB 使用数据库对象来创建集合,实例如下:
db = client["mydatabase"] # 创建数据库"mydatabase"
collection = db["mycollection"] # 创建集合"mycollection"
# 或 collection = database.get_collection("mycollection")
在 MongoDB 中,集合只有在内容插入后才会创建,就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
4.2、判断指定的集合是否存在
可以读取 MongoDB 数据库中的所有集合,并判断指定的集合是否存在:
db = myclient["mydatabase"]
collist = db_test.list_collection_names() # 获取数据库中所有集合的名称
if "mycollection" in collist: # 判断 mycollection 集合是否存在print("集合已存在!")
5、文档基础增删改查
5.1、插入文档
5.1.1、插入单条数据
使用insert_one()方法向集合中插入单条数据。
# 插入单条数据
doc = {"name": "John", "age": 30, "city": "New York"}
result = collection.insert_one(doc)# 打印插入的文档的ID
print(result.inserted_id)
5.1.2、插入多条数据
使用insert_many()方法一次性插入多条数据。
# 插入多条数据
docs = [{"name": "Amy", "age": 25, "city": "Los Angeles"},{"name": "Hannah", "age": 22, "city": "Chicago"},{"name": "Michael", "age": 27, "city": "Boston"}
]
result = collection.insert_many(docs)# 打印插入的文档的ID列表
print(result.inserted_ids)
5.2、查询文档
5.2.1、查询所有文档
使用find()方法可以查询集合中的所有文档。
# 查询所有文档
for idx, doc in enumerate(collection.find()):print(idx, doc)
5.2.2、查询单个文档
使用find_one()方法可以查询并返回集合中的第一个匹配文档。
# 查询单个文档
doc = collection.find_one({"name": "John"})
print(doc)
5.3.3、带条件查询
通过传递查询条件来过滤返回的文档。
# 带条件查询
docs = collection.find({"age": {"$gt": 25}})
for idx, doc in enumerate(docs):print(idx, doc)
5.3.4、模糊查询
MongoDB支持正则表达式进行模糊查询。
# 模糊查询
import redocs = collection.find({"name": re.compile("^J")})
for idx, doc in enumerate(docs):print(idx, doc)
或者使用MongoDB的$regex操作符:
# 使用$regex进行模糊查询
docs = collection.find({"name": {"$regex": "^J"}})
for idx, doc in enumerate(docs):print(idx, doc)
5.3、更新文档
5.3.1、更新单个文档
使用update_one()方法可以更新集合中第一个匹配的文档。
# 更新单个文档
query = {"name": "John"}
newvalues = {"$set": {"age": 31}}
result = collection.update_one(query, newvalues)# 打印匹配和修改的文档数量
print(result.matched_count, result.modified_count)
5.3.2、更新多个文档
如果想要更新所有匹配的文档,可以使用update_many()方法。
# 更新多个文档
query = {"age": {"$gt": 25}}
newvalues = {"$set": {"status": "senior"}}
result = collection.update_many(query, newvalues)# 打印匹配和修改的文档数量
print(result.matched_count, result.modified_count)
5.4、删除文档
5.4.1、删除单个文档
使用delete_one()方法删除集合中第一个匹配的文档。
# 删除单个文档
query = {"name": "Amy"}
result = collection.delete_one(query)# 打印删除的文档数量
print(result.deleted_count)
5.4.2、删除多个文档
如果想要删除所有匹配的文档,可以使用delete_many()方法。
# 删除多个文档
query = {"status": "senior"}
result = collection.delete_many(query)# 打印删除的文档数量
print(result.deleted_count)
6、索引
MongoDB支持索引来提高查询性能。你可以为集合中的字段创建索引。
6.1、创建索引
collection.create_index([("name", pymongo.ASCENDING)], unique=True)
6.2、为多个字段创建复合索引
collection.create_index([("name", pymongo.ASCENDING), ("age", pymongo.DESCENDING)])
7、聚合管道
MongoDB的聚合管道是一种强大的数据处理工具,可以对集合中的文档进行复杂的数据处理。
# 使用聚合管道
pipeline = [{"$match": {"age": {"$gt": 25}}},{"$group": {"_id": "$city", "count": {"$sum": 1}}}
]
results = collection.aggregate(pipeline)for idx, result in enumerate(results):print(idx, result)
这个示例中,我们首先通过$match阶段筛选出年龄大于25的文档,然后通过$group阶段按城市分组,并计算每个城市的文档数量。
8、事务
从MongoDB 4.0开始,支持多文档事务。这允许你在多个集合和数据库上执行一系列操作,同时保持数据的一致性和完整性。
from pymongo import MongoClient# 连接到MongoDB
client = MongoClient("localhost", 27017)# 确保MongoDB在副本集模式下运行(事务需要副本集)
db = client["mydatabase"]# 开始一个会话
with client.start_session() as session:with session.start_transaction():# 在此执行事务操作collection1.insert_one(doc1, session=session)collection2.insert_one(doc2, session=session)# 注意:事务需要在副本集或分片集群上运行
9、实用技巧和最佳实践
9.1、使用连接池
在Web应用程序中,频繁地创建和销毁MongoDB连接是不高效的,建议使用连接池来重用连接。为了优化性能,PyMongo内部实现了连接池机制。这意味着当多个请求需要访问MongoDB时,它们可以从连接池中获取已存在的连接,而无需每次都建立新的连接。这在大量并发请求的场景下,可以显著提高性能和资源利用率。
连接池的具体细节和内部实现可能比较复杂,但是对于应用开发者而言,只需要正确地配置连接字符串和连接池大小,大多数场景下PyMongo都能够为我们提供稳定的数据库连接服务。
from pymongo import MongoClient# 创建一个连接池
client = MongoClient("localhost", 27017, maxPoolSize=100)# 使用client进行数据库操作
db = client["mydatabase"]
collection = db["mycollection"]
# 操作完成后,连接会自动返回到连接池中
9.2、监控和日志
对于生产环境,监控MongoDB的性能和日志是非常重要的。确保启用MongoDB的日志记录,并使用适当的工具来监控数据库的性能。
9.3、使用游标超时
当使用大量数据时,游标可能会占用大量资源。使用游标时,可以设置超时时间以避免潜在的资源泄露。
# 设置游标超时时间
cursor = collection.find().batch_size(10).add_option(pymongo.cursor.NoCursorTimeout)
注意:通常不推荐在生产环境中使用NoCursorTimeout,因为它可能导致游标无限期地保持打开状态。
9.4、安全性
确保MongoDB实例受到适当的保护,包括网络层面的访问控制、身份验证和授权。
9.5、性能和优化
索引优化:确保为查询中常用的字段创建索引,但也要避免过多索引,因为索引会占用额外的磁盘空间并可能影响写操作的性能。
查询优化:优化查询语句,减少不必要的数据检索,使用覆盖索引来减少磁盘I/O。
批量操作:在可能的情况下使用批量插入、更新和删除操作来提高性能。
监控和调优:定期监控MongoDB的性能指标,如查询响应时间、索引命中率、内存使用等,并根据需要进行调优。
9.6、使用GridFS存储大文件
MongoDB的GridFS是一个用于存储和检索大文件的规范。它可以将大文件分割成多个较小的块,并将这些块存储在MongoDB的集合中。GridFS提供了与MongoDB API类似的接口来操作文件。
from pymongo import MongoClient
from gridfs import GridFS# 连接到MongoDB
client = MongoClient("localhost", 27017)
db = client["mydatabase"]# 创建GridFS实例
fs = GridFS(db)# 上传文件
with open("large_file.dat", "rb") as f:file_id = fs.put(f, filename="large_file.dat")# 下载文件
with fs.get(file_id) as f:with open("downloaded_large_file.dat", "wb") as out:out.write(f.read())
9.7、异步操作
虽然PyMongo本身不提供直接的异步API,但你可以使用如motor这样的库来与MongoDB进行异步交互。motor是PyMongo的一个异步版本,它基于Python的asyncio库。
import asyncio
from motor.motor_asyncio import AsyncIOMongoClientasync def main():client = AsyncIOMongoClient("localhost", 27017)db = client["mydatabase"]collection = db["mycollection"]# 异步插入文档await collection.insert_one({"name": "John Doe", "age": 30})# 异步查询async for idx, doc in enumerate(collection.find({"age": 30})):print(idx, doc)# 关闭连接await client.close()运行异步主函数asyncio.run(main())
9.8、备份和恢复
定期备份MongoDB数据库是非常重要的,以防数据丢失或损坏。MongoDB提供了多种备份和恢复的方法,包括使用mongodump和mongorestore命令行工具,以及第三方备份解决方案。
参考文章:
1、pymongo官方API文档
MongoDB PyMongo 文档 - PyMongo 驱动程序 v4.12 - MongoDB Docs
相关文章:
python操作mongodb
1、安装包 pyMongo是MongoDB官方推荐的Python驱动程序,它提供了访问MongoDB数据库所需的接口。安装PyMongo非常简单,可以通过pip包管理工具来安装最新版本: pip install pymongo 安装完成后,我们可以使用以下Python代码来检查是否…...
IS-IS中特殊字段——OL过载
文章目录 OL 过载位 🏡作者主页:点击! 🤖Datacom专栏:点击! ⏰️创作时间:2025年04月13日20点12分 OL 过载位 路由过载 使用 IS-IS 的过载标记来标识过载状态 对设备设置过载标记后ÿ…...
行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第二部分)
行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第一部分)-CSDN博客 Propagation of Interplanetary Shocks in the Heliosphere [ Chapter 3 ] [PDF: arXiv] 本文保留原文及参考文献,参…...
紫光同创FPGA实现HSSTLP光口视频点对点传输,基于Aurora 8b/10b编解码架构,提供6套PDS工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐我这里已有的 GT 高速接口解决方案Xilinx系列FPGA实现GTP光口视频传输方案推荐Xilinx系列FPGA实现GTX光口视频传输方案推荐Xilinx系列FPGA实…...
正则表达式使用知识(日常翻阅)
正则表达式使用 一、字符匹配 1. 普通字符 描述:直接匹配字符本身。示例: abc 匹配字符串中的 “abc”。Hello 匹配字符串中的 “Hello”。 2. 特殊字符 .(点号): 描述:匹配任意单个字符(…...
CSS padding(填充)学习笔记
CSS 中的 padding(填充)是一个非常重要的属性,它用于定义元素边框与元素内容之间的空间,即上下左右的内边距。合理使用 padding 可以让页面布局更加美观、清晰。以下是对 CSS padding 的详细学习笔记。 一、padding 的作用 padd…...
Python中的字符串、列表、字典和集合详解
Python是一门强大的编程语言,其内置的数据结构丰富多样。其中,字符串、列表、字典和集合是最常用的数据类型。本文将对它们的区别、用法和使用场景进行详细介绍,帮助大家更好地理解和应用这些数据结构。 1. 字符串(String…...
【CUDA编程】CUDA Warp 与 Warp-Python 对比文档
相关文档: Nvidia-Warp GitHub:nvidia/warp CUDA Warp 和 Warp-Python 库 的对比与统一文档,涵盖两者的核心概念、区别、使用场景及示例: 1. CUDA Warp(硬件/编程模型概念) 1.1 定义与核心概念 定义: C…...
中厂算法岗面试总结
时间:2025.4.10 地点:上市的电子有限公司 面试流程: 1.由负责人讲解公司文化 2,由技术人员讲解公司的技术岗位,还有成果 3.带领参观各个工作位置,还有场所 4.中午吃饭 5.面试题,闭卷考试…...
Losson 4 NFS(network file system(网络文件系统))
网络文件系统:在互联网中共享服务器中文件资源。 使用nfs服务需要安装:nfs-utils 以及 rpcbind nfs-utils : 提供nfs服务的程序 rpcbind :管理nfs所有进程端口号的程序 nfs的部署 1.客户端和服务端都安装nfs-utils和rpcbind #安装nfs的软件rpcbind和…...
自动化运行后BeautifulReport内容为空
一、问题描述 自动化程序运行后发现运行目录下生成的html报告文件内容为空,没有运行结果。 二、测试环境 操作系统:Windows 11 家庭版BeautifulReport:0.1.3Python:3.11.9Appium-Python-Client:5.0.0Appium Server:2.…...
CTF-WEB排行榜制作
CTF-WEB排行榜制作 项目需求: 现在14道题对应有14个flag,我需要使用dockerfile搭建一个简单的,能够实现验证这些题目对应的flag来计分的简单网站(要求页面比较精美) 前十题设置为10分 11-14题设置为20分 1. flag{5a3…...
架构生命周期(高软57)
系列文章目录 架构生命周期 文章目录 系列文章目录前言一、软件架构是什么?二、软件架构的内容三、软件设计阶段四、构件总结 前言 本节讲明架构设计的架构生命周期概念。 一、软件架构是什么? 二、软件架构的内容 三、软件设计阶段 四、构件 总结 就…...
STM32单片机定时器的输入捕获和输出比较
目录 一、定时器的输入捕获 1、工作原理 2、示例代码 二、定时器的输出比较 1、工作原理 2、示例代码 三、总结 在STM32单片机中,定时器是一个非常重要的外设,广泛应用于时间管理、事件计时、波形生成等多种场景。其中输入捕获和输出比较是两个基…...
计算机组成原理-系统总线
1. 系统总线的定义 系统总线是计算机系统中各功能部件(CPU、存储器、I/O设备等)之间传递信息的公共通路,遵循统一的电气规范和时序协议,是计算机硬件互联的基础。 核心作用:实现数据、地址和控制信号的传输ÿ…...
【android bluetooth 框架分析 02】【Module详解 3】【HciHal 模块介绍】
1. 背景 我们在 gd_shim_module 介绍章节中,看到 我们将 HciHal 模块加入到了 modules 中。 modules.add<hal::HciHal>();在 ModuleRegistry::Start 函数中我们对 加入的所有 module 挨个初始化。 而在该函数中启动一个 module 都要执行那下面几步ÿ…...
Git 远程仓库
Git 入门笔记 远程仓库 Git 远程仓库 Git 远程仓库是一个托管在网络服务器上的代码仓库,它是团队协作开发的核心。 通过远程仓库,开发者可以共享代码、同步更新,实现分布式协作。 SSH 密钥 SSH 密钥可以让你在使用 Git 时安全地连接远程…...
209.长度最小的子数组- 力扣(LeetCode)
题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1:…...
符号右移“ >>= “ 与 无符号右移“ >>>= “ 的区别
符号右移" >> " 与 无符号右移" >>> " 的区别 一、符号右移" >> " 与 无符号右移" >>> " 的区别1. 符号右移(>>)与无符号右移(>>>)的区别…...
山东大学软件学院项目实训-基于大模型的模拟面试系统-专栏管理部分
本周我的主要任务是关于专栏管理部分的完善。 专栏图片的显示问题 问题分析 根据代码可知:图片URL来自于portfolio.headImgUrl,而且如果URL不存在的话,应该显示的是无图片,而网页中显示加载失败说明portfolio.headImgUrl应该是存…...
从 SYN Flood 到 XSS:常见网络攻击类型、区别及防御要点
常见的网络攻击类型 SYN Flood、DoS(Denial of Service) 和 DDoS(Distributed Denial of Service) 是常见的网络攻击类型,它们的目标都是使目标系统无法正常提供服务。以下是它们的详细说明: 1. SYN Flood…...
ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程
文章目录 前言(Introduction)搭建开发环境(Setup Development Environment)在window中安装Unity(Install Unity in window)创建Docker容器,并安装相关软件(Create Docker containers…...
01_通过调过api文字生成音频示例
第1 第2 第3,测试音色 第4 第5 第6 第7生成api_key 第8代码 import requestsurl "https://api.siliconflow.cn/v1/audio/speech"payload {"input": "在中国传统文化中,谦让被视为一种美德,但过度的让步…...
使用PyTorch实现目标检测边界框转换与可视化
一、引言 在目标检测任务中,边界框(Bounding Box)的坐标表示与转换是核心基础操作。本文将演示如何: 实现边界框的两种表示形式(角点坐标 vs 中心坐标)之间的转换 使用Matplotlib在图像上可视化边界框 验…...
QEMU学习之路(8)— ARM32通过u-boot 启动Linux
QEMU学习之路(8)— ARM32通过u-boot 启动Linux 一、前言 参考文章: Linux内核学习——内核的编译和启动 Linux 内核的编译和模拟执行 Linux内核运行——根文件系统 Linux 内核学习——使用 uboot 加载内核 二、构建Linux内核 1、获取Linu…...
flutter 桌面应用之右键菜单
在 Flutter 桌面应用开发中,context_menu 和 contextual_menu 是两款常用的右键菜单插件,各有特色。以下是对它们的对比分析: 🧩 context_menu 集成方式:通过 ContextMenuArea 组件包裹目标组件,定义…...
系统设计面试总结:高性能相关:CDN(内容分发网络)、什么是静态资源、负载均衡(Nginx)、canal、主从复制
以下为本人自学回顾使用,请支持javaGuide原版。 1.CDN概述 CDN 就是将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。 你可以将 CDN 看作是服务上一层的特殊缓存服务,分布…...
从红黑树到哈希表:原理对比与典型场景应用解析(分布式以及布隆过滤器)
在数据结构的世界里,红黑树一直以「自平衡二叉查找树」的身份备受赞誉。凭借红黑节点的精妙设计,它能将插入、删除、查找的时间复杂度稳定控制在 ( log n ) (\log n) (logn),成为处理有序数据的经典方案。然而,当业务场景对「…...
动手学深度学习:手语视频在VGG模型中的测试
前言 其他所有部分同上一篇AlexNet一样,所以就不再赘诉,直接看VGG搭建部分。 模型 VGG是第一个采取块进行模块化搭建的模型。 def vgg_block(num_convs,in_channels,out_channels):layers[]for _ in range(num_convs):layers.append(nn.Conv2d(in_ch…...
微信小程序实战案例 - 餐馆点餐系统 阶段 4 - 订单列表 状态
✅ 阶段 4 – 订单列表 & 状态 目标 展示用户「我的订单」列表支持状态筛选(全部 / 待处理 / 已完成)支持分页加载和实时刷新使用原生组件编写 ✅ 1. 页面结构:文件结构 pages/orders/├─ index.json├─ index.wxml├─ index.js└─…...
深度学习理论-直观理解 Attention
本文首先介绍 Attention 的原始公式,然后以 Self-Attention 为例,简化后逐步分析 Attention 计算结果表达的含义 Attention Attention 公式如下: A t t e n t i o n s o f t m a x ( Q ⋅ K T d k ) ⋅ V Attention softmax(\frac{Q \cd…...
python中 “with” 关键字的取舍问题
自动管理资源(自动关闭文件) 当你使用 with 打开文件时,文件会在 with 代码块结束后自动关闭,无论是否发生异常。这意味着你不需要显式地调用 f.close() 来关闭文件 示例: with open("words.txt", "r…...
ISIS协议(动态路由协议)
ISIS基础 基本概念 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionL…...
llm开发框架新秀
原文链接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google开源ADK-Agent Development Kit 开源的、代码优先的 Python 工具包,用于构建、评估和部署具有灵活性和控制力的复杂智能体项目仓库:https://github.com/google/adk-python 2.6k项目文档:Age…...
Zookeeper的典型应用场景?
大家好,我是锋哥。今天分享关于【Zookeeper的典型应用场景?】面试题。希望对大家有帮助; Zookeeper的典型应用场景? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 是一个开源的分布式协调服务,主要用于管理和协调大…...
【C数据结构】 TAILQ双向有尾链表的详解
TAILQ双向有尾链表的详解 常见的链表结构1.SLIST2.STAILQ3.LIST4.TAILQ5.CIRCLEQ 一、TAILQ链表简介二、TAILQ的定义和声明三、TAILQ队列的函数1.链表头的初始化2.获取第一个节点地址3.获取最后一个节点地址4.链表是否为空5.下一个节点地址6.上一个节点地址7.插入头节点8.插入尾…...
redisson的unlock方法
//分布式方式,分布式锁,采用redisson锁 RLock lock redissonClient.getLock(userId.toString());//lock方法会无限重试。getLock底层是hash,大key是userid,小key是线程,value是重入次数 try {//boolean b lock.tryLo…...
ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代
ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代 从日志中可以看到问题出在第一个 ffmpeg 命令执行时: Unrecognized option vbsf.Error splitting the argument list: Option not found这是因为 ffmpeg 命令参…...
设计模式——抽象工厂模式总结
理解了前面的工厂模式后,再理解抽象工厂模式就很容易了。 工厂模式:https://blog.csdn.net/inside802/article/details/147170118?spm1011.2415.3001.10575&sharefrommp_manage_link 抽象工厂模式就是工厂模式的更加抽象化,父类不仅不承…...
JavaScript 定时器
在 JavaScript 中,定时器是实现代码在特定时间间隔执行或延迟执行的重要工具。下面我们将深入探讨定时器的相关知识。 定时器基础 setTimeout() setTimeout() 函数用于在指定的延迟时间后执行一次回调函数。它接受两个参数,第一个参数是要执行的回调函…...
企业经营决策风险
在企业的经营过程中,领导者每天都在面对大量的决策——该扩大生产还是收缩业务?该增设销售渠道还是提升产品质量?但你知道吗,企业最大的成本,不是生产成本,也不是人工成本,而是决策错误的成本&a…...
【云安全】云原生-centos7搭建/安装/部署k8s1.23.6单节点
一、节点基本配置 1、准备操作系统 2、 修改主机名 hostnamectl set-hostname master-1 hostnamectl set-hostname node1 hostnamectl set-hostname node2#验证hostnamectl status 3、修改/etc/hosts cat <<EOF >>/etc/hosts 192.168.255.137 master-1 192.168…...
【已更新完毕】2025泰迪杯数据挖掘竞赛B题数学建模思路代码文章教学:基于穿戴装备的身体活动监测
基于穿戴装备的身体活动监测 摘要 本研究基于加速度计采集的活动数据,旨在分析和统计100名志愿者在不同身体活动类别下的时长分布。通过对加速度数据的处理,活动被划分为睡眠、静态活动、低强度、中等强度和高强度五类,进而计算每个志愿者在…...
力扣每日打卡 1922. 统计好数字的数目 (中等)
力扣 1922. 统计好数字的数目 中等 前言一、题目内容二、解题方法1. 暴力解法(会超时,此法不通)2. 快速幂运算3. 组合计数的思维逻辑分析组合计数的推导例子分析思维小结论 4.官方题解4.1 方法一:快速幂 三、快速幂运算快速幂运算…...
宝塔Linux面板 - 添加站点建站时没有域名实现 IP 地址访问测试(宝塔面板建站 IP 访问)
前言 使用面板添加站点时,必须要填写一个域名用来指向程序,没有域名怎么办? 答案:域名直接写 【服务器 IP 地址】 操作步骤 如果还没有添加站点,则直接在创建站点的时候,域名那填写服务器地址即可&#…...
【GitHub探索】mcp-go,MCP协议的Golang-SDK
近期大模型Agent应用开发方面,MCP的概念比较流行,基于MCP的ToolServer能力开发也逐渐成为主流趋势。由于笔者工作原因,主力是Go语言,为了调研大模型应用开发,也接触到了mcp-go这套MCP的SDK实现。 对于企业内部而言&am…...
手撕TCP内网穿透及配置树莓派
注意: 本文内容于 2025-04-13 15:09:48 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:手撕TCP内网穿透及配置树莓派。感谢您的关注与支持! 之前入手了树莓派5,…...
人形机器人运动与操作: 控制、规划和学习方面的当前进展与挑战
前言 图 1:执行运动和操作任务的人形机器人:(a)HRP-4 在适应地形的同时擦拭木板[1];(b-g)Digit、Hector[2]、Atlas、H1、Justin[3]和 Apollo 取放物体;(h)iCu…...
C++ 重构muduo网络库
本项目参考的陈硕老师的思想 1. 基础概念 进程里有 Reactor、Acceptor、Handler 这三个对象 Reactor 对象的作用是监听和分发事件;Acceptor 对象的作用是获取连接;Handler 对象的作用是处理业务; 先说说 阻塞I/O,非阻塞I/O&…...
【计算机网络实践】(十二)大学校园网综合项目设计
本系列包含: (一)以太网帧分析与网际互联协议报文结构分析 (二)地址解析协议分析与传输控制协议特性分析 (三)交换机的基本操作、配置、 虚拟局域网配置和应用 (四)交…...