【mongodb】mongodb分片高可用以及加密操作

news2024/11/15 17:22:09

 本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

一、mongodb的分片

1.分片的概念

mongodb的副本集跟redis的高可用相同,只能读,分担不了主库的压力,只能在主库出现故障的时候接替主库的工作
mongodb能够使用的内存,只是主库的内存和磁盘,当副本集中机器配置不一致时也会有问题
​
  Mongodb的分片机制允许你创建一个包含许多台机器(分片)的集群。将数据子集分散在集群中,每个分片维护着一个数据集合的子集。与单个服务器和副本集相比,使用集群架构可以使应用程序具有更大的数据处理能力。

2.分片的介绍

#优点:
    1.提高机器资源的利用率
    2.减轻主库的压力
#缺点:
    1.机器需要的更多
    2.配置和管理更加的复杂和困难
    3.分片配置好之后想修改很困难

3.分片的原理

img

1)路由服务 mongos server
类似于代理,跟数据库的atlas类似,可以将客户端的数据分配到后端的mongo服务器上
2)分片配置服务器信息 config server
mongos server是不知道后端服务器mongo有几台,地址是什么,他只能连接到这个config server,而config server就是记录后端服务器地址和数据的一个服务
作用:
    1.记录后端mongo节点的信息
    2.记录数据写入存到了哪个节点
    3.提供给mongos后端服务器的信息
3)片键
config server只存储信息,而不会主动将数据写入节点,所以还有一个片键的概念,片键就是索引
作用:
    1.将数据根据规则分配到不同的节点
    2.相当于建立索引,加快访问速度
分类:
    1.区间片键(很有可能出现数据分配不均匀的情况)
        可以以时间区间分片,根据时间建立索引
        可以以地区区间分片,根据地区建立索引
    2.hash片键(足够平均,足够随机)
        根据id或者数据数量进行分配
4)分片
存储数据的节点,这种方式就是分布式集群

二、分片的高可用

做分片只是针对单节点,mongo服务相当于还是只有一个,所以我们还有对分片进行副本集的操作
​
跟ES一样,我们不能一台机器上部署多节点,自己做自己的副本,那当机器挂了时,还是有问题
​
所以我们要错开进行副本集的建立,而且一台机器上不能有相同的数据节点,否则选举又会出现问题

1.服务器规划

主机ip部署端口
mongodb0110.0.0.81Shard1_Master Shard2_Slave Shard3_Arbiter Config Server Mongos Server20010 28020 28030 40000 60000
mongodb0210.0.0.82Shard2_Master Shard3_Slave Shard1_Arbiter Config Server Mongos Server20010 28020 28030 40000 60000
mongodb0310.0.0.83Shard3_Master Shard1_Slave Shard2_Arbiter Config Server Mongos Server20010 28020 28030 40000 60000

2.目录规划

#服务目录
mkdir /server/mongodb/master/{conf,log,pid,data} -p
mkdir /server/mongodb/slave/{conf,log,pid,data} -p
mkdir /server/mongodb/arbiter/{conf,log,pid,data} -p
mkdir /server/mongodb/config/{conf,log,pid,data} -p
mkdir /server/mongodb/mongos/{conf,log,pid} -p

3.安装mongo

#安装依赖
yum install -y libcurl openssl
#上传或下载包
rz mongodb-linux-x86_64-3.6.13.tgz
#解压
tar xf mongodb-linux-x86_64-3.6.13.tgz -C /usr/local/
#做软连接
ln -s /usr/local/mongodb-linux-x86_64-3.6.13 /usr/local/mongodb

4.配置mongodb01

1)配置master

vim /server/mongodb/master/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/master/log/master.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/master/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/master/pid/master.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28010
  bindIp: 127.0.0.1,10.0.0.81

replication:
  oplogSizeMB: 1024 
  replSetName: shard1

sharding:
  clusterRole: shardsvr

2)配置slave

vim /server/mongodb/slave/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/slave/log/slave.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/slave/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/slave/pid/slave.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28020
  bindIp: 127.0.0.1,10.0.0.81

replication:
  oplogSizeMB: 1024
  replSetName: shard2

sharding:
  clusterRole: shardsvr

3)配置arbiter

vim /server/mongodb/arbiter/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/arbiter/log/arbiter.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/arbiter/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/arbiter/pid/arbiter.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28030
  bindIp: 127.0.0.1,10.0.0.81

replication:
  oplogSizeMB: 1024
  replSetName: shard3

