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

5. MongoDB 文档插入、更新、删除、查询

1. 插入文档

文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。

BSON是一种类似JSON的二进制形式的存储格式,是Binary JSON的简称。常用的插入文档方法包括:

  • db.collection.insertOne():插入单个文档
  • db.collection.insertMany():插入多个文档
  • db.collection.save():类似于insertOne()。如果文档存在,则该文档会被更新;如果文档不存在,则会插入一个新文档。

1.1 insertOne()

insertOne() 方法用于在集合中插入单个文档。

db.collection.insertOne(document, options)

  • document:要插入的单个文档。
  • options(可选):一个可选参数对象,可以包含writeConcern和bypassDocumentValidation等
db.myCollection.insertOne({name: "Alice",age: 25,city: "New York"
});返回结果:
{"acknowledged": true,"insertId": ObjectId("60c72b2f9b1d8b5a5f8e2b2d")
}

1.2 insertMany()

insertMany()方法用于在集合中插入多个文档。

db.collection.insertMany(documents, options)

  • documents:要插入的文档数组
  • options(可选):一个可选参数对象,可以包含ordered、writeConcern和bypassDocumentValidation等。
db.myCollection.insertMany([{ name: "Bob", age: 30, city: "Los Angeles" },{ name: "Charlie", age: 35, city: "Chicago" }
]);返回结果:
{"acknowledged": true,"insertedIds": [ObjectId("60c72b2f9b1d8b5a5f8e2b2e"),ObjectId("60c72b2f9b1d8b5a5f8e2b2f")]
}

1.3 db.collection.save()

save() 方法在插入文档时表现得类似于 insertOne()。

如果文档包含 _id 字段且已存在,则该文档会被更新;如果文档不包含 _id 字段或 _id 不存在,则会插入一个新文档。

db.collection.save(document, options)

  • document:要保存的文档。
  • options(可选):一个可选参数对象,可以包含 writeConcern 等。

插入文档时的选项:

这些方法的options参数通常可以包含 以下选项:

  • ordered(仅适用于insertMany):布尔值。如果为true,则按顺序插入文档,在遇到错误时停止;如果为false,则尝试插入所有文档,即使遇到错误也继续。默认值为true。
  • writeConcern:指定写操作的确认级别
  • bypassDocumentValidation:布尔值。如果为 true,则忽略集合的文档验证规则。

 1.4 实例

通过这些方法,你可以灵活地将文档插入到 MongoDB 集合中,以满足各种应用场景的需求。

插入单个文档:
db.myCollection.insertOne({name: "Alice",age: 25,city: "New York"
});插入多个文档:
db.myCollection.insertMany([{ name: "Bob", age: 30, city: "Los Angeles" },{ name: "Charlie", age: 35, city: "Chicago" }
]);保存文档:
db.myCollection.save({_id: ObjectId("60c72b2f9b1d8b5a5f8e2b2d"),name: "David",age: 40,city: "San Francisco"
});
以下文档可以存储在 MongoDB 的 runoob 数据库 的 col 集合中:
>db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库',by: '菜鸟教程',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100
})以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
查看已插入文档:
> db.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
> 我们也可以将数据定义为一个变量,如下所示:
> document=({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库',by: '菜鸟教程',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100
});执行后显示结果如下:
{"title" : "MongoDB 教程","description" : "MongoDB 是一个 Nosql 数据库","by" : "菜鸟教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100
}执行插入操作:
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
> 插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

2. 更新文档

updateOne()

updateMany()

replaceOne() 

findOneAndUpdate()

2.1 updateOne()

用于更新匹配过滤器的单个文档。

db.collection.updateOne(filter, update, options)

  • filter:用于查找文档的查询条件。
  • update:指定更新操作的文档或更新操作符。
  • options:可选参数对象,如 upsertarrayFilters 等。
db.myCollection.updateOne({ name: "Alice" },        //过滤条件{ $set: { age: 26 } },    //更新操作{ upsert: false },        //可选操作
);

2.2 updateMany()

用于更新所有匹配过滤器的文档。

db.collection.updateMany(filter, update, options)

  • filter:用于查找文档的查询条件。
  • update:指定更新操作的文档或更新操作符。
  • options:可选参数对象,如 upsertarrayFilters 等。
db.myCollection.updateMany({ age: { $lt: 30 } },                //过滤条件{ $set: { status: "active" } },      //更新操作{ upsert: false }                    //可选参数
);

2.3 replaceOne()

用于替换匹配过滤器的单个文档,新的文档将完全替换旧的文档。

