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

Mongodb 集合插入文档自动生成ObjectId

插入单个文档

Mongodb 使用以下几种方法来插入文档 , Mongodb V5.0+ 使用 mongosh 客户端:

  • 插入单个文档
    db.collection.insertOne() 将单个 文档插入到集合中。

如果该集合当前不存在,则插入操作将创建该集合。

如果文档未指定_id字段,则将在插入之前 mongod 添加该字段并为文档_id分配唯一的字段 。

insertOne() 方法具有以下语法:

db.collection.insertOne(<document>,{writeConcern: <document>}
)

注意,不同版本下面的 ObjectId 可选参数有差异,以下基于为 V4.4 版本:

ObjectId(<hexadecimal>) 返回新的ObjectId值。12 字节的ObjectId 值包括:

  • 一个 4 字节时间戳值,表示 ObjectId 的创建,以 Unix 纪元以来的秒数为单位。

  • 每个进程生成一次的 5 字节随机值。该随机值对于机器和进程来说是唯一的。

  • 一个 3 字节递增计数器,初始化为随机值。

以下示例获取 objectId()。 如 ObjectId(“64e2fb51bbd8c3243e14f05c”) ,其中

  • 64e2fb51: 对应十进制 1692597073( “2023-8-21 13:51:13” )即 UTC ( “2023-08-21T05:51:13Z” )。
    0110 0100 = 64
    1110 0010 = e2
    1111 1011 = fb
    0101 0001 = 51

(十六进制)64e2fb51 = 6*167 + 4*166 + 14*165 + 2*164 + 15*163 + 11*162 + 5*161 + 1*160
= 1610612736 + 67108864 + 14680064 + 131072 + 61440 + 2816 + 80 + 1
= 1692597073 (十进制)

  • bbd8c3243e: 每个进程生成一次的 5 字节随机值。
  • 14f05c: 一个 3 字节递增计数器。
sit_rs1:PRIMARY> x = ObjectId(); print(x);  x.getTimestamp()
ObjectId("64e2fb51bbd8c3243e14f05c")
ISODate("2023-08-21T05:51:13Z")sit_rs1:PRIMARY> x = ObjectId(); print(x);  x.getTimestamp()
ObjectId("64e2fb53bbd8c3243e14f05d")
ISODate("2023-08-21T05:51:15Z")sit_rs1:PRIMARY> x = ObjectId(); print(x);  x.getTimestamp()
ObjectId("64e2fb53bbd8c3243e14f05e")
ISODate("2023-08-21T05:51:15Z")sit_rs1:PRIMARY> x = ObjectId(); print(x);  x.getTimestamp()
ObjectId("64e2fb56bbd8c3243e14f05f")
ISODate("2023-08-21T05:51:18Z")

尽管对象ID值应该随着时间的推移而增加,它们不一定是单调的。

这是因为他们:

  • 仅包含一秒的时间分辨率,因此对象ID在同一秒内创建的值没有保证的顺序。

  • 由客户端生成,这些客户端可能具有不同的系统时钟。

以下示例将新文档插入到 order2 集合中。如果文档未指定_id字段,MongoDB 会将_id具有 ObjectId 值的字段添加到新文档中,如下:

sit_rs1:PRIMARY> db.order2.insertOne({ cust_id: "A", ord_date: new Date("2023-06-01"), price: 15, items: [ { sku: "apple", qty: 5, price: 2.5 }, { sku: "apples", qty: 5, price: 2.5 } ], status: "1" }); 
{"acknowledged" : true,"insertedId" : ObjectId("64e31b9bbbd8c3243e14f060")
}sit_rs1:PRIMARY> db.order2.find()
{ "_id" : ObjectId("64e31b9bbbd8c3243e14f060"), "cust_id" : "A", "ord_date" : ISODate("2023-06-01T00:00:00Z"), "price" : 15, "items" : [ { "sku" : "apple", "qty" : 5, "price" : 2.5 }, { "sku" : "apples", "qty" : 5, "price" : 2.5 } ], "status" : "1" }

插入多个文档

db.collection.insertMany() 可以将多个 文档插入到集合中。将文档数组传递给该方法。

insertMany() 方法具有以下语法:

db.collection.insertMany([ <document 1> , <document 2>, ... ],{writeConcern: <document>,ordered: <boolean>}
)

如果ordered设置为 false,文档将以无序格式插入,并且可以重新排序以mongod提高性能。如果使用无序,应用程序不应依赖于插入的顺序

