MongoDB(三十九)
目录
一、概述
(一)相关概念
(二)特性
二、应用场景
三、安装
(一)编译安装
(二)yum安装
1、首先制作repo源
2、软件包名:mongodb-org
3、启动服务:systemctl start mongod
4、监听端口:mongod
5、端口号:27017
四、目录结构
(一)rpm -ql mongodb-org-server
1、MongoDB的配置文件
2、MongoDB的运行目录
3、MongoDB的可执行文件
4、MongoDB的系统服务文件
5、MongoDB的文档目录
6、MongoDB的许可协议文件
7、MongoDB的许可协议文件
8、MongoDB的README文件
9、MongoDB的第三方许可通知文件
10、MongoDB的man手册文件
11、MongoDB的数据目录,存储数据库文件
12、MongoDB的日志目录,存储日志文件
13、MongoDB的日志文件,记录MongoDB的运行日志
(二)rpm -ql mongodb-org-shell
1、MongoDB客户端工具的可执行文件路径(客户端命令)
2、MongoDB客户端工具的man手册文件路径
(三)rpm -ql mongodb-org-tools
1、将BSON文件转换为JSON格式的工具
2、用于安装MongoDB Compass的工具
3、用于从MongoDB数据库中导出数据的工具
4、用于将数据从MongoDB导出为JSON、CSV或TSV格式的工具
5、用于在MongoDB GridFS中存储和检索文件的工具
6、用于将数据导入MongoDB数据库的工具
7、用于从mongodump创建的备份文件中恢复数据的工具
8、用于监视MongoDB服务器状态的工具
9、用于监视MongoDB实例中的操作的工具
10、包含MongoDB工具集的文档
11、包含MongoDB工具集的第三方软件许可证通知
12、bsondump工具的man页
13、mongodump工具的man页
14、mongoexport工具的man页
15、mongofiles工具的man页
16、mongoimport工具的man页
17、mongoldap工具的man页
18、mongoreplay工具的man页
19、mongorestore工具的man页
20、mongostat工具的man页
21、mongotop工具的man页
(四)rpm -ql mongodb-org-mongos
1、存放系统范围的可执行文件
2、mongos的手册页文件
五、默认数据库
1、admin
2、local
3、config
六、数据库操作
(一)库操作
1、查看数据库
2、显示当前所在数据库
3、切换数据库
4、数据库创建
4.1、隐式创建
4.2、删除数据库
(二)文档操作
1、创建集合
2、查看集合
3、删除
3.1、删除数据库
3.2、删除集合
4、插入数据(文档)
4.1、单行
4.2、多行
5、查询数据
5.1全集合查询
5.2、条件查询
5.3、查询集合中有多少文档
6、删除数据
6.1、全文删除
6.2、条件删除
7、更新数据
7.1、所有满足条件的文档都进行更新
7.2、更新文档进行数值递增
七、MongoDB数据库备份
(一)备份命令
1、mongodump
2、mongoexport
(二)恢复命令
1、mongorestore
2、mongoimport
一、概述
mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
(一)相关概念
实例:系统上运行的mongodb的进程,类似于mysql实例;
库:每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库;
集合:由一组文档构成,类似于mysql的表;
文档:mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录;
主键:唯一标识一行数据
(二)特性
1、面向集合文档存储,适合存储json形式的数据;
2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;
3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;
4、有索引的支持,查询效率更快;
5、支持复制和自动故障转移;
6、可以使用分片集群提升查询性能
面向对象:
在MongoDB中,数据以文档(documents)的形式存储,文档是一种类似于JSON格式的数据结构,它可以包含键值对、数组和嵌套文档。文档是MongoDB中的基本数据单元,类似于关系型数据库中的行(row)。
MongoDB的面向对象概念具有以下特点:
文档模型:MongoDB使用文档模型来表示数据,文档可以嵌套和包含各种类型的数据,这使得MongoDB非常适合存储半结构化数据。
动态模式:相比关系型数据库,MongoDB的文档模型是动态的,即同一集合中的不同文档可以具有不同的结构。这样可以更容易地适应数据模式的变化和灵活性要求。
继承和多态:MongoDB支持文档之间的继承关系,一个文档可以从另一个文档继承属性。同时,MongoDB还支持多态,即一个字段可以包含不同类型的值。
引用关联:MongoDB支持使用引用关联文档,即一个文档中可以包含对其他文档的引用。这种引用关联可以用来建立文档之间的关系和查询数据。
MongoDB的面向对象概念使得它更适合存储和处理半结构化数据,同时提供了灵活性和扩展性,方便开发者处理不同类型的数据和建立数据之间的关联。
索引概念:
MongoDB索引是MongoDB中用于提高查询性能的数据结构。它类似于关系数据库中的索引,可以按照特定字段或字段组合进行排序和搜索。
MongoDB索引通常使用B树数据结构实现。它可将数据存储在内存中,以加快查询速度。当查询需要访问大量数据时,索引可以帮助减少磁盘IO操作,提高查询性能。
索引可以在单个字段上创建,也可以在多个字段上创建组合索引。创建索引后,MongoDB将使用这些索引来加速查询过程。索引可以按升序或降序排序,还可以设置唯一性约束,确保索引字段的唯一性。
索引的创建和使用需要权衡考虑。创建过多的索引会增加存储空间和写入操作的开销,同时也会增加更新数据的复杂性。此外,索引的选择要基于实际查询模式和性能需求进行评估。
总结来说,MongoDB索引是用于提高查询性能的数据结构,它可以按照特定字段或字段组合进行排序和搜索,并使用B树数据结构进行实现。索引的创建和使用需要考虑存储空间、写入操作开销和查询需求等因素。
二、应用场景
大数据存储和分析:由于MongoDB的灵活性和可扩展性,它非常适合用于存储和分析大规模数据集。它可以处理海量的数据,并支持数据聚合、数据分析和实时查询。
实时分析和日志处理:MongoDB可以快速地存储和索引生成的数据,使其适用于实时分析和日志处理。它可以轻松处理大量实时数据,并提供快速的查询和聚合功能。
内容管理和博客平台:MongoDB的文档模型非常适合存储和管理文本和多媒体内容。它支持动态模式,可以轻松地适应不同类型和格式的内容。
社交网络和实时应用:MongoDB对于实时应用和高并发的场景具有很好的性能。它可以处理大量的读写操作,并提供可扩展性和高可用性。
互联网应用程序:MongoDB适合用于构建Web应用程序,如电子商务平台、内容管理系统和在线游戏。它可以处理复杂的数据模型和高并发的访问请求。
总结来说,MongoDB适用于处理大规模数据、实时分析、内容管理、社交网络和互联网应用程序等各种场景。它提供高性能、可扩展性和灵活性,使开发人员能够构建出功能强大的应用程序。
三、安装
(一)编译安装
(二)yum安装
1、首先制作repo源
vim /etc/yum.repos.d/mongodb.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
2、软件包名:mongodb-org
3、启动服务:systemctl start mongod
4、监听端口:mongod
5、端口号:27017
四、目录结构
(一)rpm -ql mongodb-org-server
1、MongoDB的配置文件
vim /etc/mongod.conf
port: 27017 | 监听端口号 |
bindIp: 127.0.0.1 | 监听地址 |
2、MongoDB的运行目录
/run/mongodb
3、MongoDB的可执行文件
/usr/bin/mongod
4、MongoDB的系统服务文件
/usr/lib/systemd/system/mongod.service
5、MongoDB的文档目录
/usr/share/doc/mongodb-org-server-4.2.24
6、MongoDB的许可协议文件
/usr/share/doc/mongodb-org-server-4.2.24/LICENSE-Community.txt
7、MongoDB的许可协议文件
/usr/share/doc/mongodb-org-server-4.2.24/MPL-2
8、MongoDB的README文件
/usr/share/doc/mongodb-org-server-4.2.24/README
9、MongoDB的第三方许可通知文件
/usr/share/doc/mongodb-org-server-4.2.24/THIRD-PARTY-NOTICES
10、MongoDB的man手册文件
/usr/share/man/man1/mongod.1.gz
11、MongoDB的数据目录,存储数据库文件
/var/lib/mongo
12、MongoDB的日志目录,存储日志文件
/var/log/mongodb
13、MongoDB的日志文件,记录MongoDB的运行日志
/var/log/mongodb/mongod.log
(二)rpm -ql mongodb-org-shell
1、MongoDB客户端工具的可执行文件路径(客户端命令)
/usr/bin/mongo
2、MongoDB客户端工具的man手册文件路径
/usr/share/man/man1/mongo.1.gz
(三)rpm -ql mongodb-org-tools
1、将BSON文件转换为JSON格式的工具
/usr/bin/bsondump
2、用于安装MongoDB Compass的工具
/usr/bin/install_compass
3、用于从MongoDB数据库中导出数据的工具
/usr/bin/mongodump
4、用于将数据从MongoDB导出为JSON、CSV或TSV格式的工具
/usr/bin/mongoexport
5、用于在MongoDB GridFS中存储和检索文件的工具
/usr/bin/mongofiles
6、用于将数据导入MongoDB数据库的工具
/usr/bin/mongoimport
7、用于从mongodump创建的备份文件中恢复数据的工具
/usr/bin/mongorestore
8、用于监视MongoDB服务器状态的工具
/usr/bin/mongostat
9、用于监视MongoDB实例中的操作的工具
/usr/bin/mongotop
10、包含MongoDB工具集的文档
/usr/share/doc/mongodb-org-tools-4.2.24
11、包含MongoDB工具集的第三方软件许可证通知
/usr/share/doc/mongodb-org-tools-4.2.24/THIRD-PARTY-NOTICES.gotools
12、bsondump工具的man页
/usr/share/man/man1/bsondump.1.gz
13、mongodump工具的man页
/usr/share/man/man1/mongodump.1.gz
14、mongoexport工具的man页
/usr/share/man/man1/mongoexport.1.gz
15、mongofiles工具的man页
/usr/share/man/man1/mongofiles.1.gz
16、mongoimport工具的man页
/usr/share/man/man1/mongoimport.1.gz
17、mongoldap工具的man页
/usr/share/man/man1/mongoldap.1.gz
18、mongoreplay工具的man页
/usr/share/man/man1/mongoreplay.1.gz
19、mongorestore工具的man页
/usr/share/man/man1/mongorestore.1.gz
20、mongostat工具的man页
/usr/share/man/man1/mongostat.1.gz
21、mongotop工具的man页
/usr/share/man/man1/mongotop.1.gz
(四)rpm -ql mongodb-org-mongos
1、存放系统范围的可执行文件
/usr/bin/mongos
2、mongos的手册页文件
/usr/share/man/man1/mongos.1.gz
五、默认数据库
进入MongoDB数据库命令
mongo
1、admin
从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
2、local
这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
3、config
当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
六、数据库操作
(一)库操作
1、查看数据库
注:以下命令二选一即可,均可正常使用。
show databases
show dbs
2、显示当前所在数据库
db
3、切换数据库
use zn
4、数据库创建
4.1、隐式创建
不用主动创建,使用use newDB,会自动创建不存在的数据库,只有在库中创建集合后才会保存,并使用show dbs查看到
4.2、删除数据库
use dbName
db.dropdatabase()
(二)文档操作
1、创建集合
db.createCollection('wjy')
2、查看集合
show tables
3、删除
3.1、删除数据库
db.dropDatabase()
注:在删除数据库时,一定要先进入要删除的数据库
3.2、删除集合
db.需要删除的集合名称.drop()
db.wjy.drop()
db["123"].drop()是指在数据库中删除名为"123"的集合(collection)或表(table)。
其中,db是数据库对象,["123"]表示要操作的集合或表的名称,drop()表示删除该集合或表。
db.getCollection("123").drop()
4、插入数据(文档)
4.1、单行
db.集合名称.insert({key:value})
db.wjy.insert({'a':'123'})
查看命令:
db.wjy.find({})
内容解析:
{ "_id" : ObjectId("64da1f759aabd69ea17751d8"), "a" : "123" }
这是一个MongoDB的文档数据,结构如下:
{ "_id" : ObjectId("64da1f759aabd69ea17751d8"), "a" : "123" }
其中:
_id
是文档的唯一标识符,由MongoDB自动生成,用于唯一标识该文档。
a
是文档中的一个字段,它的值是字符串 "123"。
4.2、多行
db.集合名称.insertmany([{key:value},{key:value},{key:value}])
db.wjy.insertMany([{'b':'1234'},{'c':'12345'},{'d':'123456'}])
内容解析:
这是一个MongoDB的操作结果,对应的内容解析如下:
acknowledged
表示操作是否被MongoDB服务器确认执行。如果值为true,表示操作已被成功确认。insertedIds
表示插入操作成功后生成的文档的唯一标识符(ObjectIds)的列表。在这个例子中,三个文档被成功插入,它们的唯一标识符分别是:
- ObjectId("64da20c76fb9e74578a149d1")
- ObjectId("64da20c76fb9e74578a149d2")
- ObjectId("64da20c76fb9e74578a149d3")
这个操作的结果说明在执行插入操作后,MongoDB服务器已经成功确认了操作,并且返回了生成的插入文档的唯一标识符列表。
db.wjy.find({})
mongodb默认数字的数据类型float浮点型,若要改变为整型:NumberInt(数字)两种方式:
db.wjy.insert({'_id':'1','a':'123','phone':'111111'})
db.wjy.insert({'_id':NumberInt(2),'b':'1234','phone':'222222'})
删除数据
db.wjy.deleteMany({})
5、查询数据
5.1全集合查询
db.集合名称.find({})
db.wjy.find({})
db.集合名称.find()
db.wjy.find()
5.2、条件查询
db.info.find({查询条件1key:value,查询条件2,...},{key1:1|0,key2:1|0,...})
db.wjy.find({'a':'123'})
db.wjy.find({'a':'123'},{'a':0})
命令解析:
db.wjy
表示在数据库中选择集合wjy
进行查询。db
是数据库对象,wjy
是集合名称。find({'a':'123'})
表示查询集合中的文档,其中字段a
的值为'123'
。{'a':0}
表示设置查询结果中不包含字段a
。在查询结果中,其他字段将会被返回,而字段a
不会被返回。这个查询操作的意思是,在集合
wjy
中查找字段a
的值为'123'
的文档,并返回这些文档中除了字段a
以外的其他字段。
key:1 显示,key:0 不显示
当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue
5.3、查询集合中有多少文档
db.集合名称.count()
db.wjy.count()
6、删除数据
6.1、全文删除
db.集合名称.remove({})
db.wjy.remove({})
6.2、条件删除
db.集合名称.remove({key:value})
db.wjy.remove({'b':'1234'})
7、更新数据
db.wjy.update({_id:'1'},{$set:{'phone':'222222'}})
7.1、所有满足条件的文档都进行更新
db.info.update({userid:"1003"},{$set:{nickname:"tom"}},{multi:true})
7.2、更新文档进行数值递增
db.info.update({userid:"1003"},{$inc:{likenum:NumberInt(1000)}})
先创建5个同名,方面更改完成查看
第一个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(10)}})
第二个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(20)}})
第三个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(30)}})
第四个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(-20)}})
第五个:
db.wjy.update({userID:NumberInt(1)},{$inc:{userID:NumberInt(-10)}})
七、MongoDB数据库备份
(一)备份命令
1、mongodump
选项
-h=hostname:port
-u=<username>
-p=<password>
--authenticationDatabase=<dbname>
-d=<database>
-o=<path>
语法
mongodump -d dbName -h hostName:port -u userName -p Password -o backupDirectory
mkdir /bak
mongodump -d zn -o /bak
2、mongoexport
选项
-h=hostname:port
-u=<username>
-p=<password>
--authenticationDatabase=<dbname>
-d=<database>
-o=<path>
语法
mongoexport -d dbName -c tableName -h hostName:port -u userName -p Password -o backupDirectory/jsonFile.json
mongoexport -d zn -c wjy -o /bak/zn_wjy-bak.json
(二)恢复命令
注:在恢复备份前,我们先删除 zn 数据库,不然无法体现出恢复效果
1、mongorestore
选项
-h=hostname:port
-u=<username>
-p=<password>
--authenticationDatabase=<dbname>
-d=<database>
--drop 当目标数据库中存在同名集合则删除再恢复
语法
mongorestore -h hostName -u username -p password -d dbName -c tableName bakcupDirector/bsonFile
mongorestore -d zn -c wjy /bak/zn/wjy.bson
内容解析:
checking for collection data in /bak/zn/wjy.bson:检查备份文件/bak/zn/wjy.bson中是否有集合数据。
reading metadata for zn.wjy from /bak/zn/wjy.metadata.json:从备份文件/bak/zn/wjy.metadata.json中读取集合"zn.wjy"的元数据信息。
restoring zn.wjy from /bak/zn/wjy.bson:从备份文件/bak/zn/wjy.bson中恢复集合"zn.wjy"的数据。
no indexes to restore:没有索引需要恢复。
finished restoring zn.wjy (5 documents, 0 failures):成功完成集合"zn.wjy"的数据恢复,总共恢复了5个文档,没有失败的文档。
5 document(s) restored successfully. 0 document(s) failed to restore.:成功恢复了5个文档,没有失败的文档。
mongo
show dbs
use zn
show tables
db.wjy.find({})
现在已经验证备份已经恢复完毕
2、mongoimport
注:在恢复备份前,我们先删除 zn 数据库下的 wjy 集合,不然无法体现出恢复效果
db.wjy.drop()
选项
-h=hostname:port
-u=<username>
-p=<password>
--authenticationDatabase=<dbname>
-d=<database>
--drop 当目标数据库中存在同名集合则删除再恢复
语法
mongoimport -d dbName -c tableName -h hostName:port -u userName -p Password backupDirectory/jsonFile.json
mongoimport -d zn -c wjy /bak/zn_wjy-bak.json
内容解析:
2023-08-14T23:05:48.974+0800 connected to: mongodb://localhost/
2023-08-14T23:05:48.982+0800 5 document(s) imported successfully. 0 document(s) failed to import.
进入数据库查看验证
mongo
show dbs
show tables
db.wjy.find({})
经过查看,数据库集合内容已经成功进行恢复
总结
MongoDB是一种强大的非关系型数据库,具有高性能、灵活的数据模型和丰富的功能。它适用于各种应用场景,包括大数据、实时分析和Web应用程序等。尽管使用MongoDB需要一些学习和配置,但它提供的性能和可扩展性使得它成为许多开发者和组织的首选数据库管理系统。
相关文章:

MongoDB(三十九)
目录 一、概述 (一)相关概念 (二)特性 二、应用场景 三、安装 (一)编译安装 (二)yum安装 1、首先制作repo源 2、软件包名:mongodb-org 3、启动服务:…...

InnoDB引擎
1 逻辑存储结构 InnoDB的逻辑存储结构如下图所示: 1). 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个…...

CSS3中的var()函数
目录 定义: 语法: 用法: 定义: var()函数是一个 CSS 函数用于插入自定义属性(有时也被称为“CSS 变量”)的值 语法: var(custom-property-name, value) 函数的第一个参数是要替换的自定义属性…...

opencv图片换背景色
#include <iostream> #include<opencv2/opencv.hpp> //引入头文件using namespace cv; //命名空间 using namespace std;//opencv这个机器视觉库,它提供了很多功能,都是以函数的形式提供给我们 //我们只需要会调用函数即可in…...

JAVA语言:什么是懒加载机制?
JVM没有规定什么时候加载,一般是什么时候使用这个class才会什么时候加载,但是JVM规定了什么时候必须初始化(初始化是第三步、装载、连接、初始化),只要加载之后,那么肯定是要进行初始化的,所以我们就可以通过查看这个类有没有进行初始化,从而判断这个类有没有被加载。 …...