db.collection.replaceOne(fileter, replacement, options)

  • filter:用于查找文档的查询条件。
  • replacement:新的文档,将替换旧的文档。
  • options:可选参数对象,如 upsert 等。
db.myCollection.replaceOne({ name: "Bob" },            //过滤条件{ name: "Bob", age: 31 }    //新文档
);

2.4 findOneAndUpdate()

用于查找并更新单个文档,可以选择返回更新前或更新后的文档。

db.collection.findOneAndUpdate(filter, update, options)

  • filter:用于查找文档的查询条件。
  • update:指定更新操作的文档或更新操作符。
  • options:可选参数对象,如 projectionsortupsertreturnDocument 等。
db.myCollection.findOneAndUpdate({ name: "Charlie" },            //过滤条件{ $set: { age: 36 } },          //更新操作{returnDocument: "after" }      //可选参数,返回更新后的文档
);

选项参数

  • upsert:如果没有匹配的文档,是否插入一个新文档。
  • arrayFilters:当更新嵌套数组时,指定应更新的数组元素的条件。
  • collation:指定比较字符串时使用的排序规则。
  • returnDocument:在 findOneAndUpdate 中使用,指定返回更新前 ("before") 或更新后 ("after") 的文档。

2.5 实例

更新单个文档:
db.myCollection.updateOne({ name: "Alice" },{ $set: { age: 26 } }
);更新多个文档:
db.myCollection.updateMany({ age: { $lt: 30 } },{ $set: { status: "active" } }
);替换单个文档:
db.myCollection.replaceOne({ name: "Bob" },{ name: "Bob", age: 31 }
);查找并更新单个文档:
db.myCollection.findOneAndUpdate({ name: "Charlie" },{ $set: { age: 36 } },{ returnDocument: "after" }
);
替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:
>db.col.save({"_id" : ObjectId("56064f89ade2f21f36b03136"),"title" : "MongoDB","description" : "MongoDB 是一个 Nosql 数据库","by" : "Runoob","url" : "http://www.runoob.com","tags" : ["mongodb","NoSQL"],"likes" : 110
})替换成功后,可以通过 find() 命令来查看替换后的数据
>db.col.find().pretty()
{"_id" : ObjectId("56064f89ade2f21f36b03136"),"title" : "MongoDB","description" : "MongoDB 是一个 Nosql 数据库","by" : "Runoob","url" : "http://www.runoob.com","tags" : ["mongodb","NoSQL"],"likes" : 110
}
> 
只更新第一条记录:
db.col.update({ "count" : { $gt : 1 } },{ $set : { "test2" : "OK"} }
);全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true 
);只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false 
);全部添加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true 
);全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true 
);只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false 
);

3. 删除文档

常用的删除文档方法包括 deleteOne()、deleteMany() 以及 findOneAndDelete()。

使用场景:

  • 数据清理:删除不再需要的旧数据或无效数据。
  • 数据修正:在数据修正过程中删除错误的或重复的文档。
  • 自动化任务:在自动化脚本或任务中,根据特定条件删除文档。

3.1 deleteOne()

用于删除匹配过滤器的单个文档。

db.collection.deleteOne(filter, options)

  • filter:用于查找要删除的文档的查询条件。
  • options(可选):一个可选参数对象。
db.myCollection.deleteOne({ name: "Alice" });结果
{"acknowledged": true,"deletedCount": 1
}

3.2 deleteMany()

用于删除所有匹配过滤器的文档。

db.collection.deleteMany(filter, options)
  • filter:用于查找要删除的文档的查询条件。
  • options(可选):一个可选参数对象。
db.myCollection.deleteMany({ status: "inactive" });返回结果:
{"acknowledged": true,"deletedCount": 1
}

3.3 findOneAndDelete()

用于查找并删除单个文档,并可以选择返回删除的文档。

db.collection.findOneAndDelete(filter, options)
  • filter:用于查找要删除的文档的查询条件。
  • options:可选参数对象,如 projectionsort 等。
db.myCollection.findOneAndDelete({ name: "Charlie" },{ projection: { name: 1, age: 1 } }
);

!!findOneAndDelete 返回被删除的文档,如果找不到匹配的文档,则返回 null。

删除操作的选项

这些删除方法的 options 参数通常可以包含以下选项:

  • writeConcern:指定写操作的确认级别。
  • collation:指定比较字符串时使用的排序规则。
  • projection(仅适用于 findOneAndDelete):指定返回的字段。
  • sort(仅适用于 findOneAndDelete):指定排序顺序以确定要删除的文档。