sharding:
  clusterRole: shardsvr

5.配置mongodb02

1)配置master

vim /server/mongodb/master/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/master/log/master.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/master/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/master/pid/master.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28010
  bindIp: 127.0.0.1,10.0.0.82

replication:
  oplogSizeMB: 1024 
  replSetName: shard2

sharding:
  clusterRole: shardsvr

2)配置slave

vim /server/mongodb/slave/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/slave/log/slave.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/slave/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/slave/pid/slave.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28020
  bindIp: 127.0.0.1,10.0.0.82

replication:
  oplogSizeMB: 1024
  replSetName: shard3

sharding:
  clusterRole: shardsvr

3)配置arbiter

vim /server/mongodb/arbiter/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/arbiter/log/arbiter.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/arbiter/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/arbiter/pid/arbiter.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28030
  bindIp: 127.0.0.1,10.0.0.82

replication:
  oplogSizeMB: 1024
  replSetName: shard1

sharding:
  clusterRole: shardsvr

6.配置mongodb03

1)配置master

vim /server/mongodb/master/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/master/log/master.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/master/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/master/pid/master.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28010
  bindIp: 127.0.0.1,10.0.0.83

replication:
  oplogSizeMB: 1024 
  replSetName: shard3

sharding:
  clusterRole: shardsvr

2)配置slave

vim /server/mongodb/slave/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/slave/log/slave.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/slave/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/slave/pid/slave.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28020
  bindIp: 127.0.0.1,10.0.0.83

replication:
  oplogSizeMB: 1024
  replSetName: shard1

sharding:
  clusterRole: shardsvr

3)配置arbiter

vim /server/mongodb/arbiter/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/arbiter/log/arbiter.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/arbiter/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/arbiter/pid/arbiter.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 28030
  bindIp: 127.0.0.1,10.0.0.83

replication:
  oplogSizeMB: 1024
  replSetName: shard2

sharding:
  clusterRole: shardsvr

7.配置环境变量

[root@redis01 ~]# vim /etc/profile.d/mongo.sh
export PATH="/usr/local/mongodb/bin:$PATH"

[root@redis01 ~]# source /etc/profile

8.优化警告

useradd mongo -s /sbin/nologin -M 
echo "never"  > /sys/kernel/mm/transparent_hugepage/enabled
echo "never"  > /sys/kernel/mm/transparent_hugepage/defrag

9.配置system管理

1)配置master管理

vim /usr/lib/systemd/system/mongod-master.service

[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=mongo
Group=mongo
ExecStart=/usr/local/mongodb/bin/mongod -f /server/mongodb/master/conf/mongo.conf
ExecStartPre=/usr/bin/chown -R mongo:mongo /server/mongodb/master/
ExecStop=/usr/local/mongodb/bin/mongod -f /server/mongodb/master/conf/mongo.conf --shutdown
PermissionsStartOnly=true
PIDFile=/server/mongodb/master/pid/master.pid
Type=forking

[Install]
WantedBy=multi-user.target

2)配置管理salve

vim /usr/lib/systemd/system/mongod-slave.service

[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=mongo
Group=mongo
ExecStart=/usr/local/mongodb/bin/mongod -f /server/mongodb/slave/conf/mongo.conf
ExecStartPre=/usr/bin/chown -R mongo:mongo /server/mongodb/slave/
ExecStop=/usr/local/mongodb/bin/mongod -f /server/mongodb/slave/conf/mongo.conf --shutdown
PermissionsStartOnly=true
PIDFile=/server/mongodb/slave/pid/slave.pid
Type=forking

[Install]
WantedBy=multi-user.target

3)配置管理arbiter

vim /usr/lib/systemd/system/mongod-arbiter.service

[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=mongo
Group=mongo
ExecStart=/usr/local/mongodb/bin/mongod -f /server/mongodb/arbiter/conf/mongo.conf
ExecStartPre=/usr/bin/chown -R mongo:mongo /server/mongodb/arbiter/
ExecStop=/usr/local/mongodb/bin/mongod -f /server/mongodb/arbiter/conf/mongo.conf --shutdown
PermissionsStartOnly=true
PIDFile=/server/mongodb/arbiter/pid/arbiter.pid
Type=forking

[Install]
WantedBy=multi-user.target

4)刷新启动程序

systemctl daemon-reload

10.启动mongodb所有节点

systemctl start mongod-master.service
systemctl start mongod-slave.service
systemctl start mongod-arbiter.service

11.配置副本集

1)mongodb01初始化副本集