jupyter默认工作目录的更改
1、生成配置文件:打开Anaconda Prompt,输入如下命令 jupyter notebook --generate-config询问[y/N]时输入y 2、配置文件修改:根据打印路径打开配置文件jupyter_notebook_config.py,全文搜索找到notebook_dir所在位置。在单引号中…...

Flutter系列文章-Flutter UI进阶
在本篇文章中,我们将深入学习 Flutter UI 的进阶技巧,涵盖了布局原理、动画实现、自定义绘图和效果、以及 Material 和 Cupertino 组件库的使用。通过实例演示,你将更加了解如何创建复杂、令人印象深刻的用户界面。 第一部分:深入…...
Elasticsearch在部署时,对Linux的设置有哪些优化方法?
部署Elasticsearch时,可以通过优化Linux系统的设置来提升性能和稳定性。以下是一些常见的优化方法: 1.文件描述符限制 Elasticsearch需要大量的文件描述符来处理数据和连接,所以确保调整系统的文件描述符限制。可以通过修改 /etc/security/…...

【网络基础】应用层协议
【网络基础】应用层协议 文章目录 【网络基础】应用层协议1、协议作用1.1 应用层需求1.2 协议分类 2、HTTP & HTTPS2.1 HTTP/HTTPS 简介2.2 HTTP工作原理2.3 HTTPS工作原理2.4 区别 3、URL3.1 编码解码3.2 URI & URL 4、HTTP 消息结构4.1 HTTP请求方法4.2 HTTP请求头信…...