3.4 实例

删除单个文档:
db.myCollection.deleteOne({ name: "Alice" });删除多个文档:
db.myCollection.deleteMany({ status: "inactive" });查找并删除单个文档:
db.myCollection.findOneAndDelete({ name: "Charlie" },{ projection: { name: 1, age: 1 } }
);

4. 查询文档

4.1 查询方法

MongoDB 查询文档使用 find()、findOne() 方法。

find() 方法以非结构化的方式来显示所有文档。

4.1.1 find()

db.collection.find(query, projection)
  • query:用于查找文档的查询条件。默认为 {},即匹配所有文档。
  • projection(可选):指定返回结果中包含或排除的字段。
查找所有文档:
db.myCollection.find();按条件查找文档:
db.myCollection.find({ age: { $gt: 25 } });按条件查找文档,并只返回指定字段:
db.myCollection.find({ age: { $gt: 25 } },{ name: 1, age: 1, _id: 0 }
);
需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()pretty() 方法以格式化的方式来显示所有文档。
db.col.find().pretty()
{"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一个 Nosql 数据库","by" : "菜鸟教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100
}

4.1.2 findOne()

用于查找集合中的单个文档。如果找到多个匹配的文档,它只返回第一个。

db.collection.findOne(query, projection)
  • query:用于查找文档的查询条件。默认为 {},即匹配所有文档。
  • projection(可选):指定返回结果中包含或排除的字段。
查找单个文档:
db.myCollection.findOne({ name: "Alice" });查找单个文档,并只返回指定字段:
db.myCollection.findOne({ name: "Alice" },{ name: 1, age: 1, _id: 0 }
);

4.2 高级查询方法

4.2.1 使用比较操作符

MongoDB 支持多种比较操作符,如 $gt、$lt、$gte、$lte、$eq、$ne 等。

比较操作符有:

操作符描述示例
$eq等于{ age: { $eq: 25 } }
$ne不等于{ age: { $ne: 25 } }
$gt大于{ age: { $gt: 25 } }
$gte大于等于{ age: { $gte: 25 } }
$lt小于{ age: { $lt: 25 } }
$lte小于等于{ age: { $lte: 25 } }
$in在指定的数组中{ age: { $in: [25, 30, 35] } }
$nin不在指定的数组中{ age: { $nin: [25, 30, 35] } }
操作格式范例RDBMS中的类似语句
等于{<key>:<value>}db.col.find({"by":"菜鸟教程"}).pretty()where by = '菜鸟教程'
小于{<key>:{$lt:<value>}}db.col.find({"likes":{$lt:50}}).pretty()where likes < 50
小于或等于{<key>:{$lte:<value>}}db.col.find({"likes":{$lte:50}}).pretty()where likes <= 50
大于{<key>:{$gt:<value>}}db.col.find({"likes":{$gt:50}}).pretty()where likes > 50
大于或等于{<key>:{$gte:<value>}}db.col.find({"likes":{$gte:50}}).pretty()where likes >= 50
不等于{<key>:{$ne:<value>}}db.col.find({"likes":{$ne:50}}).pretty()where likes != 50
查找年龄大于 25 的文档:
db.myCollection.find({ age: { $gt: 25 } });

 4.2.2 使用逻辑操作符

MongoDB 支持多种逻辑操作符,如 $and、$or、$not、$nor 等。

逻辑操作符有:

操作符描述示例
$and逻辑与,符合所有条件{ $and: [ { age: { $gt: 25 } }, { city: "New York" } ] }
$or逻辑或,符合任意条件{ $or: [ { age: { $lt: 25 } }, { city: "New York" } ] }
$not取反,不符合条件{ age: { $not: { $gt: 25 } } }
$nor逻辑与非,均不符合条件{ $nor: [ { age: { $gt: 25 } }, { city: "New York" } ] }
查找年龄大于 25 且城市为 "New York" 的文档:
db.myCollection.find({$and: [{ age: { $gt: 25 } },{ city: "New York" }]
});

4.2.3 使用正则表达式

可以使用正则表达式进行模式匹配查询。

查找名字以 "A" 开头的文档:
db.myCollection.find({ name: /^A/ });

4.2.4 投影

投影用于控制查询结果中返回的字段。可以使用包含字段和排除字段两种方式。

只返回名字和年龄字段:db.myCollection.find({ age: { $gt: 25 } },{ name: 1, age: 1, _id: 0 }
);

4.2.5 排序

可以对查询结果进行排序。

按年龄降序排序:
db.myCollection.find().sort({ age: -1 });