#连接主库
mongo --port 28010
 rs.initiate()
rs.add("10.0.0.83:28020")
rs.addArb("10.0.0.82:28030")

2)mongodb02初始化副本集

#连接主库
mongo --port 28010
 rs.initiate()
rs.add("10.0.0.81:28020")
rs.addArb("10.0.0.83:28030")

3)mongodb03初始化副本集

#连接主库
mongo --port 28010
 rs.initiate()
rs.add("10.0.0.82:28020")
rs.addArb("10.0.0.81:28030")

4)检查所有节点副本集状态

#三台主节点
mongo --port 28010
rs.status()
rs.isMaster()

12.配置config server

1)创建目录

这里的目录创建在最开始创建其他目录时已经创建了。

2)配置config server(三台机器都需要操作)

vim /server/mongodb/config/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/config/log/mongodb.log

storage:
  journal:
    enabled: true
  dbPath: /server/mongodb/config/data/
  directoryPerDB: true

  wiredTiger:
    engineConfig:
      cacheSizeGB: 1
      directoryForIndexes: true
    collectionConfig:
      blockCompressor: zlib
    indexConfig:
      prefixCompression: true

processManagement:
  fork: true
  pidFilePath: /server/mongodb/config/pid/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 40000					
  bindIp: 127.0.0.1,10.0.0.81		# 三台机器中需要对应写自己的ip

replication:
  replSetName: configset			# 这里为配置集群名称(三台需要保持一致)

sharding:
  clusterRole: configsvr

3)启动(三台都启动)

/usr/local/mongodb/bin/mongod -f /server/mongodb/config/conf/mongo.conf

4)mongodb01上初始化副本集(在一台中配置即可)

mongo --port 40000
  
  rs.initiate({
	_id:"configset", 
    configsvr: true,
	members:[
		{_id:0,host:"10.0.0.51:40000"},
		{_id:1,host:"10.0.0.52:40000"},
		{_id:2,host:"10.0.0.53:40000"},
	] })

5)检查

rs.status()
rs.isMaster()

13.配置mongos

1)创建目录

2)配置mongos(三台都需配置)

vim /server/mongodb/mongos/conf/mongo.conf

systemLog:
  destination: file 
  logAppend: true 
  path: /server/mongodb/mongos/log/mongos.log

processManagement:
  fork: true
  pidFilePath: /server/mongodb/mongos/pid/mongos.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 60000
  bindIp: 127.0.0.1,10.0.0.81

sharding:
  configDB: 
    configset/10.0.0.81:40000,10.0.0.82:40000,10.0.0.83:40000

3)启动

mongos -f /server/mongodb/mongos/conf/mongo.conf 

4)添加分片成员

#登录mongos
mongo --port 60000

#添加成员(告诉mongos后端分片的成员有哪些,在一台中配置就行了,另外两台会自己同步)
use admin
db.runCommand({addShard:'shard1/10.0.0.81:28010,10.0.0.83:28020,10.0.0.82:28030'})
db.runCommand({addShard:'shard2/10.0.0.82:28010,10.0.0.81:28020,10.0.0.83:28030'})
db.runCommand({addShard:'shard3/10.0.0.83:28010,10.0.0.82:28020,10.0.0.81:28030'})

5)查看分片信息

db.runCommand( { listshards : 1 } )

14.配置区间分片

1)区间分片

#数据库开启分片
mongo --port 60000
use admin 

#指定库开启分片
db.runCommand( { enablesharding : "test" } )

2)创建集合索引

mongo --port 60000 
use test
db.range.ensureIndex( { id: 1 } )

3)对集合开启分片,片键是id

use admin
db.runCommand( { shardcollection : "test.range",key : {id: 1} } )

4)插入测试数据

use test
    for(i=1;i<10000;i++){ db.range.insert({"id":i,"name":"shanghai","age":28,"date":new Date()}); }
db.range.stats()
db.range.count()

15.设置hash分片

#数据库开启分片
mongo --port 60000
use admin
db.runCommand( { enablesharding : "testhash" } )

1)集合创建索引

use testhash
db.hash.ensureIndex( { id: "hashed" } )

2)集合开启哈希分片

use admin
sh.shardCollection( "testhash.hash", { id: "hashed" } )

3)生成测试数据

use testhash
for(i=1;i<10000;i++){ db.hash.insert({"id":i,"name":"shanghai","age":70}); }

4)验证数据

分片验证
#mongodb01
mongo --port 28010
use testhash
db.hash.count()
33755

