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

学习笔记-MongoDB(复制集,分片集集群搭建)

复制集群搭建

基本介绍

什么是复制集?
在这里插入图片描述
复制集是由一组拥有相同数据集的MongoDB实例做组成的集群。
复制集是一个集群,它是2台及2台以上的服务器组成,以及复制集成员包括Primary主节点,Secondary从节点和投票节点。
复制集提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,保证数据的安全性。
有一台Master机器,负责客户端的写入操作,然后有一台或者多台的机器做Slave,用来同步Master机器数据。一旦Master宕机,集群会快速的在Slave机器中选出一台机器来切换成为Master。这样使用多台服务器来维护相同的数据副本,提高MongoDB的可用性。
整个复制集中,只有主节点负责write操作,read操作不限制。

集群搭建

1 创建目录和配置文件

#创建目录及日志文件
mkdir -p /env/mogosets/data/server1
mkdir -p /env/mogosets/data/server2
mkdir -p /env/mogosets/data/server3
mkdir -p /env/mogosets/logs
touch server1.log server2.log server3.log
# 主节点配置
dbpath=/env/mogosets/data/server1
bind_ip=0.0.0.0
port=37017
fork=true
logpath=/env/mogosets/logs/server1.log
# 集群名称
replSet=heroMongoCluster#从节点1
dbpath=/env/mogosets/data/server2
bind_ip=0.0.0.0
port=37018
fork=true
logpath=/env/mogosets/logs/server2.log
# 集群名称
replSet=heroMongoCluster#从节点2
dbpath=/env/mogosets/data/server3
bind_ip=0.0.0.0
port=37019
fork=true
logpath=/env/mogosets/logs/server3.log
# 集群名称
replSet=heroMongoCluster

分别新建三个mogo的配置文件:
在这里插入图片描述
2 编辑启动脚本和关闭脚本
2-1 启动脚本

/env/liyong/install/mongodb/mongodb/bin/mongod -f /env/mogosets/mongocluster/mongo_37017.conf
/env/liyong/install/mongodb/mongodb/bin/mongod -f /env/mogosets/mongocluster/mongo_37018.conf
/env/liyong/install/mongodb/mongodb/bin/mongod -f /env/mogosets/mongocluster/mongo_37019.conf
echo "start mongo cluster..."
ps -ef | grep mongodb

2-2 关闭脚本

/env/liyong/install/mongodb/mongodb/bin/mongod --shutdown -f /env/mogosets/mongocluster/mongo_37017.conf
/env/liyong/install/mongodb/mongodb/bin/mongod --shutdown -f /env/mogosets/mongocluster/mongo_37018.conf
/env/liyong/install/mongodb/mongodb/bin/mongod --shutdown -f /env/mogosets/mongocluster/mongo_37019.conf
echo "stop mongo cluster..."
ps -ef | grep mongodb

3 初始化集群

var cfg ={"_id":"heroMongoCluster", "protocolVersion" : 1, "members":[ {"_id":1,"host":"127.0.0.1:37017","priority":10}, {"_id":2,"host":"127.0.0.1:37018"} ] } #_id要和replSet=heroMongoCluster保持一致rs.initiate(cfg) #初始化集群 这里可以将下面的37019加入members 这里放到后面试演示节点的动态增加和删除
rs.status() #查询集群的变化

3-1 关于配置里面我们可以指定下面这些参数
在这里插入图片描述

4 节点的动态增删

rs.add("127.0.0.1:37019") #添加节点
rs.remove("127.0.0.1:37019") #删除节点
rs.status()

5 测试集群
5-1 primary节点

#连接primary节点
mongo --host 127.0.0.1 --port=37017
db.users.insert({"name":"liyong","age":11});
db.users.find();

可以看到集群搭建成功以后连接

5-2 secondary节点

mongo --host 127.0.0.1 --port=37018
db.users.insert({"name":"liyong","age":11});