面试八股文Mysql:(1)事务实现的原理
1. 什么是事务 事务就是一组数据库操作,这些操作是一个atomic(原子性的操作) ,不可分割,要么都执行,要么回滚(rollback)都不执行。这样就避免了某个操作成功某个操作失败࿰…...

Linux学习之sed多行模式
N将下一行加入到模式空间 D删除模式空间中的第一个字符到第一个换行符 P打印模式空间中的第一个字符到第一个换行符 doubleSpace.txt里边的内容如下: goo d man使用下边的命令可以实现把上边对应的内容放到doubleSpace.txt。 echo goo >> doubleSpace.txt e…...

【刷题笔记8.15】【链表相关】LeetCode:合并两个有序链表、反转链表
LeetCode:【链表相关】合并两个有序链表 题目1:合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3…...
神经网络基础-神经网络补充概念-11-向量化逻辑回归
概念 通过使用 NumPy 数组来进行矩阵运算,将循环操作向量化。 向量化的好处在于它可以同时处理多个样本,从而加速计算过程。在实际应用中,尤其是处理大规模数据集时,向量化可以显著提高代码的效率。 代码实现-以逻辑回归为例 i…...

openGauss学习笔记-40 openGauss 高级数据管理-锁
文章目录 openGauss学习笔记-40 openGauss 高级数据管理-锁40.1 语法格式40.2 参数说明40.3 示例 openGauss学习笔记-40 openGauss 高级数据管理-锁 如果需要保持数据库数据的一致性,可以使用LOCK TABLE来阻止其他用户修改表。 例如,一个应用需要保证表…...

