什么是MongoDB

目录

主要特点

MongoDB概念解析

完整术语列表

MongoDB安装

MongoDB Shell

安装MongoDB Shell

数据库管理

查看数据库列表

创建数据库

删除数据库

默认数据库

系统内置数据库

集合管理

查看集合

创建集合

更新集合名

删除集合

文档操作

插入文档

查询文档

删除文档

更新文档

MongoDB备份(mongodump)与恢复(mongorestore)

安装备份与恢复命令

MongoDB数据备份

MongoDB数据库恢复

MongoDB用户管理


主要特点

文档导向的存储:MongoDB是一个面向文档的数据库,它以JSON-like的格式存储数
据,使得数据结构更加灵活和丰富。
索引优化查询:MongoDB允许用户为文档中的任意属性创建索引,例如FirstName和A
ddress,从而提高查询效率和排序性能。
数据镜像与扩展性:通过本地或网络创建数据的副本,MongoDB实现了强大的数据冗余
和扩展能力。水平扩展与分片:面对增加的负载,MongoDB可以通过分片技术将数据分布到计算机网络中的其他节点上,实现水平扩展。
强大的查询语言:MongoDB使用JSON格式的查询语法,支持复杂的查询表达式,包括
对内嵌对象和数组的查询。数据更新:利用 update()命令,MongoDB能够替换整个文档或更新指定的数据字段,MapReduce批量处理:MongoDB的MapReduce功能专为大规模数据处理和聚合操作设计,通过Map函数的emit(key,value)
调用和Reduce函数的逻辑处理,实现高效的
数据汇总。MapReduce脚本编写:Map和Reduce函数使用JavaScript编写,可以通过
db. ru或mapreduce命令在MongoDB中执行。
nCommandGridFS大文件存储:GridFS是MongoDB内置的功能,用于存储和检索大于BSON文档大小限制的文件,如图片和视频。
服务端脚本执行:MongoDB允许在服务端执行JavaScript脚本不,提供了直接在服务端
执行或存储函数定义以供后续调用的能力。
多语言支持:MongoDB提供了对多种编程语言的支持,包括但不限于RUBY、PYTHON、JAVA、C++、PHP和C#。

MongoDB概念解析

SQL术语/概念MongoDB
术语/概念
解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

完整术语列表

文档(Document):MongoDB的基本数据单元,通常是一个JSSON-1ike的结构,可以包含
多种数据类型。集合(Collection):类似于关系型数据库中的表,集合是一组文档的容器。在MongoDB中,一个集合中的文档不需要有一个固定的模式。
数据库(Database):包含一个或多个集合的MongoDB实例。
BSON:BinaryJSON的缩写,是MongoDB用来存储和传输文档的二进制形式的JSON
索引(Index):用于优化查询性能的数据结构,可以基于集合中的一个或多个字段创建索
引。分片(Sharding):一种分布数据到多个服务器(称为分片)的为方法,用于处理大数据集和高吞吐量应用。副本集(ReplicaSet):一组维护相同数据集的MongoDB服务器,提供数据的冗余备份和高可用性。主节点(Primary):副本集中负责处理所有写入操作的服务器。从节点(Secondary):副本集中的服务器,用于该取数据和在主节点故障时接管为主节点。MongoDBShell:MongoDB提供的命令行界面,用于与MongoDB实例交互。
聚合框架(AggregationFramework):用于执行复杂的数据处理和聚合操作的一系列操作。Map-Reduce:一种编程模型,用于处理大量数据集的并行计算。
GridFS:用于存储和检索大于BSON文档大小限制的文件的规范。ObjectId:MongoDB为每个文档自动生成的唯一标识符。CRUD操作:创建(Create)、读取(Read)、更新(Update)、删除(Delete)操作。事务(Transactions):从MongoDB4.0开始支持,允许一组操作作为一个原子单元执行。操作符(0perators):用于查询和更新文档的特殊字段。
连接(Join):MongoDB 允许在查询中使用$1ookup操作符来实现类似SQL的连接操作。
TTL(Time-To-Live):可以为集合中的某些字段设置 TTL,!以自动删除旧数据。
存储引擎(Storage Engine):MongoDB用于数据存储和管理的底层技术,如WiredTiger
和MongoDB的旧存储引擎MMAPv1。MongoDB Compass:MongoDB的图形界面工具,用于可视化和管理MongoDB数据。MongoDBAtlas:MongoDB提供的云服务,允许在云中托管MoongoDB数据库。