插入数据的时候提示我们了,不是主节点,这也验证了前面提到的再从节点是只读的,主节点可读可写
在这里插入图片描述

db.users.find(); #在从节点进行查询数据

我们可以看到这也一个错误,需要执行rs.slaveOk();
在这里插入图片描述

rs.slaveOk(); #执行此命令以后我们就可以进行查询数据了

6 关闭primary节点,演示主节点重新选取

/env/liyong/install/mongodb/mongodb/bin/mongod --shutdown -f /env/mogosets/mongocluster/mongo_37017.conf

可以看到18这个从节点变成了主节点
在这里插入图片描述
然后我们再启动17节点

/env/liyong/install/mongodb/mongodb/bin/mongod -f /env/mogosets/mongocluster/mongo_37017.conf #可以看到我们的17又成为了主节点 因为我们再初始化配置的时候指定了它的优先级会高一点

在这里插入图片描述

7 仲裁节点
用于管理集群的主从节点
7-1 新增一个节点为仲裁节点

rs.addArb("127.0.0,1:37020"); #添加仲裁节点到当前集群
rs.status() # 查询集群的状态

在这里插入图片描述
7-2 也可以在一开始就初始化为仲裁节点

var cfg ={"_id":"heroMongoCluster",
"protocolVersion" : 1,
"members":[
{"_id":1,"host":"127.0.0.1:37017","priority":10},
{"_id":2,"host":"127.0.0.1:37018","priority":0},
{"_id":3,"host":"127.0.0.1:37019","priority":5},
{"_id":4,"host":"127.0.0.1:37020","arbiterOnly":true}
]
};
# 重新装载配置,并重新生成集群节点。
rs.reconfig(cfg)
# 重新查看集群状态
rs.status()

分片集群

基本介绍

为什么要分片?
存储容量需求超出单机磁盘容量
活跃的数据集超出单机内存容量,导致很多请求都要从磁盘读取数据,影响性能
IOPS超出单个MongoDB节点的服务能力,随着数据的增长,单机实例的瓶颈会越来越明显
副本集具有节点数量限制

分片集群由以下3个服务组成:
Shards Server:每个shard由一个或多个mongod进程组成,用于存储数据
Router Server:数据库集群的请求入口,所有请求都通过Router(mongos)进行协调,不需要在应用程序添加一个路由选择器,就是一个请求分发中心它负责把应用程序的请求转发到对应的Shard服务器
Config Server:配置服务器。存储所有数据库元信息(路由、分片)的配置
片键(Shard Key): 为了在数据集合中分配文档,MongoDB使用分片主键分割集合。
区块(Chunk):在一个Shards Server内部,MongoDB还是会把数据分为区块chunk,每个chunk代表这个Shards Server内部一部分数据,包含基于分片主键的左闭右开的区间范围chunk。

怎么合理选择分片?
当我们在选择分片方式的时候,从数据的查询和写入,关键在于权衡性能和负载
最好的效果:
数据查询时能命中更少的分片
数据写入时能够随机的写入每个分片

数据库中没有合适的 Shard Key 供选择,或者使用的Shard Key基数太小,即变化少(如:星期,只有7天可变化),可以选择使用组合键(A + B),甚至可以添加冗余字段组合。一般是粗粒度 + 细粒度进行组合。

常见发分片方式
1)范围分片
在这里插入图片描述

范围分片是基于分片Shard Key的值切分数据,每一个Chunk将会分配到一个范围
范围分片适合满足在一定范围内的查找
例如:查找X的值在[20,30)之间的数据,mongo 路由根据Config Server中存储的元数据,直接定位到指定的Shards的Chunk
缺点:如果Shard Sey有明显递增(或者递减)趋势,则新插入的文档多会分布到同一个chunk,所以并发写入会出现明显瓶颈

