系统学习Linux-MongoDB
概述
mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
| 相关概念 | 实例:系统上运行的mongodb的进程,类似于mysql实例; |
| 库:每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库; | |
| 集合:由一组文档构成,类似于mysql的表; | |
| 文档:mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录; | |
| 主键:唯一标识一行数据 |
| 特性 | 1、面向集合文档存储,适合存储json形式的数据; |
| 2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行; | |
| 3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句; | |
| 4、有索引的支持,查询效率更快; | |
| 5、支持复制和自动故障转移; | |
| 6、可以使用分片集群提升查询性能 |
应用场景
游戏\物流\社交\物联网\视频直播\大数据
安装Mongodb
rpm安装
移动到yum.repos.d目录下创建mongodb的yum文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim mongo.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安装
[root@localhost yum.repos.d]# yum install -y mongodb-org..
..正在安装 : mongodb-org-tools-4.2.24-1.el7.x86_64 1/5 正在安装 : mongodb-org-mongos-4.2.24-1.el7.x86_64 2/5 正在安装 : mongodb-org-shell-4.2.24-1.el7.x86_64 3/5 正在安装 : mongodb-org-server-4.2.24-1.el7.x86_64 4/5
Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.正在安装 : mongodb-org-4.2.24-1.el7.x86_64 5/5 验证中 : mongodb-org-server-4.2.24-1.el7.x86_64 1/5 验证中 : mongodb-org-4.2.24-1.el7.x86_64 2/5 验证中 : mongodb-org-shell-4.2.24-1.el7.x86_64 3/5 验证中 : mongodb-org-mongos-4.2.24-1.el7.x86_64 4/5 验证中 : mongodb-org-tools-4.2.24-1.el7.x86_64 5/5 已安装:mongodb-org.x86_64 0:4.2.24-1.el7 作为依赖被安装:mongodb-org-mongos.x86_64 0:4.2.24-1.el7 mongodb-org-server.x86_64 0:4.2.24-1.el7 mongodb-org-shell.x86_64 0:4.2.24-1.el7 mongodb-org-tools.x86_64 0:4.2.24-1.el7 完毕!
启动数据库并查看端口号
注:启动数据库服务特殊db没有b
systemctl start mongod.service
[root@localhost ~]# systemctl start mongod.service
[root@localhost ~]# netstat -antpu | grep mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 74651/mongod
目录结构
| rpm -ql mongodb-org-server | /etc/mongod.conf | port: 27017 | 监听端口号 |
| bindIp: 127.0.0.1 | 监听地址 | ||
| /run/mongodb | PID文件 | ||
| /usr/bin/mongod | 启动命令 | ||
| /var/lib/mongo | 存储数据文件 | ||
| /var/log/mongodb | 日志 | ||
| rpm -ql mongodb-org-shell | /usr/bin/mongo | 客户端命令 |
| rpm -ql mongodb-org-tools | /usr/bin/mongodump | 备份数据库 |
| /usr/bin/mongoexport | 备份文档 | |
| /usr/bin/mongoimport | 恢复文档 | |
| /usr/bin/mongorestore | 恢复数据库 |
默认数据库
| admin: | 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。 一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。 |
| local: | 这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。 |
| config: | 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。 |
数据库操作
库操作命令整理
| 查看数据库 | show databases | |
| show dbs | ||
| 显示当前所在数据库 | db | |
| 切换数据库 | use dbName | |
| 数据库创建 | 隐式创建 | 不用主动创建,使用use newDB,会自动创建不存在的数据库 |
| 只有在库中创建集合后才会保存,并使用show dbs查看到 | ||
| 删除数据库 | use dbName | |
| db.dropdatabase() | ||
输入mongo就会进入数据库模式
[root@localhost ~]# mongo
MongoDB shell version v4.2.24
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("593314ff-d1da-4a78-b01b-128e04aa71d8") }
MongoDB server version: 4.2.24
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttps://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forumshttps://community.mongodb.com
Server has startup warnings:
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten]
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten]
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten]
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten]
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2023-08-14T18:50:28.519+0800 I CONTROL [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
--->
与mysql不同的查看命令dbs
> show databases
admin 0.000GB
config 0.000GB
local 0.000GB
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> 两个命令都可以查看数据库
切换数据库
> use local
switched to db local 一切换到当前数据库> db
local 所在库
创建数据库
> use liweijia
switched to db liweijia
删除数据库
use dbName
db.dropdatabase()
文档操作
mongodb存储数字时默认是float,若要以整型形式存储numberInt()
文档操作命令整理 | |||
| 查看集合 | show tables | ||
| 创建集合 | db.createCollection("test") | ||
| 删除集合 | db.需要删除的集合名称.drop() | ||
| 插入数据(文档) | db.集合名称.insert({key:value}) 单行 | ||
| db.集合名称.insertmany([{key:value},{key:value},{key:value}]) 多行 | |||
| mongodb默认数字的数据类型float浮点型,若要改变为整型:NumberInt(数字) | |||
| 查询数据 | 全集合查询 | db.集合名称.find({}) | |
| db.集合名称.find() | |||
| 条件查询 | db.info.find({查询条件1key:value,查询条件2,...},{key1:1|0,key2:1|0,...}) | ||
| key:1 显示,key:0 不显示 | |||
| 当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue | |||
| 查询集合中有多少文档 | db.集合名称.count() | ||
| 删除数据 | 全文删除 | db.集合名称.remove({}) | |
| 条件删除 | db.集合名称.remove({key:value}) | ||
| 更新数据 | db.info.update({_id:"3"}, {$set:{nickname:"jack"}}) | ||
| 所有满足条件的文档都进行更新 | db.info.update({userid:"1003"},{$set:{nickname:"tom"}},{multi:true}) | ||
| 更新文档进行数值递增 | db.info.update({userid:"1003"},{$inc:{likenum:NumberInt(1000)}}) | ||
创建集合
> db.createCollection('shiyan')
{ "ok" : 1 }查看集合
> show tables
shiyan删除集合
> db.shiyan.drop()
true
> show tables
>插入数据单行
创建数据库
> use lwj
switched to db lwj
> db.createCollection("test")
{ "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
lwj 0.000GB
test 0.000GB
> db.lwj.insert({'id':'1','name':'lwj1'})
WriteResult({ "nInserted" : 1 })插入数据多行
> db.lwj.insertMany([{'id':'2','name':'lwj2'},{'id':'3','name':'lwj3'},{'id':'4','name':'lwj4'}])
{"acknowledged" : true,"insertedIds" : [ObjectId("64dae9e52e7071ebd2631dcd"),ObjectId("64dae9e52e7071ebd2631dce"),ObjectId("64dae9e52e7071ebd2631dcf")]
}
> 全集合查询
> db.lwj.find()
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1", "name" : "lwj1" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcd"), "id" : "2", "name" : "lwj2" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcf"), "id" : "4", "name" : "lwj4" }条件查询
检索id等于3的数据
> db.lwj.find({'id':'3'})
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
>
条件查询其中{'name':'0'}则是除了name都显示,{'name':'1'}指的是只显示name
> db.lwj.find({'id':'3'},{name:0})
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3" }
> db.lwj.find({'id':'3'},{name:1})
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "name" : "lwj3" }数据更新(匹配1,未完成0,已完成1)
> db.lwj.update({'name':'lwj1'},{$set:{'id':'1024'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
查看
> db.lwj.find({'name':'lwj1'})
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1024", "name" : "lwj1" }
Mongodb数据库备份
备份命令: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 -d 指定要备份的数据库名称 -h 指定主机名端口号如:localhost:27017 -u -p 用户密码 -o 指定备份文件输出的目录,备份文件以该目录为基准创建 | |
备份命令: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 | |
mongodump备份 首先要exit退出数据库模式
> exit
bye
[root@localhost ~]# mongodump -d lwj -o /opt/lwj-back.json
2023-08-15T13:47:40.395+0800 writing lwj.lwj to /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T13:47:40.396+0800 writing lwj.test to /opt/lwj-back.json/lwj/test.bson
2023-08-15T13:47:40.396+0800 done dumping lwj.lwj (4 documents)
2023-08-15T13:47:40.397+0800 done dumping lwj.test (0 documents)
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
lwj-back.json rhmongoexport备份test合集 首先要exit退出数据库模式
> exit
bye
[root@localhost opt]# mongoexport -d lwj -c test -o /opt/test-bakc.json
2023-08-15T13:55:58.611+0800 connected to: mongodb://localhost/
2023-08-15T13:55:58.614+0800 exported 0 records
[root@localhost opt]# ls
lwj-back.json rh test-bakc.json
[root@localhost opt]#
恢复命令: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 | |
恢复命令:mongoimport | ||
| 选项 | -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 | |
先删除lwj数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
lwj 0.000GB
test 0.000GB
> show tables
lwj
shiyan
> use lwj
switched to db lwj
> db.dropDatabase()
{ "dropped" : "lwj", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
> 恢复数据库
[root@localhost ~]# ls /opt/lwj-back.json/*
lwj.bson lwj.metadata.json test.bson test.metadata.json
[root@localhost ~]# mongorestore -d lwj -c lwj /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T14:22:08.515+0800 checking for collection data in /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T14:22:08.516+0800 reading metadata for lwj.lwj from /opt/lwj-back.json/lwj/lwj.metadata.json
2023-08-15T14:22:08.520+0800 restoring lwj.lwj from /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T14:22:08.581+0800 no indexes to restore
2023-08-15T14:22:08.581+0800 finished restoring lwj.lwj (4 documents, 0 failures)
2023-08-15T14:22:08.581+0800 4 document(s) restored successfully. 0 document(s) failed to restore.登陆mongo进行验证
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
lwj 0.000GB
test 0.000GB
> use lwj
switched to db lwj
> show tables
lwj
> db.lwj.find()
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcd"), "id" : "2", "name" : "lwj2" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcf"), "id" : "4", "name" : "lwj4" }
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1024", "name" : "lwj1" }
>
删除集合
> db.lwj.drop()
trup
> use lwj
switched to db hy
> show tables
>
恢复lwj集合
[root@localhost hy]# mongoimport -d hy -c lwj /opt/lwj-back.json
2023-08-15T10:02:27.858+0800 connected to: mongodb://localhost/
2023-08-15T10:02:27.861+0800 6 document(s) imported successfully. 0 document(s) failed to import.
##查看
> show tables
lwj
> db.test.find()
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcd"), "id" : "2", "name" : "lwj2" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcf"), "id" : "4", "name" : "lwj4" }
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1024", "name" : "lwj1" }
>
除此之外表还可以导入到其它的库,创建一个新库yes,把集合test导入
##创建库
> show dbs
admin 0.000GB
config 0.000GB
hy 0.000GB
local 0.000GB
> use yes
switched to db yes
> db.createCollection('hy')
{ "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
hy 0.000GB
local 0.000GB
yes 0.000GB
> show tables
hy
>
##把集合test导入yes
[root@localhost hy]# mongoimport -d yes -c test /opt/test-back.json
2023-08-15T10:06:57.990+0800 connected to: mongodb://localhost/
2023-08-15T10:06:57.993+0800 6 document(s) imported successfully. 0 document(s) failed to import.
##验证
> show tables
hy
test
> db.test.find()
{ "_id" : ObjectId("64da3428cbf20d8dc76b3349"), "id" : "2", "name" : "hy2", "age" : "666" }
{ "_id" : ObjectId("64da3428cbf20d8dc76b334a"), "id" : "3", "name" : "hy3", "age" : "20" }
{ "_id" : ObjectId("64da3e5ccbf20d8dc76b334b"), "id" : "2", "name" : "hy4", "age" : "666" }
{ "_id" : ObjectId("64da3e5ccbf20d8dc76b334c"), "id" : "2", "name" : "hy5", "age" : "666" }
{ "_id" : ObjectId("64da414bcbf20d8dc76b334d"), "id" : "7", "name" : "hy7", "age" : 120 }
{ "_id" : ObjectId("64da337fcbf20d8dc76b3348"), "id" : "99", "name" : "hy1", "age" : "88" }
相关文章:
系统学习Linux-MongoDB
概述 mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON 相关概念实例:系统上运行的mongodb的进程,类似于mysql实例;库:每个数…...
【带着学Pytorch】2、张量(Tensor)的介绍与创建
一、Tensor介绍 1.1、 张量是什么? 最开始在出现CPU和GPU, GPU出现主要解决的问题时并行计算,在此基础上的软件层面的工作基本上围绕着并行计算进行的,张量也不例外。 首先,我们先来聊聊 编程语言,python,java ,C,C++等,他们都有的共同特点是什么?在大学中计算机类…...
UniApp 制作高德地图插件
1、下载Uni插件项目 在Uni官网下载Uni插件项目,并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…...
C# 图像处理之灰色图转化为RGB图像
咨询通义千问的“C# 图像处理之灰色图转化为RGB图像”结果,看看如何: 在C#中,可以使用Image类来处理图像。要将灰色图像转换为RGB图像,可以按照以下步骤进行操作: 1.创建一个灰色图像对象。 Image grayImage Imag…...
从零实战SLAM-第八课(非特征点的视觉里程计)
在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧,课程入口,感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…...
Azure使用CLI创建VM
使用CLI创建VM之前,确保资源中的IP资源已经释放掉了,避免创建的过程中没有可以利用的公共IP地址打开 cloudshell ,并输入创建CLI的命令如下,-n指定名称,-g指定资源组,image指定镜像,admin-usernam指定用户名…...
Rust: 聊聊AtomicPtr<()>和 *const ()
在Bytes库在github源码(https://docs.rs/bytes/1.1.0/src/bytes/bytes.rs.html#94-100)有关Bytes的定义中, pub struct Bytes {ptr: *const u8,len: usize, // inlined "trait object"data: AtomicPtr<()>, vtable: &st…...
公网远程连接Redis数据库详解
文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 前言 洁洁的个人主页 我就问你有没有发挥࿰…...
天津报web前端培训班一定要选贵的吗?
根据这几年数据显示,IT行业飞速发展,岗位需求增多,Web前端是个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过五年,Web前端开发是从网页制作演变而来,名称是有很明显的时代特性。 Web前端就业形…...
iptables学习笔记
iptables的结构: iptables由上而下,由Tables,Chains,Rules组成。 一、iptables的表tables与链chains iptables有Filter, NAT, Mangle, Raw四种内建表: 1. Filter表 Filter是iptables的默认表,它有以下…...
Express 实战(一):概览
在正式学习 Express 内容之前,我们有必要从大的方面了解一下 Node.js 。 在很长的一段时间里,JavaScript 一门编写浏览器中运行脚本的语言。不过近些年,随着互联网的发展以及技术进步,JavaScript 迎来了一个集中爆发的时代。一个…...
SpringBoot中的可扩展接口
目录 # 背景 # 可扩展的接口启动调用顺序图 # ApplicationContextInitializer # BeanDefinitionRegistryPostProcessor # BeanFactoryPostProcessor # InstantiationAwareBeanPostProcessor # SmartInstantiationAwareBeanPostProcessor # BeanFactoryAware # Applicati…...
中大型无人机远程VHF语音电台系统方案
方案背景 中大型无人机在执行飞行任务时,特别是在管制空域飞行时地面航管人员需要通过语音与无人机通信。按《无人驾驶航空器飞行管理暂行条例》规定,中大型无人机应当进行适航管理。物流无人机和载人eVTOL都将进行适航管理,所以无人机也要有…...
数字孪生和SCADA有哪些区别?
虽然SCADA和数字孪生用于工业领域,但它们有不同的用途。SCADA专注于工业过程的实时监测和控制,而数字孪生用于模拟和分析系统的性能。接下来,让我们详细讨论SCADA和数字孪生(SCADA与数字孪生)之间的区别。 SCADA与数字…...
[bug] 记录version `GLIBCXX_3.4.29‘ not found 解决方法
在使用mediapipe 这个库的时候,首次使用出现 GLIBCXX_3.4.29’ not found 错误, 看起来是安装mediapipe 的时候自动升级了 matplotlib 这个库,导致依赖的 libstd.so 版本不满足了,GLIBCXX_3.4.29 is an object from libstdc.so.…...
git 回滚相关问题
原本用as自带的git执行回滚任务, 但是提交之后发现并没有成功, 后面通过命令行的方式重新回滚并且提交上去,就可以了 说明as的git还是有点小瑕疵,还是命令行最稳妥 相关博文: git代码回滚操作_imkaifan的博客-CSDN博…...
SQL力扣练习(十一)
目录 1.树节点(608) 示例 1 解法一(case when) 解法二(not in) 2.判断三角形(610) 示例 1 解法一(case when) 解法二(if) 解法三(嵌套if) 3.只出现一次的最大数字(619) 示例 1 解法一(count limit) 解法二(max) 4.有趣的电影(620) 解法一 5.换座位(626) 示例 …...
如何将常用的jdbc方法封装起来???
你是否还在为每次新建项目连接数据库而烦恼???(教你一次代码,简单完成每次连接) 1.建立maven项目 还没下载安装或者不会建立maven项目的可以看这里哦:maven的下载安装与配置环境变量࿰…...
【1day】复现任我行协同CRM存在SQL注入漏洞
目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 任我行CRM是CRM(客户关系管理)、OA(自动化办公)、OM(目标管理)、KM(知识管理)、HR(人力资源)一体化的企业管理软件。通过建立组织运营管理铁三角(目标行动-企业文化-知识复制),一...
3D虚拟形象数字替身的制作及应用介绍
“虚拟数字人”这一词汇已经深入人心。从虚拟偶像、虚拟代言人到虚拟主播、虚拟员工各种类型虚拟数字形象不断进入公众视野,由于其与Z世代的独特亲和力以及与新媒体平台的高度适配性,虚拟数字人在各个领域都在呈崛起之势,并且有着深度的融合&…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
Python的__call__ 方法
在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...
【QT控件】显示类控件
目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏:QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...