4.2.6 限制与跳过

可以对查询结果进行限制和跳过指定数量的文档。

返回前 10 个文档:
db.myCollection.find().limit(10);跳过前 5 个文档,返回接下来的 10 个文档:
db.myCollection.find().skip(5).limit(10);

 4.2.7 实例

查找年龄大于 25 且城市为 "New York" 的文档,只返回名字和年龄字段,按年龄降序排序,并返回前 10 个文档。
db.myCollection.find({$and: [{ age: { $gt: 25 } },{ city: "New York" }]},{ name: 1, age: 1, _id: 0 }
).sort({ age: -1 }).limit(10);

4.3 MongoDB AND 条件

find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

语法格式如下:

>db.col.find({key1:value1, key2:value2}).pretty()
通过 by 和 title 键来查询 菜鸟教程 中 MongoDB 教程 的数据> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
{"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一个 Nosql 数据库","by" : "菜鸟教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100
}以上实例中类似于 WHERE 语句:WHERE by='菜鸟教程' AND title='MongoDB 教程'

4.4 MongoDB OR 条件

MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

>db.col.find({$or: [{key1: value1}, {key2:value2}]}
).pretty()
查询键 by 值为 菜鸟教程 或键 title 值为 MongoDB 教程 的文档。>db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
{"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一个 Nosql 数据库","by" : "菜鸟教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100
}
>

4.5 AND 和 OR 联合使用

以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'>db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
{"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB 教程","description" : "MongoDB 是一个 Nosql 数据库","by" : "菜鸟教程","url" : "http://www.runoob.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100
}

4.6 条件操作符

4.6.1 元素操作符

操作符描述示例
$exists字段是否存在{ age: { $exists: true } }
$type字段的 BSON 类型{ age: { $type: "int" } }

4.6.2 数组操作符

操作符描述示例
$all数组包含所有指定的元素{ tags: { $all: ["red", "blue"] } }
$elemMatch数组中的元素匹配指定条件{ results: { $elemMatch: { score: { $gt: 80, $lt: 85 } } } }
$size数组的长度等于指定值{ tags: { $size: 3 } }

4.6.3 其他操作符

操作符描述示例
$regex匹配正则表达式{ name: { $regex: /^A/ } }
$text进行文本搜索{ $text: { $search: "coffee" } }
$where使用 JavaScript 表达式进行条件过滤{ $where: "this.age > 25" }

 4.7 $type操作符

在 MongoDB 中,$type 操作符用于查询具有指定类型的字段的文档。MongoDB 的 $type 操作符用于查询字段的 BSON 数据类型。允许指定一个或多个类型,并返回匹配这些类型的文档。

db.collection.find({ field: { $type: <type> } })
  • field:要检查类型的字段。
  • type:指定的 BSON 类型,可以是类型的数字代码或类型名称的字符串。

4.7.1 BSON类型

 常见的 BSON 类型及其对应的数字代码和字符串名称:

类型代码类型名称
1double
2string
3object
4array
5binData
6undefined
7objectId
8bool
9date
10null
11regex
12dbPointer
13javascript
14symbol
15javascriptWithScope
16int
17timestamp
18long
19decimal
255minKey
127

maxKey

 4.7.2 实例

查找字段类型为字符串的文档:
db.myCollection.find({ fieldName: { $type: "string" } })
或使用类型代码:
db.myCollection.find({ fieldName: { $type: 2 } })查找字段类型为数字的文档,例如,查找 age 字段类型为整数的文档:
db.myCollection.find({ age: { $type: "int" } })
或使用类型代码:
db.myCollection.find({ age: { $type: 16 } })查找字段类型为布尔值的文档:
db.myCollection.find({ isActive: { $type: "bool" } })
或使用类型代码:
db.myCollection.find({ isActive: { $type: 8 } })查找字段类型为日期的文档:
db.myCollection.find({ createdAt: { $type: "date" } })
或使用类型代码:
db.myCollection.find({ createdAt: { $type: 9 } })查找字段类型为多种类型的文档,例如,查找 value 字段类型为字符串或整数的文档:
db.myCollection.find({ value: { $type: ["string", "int"] } })
或使用类型代码:
db.myCollection.find({ value: { $type: [2, 16] } })
查找 details 字段类型为对象,并且 score 字段类型为双精度浮点数的文档:
db.myCollection.find({$and: [{ details: { $type: "object" } },{ score: { $type: "double" } }]
})或使用类型代码:
db.myCollection.find({$and: [{ details: { $type: 3 } },{ score: { $type: 1 } }]
})