hash分片(Hash based sharding)
在这里插入图片描述
Hash分片是计算一个分片Shard Key的hash值,每一个区块将分配一个范围的hash值
Hash分片与范围分片互补,能将文档随机的分散到各个Chunk,充分的利用分布式写入能力,弥补了范围分片的不足
缺点:范围查询性能不佳,所有范围查询要分发到后端所有的Shard才能找出满足条件的文档

搭建实战

1 架构图
在这里插入图片描述
2 这里分片节点集群我们可以复用上面的那个集群,这里我们按照上面的方式在搭建一个分片集群和节点集群,这里不再赘述了

#节点集群
var cfg ={"_id":"configcluster", # _id要和mongo.conf replSet=configcluster保持一致
"protocolVersion" : 1,
"members":[
{"_id":1,"host":"127.0.0.1:17017","priority":10},
{"_id":2,"host":"127.0.0.1:17018","priority":0},
{"_id":3,"host":"127.0.0.1:17019","priority":5},
]
};
rs.initiate(cfg);
rs.status();
#分片集群
var cfg ={"_id":"shad2",
"protocolVersion" : 1,
"members":[
{"_id":1,"host":"127.0.0.1:47017","priority":10},
{"_id":2,"host":"127.0.0.1:47018","priority":0},
{"_id":3,"host":"127.0.0.1:47019","priority":5},
]
};
rs.initiate(cfg);
rs.status();

特别注意配置节点的配置文件有所不同

# 数据库文件位置
dbpath=/data/mongo/config2
#日志文件位置
logpath=/data/mongo/logs/config2.log
# 以追加方式写入日志
logappend=true
# 是否以守护进程方式运行
fork = true
bind_ip=0.0.0.0
port = 17017
# 表示是一个配置服务器
configsvr=true
#配置服务器副本集名称
replSet=configsvr

3 配置和启动路由节点
路由节点的配置

port=17117
bind_ip=0.0.0.0
fork=true
logpath=/env/mogosets/route/route.log
configdb=configsvr/127.0.0.1:17017,127.0.0.1:17018,127.0.0.1:17019
#特别注意这里的命令和上面的启动命令不一样/env/liyong/install/mongodb/mongodb/bin/mongos -f ./route-17117.conf

4 连接