勘探开发人工智能技术:机器学习(6)
0 提纲 7.1 循环神经网络RNN 7.2 LSTM 7.3 Transformer 7.4 U-Net 1 循环神经网络RNN 把上一时刻的输出作为下一时刻的输入之一. 1.1 全连接神经网络的缺点 现在的任务是要利用如下语料来给apple打标签: 第一句话:I like eating apple!(我喜欢吃苹…...
代理类型中的 HTTP、HTTPS 和 SOCKS 有什么区别?
HTTP、HTTPS 和 SOCKS 都是代理(Proxy)协议,用于在网络通信中转发请求和响应,但它们在工作原理和用途上有一些区别。下面是它们之间的主要区别: HTTP代理: 工作原理: HTTP 代理主要用于转发 HTT…...

【STM32RT-Thread零基础入门】 3. PIN设备(GPIO)的使用
硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、PIN设备介绍1. 引脚编号获取2. 设置引脚的输入/输出模式3. 设置引脚的电平值4. 读取引脚的电平值5. 绑定引脚中断回调函数6. 脱离引脚中断…...

fiddler抓包工具的用法以及抓取手机报文定位bug
前言: fiddler抓包工具是日常测试中常用的一种bug定位工具 一 抓取https报文步骤 使用方法: 1 首先打开fiddler工具将证书导出 点击TOOLS------Options------Https-----Actions---选中第二个选项 2 把证书导出到桌面后 打开谷歌浏览器 设置---高级…...
spring中时间格式化的两种方式
方法一:自己格式化 自己写一个格式化的类,把date类型的时间传进去: public class DateUtil {public static String formatDate(Date date){SimpleDateFormat simpleDateFormatnew SimpleDateFormat("yyyy-MM-dd HH:mm:ss");retur…...

【设计模式】原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...