相关文章:

5. MongoDB 文档插入、更新、删除、查询

1. 插入文档 文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。 BSON是一种类似JSON的二进制形式的存储格式&#xff0c;是Binary JSON的简称。常用的插入文档方法包括&#xff1a; db.collection.insertOne()&#xff1a;插入单个文档db.collection.inse…...

⌈ 传知代码 ⌋ DETR[端到端目标检测]

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...

Oracle之触发器

简介 触发器在数据库里以独立的对象存储&#xff0c;他与存储过程不同的是&#xff0c;存储过程通过其他程序来启动运行或直接启动运行而触发器是由一个事件来启动运行&#xff0c;即触发器是当某个事件发生时自动式运行。并企&#xff0c;触发器不能接收参数。所以运行触发器…...

从零搭建微前端架构:解耦大型项目的终极方案

随着前端应用的复杂度不断提升,单体前端应用(Monolithic Frontend)的维护和扩展难度也日益增加。微前端(Micro-Frontend)作为一种新兴架构理念,旨在将大型前端项目拆分为多个独立、可独立部署的微应用,从而提升项目的可维护性和灵活性。这篇文章将带你从零开始搭建一个微…...

24/8/17算法笔记 MPC算法

MPC算法&#xff0c;在行动前推演一下 MPC&#xff08;Model Predictive Control&#xff0c;模型预测控制&#xff09;是一种先进的控制策略&#xff0c;它利用未来预测模型来优化当前的控制动作。MPC的核心思想是&#xff0c;在每一个控制步骤中&#xff0c;都基于当前系统状…...

GROUP_CONCAT 用法详解(Mysql)

GROUP_CONCAT GROUP_CONCAT 是 MySQL 中的一个聚合函数&#xff0c;用于将分组后的多行数据连接成一个单一的字符串。 通常用于将某个列的多个值合并到一个字符串中&#xff0c;以便更方便地显示或处理数据。 GROUP_CONCAT([DISTINCT] column_name[ORDER BY column_name [ASC…...

Golang httputil 包深度解析:HTTP请求与响应的操控艺术

标题&#xff1a;Golang httputil 包深度解析&#xff1a;HTTP请求与响应的操控艺术 引言 在Go语言的丰富标准库中&#xff0c;net/http/httputil包是一个强大的工具集&#xff0c;它提供了操作HTTP请求和响应的高级功能。从创建自定义的HTTP代理到调试HTTP流量&#xff0c;h…...

SQLALchemy 分页

SQLALchemy 分页 1. 使用SQLAlchemy的`slice`和`offset`/`limit`SQLAlchemy 1.4及更新版本SQLAlchemy 1.3及更早版本使用第三方库注意事项在Web开发中,分页是处理大量数据时一个非常重要的功能。SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)库,它允许开发者…...

快速上手体验MyPerf4J监控springboot应用(docker版快速开始-本地版)

使用MyPerf4J监控springboot应用 快速启动influxdb时序数据库日志收集器telegrafgrafana可视化界面安装最终效果 项目地址 项目简介: 一个针对高并发、低延迟应用设计的高性能 Java 性能监控和统计工具。 价值 快速定位性能瓶颈快速定位故障原因 快速启动 监控本地应用 idea配…...

C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现

文章目录 strlen的使用和模拟实现函数的原型strlen模拟实现&#xff1a;方法1方法2方法3 strcpy的使用和模拟实现函数的原型strcpy的模拟实现&#xff1a; strcat的使用和模拟实现函数的原型strcat的模拟实现&#xff1a; strcmp的使用和模拟实现函数的原型strcmp的模拟实现 本…...

CAPL使用结构体的方式组装一条DoIP车辆识别请求报文(payload type 0x0002)