mongo --host 127.0.0.1 --port 17117
sh.status()
sh.addShard("shard1/27.0.0.1:37017,27.0.0.1:37018,27.0.0.1:370
19");
sh.addShard("shard2/27.0.0.1:47017,27.0.0.1:47018,27.0.0.1:470
19");
sh.status()

5 开启分片

# 为数据库开启分片功能
use admin
db.runCommand( { enablesharding :"myRangeDB"});
# 为指定集合开启分片功能
db.runCommand( { shardcollection : "myRangeDB.coll_shard",key : {_id: 1} } )

6 插入数据并查看情况

use myRangeDB;
for(var i=1;i<= 1000;i++){
db.coll_shard.insert({"name":"test"+i,salary:
(Math.random()*20000).toFixed(2)});
}
db.coll_shard.stats();
sharded true
# 可以观察到当前数据全部分配到了一个shard集群上。这是因为MongoDB并不是按照文档的级别将数据散落在各个分片上的,而是按照范围分散的。也就是说collection的数据会拆分成块chunk,然后分布在不同的shard
# 这个chunk很大,现在这种服务器配置,只有数据插入到一定量级才能看到分片的结果
# 默认的chunk大小是64M,可以存储很多文档
# 查看chunk大小:
use config
db.settings.find()
# 修改chunk大小
db.settings.save( { _id:"chunksize", value: NumberLong(128)} )

7 使用hash分片

use admin
db.runCommand({"enablesharding":"myHashDB"})
db.runCommand({"shardcollection":"myHashDB.coll_shard","key":
{"_id":"hashed"}})

参考资料: 极客时间高级体系课

相关文章:

学习笔记-MongoDB(复制集,分片集集群搭建)

复制集群搭建 基本介绍 什么是复制集&#xff1f; 复制集是由一组拥有相同数据集的MongoDB实例做组成的集群。 复制集是一个集群&#xff0c;它是2台及2台以上的服务器组成&#xff0c;以及复制集成员包括Primary主节点&#xff0c;Secondary从节点和投票节点。 复制集提供了…...

Servlet与设计模式

1 过滤器和包装器 过滤器可以拦截请求及控制响应&#xff0c;而servlet对此毫无感知。过滤器有如下作用&#xff1a; 1&#xff09;请求过滤器&#xff1a;完成安全检查、重新格式化请求首部或体、建立请求审计日志。 2&#xff09;响应过滤器&#xff1a;压缩响应流、追加或…...

Python学习基础笔记六十五——布尔值

布尔对象&#xff1a; Python中有一种对象类型称之为布尔对象&#xff08;英文叫bool&#xff09;。 布尔对象只有两种取值&#xff0c;True和False。对应的是真和假&#xff0c;或者说是和否。True对应的是&#xff0c;False对应的是否。 我觉得这句话是一个关键&#xff1a…...

ChatGPT生产力|实用指令(prompt)

GPT已经成为一个不可或缺的科研生产力了&#xff0c;但是大多数人只知晓采用直接提问、持续追问以及细节展开的方式来查阅相关资料&#xff0c;本文侧重于探讨“限定场景限定角色限定主题”、“可持续追问细节展开”等多种方式来获取更多信息&#xff0c;帮人们解决更多问题。 …...

【大数据Hive】hive select 语法使用详解

目录 一、前言 二、Hive select 完整语法树 三、Hive select 操作演示 3.1 数据准备 3.1.1 创建一张表 3.1.2 将数据load加载到t_usa_covid19表 3.1.3 再创建一张分区表 3.1.4 使用动态分区插入数据 3.2 select 常用语法 3.2.1 查询所有字段或者指定字段 3.2.2 查询…...

Android---java线程优化 偏向锁、轻量级锁和重量级锁

java 中的线程是映射到操作系统原生线程之上的&#xff0c;如果要阻塞或唤醒一个线程就需要操作系统的帮忙&#xff0c;这就需要从用户态转换到核心态。状态转换需要花费很多时间&#xff0c;如下代码所示&#xff1a; private Object lock new Object();private int value;p…...

处理机调度

目录 处理机调度概述 处理机调度的层次 低级调度 中级调度 高级调度 进程调度 进程调度的时机 进程调度的方式 非抢占式调度方式 抢占式调度方式 调度算法的评价指标 调度算法 先来先服务调度算法&#xff08;FCFS&#xff0c;First Come First Serve&#xff09; …...

Webpack 解决:ReferenceError: dist is not defined 的问题

1、问题描述&#xff1a; 其一、报错为&#xff1a; ReferenceError: dist is not defined 中文为&#xff1a; ReferenceError&#xff1a;dist 未定义 其二、问题描述为&#xff1a; 想在 webpack 的配置中&#xff0c;创建一个 dist 文件夹来存放 npm run build 打包后…...

MySQL的index merge(索引合并)导致数据库死锁分析与解决方案 | 京东云技术团队

背景 在DBS-集群列表-更多-连接查询-死锁中&#xff0c;看到9月22日有数据库死锁日志&#xff0c;后排查发现是因为mysql的优化-index merge&#xff08;索引合并&#xff09;导致数据库死锁。 定义 index merge(索引合并)&#xff1a;该数据库查询优化的一种技术&#xff0…...

第四章 网络层 | 计算机网络(谢希仁 第八版)

文章目录 第四章 网络层4.1 网络层提供的两种服务4.2 网际协议IP4.2.1 虚拟互连网络4.2.2 分类的IP地址4.2.3 IP地址与硬件地址4.2.4 地址解析协议ARP4.2.5 IP数据报的格式4.2.6 IP层转发分组的流程 4.3 划分子网和构造超网4.3.1 划分子网4.3.2 使用子网时分组的转发4.3.3 无分…...

课题学习(八)----卡尔曼滤波动态求解倾角、方位角

一、 卡尔曼滤波 卡尔曼滤波的应用要求系统和底层过程的测量模型都是线性的。离散时间线性状态空间系统的描述为: x k Φ k , k − 1 x k − 1 G k − 1 w k − 1 x_k\Phi_{k,k-1}x_{k-1}G_{k-1}w_{k-1} xk​Φk,k−1​xk−1​Gk−1​wk−1​    式中 Φ k , k − 1 \Phi_{…...

仿真软件Proteus8.9 SP2 Pro 下载、安装、汉化详细图文教程

Proteus8.9 安装教程 视频教程一、安装软件解压二、软件安装常见问题及解决方法&#xff1a;三、汉化 Proteus8.9 SP2 Pro 安装教程 本破解教程仅供个人及 proteus 8.9粉丝们交流学习之用&#xff0c;请勿用于商业用途&#xff0c; 谢谢支持。此版本为Proteus8.9 SP2 Pro。其他…...

振弦传感器和无线振弦采集仪在隧道安全监测的解决方案

振弦传感器和无线振弦采集仪在隧道安全监测的解决方案 隧道作为交通工程的重要组成部分&#xff0c;具有极高的安全风险&#xff0c;因此隧道安全监测是必不可少的。振弦传感器和无线振弦采集仪作为隧道安全监测的两种重要设备&#xff0c;能够有效地监测隧道的振动情况&#…...

c# xml 参数读取的复杂使用

完整使用2 生产厂家里面包含很多规格型号,一个规格型号里面包含很多出厂序列号,点击下一步如果检测到填充的和保存的不一样 就新增一条(如检测到生产厂家相同,但是规格型号不同,就新增一组规格型号)。 界面一:新增界面 界面2 删除界面 界面一:新增界面 load 其中…...

在Mac中使用 brew services start redis 命令启动、停止Redis服务报错

一、问题现象 启动Redis服务命令&#xff1a; brew services start redis异常信息如下&#xff1a; Error: uninitialized constant Homebrew::Service::System /opt/homebrew/Library/Homebrew/macos_version.rb:150:in const_missing /opt/homebrew/Library/Taps/homebrew…...

iapp源码-----比较经典

2.0底部菜单导航栏.rar: https://url18.ctfile.com/f/7715018-958700751-6096bd?p6511 (访问密码: 6511) 2.0涟漪_拖动条控制音乐播放.rar: https://url18.ctfile.com/f/7715018-958700754-4cec13?p6511 (访问密码: 6511) 2.0手电筒.rar: https://url18.ctfile.com/f/7715018…...

为什么手机会莫名多出许多软件?

许多手机用户都曾遭遇过这样的问题&#xff0c;他们在使用手机的过程中&#xff0c;突然发现手机屏幕上出现了一些未知的软件。这些软件并非他们主动下载的&#xff0c;但它们却显现在屏幕上。这些软件从何而来&#xff1f; 其实&#xff0c;这些软件往往是在浏览网页、阅读小…...

测试自动化的边缘:DevTestOps 和 DevSecOps

什么是 DevOps&#xff1f; DevOps 允许企业通过自动化基础设施、工作流程和持续测量应用程序的性能来提高开发人员和运营团队之间的协作和生产力。通过 DevOps&#xff0c;开发人员可以以小块的形式编写代码&#xff0c;以便在几个小时内集成、测试、监控和部署代码&#xff…...

fatal:Could not read from remote repository解决方法

Linux服务器如何连接GitHub&#xff1f; 生成SSH密钥 ssh-keygen -C “邮箱” -t rsa 存放位置一般是/root/.ssh/id_rsa 登录个人github&#xff0c;添加客户端生成的公钥 打开Settings&#xff0c;点击SSH and GPG keys&#xff0c;点击New SSH Key。Key中粘贴id_rsa.pub…...

数学基础

线性代数 关键词&#xff1a;线性方程组、矩阵、增广矩阵&#xff08;系数矩阵、常数项矩阵&#xff09;、阶梯型矩阵、行最简矩阵、最简形矩阵、向量系统、向量加法、向量空间、基本单位向量、线性相关、线性无关、Span张成空间、 向量乘法&#xff08;点积、内积、外积、叉积…...

【Python】Python语言基础(上)

第一章 前言 1. Python简介 Python语言并不是新的语言&#xff0c;它早于HTTP 1.0协议5年&#xff0c;早于Java语言 4年。 ​ Python是由荷兰人Guido van Rossum&#xff08;吉多范罗苏姆&#xff09;于1989年圣诞节期间在阿姆斯特丹休假时为了打发无聊的假期而编写的一个脚本…...

C#设计模式六大原则之依赖倒置原则

C#设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守&#xff0c;而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内&#xff0c;努为做到一个良好的设计。以下介绍C#依赖倒置原则…...

IDEA的使用(二)快捷键 (IntelliJ IDEA 2022.1.3版本)

1. IDEA中的常用快捷键 1.1 通用型快捷键 1.2 提高编写速度 ctrl shift ↑或↓ 只能在方法里面移动代码。 alt shift ↑或↓ 可以向方法外移动代码。 设置过自动导包&#xff0c;所以不用批量导包啦。 1.3 类结构、查找和查看源码 1.4 查找、替换和关闭 1.5 调整格式 1.6 De…...

微信小程序个人账号申请和配置详细教程

一、注册小程序管理账号 1、注册方法 在微信公众平台官网首页&#xff08;mp.weixin.qq.com&#xff09;&#xff0c;点击右上角的“立即注册”按钮。 2、选择注册的账号类型 选择“小程序”&#xff0c;点击“查看类型区别”可查看不同类型账号的区别和优势。 3、填写邮箱和…...

opencv定位图片中的图案?

import cv2 as cv2def find_positions(image_path, small_image_path):# 读取大图和小图large_image cv2.imread(image_path)small_image cv2.imread(small_image_path)# 小图规格small_image_h, small_image_w small_image.shape[:2]# 对比大图与小图# 匹配模板res cv2.ma…...

高防CDN:网络安全的不可或缺之选

在当今数字化时代&#xff0c;网络攻击已经成为互联网上的一种不可避免的风险。为了应对不断升级的网络威胁&#xff0c;许多企业和组织正在采用高防御CDN&#xff08;Content Delivery Network&#xff09;技术&#xff0c;以确保他们的在线资产得到保护&#xff0c;用户体验得…...

flutter 常用组件:文本、图片和按钮

文章目录 文本控件富文本控件图片本地图片网络图片按钮文本控件 ##一’码’当先 Text(这是一段文本这是一段文本这是一段文本这是一段文本这是一段文本这是一段文本这是一段文本这是一段文本,textAlign:TextAlign.center,style: TextStyle(fontWeight: FontWeight.bold, font…...

BI工具:让数据分析井然有序一望而知

BI&#xff08;Business Intelligence&#xff09;工具是一类专门用于数据分析和决策支持的软件工具。 它们能够将企业内部和外部的数据进行整合、处理和可视化&#xff0c;帮助用户从海量数据中获取有价值的见解和洞察&#xff0c;并以直观、易懂的方式展示给决策者和相关人员…...

2024级199管理类联考之逻辑核心基础

且与或 含义 A且B(A^B):同时存在 常见形式 A并且B既A又B不但A而且B虽然A但是BA或B:二者至少有一个成立(即A且非B,非A且B,A且B) 否定形式 且的否定 A且B否定形式&#xff1a;非(A^B) 非A 或 非B非A且非B否定形式&#xff1a;非(非A^非B) A 或 B非A且B否定形式&#xff1a;…...

第二次课,文件校验(预习)

hash 计算接口 Crypto API &#xff08;证书&#xff0c;对称加密&#xff0c;非对称加密&#xff0c;编码和解码&#xff09; CryptAcquireContext CryptCreateHash CryptReleaseContext CryptHashData CryptDestroyHash CryptGetHashParam 注册表操作接口 RegEnumKeyEx RegE…...

京东官方平台API接口获得JD商品详情页信息数据采集产品价格、原价、销量、商品属性名等

京东商品详情API接口的作用是获取京东平台上某个商品的详细信息&#xff0c;包括商品标题、价格、图片、规格、参数、店铺信息等。开发者可以通过该接口获取到商品的原始数据&#xff0c;方便进行数据分析、价格比较、爬取等操作。 通过该接口获取到的商品详情数据可以结合其他…...

深入篇【C++】总结智能指针的使用与应用意义(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现

深入篇【C】总结智能指针的使用与应用意义&&(auto_ptr/unique_ptr/shared_ptr/weak_ptr&#xff09;底层原理剖析模拟实现 智能指针的出现智能指针的使用应用意义/存在问题智能指针原理剖析模拟实现auto_ptrunique_ptrshared_ptrweak_ptr 智能指针的出现 首先我们要理…...

计算机视觉和机器视觉有什么区别?

人工智能是一个概念性术语&#xff0c;涵盖了若干特定技术。本文中&#xff0c;我们将探讨机器视觉&#xff08;MV&#xff09;和计算机视觉&#xff08;CV&#xff09;。二者都涉及可视化输入的摄取和解释&#xff0c;因此&#xff0c;了解这些重叠技术的优势、约束和最佳应用…...

【树莓派 picamera】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言https://www.cnblogs.com/uestc-mm/p/7606855.html 一、picamera是什么&#xff1f;二、使用步骤1.引入库2.先要安装opencv 总结 前言 想用树莓派libcamera &a…...

HarmonyOS应用开发者基础认证【满分答案】

HarmonyOS应用开发者基础认证 一、判断题二、单选题三、多选题 一、判断题 在Column和Row容器组件中&#xff0c;justifyContent用于设置子组件在主轴方向上的对齐格式&#xff0c;alignItems用于设置子组件在交叉轴方向上的对齐格式。&#xff08;正确&#xff09; 所有使用C…...

CSS 常用样式——定位属性类型及特点

一、相对定位 相对定位是 CSS 中的一种定位方式&#xff0c;它允许我们将一个元素相对于其原始位置进行定位&#xff0c;而不会影响其它元素的位置和尺寸。相对定位是通过 position: relative; 属性实现的。 相对定位常用于创建位置相对于父元素的元素&#xff0c;以及重叠元…...

华纳云:Linux文件不存在无法删除如何解决

在Linux中&#xff0c;如果您要删除一个文件&#xff0c;但文件不存在&#xff0c;通常会收到类似"文件不存在"或"没有这样的文件或目录"的错误消息。这可能是由于多种原因导致的&#xff0c;例如文件被移动、重命名、删除&#xff0c;或者您没有足够的权限…...

mysql增加字段语句转为Oracle语句

mysql增加字段语句转为Oracle语句 ALTER TABLE xm_cghyADD COLUMN WDNR blob NULL COMMENT 评审会议通知HTML AFTER HYTZFJ;在Oracle中&#xff0c;可以使用以下SQL语句来执行ALTER TABLE操作&#xff0c;将xm_cghy表添加一个名为WDNR的BLOB类型列&#xff1a; ALTER TABLE x…...

VMware搭载linux出现的bugs

---------后续在实际Linux项目复盘过程中有遇到问题(解决办法)会不定时更新.......----------- ques: Linux自带的media目录用于挂载或可移动存储设备已满&#xff08;造成这一原因是由于我多次创建新的虚拟机并在同一虚拟目录下挂载同一镜象导致有些残存文件没有删除干净&…...

websocket逆向-protobuf序列化与反序列化

系列文章目录 训练地址&#xff1a;https://www.qiulianmao.com 基础-websocket逆向基础-http拦截基础-websocket拦截基础-base64编码与解码基础-protobuf序列化与反序列化视频号直播弹幕采集实战一&#xff1a;Http轮询更新中 websocket逆向-protobuf序列化与反序列化基础 系…...

车载电子电器架构 —— 国产基础软件生态简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

CNN-generated images are surprisingly easy to spot... for now

CNN-generated images are surprisingly easy to spot… for now----《目前CNN生成的图像非常容易被发现》 背景&#xff1a; 研究者们发现&#xff0c;仅仅对一种由CNN模型生成的图像进行训练的分类器&#xff0c;也可以检测许多其他模型生成的结果。由此提出这样的观点&#…...

蓝桥杯(七段码,C++)

思路&#xff1a; 1、把灯管的连接转为图结构&#xff0c;相邻的灯管即认为有边。 2、用深度搜索&#xff0c;去计算有多少种不同字符。 3、因为有每种字符都会重复算两遍&#xff0c;最后的结果需要数以2。 #include <iostream> using namespace std;int graph[7][7…...

Master PDF Editor v5.9.70便携版

软件介绍 Master PDF Editor中文版是一款小巧的多功能PDF编辑器,可以轻松查看,创建,修改,批注,签名,扫描,OCR和打印PDF文档.高级注释工具,可以添加任意便笺指示对象突出显示,添加下划线和删除,而无需更改源PDF文件. 软件截图 更新日志 code-industry.net/what-is-new-in-mas…...

【剑指Offer】20.表示数值的字符串

题目 请实现一个函数用来判断字符串str是否表示数值&#xff08;包括科学计数法的数字&#xff0c;小数和整数&#xff09;。 科学计数法的数字(按顺序&#xff09;可以分成以下几个部分: 1.若干空格 2.一个整数或者小数 3.&#xff08;可选&#xff09;一个 e 或 E &…...

2023年9月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

9月是加密市场的活动月&#xff0c;斯坦福区块链周、Token2049等大型活动相继举办&#xff0c;后者更是创下超过1万人的历史最高纪录&#xff0c;成为了全球最大的Web3活动。在本次Token2049上&#xff0c;RWA、支付以及出入金成为了讨论度最多的活动。尽管活动如火如荼&#x…...

Unity 快捷键的一些记录

1.Unity Prefab Apply All 设置快捷键&#xff0c;修改预设体之后快捷键应用 打包会出问题&#xff1a;The type or namespace name ‘EditorWindow‘ could not be found EditorWindow类无法打包出EXE 添加unity关键字定义如下文所示&#xff1a; #if UNITY_EDITOR using Uni…...

GIT指令 - git stash

命令解释 保存当前工作进度&#xff0c;将工作区和暂存区恢复到修改之前。 使用场景 当在A分支上进行开发&#xff0c;有点事情需要切到B分支上进行开发&#xff0c;但是A分支的代码开发一半&#xff0c;又不想提交&#xff0c;直接切换又会报错&#xff0c;可以使用该指令。…...

LiveMedia视频中间件视频隐私打码直播解决方案

一、方案背景 随着科技的发展&#xff0c;视频监控系统已经成为了我们生活中不可或缺的一部分。无论是在公共区域&#xff0c;还是在私人场所&#xff0c;我们都可以看到各种各样的监控设备。这些设备的出现&#xff0c;无疑提高了我们的生活安全&#xff0c;使得我们可以更好地…...

关于神经网络的思考

关于感知机 感知机&#xff08;Perceptron&#xff09;和神经网络&#xff08;Neural Network&#xff09;之间有一定的关系&#xff0c;可以说感知机是神经网络的一个基本组成单元。 感知机&#xff1a; 感知机是一种简单的二分类线性分类器。它接受多个输入&#xff0c;对每…...