#mongodb01
mongo --port 28010
use testhash
db.hash.count()
33142

#mongodb01
mongo --port 28010
use testhash
db.hash.count()
33102

16.分片集群常用管理命令

1.列出分片所有详细信息
    db.printShardingStatus()
    sh.status()

2.列出所有分片成员信息
    use admin
    db.runCommand({ listshards : 1})

3.列出开启分片的数据库
    use config
    db.databases.find({"partitioned": true })

4.查看分片的片键
    use config
    db.collections.find().pretty()

三、mongo配置密码做副本集

openssl rand -base64 123 > /server/mongodb/mongo.key
chown -R mongod.mongod /server/mongodb/mongo.key
chmod -R 600 /server/mongodb/mongo.key

scp -r /server/mongodb/mongo.key 192.168.1.82:/server/mongodb/
scp -r /server/mongodb/mongo.key 192.168.1.83:/server/mongodb/

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

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

相关文章

Prometheus+Alertmanager+邮件告警

参考node_exporter-CSDN博客&#xff0c;球球不要断更&#xff01;&#xff01;&#xff01;&#xff01; 大致流程 1.部署promethus 可以写一个自定义的 systemd 服务启动文档&#xff0c;详情见自定义的 systemd 服务启动方式-CSDN博客 [rootlocalhost system]# sudo tee /e…

python-局部求和(赛氪OJ)

[题目描述] 输入 2020 个整数&#xff0c;输出其中能被数组中其它元素整除的那些数组元素。输入格式&#xff1a; 输入一行&#xff0c;输入 2020 个整数&#xff0c;中间用空格隔开。输出格式&#xff1a; 输出能被数组中其他元素整除的元素&#xff0c;每行输出一个。样例输入…

Sqlserver递归生成日期范围

文章目录 Sqlserver递归生成日期范围业务背景SQL脚本执行结果 Sqlserver递归生成日期范围 业务背景 有时候需要按天生成数据&#xff0c;需要用到日期表进行循环处理 SQL脚本 ;WITH DateRange AS ( SELECT 1 AS Seq, 2024-01-01 AS DateValue UNION ALL SELECT Seq1 Seq, C…

苹果手机升级iOS18测试版本后使用体验不好?怎么降级?

近期苹果发布了诸多的iOS18版本给用户提前尝鲜测试&#xff0c;许多果粉们都迫不及待的选择了升级&#xff0c;但是有不少的果粉升级时没有考虑到设备适配性问题&#xff0c;导致升级之后手机变得有些卡顿&#xff0c;使用体验不好时&#xff0c;想要降级回到正式的版本&#x…

双向链表知识点(附源代码)

双向链表的特点 带头链表⾥的头结点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位结点不存储任何有效元素&#xff0c;只是站在这⾥“放哨的” 例图解析 双向链表与单链表的区别 双向链表&#xff1a;除了存储的数据外还有两个指针&#xff0c;具有头节点&#xff0c;还有…

【秋招笔试】24-08-01-用友-秋招笔试题

🍭 大家好这里是清隆Coding ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 ⌚️ 01.物流网络安全节点 问题描述 L…

数据结构与算法(Java)--栈(Linked_Stack)

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java SE关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 线性表&#xff1a;栈 栈的定义 栈&#xff08;Stack&#xff09;是一种特殊的…

谷歌开源最强端侧小模型:2B参数越级跑赢GPT-3.5-Turbo,苹果15Pro运行飞快

谷歌也来卷「小」模型了&#xff0c;一出手就是王炸&#xff0c;胜过了比自己参数多得多的GPT-3.5、Mixtral竞品模型。 点击访问我的技术博客https://ai.weoknow.comhttps://ai.weoknow.com 今年 6 月底&#xff0c;谷歌开源了 9B、27B 版 Gemma 2 模型系列&#xff0c;并且自亮…

嵌入式C++、MQTT、React、Spring Boot和MongoDB:物联网工厂检测系统设计思路(代码示例)

项目概述 随着工业4.0和物联网&#xff08;IoT&#xff09;技术的发展&#xff0c;越来越多的工厂借助智能化手段进行生产数据的采集和实时监控。本项目设计并实现一个物联网工厂检测系统&#xff0c;通过传感器采集关键参数&#xff0c;并利用云平台进行数据存储和分析&#…

Python 教程(九):内置模块与第三方模块