DoIP车辆识别请求(payload type 0x0002)报文的格式为: /******************************************************** +--------+--------+--------+--------+ |version | inVer | type | +--------+--------+--------+--------+ | length …...

数据接入教学

数据接入教学 1、开通外部网络策略2、检查本地防火墙策略3、测试网络连通性4、工具抓包命令5、本地测试发送与监听 1、开通外部网络策略 保证外部网络联通、保证内部防火墙开通策略&#xff08;可以关闭进行测试&#xff09; 2、检查本地防火墙策略 关闭进行测试 停止firewa…...

炒作将引发人工智能寒冬

我们似乎经常看到人工智能的进步被吹捧为机器真正变得智能的一大飞跃。我将在这里挑选其中的一个例子&#xff0c;并确切解释为什么这种态度会为人工智能的未来埋下隐患。 这很酷&#xff0c;这是一个非常困难且非常具体的问题&#xff0c;这个团队花了3 年时间才解决。他们一定…...

clamp靶机复现

靶机设置 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机IP为192.168.112.143 目录扫描 dirsearch 192.168.112.143 访问浏览器 提示让我们扫描更多的目录 换个更大的字典&#xff0c;扫出来一个 /nt4stopc/ 目录 目录拼接 拼接 /nt4stopc/ 发现页面中有很多…...

mfc100u.dll丢失问题分析,详细讲解mfc100u.dll丢失解决方法

面对mfc100u.dll文件丢失带来的挑战时&#xff0c;许多用户都可能感到有些无助&#xff0c;尤其是当这一问题影响到他们日常使用的软件时。但实际上&#xff0c;存在几种有效方法可以帮助您快速恢复该关键的系统文件。为了方便不同水平的用户&#xff0c;本文将详细解析各种处理…...

【C++】什么是内存管理?

如果有不懂的地方&#xff0c;可以看我以往文章哦&#xff01; 个人主页&#xff1a;CSDN_小八哥向前冲 所属专栏&#xff1a;C入门 目录 C/C内存分布 C内存管理方式 new/delete操作内置类型 new/delete操作自定义类型 operator new与operator delete函数 new和delete实现…...

产业经济大脑建设方案(五)

为了提升产业经济的智能化水平&#xff0c;我们提出建设一个综合产业经济大脑系统&#xff0c;该系统通过整合大数据分析、人工智能和云计算技术&#xff0c;构建全方位的数据采集、处理和决策支持平台。该平台能够实时监测产业链各环节的数据&#xff0c;运用智能算法进行深度…...

如何在 Odoo 16 中覆盖创建、写入和取消链接方法

Odoo 是一款强大的开源业务应用程序套件&#xff0c;可为各种业务运营提供广泛的功能。其主要功能之一是能够自定义和扩展其功能以满足特定的业务需求。在本博客中&#xff0c;我们将探讨如何覆盖Odoo 16中的创建、写入和取消链接方法&#xff0c;从而使您无需修改​​核心代码…...

pip离线安装accelerate

一、离线下载到当前文件夹 pip download accelerate -d ./anzhuangbao# 制定版本使用以下命令pip download accelerate0.32.0 -d ./anzhuangbao二、离线安装 cd anzhuangbaipip install --no-index --find-links. accelerate三、验证是否安装 pip show accelerateAccelerate: …...

VUE3请求意外报跨越错误或者500错误问题

1.有可能是请求传参和传参类型写错了 首先要确保该请求接口是支持跨域的&#xff08;不支持叫后端改&#xff09; access-control-allow-headers:Content-Type, Accept, Access-Control-Allow-Origin, api_key, Authorization access-control-allow-methods:GET, POST, OPTIO…...

vue 关于两个if条件中的promise

一、案例效果 期望if判断条件里的两个promise 都同时执行完成 二、 初始代码案例 const formatDetail async (fnArgsJsonParams: MapLogicType) > {if (fnArgsJsonParams?.targetFeatureName) {const resDetailData await formatFeatureInfo(fnArgsJsonParams.targetF…...

C/C++移位运算问题

目录 上期答案揭晓&#xff1a; 回忆&#xff1a; 问题1展现&#xff1a; 问题2展现&#xff1a; 改进方案&#xff1a; 下期预告&#xff1a;C语言类型转换的问题。 上期答案揭晓&#xff1a; 上期的问题大家是否都有了想法&#xff0c;下面说说我的思路。 上次我们提到…...

录屏工具 Icecream Screen Recorder PRO v7.41

Icecream Screen Recorder的免费屏幕录制工具&#xff0c;具备捕捉视频、音频、图片和游戏等多种功能。以前推荐过的icecreamPDF也是他家的非常好用&#xff01; 下载链接&#xff1a;「录屏」来自UC网盘分享https://drive.uc.cn/s/b474616b91534...

解决连接不上Linux和服务器中的Nacos(Windows中能连接但是Linux中却不行)

报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNKNOWN: Uncaught exception in the SynchronizationContext. Re-thrown. at com.alibaba.nacos.shaded.io.grpc.Status.asRuntimeException(Status.jav 2024-08-13T10:21:52.93708:00 ERROR 27764 --- …...

【LLM大语言模型-开篇】LLM入门实践指南

"LLM入门实践指南"是一个通过代码实践&#xff0c;为大模型入门读者提供全面且较为深入的大模型技术视角的教程。 为何关注LLM&#xff1f; 创新与变革&#xff1a;LLM不仅推动了自然语言处理&#xff08;NLP&#xff09;领域的进步&#xff0c;还在诸多行业中催生了…...

实时视频换脸、8 万家 AI 公司消失、论文天价售卖、新的 scaling law、爆火毒舌 AI | AI 掘金视界周刊第 5 期

AI 视界周刊由战场小包维护&#xff0c;每周一更新&#xff0c;包含热点聚焦、应用破局、学术前沿、社区热议、智见交锋、跨界 AI、企业动态和争议 AI 八大板块&#xff0c;后续板块划分和内容撰写在周刊迭代过程中持续优化&#xff0c;欢迎大家提出建议。 欢迎大家来到《AI 视…...

XSS靶场(1-11关)

目录 简述xss xss第1关 xss第2关 ​编辑 xss第3关 xss第4关 xss第5关过滤了 on script xss第6关 xss第7关 xss第8关 xss第9关 xss第10关 xss11关 我把源代码靶场放到了最顶端 简述xss XSS攻击通常指的是通过利用网页开发时留下的漏洞&#xff0c;通过巧妙的方法…...

vue2 子组件props接收父组件对象或数组必须使用函数进行返回

export default{ name:MyComponent, props:{ title:{ type:String, default:"" }, age:{ type:Number, default:1 }, names:{ type:Array, //数组或对象必须用函数进行返回 default:function(){ return [] …...

【算法/学习】双指针

✨ 少年要迎着朝阳&#xff0c;活得肆无忌惮 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;算法学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &a…...

Springboot集成Liquibase笔记整理

添加依赖<dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId> </dependency>添加配置spring:liquibase:contexts: dev,testenabled: true编写liquibase配置类Configuration EnableConfigurationPropert…...

Python拆分无atlas图集(瑕疵版)

老板给了张没有atlas文件的图集让我拆图&#xff0c;简单写了一版凑合用。 存在的问题&#xff1a; 可能会拆出来一些小尺寸的透明像素图片&#xff1b;可能会拆出来一些偏大的小图的整体集合&#xff1b;可能会把应该是一块的小图批成两半&#xff0c;不过不多&#xff1b;其…...

SQLALchemy 排序

SQLALchemy 排序 基本用法多列排序使用函数或表达式进行排序注意事项在SQLAlchemy中,排序(Ordering)是通过order_by()方法实现的。这个方法允许你指定一个或多个列(或表达式),用于对查询结果进行排序。你可以指定升序(默认)或降序排序。 基本用法 假设你有一个User模…...

【iOS】Block底层分析

目录 前言Block底层结构Block捕获变量原理捕获局部变量&#xff08;auto、static&#xff09;全局变量捕获实例self Block类型Block的copyBlock作为返回值将Block赋值给__strong指针Block作为Cocoa API中方法名含有usingBlock的方法参数Block作为GCD API的方法参数Block属性的写…...

复现dom破坏案例和靶场

文章目录 靶场网址第一个实验步骤和原理(代码为示例要根据自己的实验修改) 第二个实验步骤和原理(代码为示例要根据自己的实验修改) 靶场网址 注册后点击 第一个实验 此实验室包含一个 DOM 破坏漏洞。注释功能允许“安全”HTML。为了解决这个实验&#xff0c;请构造一个 HT…...

【高校科研前沿】南方科技大学冯炼教授等人在遥感顶刊RSE发文:全球人类改造的基塘系统制图

1.文章简介 论文名称&#xff1a;Global mapping of human-transformed dike-pond systems&#xff08;全球人类改造的基塘系统制图&#xff09; 第一作者及单位&#xff1a;Yang Xu&#xff08;南方科技大学环境学院&#xff09; 第一通讯作者及单位&#xff1a;冯炼&#x…...

How to run angular CICD on gitlab-runner of wsl?

前提文件 .gitlab-ci.yml, .dockerignore, ci-funcs.sh, Dockerfile, karma.conf.js, nginx.conf, nginx-custom.conf, sonar-project.properties 1.test.ts const context require.context(./app/pages, true, /\.spec\.ts$/); 2.sonar-project.properties sonar.sourcessrc/…...

搭建Java集成开发环境IntelliJ IDEA

搭建Java集成开发环境&#xff08;Integrated Development Environment&#xff0c;简称IDE&#xff09;IntelliJ IDEA是一个涉及多个步骤的过程&#xff0c;旨在帮助Java开发者高效、舒适地进行编程工作。IntelliJ IDEA由JetBrains公司开发&#xff0c;以其强大的代码自动补全…...

JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决

&#x1f310;JS逆向浏览器脱环境专题&#xff1a;事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决 &#x1f5a5;️ 浏览器事件学习和编写 浏览器事件是用户与网页交互的主要方式&#xff0c;了解并掌握这些事件的处理方…...

驾校预约学习系统--论文pf

TOC springboot373驾校预约学习系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域…...

交叉编译ARM平台的OpenCV1.0

首先,从http://www.opencv.org.cn下载1.0的源码包,然后解压出来,进入解压后的目录,再进行下面的修改: 将configure 文件下列内容注释掉(有两处)&#xff0c;只保留GTK_CFLAGS"" 、GTK_LIBS"" 、have_gtkno 三项内容&#xff08;如下黑体所示&#xff09;&…...

牛客周赛 Round 56 AK

背景 语言艺术 A题&#xff1a;面包店故事 题意 一块面包要x元&#xff0c;加培根要y元&#xff0c;有n元&#xff0c;问能否买到加培根的面包 思路 大水题&#xff0c;gpt秒了 代码 #include <bits/stdc.h> using namespace std; int main() {int x, y, n; cin …...

LeetCode 热题 HOT 100 (038/100)【宇宙最简单版】

【动态规划】No. 0337 打家劫舍III【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&a…...

SQLALchemy ORM 的关联关系之 ORM 中的一对一

SQLALchemy ORM 的关联关系之 ORM 中的一对一 场景示例实现一对一关系使用 `relationship()` 和外键(FK)插入和查询数据总结在 SQLAlchemy ORM 中,一对一(One-to-One)关联关系是一种比较少见的模型关系,但它确实有其应用场景,特别是在你需要将一个对象与另一个对象紧密绑…...

模型部署 - docker

docker简介 Docker 是一种开源的容器化平台&#xff0c;允许开发者将应用程序及其依赖项打包到一个标准化的单元中&#xff0c;称为“容器”。这些容器可以在任何支持 Docker 的系统上运行&#xff0c;无需担心环境差异。 为什么需要 Docker&#xff1f; 在传统的开发中&…...

学懂C++(三十四):深入详解 C++ 高级多线程编程技术中的并发设计模式

引言 在现代软件开发中&#xff0c;多线程编程已成为提升性能和响应能力的重要手段。设计模式为解决并发问题提供了有效的解决方案。本文将探讨常见的并发设计模式&#xff0c;包括生产者-消费者模式、读者-写者模式、单例模式、帧-工作者模式以及Future-Task模式&#xff0c;并…...

大数据产业链图谱_产业链全景图_大数据行业市场分析

数据作为新型生产要素&#xff0c;是数字化、网络化、智能化的基础&#xff0c;已快速融入生产、分配、流通、消费和社会服务管理等各环节&#xff0c;影响着千行百业&#xff0c;推动着我国数字经济的蓬勃发展。 大数据又称巨量数据、海量数据&#xff0c;是由数量巨大、结构…...

photonserver 部署相关教程

Photon Server 是 Exit Games 开发的高性能、可扩展的多人游戏服务器框架。部署 Photon Server 需要一些基础的服务器管理知识和配置技巧。以下是一个基本的部署教程&#xff0c;帮助你将 Photon Server 部署在 Windows 服务器上。 目录 1. 下载并安装 Photon Server 2. 配置…...

GEE训练:sentinel-1数据的投影、显示和导出

函数 projection() Returns the default projection of an Image. Throws an error if the bands of the image dont all have the same projection. 返回图像的默认投影。如果图像带的投影不一致,则会抛出错误。 Arguments: this:image (Image): The image from which …...

后端学习笔记(七)--MyBatis参数传递

5.MyBatis参数传递 ​ *MyBatis接口方法中可以接收各种各样的参数&#xff0c;MyBatis底层对于这些参数进行不同的封装处理方式 ​ *单个参数&#xff1a; 1.POJO类型&#xff1a;直接使用&#xff0c;属性名和参数占位符名称一致 2.Map集合&#xff1a;直接使用&#xff0c;…...

uniapp 网络请求自动处理loading

文章目录 背景整理思路V1版本V2版本V3版本 背景 最近在写uniapp&#xff0c;发现执行网络请求的时候经常要处理Loading效果。 比如&#xff0c;在发送网络请求之前&#xff0c;触发Loadng&#xff1b;无论请求成功还是失败都要关闭Loading&#xff1b;请求失败的时候我们还要…...