MongoDB安装

安装前我们需要安装各个Linux平台依赖包。解压安装包将解压包拷贝到指定目录MongoDB的可执行文件位于bin目录下,所以可以将其添加到PATH路径中:

dnf -y install libcurl openssl 
tar zxvf mongodb-linux-x86_64-rhel8-8.0.8.tgz
mv mongodb-linux-x86_64-rhel88-8.0.8 /usr/local/mongodb
echo
echo 'export PATH=/usr/local/mongodb/bin:$PATH' >>/etc/profile source /etc/profile

 我们在启动前可以先创建这两个目录并设置当前用户有读写权限:由于 mongodb 依赖openssl11,需要编译安装openssl11设置 openssl11的环境变量接下来启动 Mongodb 服务:看到以下信息,说明启动成功。

[root@localhost ~]#mkdir-p /var/lib/mongo
[root@localhost ~]#mkdir -p /var/log/mongodb
[root@localhost ~]#chownwhoami`/var/lib/mongo
[root@localhost ~]#chownwhoami /var/log/mongodb
[root@localhost ^]# dnf install -y gcc make perl
[root@localhost `]# tar xzf openssl-1.1.1w.tar.gz
[root@localhost ^]# cd openssl-1.1. l lw
[rootesentinel01 openss1-1.1.1w]#./config --prefix=/opt/openss111 --openssldir=
/opt/openss111/ssl
[root@sentinel01openssl-1.1.1.1w]#make -j$(nproc)
[root@sentinel01 openssl-1.1.1w]#make install
[root@localhost *]# echo 'export_D_LIBRARYPATH=/opt/openss111/lib:$LD_LIBRARY
PATH' | sudo tee /etc/profile.d/openssl11.sh
[root@localhost ~]# source /etc/profile.d/opensslll.sh
[root@localhost ~]#mongod --dbpath /var/lib/mongo --logpath/var/log/mongodb/m
ongod. log --fork

MongoDB Shell

MongoDBShell是MongoDB提供的官方交互式界面,允许用户与MongoDB数据库进行
交互、执行命令和操作数据库。
MongoDBShell是基于JavaScript的,允许用户直接在命令行或者脚本中使用Java
Script语言来操作MongoDB数据库。

安装MongoDB Shell

[root@localhost ^]# tar xzf mongosh-2.5.0-linux-x64-openss13tg2
[root@localhost ^]# cd mongosh-2.5.0-linux-x64-openss13
[root@localhost mongosh-2.5.0-linux-x64-openss13]# cd bin/
[root@localhost bin]# cp mongosh /usr/local/bin/
[root@localhost bin]# cp mongosh_crypt_vl.so /usr/loca/1ib/

                 验证MongoDB Shell 


mongosh -- host <hostname> ----port <port>
root@sentinel01 bin]# mongosh

数据库管理

查看数据库列表

要查看当前MongoDB实例中所有数据库的列表,可以使用
show dbs
show dbs
要查看当前正在使用的数据库,可以使用 db 命令:
db

创建数据库

在MongoDB中,数据库的创建是一个简单的过程,当你首次向MongoDB中插入数据时,
如果数据库不存在,MongoDB会自动创建它。
我们只需选择一个数据库名称,并开始向其中插入文档即可。

当你使用use命令来指定一个数据库时,如果该数据库不存在,MongoDB将自动创建它。
MongoDB 创建数据库的语法格式如下:


use DATABASE_NAME
test> use runoob
switched to db runoob
runoob> db
runoob
runoob>

 

runoob>
show dbs
admin
40.00KiB
config
60.00KiB
local
40.00 KiB
runoob

 

runoob> db.runoob.insert0ne({"name":"zhangsan"})
acknowledged: true,
insertedId: ObjectId('680al8f4277aalc07blb2700'
runoob>
show dbs.
admin
40.00KiB
config
60.00KiB
local
40.00KiB
runoob
40.00KiB
runoob>

删除数据库

如果你需要删除数据库,可以使用db.dropDatabase方法:

use myDatabase
db.dropDatabase ()

 

runoob> show dbs
admin
40.00KiB
config
60.00KiB
local
40.00KiB
runoob 40.00 KiB
runoob> use runoob
already on db runoob
test> db.dropDatabase()
{ ok: 1, dropped: 'runoob
runoob> show dbs
admin
40.00KiB
config
60.00KiB
local
40.00KiB

默认数据库

MongoDB中默认的数据库为test,如果你没有创建新的数据库库,数据将存放在test
数据库中。当您通过shell连接到MongoDB实例时,如果未使用use命令切换到其他数据库,则会默认使用test数据库。
例如,在启动MongoDB实例并连接到MongoDBshell后,如果您开始插入文档而未显
式指定数据库,MongoDB将默认使用 test数据库。

系统内置数据库

在MongoDB中,admin、config 和 local
是三个特殊的系统内置数据库
数据库:存储所有数据库的用户身份信息和全局权限(如 rcbot
用户)。用admin户必须通过
admin数据库认证后才能执行跨库管理操作。
数据库:仅在分片集群环境中存在。存储分片信息、块(chur1k)分布、集合
config分片策略等关键元数据。
local数据库:存储当前节点的副本集状态、操作日志(opl0g)等本地数据。数据不
会被复制到其他节点,仅存在于当前实例。

集合管理

查看集合

> show collections

创建集合

语法格式:
db.createCollection (name, options)
参数说明:
name:要创建的集合名称。
options:可选参数,指定有关内存大小及索引的选项。

参数名类型描述示例值
capped布尔值是否创建一个固定大小的集合。true
size数值集合的最大大小(以字节为单位)。仅在d 为true 时有效。
:cappe
10485760
(10MB)
max数值集合中允许的最大文档数。仅在capped 为tru 5000e 时有效。5000
validator对象用于文档验证的表达式。

{$jsonSchema:

{ ... }}

validationLevel字符串指定文档验证的严格程度。
"off":不进行验证。
"strict":插入和更新操作都必须通过验证(默认)。
"moderate":仅现有文档更新时必须通过验证,插
入新文档时不需要。
"strict"
validationAction字符串指定文档验证失败时的操作。
"error":阻止插入或更新(默认)。
warn":允许插入或更新,但会发出警告。
"error"
storageEngine对象为集合指定存储引擎配置。

{ wiredTiger:

{ ... }}

参数名类型描述示例值
collation对象指定集合的默认排序规则

{ locale: "en"

strength: 2 }

 

 

db.createCollection ("myComplexCollection",
capped: true,
size: 10485760,
max: 5000,
validator:{$jsonSchema: {
bsonType:"object",
required: ["name", "email"],
properties:{
name:
bsonType:
string",
description:"必须为字符串且为必填项"
email: {
bsonType: "string",
pattern:
description:"必须为有效的电子邮件地址"
}},
validationLevel:"strict",
validationAction:"error",
storageEngine: {
wiredTiger:{configString: "block_compressor=zstd
},
collation:{locale:"en", strength:2}
});

更新集合名

renameCollection命令的语法:
db.adminCommand({
renameCollection: "sourceDb. sourceCollection",
to: "targetDb.targetCollection
dropTarget: <boolean>

参数说明:
renameCollection:要重命名的集合的完全限定名称(包括数据库名)。
·to:目标集合的完全限定名称(包括数据库名)。
dropTarget(可选):布尔值。如果目标集合已经存在,是否否删除目标集合。默认值为f
alse.

1.确保已连接到 test数据库
use test
2.运行renameCollection命
db.adminCommand({
renameCollection: "test.oldCollection",
to:"test.newCollection" });
如果你要将集合重命名到另一个数据库,例如将test数据库中的oldCollection重命名
为production数据库中的newCollection,可以这样做:
db.adminCommand({
renameCollection: "test.oldCollection",
to:"production. newCollection" });

删除集合

>use mydb
switched to db
>db.createCollection("kgc")
{ok:1}
mydb>show collections
kgc
>db.kgc.drop()
true

文档操作

方法用途是否弃用
insertone ()插入单个文档
方法用途是否弃用
insertMany()插入多个文档
insert ()插入单个或多个文档
save插入或更新文档

 

db.myCollection. insertOne({
"Alice",
name
25,
age:
city: "New York"

插入文档

查询文档

db.myCollection.find();
db.myCollection.find(
$gt: 25 } },
age:
age: 1, id: 0 }
name:

删除文档

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

db.myCollection.findOneAndDelete(
name:
"Charlie"
projection:
1.
name:
age:

更新文档

在MongoDB中,更新文档的操作可以使用多种方法实现,常用的方法包括
updateOne()、updateMany()、replaceOne()和findOneAndUpdate()。

插入测试数据

db. myCollection. insertMany([{ name: "Alice", age: 25,city: "LosAngeles", statu
"inactive" },{name: "Bob",age: 30,city: "Los Angeles",status:
"active"
S:
"Charlie", age: 35, city: "Chicago", status:
"active"}]);
name:

MongoDB备份(mongodump)与恢复(mongorestore)

mongodump 用于创建 MongoDB 数据的二进制备份,支持全量备份或指定库 / 集合的增量备份

# 全量备份(默认连接 localhost:27017)
mongodump --out /path/to/backup/directory# 指定主机和端口
mongodump --host example.com --port 27017 --out /backup/dir# 指定认证信息(用户名和密码)
mongodump --username admin --password yourpassword --authenticationDatabase admin --out /backup/dir# 备份单个数据库
mongodump --db mydatabase --out /backup/dir# 备份单个集合
mongodump --db mydatabase --collection mycollection --out /backup/dir# 压缩输出(4.2+ 版本支持)
mongodump --gzip --out /backup/dir

 

恢复数据库 (mongorestore)

mongorestore 用于从 mongodump 创建的备份中恢复数据

# 从备份目录恢复(默认恢复到 localhost:27017)
mongorestore /path/to/backup/directory# 指定目标主机和端口
mongorestore --host example.com --port 27017 /backup/dir# 指定认证信息
mongorestore --username admin --password yourpassword --authenticationDatabase admin /backup/dir# 恢复到指定数据库(可重命名目标库)
mongorestore --db targetdb /backup/dir/sourcedb# 恢复单个集合
mongorestore --db targetdb --collection mycollection /backup/dir/sourcedb/mycollection.bson# 恢复时不删除现有数据(追加模式)
mongorestore --drop  # 恢复前删除同名集合(默认行为)
mongorestore --noDrop  # 保留现有数据,追加新文档# 从压缩备份恢复
mongorestore --gzip /backup/dir

安装备份与恢复命令

使用 Homebrew(推荐)

# 安装 MongoDB Database Tools
brew tap mongodb/brew
brew install mongodb-database-tools
手动下载二进制包

从 MongoDB 官网 下载适合 macOS 的 .tgz 包解压并移动到系统路径

tar -zxvf mongodb-database-tools-macos-x86_64-<version>.tgz
sudo cp mongodb-database-tools-macos-x86_64-<version>/bin/* /usr/local/bin/

 Ubuntu/Debian

# 添加 MongoDB 官方仓库
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update# 安装 Database Tools
sudo apt-get install -y mongodb-database-tools

CentOS/RHEL

 

# 添加 MongoDB 官方仓库
echo "[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo# 安装 Database Tools
sudo yum install -y mongodb-database-tools

MongoDB数据备份

# 全量备份(默认 localhost:27017)
mongodump --out /data/backup/$(date +%Y%m%d)# 指定认证信息和压缩
mongodump --username admin --password 'pass' \--authenticationDatabase admin \--gzip --out /data/backup/$(date +%Y%m%d)

 

# 1. 冻结写入(临时阻塞写操作)
use admin
db.fsyncLock()# 2. 创建文件系统快照(如 LVM、云磁盘快照)
lvcreate -L 10G -s -n mongodb_snap /dev/mapper/vg_mongodb-lv_data# 3. 解除冻结
db.fsyncUnlock()
# 首次全量备份(含 oplog)
mongodump --oplog --out /data/backup/full_$(date +%Y%m%d)# 后续增量备份(从上次 oplog 时间点开始)
LATEST_OPLOG_TIME=$(cat /data/backup/full_*/oplog.bson | bsondump | tail -n 1 | jq -r '.ts.$timestamp.t')
mongodump --oplogReplay --oplogLimit "{'ts': {'\$gt': Timestamp($LATEST_OPLOG_TIME, 1)}}" --out /data/backup/incremental_$(date +%Y%m%d)

MongoDB数据库恢复

使用 mongorestore 恢复逻辑备份

从 mongodump 创建的备份中恢复数据

# 恢复全部数据库(默认覆盖同名集合)
mongorestore /path/to/backup/directory# 指定目标数据库(可重命名)
mongorestore --db newdb /path/to/backup/olddb# 恢复单个集合
mongorestore --db targetdb --collection users /path/to/backup/sourcedb/users.bson# 恢复时保留现有数据(追加模式)
mongorestore --noDrop /path/to/backup

MongoDB用户管理

创建管理员用户(首次配置)

启动 MongoDB 服务(未启用认证)

mongod --dbpath /data/db

连接 MongoDB 并创建管理员用户:

use admin
db.createUser({user: "admin",pwd: passwordPrompt(), // 交互式输入密码roles: [ { role: "root", db: "admin" } ]
})
db.auth("admin", passwordPrompt()) // 返回 1 表示认证成功

用户管理操作

 创建普通用户
use mydb  // 切换到目标数据库
db.createUser({user: "appuser",pwd: passwordPrompt(),roles: [{ role: "readWrite", db: "mydb" },  // 读写权限{ role: "read", db: "otherdb" }     // 只读权限]
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/84828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker基础】Docker核心概念:容器(Container)与镜像(Image)的区别与联系

目录 引言 1 Docker镜像&#xff08;Image&#xff09; 1.1 镜像的定义 1.2 镜像的特点 1.3 镜像的创建 1.4 镜像的结构 1.5 镜像结构描述 2 Docker容器&#xff08;Container&#xff09; 2.1 容器的定义 2.2 容器的特点 2.3 容器的创建与运行 2.4 容器的生命周期…

从零到一:构建企业级 Vue.js 3 组件库

前言&#xff1a;为何要构建组件库&#xff1f; 在现代前端工程化体系中&#xff0c;组件库已不再是大型团队的专属。它是一个团队设计规范、开发模式和技术沉淀的核心载体。构建一个组件库&#xff0c;能够带来诸多优势&#xff1a; 提升效率&#xff1a;提供可复用的高质量…

【2025 CVPR-Backbone】Building Vision Models upon Heat Conduction

摘要 利用注意力机制的视觉表示模型在追求大感受野时面临着巨大的计算开销。在本研究中&#xff0c;我们通过引入基于物理热传导原理的热传导算子&#xff08;Heat Conduction Operator, HCO&#xff09;来缓解这一挑战这么高级咩(⊙o⊙)&#xff01;。HCO将图像块视为热源&am…

Rust编写Shop管理系统

Rust编写Shop管理系统 Actix Web 是一个功能强大、实用且速度极快的 Rust Web 框架。编写Shop管理系统 HelloKeny 首先是先编写最简单的例子,类似hello World可以检查环境 Actix Web 是一个功能强大、实用且速度极快的 Rust Web 框架。 命令 cargo new hellokenycd hell…

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…

快速幂算法详解:从暴力到优雅的数学优化

文章目录 一、朴素幂运算的问题二、快速幂的数学原理三、快速幂的递归实现四、快速幂的迭代实现五、模运算下的快速幂六、快速幂的应用场景七、总结 快速幂是一种高效计算幂运算的算法&#xff0c;能够将时间复杂度从朴素的 O (n) 降低到 O (log n)。本文将深入探讨快速幂的原理…

HTML+CSS 动态菜单和登录框

摘要 实现了一个现代化的登录/注册界面&#xff0c;包含导航栏和弹窗表单。 HTML结构采用了响应式设计&#xff0c;包含Logo、导航链接和登录按钮。 CSS样式实现了背景图片、导航栏悬浮效果和表单美化&#xff0c;使用伪元素实现链接下划线动画。 JavaScript实现了弹窗切换…

抖音AI数字人对口型软件LatentSync最新版整合包,音频驱动口型讲话

本次和大家分享一个字节跳动开发的强大的音频驱动口型数字人视频制作软件LatentSync&#xff0c;我以前也分享过不少类似软件了&#xff0c;比如&#xff1a;EchoMimic、VideoReTalking、hallo。字节的推出的这个效果稍微更好一点&#xff0c;我制作了最新版的一键启动整合包。…

深入理解 PyTorch:从基础到高级应用

在深度学习的浪潮中&#xff0c;PyTorch 凭借其简洁易用、动态计算图等特性&#xff0c;迅速成为众多开发者和研究人员的首选框架。本文将深入探讨 PyTorch 的核心概念、基础操作以及高级应用&#xff0c;带你全面了解这一强大的深度学习工具。​ 一、PyTorch 简介​ PyTorch…

Java 中的 synchronized 与 Lock:深度对比、使用场景及高级用法

&#x1f4a1; 前言 在多线程并发编程中&#xff0c;线程安全问题始终是开发者需要重点关注的核心内容之一。Java 提供了多种机制来实现同步控制&#xff0c;其中最常用的两种方式是&#xff1a; 使用 synchronized 关键字使用 java.util.concurrent.locks.Lock 接口&#xf…

Notepad++如何列选

在 Notepad 中&#xff0c;你可以通过 列模式&#xff08;Column Mode&#xff09; 进行垂直选择文本&#xff08;列选&#xff09;&#xff0c;以下是具体操作方法&#xff1a; 方法 1&#xff1a;键盘 鼠标列选 按住 Alt 键&#xff08;或 Alt Shift&#xff09;。 按住鼠…

华为OD机考-水仙花数Ⅰ-逻辑分析(JAVA 2025B卷)

import java.util.*; public static Integer get(int count,int c){if(count<3||count>7){return -1;}//存储每位数的最高位……最低位int[] arr new int[count];List<Integer> res new ArrayList<>();for(int i(int) Math.pow(10,count-1);i<(int) Math…

基于 STL+VMD 二次分解的 Informer-LSTM 并行预测模型详解与案例

一、背景与动机 在时间序列预测中,如电力负荷、风速、交通流量等复杂数据常表现为: 非线性:趋势+季节+突变+噪声 多尺度:高频扰动与低频变化共存 长时依赖:远期信息也影响当前预测 传统模型(如 ARIMA、LSTM)往往无法兼顾全局趋势建模与局部扰动感知,因此我们提出一种 …

【Linux Learning】SSH连线出现警告:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

问题&#xff1a;WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is al…

轻量级密码算法PRESENT的C语言实现(无第三方库)

一、PRESENT算法介绍 PRESENT是一种超轻量级分组密码算法&#xff0c;由Bogdanov等人在2007年提出&#xff0c;专门为资源受限环境如RFID标签和传感器网络设计。该算法在硬件实现上仅需1570个门等效电路(GE)&#xff0c;在保持较高安全性的同时实现了极小的硬件占用空间。PRES…

if的简化书写,提高执行效率

很多时候可能有下面判断 if(a0) {b1;} else if(a1) {b0;} 就是ba的反向值&#xff1a; a0;b1&#xff1b; a1;b0; 这时&#xff0c;可以简化如下&#xff1a; ba^1 使用异或&#xff0c;程序更简洁&#xff0c;执行效率也更高 其他的也可以类似使用按位异或优化代码

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…

bash挖矿木马事件全景复盘与企业级防御实战20250612

&#x1f427; CentOS “-bash 挖矿木马” 事件全景复盘与企业级防御实战 ✍️ 作者&#xff1a;Narutolxy | &#x1f4c5; 日期&#xff1a;2025-06-12 | &#x1f3f7;️ 标签&#xff1a;Linux 安全、应急响应、运维加固、实战复盘 &#x1f4d8; 内容简介 本文是一场真实…

「Linux中Shell命令」Shell命令基础

知识点详细解析 Shell简介 Shell是Linux操作系统系统中用户与操作系统内核交互的接口。它既是命令解释器,负责接收用户输入的命令并将其转换为内核能够理解的指令,也是一种脚本编程语言。作为Linux操作系统的重要组成部分,Shell扮演着用户与系统内核之间的"中间人"…

202557读书笔记|《梦里花落知多少(轻经典)》——有你在的地方才最美

《梦里花落知多少&#xff08;轻经典&#xff09;》作者三毛&#xff0c;物极必反&#xff0c;阴晴圆缺&#xff0c;小满即万全么&#xff1f;因为幸福过于满溢。所以幸福被收走了。 没有看过太多三毛的作品&#xff0c;给我的感觉她是很敏感&#xff0c;多愁善感及没有安全感…