目录 专栏列表前言1. 模块基础目录结构示例模块 mymodule.py 2. 导入模块3. 从模块中导入特定内容3.1 from … import *总结&#xff1a; 4. 包示例包结构moduleone.pymoduletwo.py__init__.py导入包 5. 模块搜索路径6. 内置模块示例 7. 第三方库8. __name__ 属性9. 初始化和清…

开源小项目-基于STM32F103的频率测量实现 V1.1(ADC+TIM+DMA+FFT)

目录 一、快速傅里叶变换&#xff08;FFT&#xff09; 1.1 工作原理 1.2 应用 1.3 FFT官方支持库 二、使用外设简介 2.1 ADC外设 2.2 TIM外设 3.3 DMA外设 三、代码设计过程 3.1 初始化 3.2 DMA中断数据处理 3.3 其他自定义函数 1. 计算信号频率 2. 计算信号幅度…

G-EVAL: NLG Evaluation using GPT-4 with Better Human Alignment

文章目录 题目摘要方法实验分析相关工作结论 题目 G-EVAL:使用GPT-4进行NLG评估&#xff0c;具有更好的人类一致 论文地址&#xff1a;https://arxiv.org/abs/2303.16634 项目地址&#xff1a;https://github.com/nlpyang/geval 摘要 自然语言生成(NLG)系统生成的文本质量难以…

网站开发涉及到的技术内容介绍——前端

一、网站开发涉及前后端交互模式 一般来说网站项目分为两种【前后端不分离、前后端分离】,其中前后端不分离的项目是(后端语言可以直接与前端的html等内容糅合在一起,后端语言可以操作数据进行动态渲染前端的html文件进行展示)。后端分离的项目是(后端语言不会直接对前端的…

c++| c++11左右值引用,完美转发,可变参数模板

c| c11的新特性 左&#xff0c;右值引用什么是左值&#xff0c;右值左值引用和右值引用右值引用解决什么问题呢&#xff1f;移动构造万能引用形式 完美转发格式 lambada表达式格式 可变参数模板可变参数模板实现打印不同类型emplace_push以list的emplace_back的实现举例 左&…

掌握 HTTP 请求的艺术:理解 cURL GET 语法

在 Web 开发和服务器通信领域&#xff0c;掌握 HTTP 请求对于寻求有效与 Web 服务和 API 交互的开发人员至关重要。在众多可用于发出 HTTP 请求的工具中&#xff0c;cURL 脱颖而出&#xff0c;成为全球开发人员信赖的强大且多功能的命令行工具。在这篇博文中&#xff0c;我们将…

MySQL分组查询有关知识总结

目录 4. 分组查询&#xff08;group by&#xff09; 4.1 概述 4.2 分组函数 4.2.1 单个使用 4.2.2 组合使用 4.2.3 注意&#xff01; 4.3 group by 4.3.1 单个字段 4.3.2 多个字段 4.3.3 提醒&#xff01; 4.4 having 4.5 分组查询演示 4. 分组查询&#xff08;…

海外仓怎么入局?货代还有发展的空间吗?

很多货代小伙伴可能都有一个疑惑&#xff1a;海外仓虽然火爆&#xff0c;但是怎么入局呢&#xff1f;显然&#xff0c;自建海外仓的试错代价太高了&#xff0c;成本高、选址难、管理起来更是一地鸡毛。既然无法自建&#xff0c;那转换赛道&#xff0c;管理别人的仓库&#xff0…

iOS面试之属性关键字(二):常见面试题

Q:ARC下&#xff0c;不显式指定任何属性关键字时&#xff0c;默认的关键字都有哪些&#xff1f; 对应基本数据类型默认关键字是:atomic,readwrite,assign 对于普通的 Objective-C 对象:atomic,readwrite,strong Q&#xff1a;atomic 修饰的属性是怎么样保存线程安全的&#x…

如何将本地下载的切片电影进行合成一个视频

合成后的时长1&#xff1a;41 没有合成前是50个电影切片 注明:电影切片不是真实的切片名称而是自定义从0-50的数字 import requests # with open("电影.m3u8","r") as f: # n0 # for line in f: # if line.startswith("#"): …

SpringBoot项目如何安装Selenium自动化(详解)

目录 一、打开intellij idea&#xff0c;创建Maven项目 二、添加依赖 三、在Test路径下创建自动化文件 3.1 项目结构 3.2 代码 四、运行自动化 前言&#xff1a; java版本最低要求为8。电脑至少已安装一种浏览器&#xff0c;如&#xff1a;Chrome&#xff08;推荐&#xff09;、…