在分片集合上执行ordered操作列表通常比执行 unordered列表慢,因为对于有序列表,每个操作都必须等待前一个操作完成。

排除Write Concern错误,有序操作在发生错误后停止 !!!!!!!!!,而无序操作继续处理队列中任何剩余的写操作。

以下示例将三个新文档插入到 order2 集合中。如果文档未指定 _id字段,MongoDB 会_id向每个文档添加带有 ObjectId 值的字段

sit_rs1:PRIMARY> db.order2.insertMany([   
...    { cust_id: "A", ord_date: new Date("2023-06-08"), price: 60, items: [ { sku: "apple", qty: 8, price: 2.5 }, { sku: "banana", qty: 5, price: 10 } ], status: "1" },
...    { cust_id: "B", ord_date: new Date("2023-06-08"), price: 55, items: [ { sku: "apple", qty: 10, price: 2.5 }, { sku: "pears", qty: 10, price: 2.5 } ], status: "1" },
...    { cust_id: "B", ord_date: new Date("2023-06-18"), price: 26, items: [ { sku: "apple", qty: 10, price: 2.5 } ], status: "1" },
...    { cust_id: "B", ord_date: new Date("2023-06-19"), price: 40, items: [ { sku: "banana", qty: 5, price: 10 } ], status: "1"},
...    { cust_id: "C", ord_date: new Date("2023-06-19"), price: 38, items: [ { sku: "carrots", qty: 10, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "1" },
...    { cust_id: "C", ord_date: new Date("2023-06-20"), price: 21, items: [ { sku: "apple", qty: 10, price: 2.5 } ], status: "1" },
...    { cust_id: "D", ord_date: new Date("2023-06-20"), price: 76, items: [ { sku: "banana", qty: 5, price: 10 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "1" },
...    { cust_id: "D", ord_date: new Date("2023-06-20"), price: 51, items: [ { sku: "carrots", qty: 5, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 }, { sku: "apple", qty: 10, price: 2.5 } ], status: "1" },
...    { cust_id: "D", ord_date: new Date("2023-06-23"), price: 23, items: [ { sku: "apple", qty: 10, price: 2.5 } ], status: "1" }
... ])
{"acknowledged" : true,"insertedIds" : [ObjectId("64e31cb0bbd8c3243e14f061"),ObjectId("64e31cb0bbd8c3243e14f062"),ObjectId("64e31cb0bbd8c3243e14f063"),ObjectId("64e31cb0bbd8c3243e14f064"),ObjectId("64e31cb0bbd8c3243e14f065"),ObjectId("64e31cb0bbd8c3243e14f066"),ObjectId("64e31cb0bbd8c3243e14f067"),ObjectId("64e31cb0bbd8c3243e14f068"),ObjectId("64e31cb0bbd8c3243e14f069")]
}sit_rs1:PRIMARY> db.order2.find()
{ "_id" : ObjectId("64e31b9bbbd8c3243e14f060"), "cust_id" : "A", "ord_date" : ISODate("2023-06-01T00:00:00Z"), "price" : 15, "items" : [ { "sku" : "apple", "qty" : 5, "price" : 2.5 }, { "sku" : "apples", "qty" : 5, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f061"), "cust_id" : "A", "ord_date" : ISODate("2023-06-08T00:00:00Z"), "price" : 60, "items" : [ { "sku" : "apple", "qty" : 8, "price" : 2.5 }, { "sku" : "banana", "qty" : 5, "price" : 10 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f062"), "cust_id" : "B", "ord_date" : ISODate("2023-06-08T00:00:00Z"), "price" : 55, "items" : [ { "sku" : "apple", "qty" : 10, "price" : 2.5 }, { "sku" : "pears", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f063"), "cust_id" : "B", "ord_date" : ISODate("2023-06-18T00:00:00Z"), "price" : 26, "items" : [ { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f064"), "cust_id" : "B", "ord_date" : ISODate("2023-06-19T00:00:00Z"), "price" : 40, "items" : [ { "sku" : "banana", "qty" : 5, "price" : 10 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f065"), "cust_id" : "C", "ord_date" : ISODate("2023-06-19T00:00:00Z"), "price" : 38, "items" : [ { "sku" : "carrots", "qty" : 10, "price" : 1 }, { "sku" : "apples", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f066"), "cust_id" : "C", "ord_date" : ISODate("2023-06-20T00:00:00Z"), "price" : 21, "items" : [ { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f067"), "cust_id" : "D", "ord_date" : ISODate("2023-06-20T00:00:00Z"), "price" : 76, "items" : [ { "sku" : "banana", "qty" : 5, "price" : 10 }, { "sku" : "apples", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f068"), "cust_id" : "D", "ord_date" : ISODate("2023-06-20T00:00:00Z"), "price" : 51, "items" : [ { "sku" : "carrots", "qty" : 5, "price" : 1 }, { "sku" : "apples", "qty" : 10, "price" : 2.5 }, { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : ObjectId("64e31cb0bbd8c3243e14f069"), "cust_id" : "D", "ord_date" : ISODate("2023-06-23T00:00:00Z"), "price" : 23, "items" : [ { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }

无序插入,以下尝试插入带有_id 字段 和 的多个文档 ordered: false。文档数组包含两个具有重复_id字段的文档。如下:

其中 “_id” : 2, “_id” : 6 主键冲突错误 (duplicate key error),其它文档插入成功 。

sit_rs1:PRIMARY> try {
...    db.order2.insertMany([
...    { _id: 1, cust_id: "A", ord_date: new Date("2023-06-01"), price: 15, items: [ { sku: "apple", qty: 5, price: 2.5 }, { sku: "apples", qty: 5, price: 2.5 } ], status: "1" },
...    { _id: 2, cust_id: "A", ord_date: new Date("2023-06-08"), price: 60, items: [ { sku: "apple", qty: 8, price: 2.5 }, { sku: "banana", qty: 5, price: 10 } ], status: "1" },
...    { _id: 2, cust_id: "B", ord_date: new Date("2023-06-08"), price: 55, items: [ { sku: "apple", qty: 10, price: 2.5 }, { sku: "pears", qty: 10, price: 2.5 } ], status: "1" },
...    { _id: 4, cust_id: "B", ord_date: new Date("2023-06-18"), price: 26, items: [ { sku: "apple", qty: 10, price: 2.5 } ], status: "1" },
...    { _id: 5, cust_id: "B", ord_date: new Date("2023-06-19"), price: 40, items: [ { sku: "banana", qty: 5, price: 10 } ], status: "1"},
...    { _id: 6, cust_id: "C", ord_date: new Date("2023-06-19"), price: 38, items: [ { sku: "carrots", qty: 10, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "1" },
...    { _id: 6, cust_id: "C", ord_date: new Date("2023-06-20"), price: 21, items: [ { sku: "apple", qty: 10, price: 2.5 } ], status: "1" },
...    { _id: 8, cust_id: "D", ord_date: new Date("2023-06-20"), price: 76, items: [ { sku: "banana", qty: 5, price: 10 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "1" },
...    { _id: 9, cust_id: "D", ord_date: new Date("2023-06-20"), price: 51, items: [ { sku: "carrots", qty: 5, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 }, { sku: "apple", qty: 10, price: 2.5 } ], status: "1" },
...    { _id: 10, cust_id: "D", ord_date: new Date("2023-06-23"), price: 23, items: [ { sku: "apple", qty: 10, price: 2.5 } ], status: "1" }
... ], { ordered: false });
... } catch (e) {
...    print (e);
... }
BulkWriteError({"writeErrors" : [{"index" : 2,"code" : 11000,"errmsg" : "E11000 duplicate key error collection: test.order2 index: _id_ dup key: { _id: 2.0 }","op" : {"_id" : 2,"cust_id" : "B","ord_date" : ISODate("2023-06-08T00:00:00Z"),"price" : 55,"items" : [{"sku" : "apple","qty" : 10,"price" : 2.5},{"sku" : "pears","qty" : 10,"price" : 2.5}],"status" : "1"}},{"index" : 6,"code" : 11000,"errmsg" : "E11000 duplicate key error collection: test.order2 index: _id_ dup key: { _id: 6.0 }","op" : {"_id" : 6,"cust_id" : "C","ord_date" : ISODate("2023-06-20T00:00:00Z"),"price" : 21,"items" : [{"sku" : "apple","qty" : 10,"price" : 2.5}],"status" : "1"}}],"writeConcernErrors" : [ ],"nInserted" : 8,"nUpserted" : 0,"nMatched" : 0,"nModified" : 0,"nRemoved" : 0,"upserted" : [ ]
})sit_rs1:PRIMARY> db.order2.find()
{ "_id" : 1, "cust_id" : "A", "ord_date" : ISODate("2023-06-01T00:00:00Z"), "price" : 15, "items" : [ { "sku" : "apple", "qty" : 5, "price" : 2.5 }, { "sku" : "apples", "qty" : 5, "price" : 2.5 } ], "status" : "1" }
{ "_id" : 2, "cust_id" : "A", "ord_date" : ISODate("2023-06-08T00:00:00Z"), "price" : 60, "items" : [ { "sku" : "apple", "qty" : 8, "price" : 2.5 }, { "sku" : "banana", "qty" : 5, "price" : 10 } ], "status" : "1" }
{ "_id" : 4, "cust_id" : "B", "ord_date" : ISODate("2023-06-18T00:00:00Z"), "price" : 26, "items" : [ { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : 5, "cust_id" : "B", "ord_date" : ISODate("2023-06-19T00:00:00Z"), "price" : 40, "items" : [ { "sku" : "banana", "qty" : 5, "price" : 10 } ], "status" : "1" }
{ "_id" : 6, "cust_id" : "C", "ord_date" : ISODate("2023-06-19T00:00:00Z"), "price" : 38, "items" : [ { "sku" : "carrots", "qty" : 10, "price" : 1 }, { "sku" : "apples", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : 8, "cust_id" : "D", "ord_date" : ISODate("2023-06-20T00:00:00Z"), "price" : 76, "items" : [ { "sku" : "banana", "qty" : 5, "price" : 10 }, { "sku" : "apples", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : 9, "cust_id" : "D", "ord_date" : ISODate("2023-06-20T00:00:00Z"), "price" : 51, "items" : [ { "sku" : "carrots", "qty" : 5, "price" : 1 }, { "sku" : "apples", "qty" : 10, "price" : 2.5 }, { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }
{ "_id" : 10, "cust_id" : "D", "ord_date" : ISODate("2023-06-23T00:00:00Z"), "price" : 23, "items" : [ { "sku" : "apple", "qty" : 10, "price" : 2.5 } ], "status" : "1" }

插入的附加方法

以下方法还可以将新文档添加到集合中:

db.collection.updateOne() 与选项一起使用时upsert: true。

db.collection.updateMany() 与选项一起使用时upsert: true。

db.collection.findAndModify() 与选项一起使用时upsert: true。

db.collection.findOneAndUpdate() 与选项一起使用时 upsert: true。

db.collection.findOneAndReplace() 与选项一起使用时 upsert: true。

db.collection.bulkWrite().

以上方法可以参考 以下的文章 :

(1)Mongodb 更新集合的方法到底有几种 (上) ?
(2)Mongodb 更新集合的方法到底有几种 (中) ?
(3)Mongodb 更新集合的方法到底有几种 (下) ?

相关文章:

Mongodb 集合插入文档自动生成ObjectId

插入单个文档 Mongodb 使用以下几种方法来插入文档 &#xff0c; Mongodb V5.0 使用 mongosh 客户端&#xff1a; 插入单个文档 db.collection.insertOne() 将单个 文档插入到集合中。 如果该集合当前不存在&#xff0c;则插入操作将创建该集合。 如果文档未指定_id字段&am…...

C# .aspx网页获取RFID读卡器HTTP协议提交的访问文件Request获得卡号、机号,Response回应驱动读卡器显示响声

本示例使用的设备&#xff1a;RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) 服务端代码&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.…...

Kali Linux 2023.3 发布

Offective Security 发布了 Kali Linux 2023.3&#xff0c;这是其渗透测试和数字取证平台的最新版本。 Kali Linux 2023.3 中的新工具 除了对当前工具的更新之外&#xff0c;新版本的 Kali 通常还会引入新的工具。 这次&#xff0c;他们是&#xff1a; Calico – 云原生网络…...

如何用Python实现从pdf文件精准抓取数据生成数据库!

要从PDF文件中提取数据并生成数据库&#xff0c;你可以使用Python中的一些库和工具来实现。 1、安装必要的库&#xff1a;确保已安装所需的库。除了之前提到的PyPDF2、pdfminer.six和pdftotext之外&#xff0c;你可能还需要其他的库来处理提取的数据和数据库操作。例如&#x…...

科技资讯|苹果Apple Watch新专利,可根据服装、表带更换表盘颜色

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司近日获得了一项 Apple Watch 相关的技术专利&#xff0c;最大的亮点在于配备颜色采样传感器&#xff0c;可以根据表带、服装自动变幻变盘颜色和主题。 Apple Watch 正面配备颜色采样传感器&am…...

猜数游戏-Rust版

cargo new guessing_game 创建项目 输入任意内容&#xff0c;并打印出来 main.rs: use std::io; // 像String这些类型都在预先导入的prelude里&#xff0c;如果要使用的不在prelude里&#xff0c;则需要显式导入fn main() { println!("猜数"); println!("…...

从零起步:学习数据结构的完整路径

文章目录 1. 基础概念和前置知识2. 线性数据结构3. 栈和队列4. 树结构5. 图结构6. 散列表和哈希表7. 高级数据结构8. 复杂性分析和算法设计9. 实践和项目10. 继续学习和深入11. 学习资源12. 练习和实践 &#x1f389;欢迎来到数据结构学习专栏~从零起步&#xff1a;学习数据结构…...

如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器

描述 WebCenter 中的 HTML5 3D Collada Viewer&#xff08;自 14.1 以来新增&#xff09;要求在浏览器中启用 WebGL。较旧的浏览器可能不支持此功能&#xff0c;或者要求用户首先显式启用此功能。本页介绍如何为所有主要浏览器启用此功能。WebGL 3D 查看器 本文是以下超级用户…...

【计算机协议】第一章——HTTP协议详解

前言 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;即超文本传输协议&#xff0c;是一种用于传输超媒体文档&#xff08;例如HTML&#xff09;的应用层协议。HTTP协议采用C/S&#xff08;客户端/服务器&#xff09;模式&#xff0c;客户端发起请求&#xff0c;服务…...

【FAQ】安防监控视频汇聚平台EasyCVR接入GB国标设备,无法显示通道信息的排查方法

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

Matlab 生成一定信噪比的信号

文章目录 【 1. 信噪比 】【 2. 功率归一化 】2.1 实信号实噪声2.2 实信号复噪声 【 3. 能量归一化 】3.1 实信号实噪声3.2 实信号复噪声 【 4. 小结 】 【 1. 信噪比 】 信噪比公式 1 &#xff1a; S N R 10 ∗ l o g 10 P s P n 信噪比公式1&#xff1a;SNR10*log_{10}\frac…...

[国产MCU]-W801开发实例-定时器

定时器 文章目录 定时器1、定时器介绍2、定时器驱动API3、定时器使用示例本文将详细介绍如何使用W801的定时器模块。 1、定时器介绍 W801的定时器包含一个32-bit自动加载的计数器,该计数器由系统时钟经过分频后驱动。 W801有 6路完全独立定时器。实现了精确的定时时间以及中断…...

基于 CentOS 7 构建 LVS-DR 群集,配置nginx负载均衡。

基于 CentOS 7 构建 LVS-DR 群集。 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld 安装ifconfig yum install net-tools.x86_64 -y 准备四台虚拟机 IP 用途 19.168.244.144 客户端 192.168.244.145 lvs 192.168.244.148 RS 192.168.244.149 RS 在DS上 …...

大数据——spark一文全知道

1、spark概述 spark是专为大规模数据处理而设计的快速通用计算引擎&#xff0c;与Hadoop的MapReduce功能类似&#xff0c;但它是基于内存的分布式计算框架&#xff0c;存储还是采用HDFS。 MapReduce和Spark的区别 MapReduce的MapReduce之间需要通过磁盘进行数据传递&#xf…...

Linux命令200例:telnet用于远程登录的网络协议(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…...

使用 eBPF 在云中实现网络可观测性

可观测性是一种了解和解释应用当前状态的能力&#xff0c;也是一种知道何时出现问题的方法。随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多&#xff0c;可观察性受到了广泛关注。许多应用程序都有严格的承诺&#xff0c;比如在停机时间、延迟和吞…...

linux安装部署gitlab全教程,包含配置中文

linux安装部署gitlab全教程&#xff0c;包含配置中文 大家好&#xff0c;我是酷酷的韩~ 1.前期准备 安装包下载地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我这里选择的这个gitlab-ce-15.7.3-ce.0.el7.x86_64.rpm 还有一些相关依赖包(地址等审核过我放到…...

软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术

软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术 一、企业信息化相关知识点二、摘要三、正文四、总结一、企业信息化相关知识点 软考高级系统架构设计师:企业信息化战略与实施...

使用ChatGPT构建一个AIML聊天机器人是什么体验

​ 使用ChatGPT构建一个AIML聊天机器人是什么体验&#xff0c;使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人&#xff0c;AIML&#xff08;全名为Artificial Intelligence Markup Language&#xff09;是一种基于XML模式匹配的人工智能标记语言&#xff0c…...

[JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)

目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库&表 1.2.2 创建springboot工程 1.2.3 配置application.properties & 准备对应实体类 1.2.3.1 application.properties 1.2.3.2 实体类 1.2.3.2.1 Emp类 1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...