Mongodb入门--头歌实验MongoDB 复制集 分片

一、MongoDB之副本集配置

1.1MongoDB主从复制

主从复制是MongoDB最早使用的复制方式, 该复制方式易于配置,并且可以支持任意数量的从节点服务器,与使用单节点模式相比有如下优点:

在从服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

可配置读写分离,主节点负责写操作,从节点负责读操作,将读写压力分开,提高系统的稳定性。

MongoDB 的主从复制至少需要两个服务器或者节点。其中一个是主节点,负责处理客户端请求,其它的都是从节点,负责同步主节点的数据。

主节点记录在其上执行的所有写操作,从节点定期轮询主节点获取这些操作,然后再对自己的数据副本执行这些操作。由于和主节点执行了相同的操作,从节点就能保持与主节点的数据同步。

主节点的操作记录称为oplog(operation log),它被存储在 MongoDB 的 local 数据库中。oplog 中的每个文档都代表主节点上执行的一个操作。需要重点强调的是oplog只记录改变数据库状态的操作。比如,查询操作就不会被存储在oplog中。这是因为oplog只是作为从节点与主节点保持数据同步的机制。

 然而,主从复制并非生产环境下推荐的复制方式,主要原因如下两点:

1、灾备都是完全人工的 如果主节点发生故障失败,管理员必须关闭一个从服务器,然后作为主节点重新启动它。然后应用程序必须重新配置连接新的主节点。
2、数据恢复困难 因为oplog只在主节点存在,故障失败需要在新的服务器上创建新的oplog,这意味着任意存在的节点需要重新从新的主节点同步oplog。

因此,在新版本的MongoDB中已经不再支持使用主从复制这种复制方式了,取而代之的是使用副本集复制方式。

1.2MongoDB副本集

MongoDB副本集(Replica Set)其实就是具有自动故障恢复功能的主从集群,和主从复制最大的区别就是在副本集中没有固定的“主节点;整个副本集会选出一个节点作为“主节点”,当其挂掉后,再在剩下的从节点中选举一个节点成为新的“主节点”,在副本集中总有一个主节点(primary)和一个或多个备份节点(secondary)

除了primarysecondary之外,副本集中的节点还可以是以下角色:

成为primary对客户端可见参与投票延迟同步复制数据
Default
Secondary-Only
Hidden
Delayed∕
Arbiters
Non-Voting

官方推荐的副本集最小配置需要有三个节点:一个主节点接收和处理所有的写操作,两个备份节点通过复制主节点的操作来对主节点的数据进行同步备份。

 为什么使用复制集:

  • 备份数据 数据库的数据只有一份的话是极不安全的,一旦数据所在的电脑坏掉,我们的数据就彻底丢失了,所以要有一个备份数据的机制。

  • 故障自动转移 部署了复制集,当主节点挂了后,集群会自动投票再从节点中选举出一个新的主节点,继续提供服务。而且这一切都是自动完成的,对运维人员和开发人员是透明的。当然,发生故障了还是得人工及时处理,不要过度依赖复制集,万一都挂了,那就连喘息的时间都没有了。

  • 在某些特定的场景下提高读性能 默认情况下,读和写都只能在主节点上进行。 下面是 MongoDB 的客户端支持5种复制集读选项:

  • primary :默认模式,所有的读操作都在复制集的主节点进行的;

  • primaryPreferred :在大多数情况时,读操作在主节点上进行,但是如果主节点不可用了,读操作就会转移到从节点上执行;

  • secondary :所有的读操作都在复制集的从节点上执行;

  • secondaryPreferred :在大多数情况下,读操作都是在从节点上进行的,但是当从节点不可用了,读操作会转移到主节点上进行;

  • nearest :读操作会在复制集中网络延时最小的节点上进行,与节点类型无关。

复制集结构,如图1所示:

图1

图 1

1.3分片

分片(sharding)是指将数据库拆分,使其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。通过一个名为 mongos 的路由进程进行操作,mongos 知道数据和片的对应关系(通过配置服务器)

什么时候使用分片:

  • 机器的磁盘不够用了,使用分片解决磁盘空间的问题;

  • 单个 mongod 已经不能满足写数据的性能要求,通过分片让写压力分散到各个分片上面,使用分片服务器自身的资源;

  • 想把大量数据放到内存里提高性能,通过分片使用分片服务器自身的资源。

分片结构,如图2所示:

分片结构,如图2所示:

图2

图 2

 

上图中主要有如下所述三个主要组件:

  • Shard :用于存储实际的数据块,实际生产环境中一个 shard server 角色可由几台机器组个一个 replica set 承担,防止主机单点故障;

  • Config Server :mongod 实例,存储了整个 ClusterMetadata,其中包括 chunk 信息;

  • Query Routers :前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

二、MongoDB 复制集搭建

任务描述

本关任务:按照编程要求搭建复制集。

相关知识

为了完成本关任务,你需要掌握: 1.如何设置配置文件启动服务; 2.如何配置主从节点; 3.如何验证复制集同步; 4.如何手动切换 Primary 节点到指定的节点。

我们在一台虚拟机中启动三个 mongodb 服务,来模拟多台服务器协同工作的情况。

选用三个端口连接数据库:27018、27019、27020。

配置文件设置

因为我们要启动三个 mongodb 服务,所以要准备三个数据存放位置,三个日志文件,三个配置文件。

  • 数据存放位置;

在 /data 路径下创建文件夹 db1、db2 和 db3 来存放三个服务的数据。

  • 日志文件;

在 /logs 路径下创建文件夹 mongo 存放日志文件 mongod1.log、mongod2.log 和 mongod3.log(文件不用创建,到时候会自动生成,但路径即文件夹必须提前创建好)。

  • 配置文件。

在 /etc/mongod 路径下新建三个配置文件,使用配置文件启动 mongod 服务(在之前的实训中我们都是用命令启动的)。

mongod1.conf 内容如下:

port=27018     #配置端口号
dbpath=/data/db1     #配置数据存放的位置
logpath=/logs/mongo/mongod1.log     #配置日志存放的位置
logappend=true     #日志使用追加的方式
fork=true     #设置在后台运行
replSet=YOURMONGO     #配置复制集名称,该名称要在所有的服务器一致

mongod2.conf 内容如下:

port=27019     #配置端口号
dbpath=/data/db2     #配置数据存放的位置
logpath=/logs/mongo/mongod2.log     #配置日志存放的位置
logappend=true     #日志使用追加的方式
fork=true     #设置在后台运行
replSet=YOURMONGO     #配置复制集名称,该名称要在所有的服务器一致

mongod3.conf 内容如下:

port=27020     #配置端口号
dbpath=/data/db3     #配置数据存放的位置
logpath=/logs/mongo/mongod3.log     #配置日志存放的位置
logappend=true     #日志使用追加的方式
fork=true     #设置在后台运行
replSet=YOURMONGO     #配置复制集名称,该名称要在所有的服务器一致

以上工作准备完成,便可以开启服务了,配置文件启动命令(在命令行中输入):

mongod -f /etc/mongod/mongod1.conf
mongod -f /etc/mongod/mongod2.conf
mongod -f /etc/mongod/mongod3.conf

具体效果如图1所示:

图 1

配置主从节点

三个端口的服务全部启动成功后,需要进入其中一个进行配置节点。 设置27019为 arbiter 节点。

  • 进入端口号为27018的进行配置,连接数据库:mongo --port 27018;

  • 选择数据库 admin;

  • 输入配置要求如下

  • 使用 rs.initiate(config)进行初始化:
rs.initiate(config)

具体效果如图2所示:

图 2

如上所示配置成功后,不同端口的数据库登陆后左边的>可能变为如下两种状态:

  • 说明该端口为主节点,如图3所示:

    图 3

  • 说明该端口为从节点,如图4所示:

    图4

    图 4

  • 使用 rs.status() 查看状态。

验证复制集同步

在主数据库插入数据,然后去从数据库查看数据是否一致。

连接主数据库:mongo --port 27018;

use test
db.person.insert({name:'王小明',age:20})

具体步骤如图5所示:

图5

图 5

连接从数据库:mongo --port 27020; 从库查询数据需要设置 slaveOk 为 true;

use test
rs.slaveOk(true)
db.person.find()

具体步骤如图6所示:

图6

图 6

 

至此复制集搭建完成,主数据库的数据的更新后,从数据库的数据也会同步更改,一旦主数据库挂掉,从

切换 Primary 节点到指定的节点

在实际应用中,如果想指定某服务器或端口作为主节点,而不是随机选举一个主节点,可以通过以下方法改变 Primary 节点:

数据库可自动变为主数据库,极大地保障了数据的安全,这也是搭建复制集的必要性。

  • 先进入主节点中进行操作:
mongo --port 27018
  • 查看目前的节点状态:
rs.conf()     #查看配置
rs.status()   #查看状态

其中 priority : 是优先级,默认为 1,优先级 0 为被动节点,不能成为活跃节点。优先级不为 0 则按照由大到小选出活跃节点。

因为默认的都是1,所以只需要把给定的服务器的 priority 加到最大即可。让27020成为主节点,操作如下: 现进入目前的主节点进行操作如下:

cfg=rs.conf()
cfg.members[2].priority=2     #修改priority,members[2]即对应27020端口
rs.reconfig(cfg)     #重新加载配置文件,强制了副本集进行一次选举,优先级高的成为Primary。在这之间整个集群的所有节点都是secondary
rs.status()

这样,给定的服务器或端口就成为了主节点。

编程要求

根据提示,仿照实训中的例子,在右侧命令行进行操作,搭建复制集,要求如下:

  • 数据存放路径为:/data/test/db1、/data/test/db2 和 /data/test/db3;

  • 日志存放路径为:/logs/test/mongod1.log、/logs/test/mongod2.log和 /logs/test/mongod3.log;

  • 配置文件所在路径为:/etc/test/mongod1.conf、/etc/test/mongod2.conf 和 /etc/test/mongod3.conf;

  • 端口选用20001、20002和20003,其中要求20001成为主节点,20002为 arbiter 节点。

root@evassh-13183285:~# mkdir /data/test
root@evassh-13183285:~# mkdir /data/test/db1
root@evassh-13183285:~# mkdir /data/test/db2
root@evassh-13183285:~# mkdir /data/test/db3
root@evassh-13183285:~# mkdir /logs
root@evassh-13183285:~# mkdir /logs/test
root@evassh-13183285:~# cd /etc
root@evassh-13183285:/etc# mkdir /etc/test
root@evassh-13183285:/etc# cd /etc/testroot@evassh-13183285:/etc/test# vim mongod1.conf
root@evassh-13183285:/etc/test# mongod -f /etc/test/mongod1.confroot@evassh-13183285:/etc/test# vim mongod2.conf
root@evassh-13183285:/etc/test# mongod -f /etc/test/mongod2.confroot@evassh-13183285:/etc/test# vim mongod3.conf
root@evassh-13183285:/etc/test# mongod -f /etc/test/mongod3.conf

mongod1.conf内容:

port=20001
dbpath=/data/test/db1
logpath=/logs/test/mongod1.log
logappend=true
fork=true
replSet=YOURMONGO 

 

mongod2.conf内容:

port=20002
dbpath=/data/test/db2
logpath=/logs/test/mongod2.log
logappend=true
fork=true
replSet=YOURMONGO 

 

mongod3.conf内容:

port=20003
dbpath=/data/test/db3
logpath=/logs/test/mongod3.log
logappend=true
fork=true
replSet=YOURMONGO 

 

> use admin
switched to db admin
> config = {_id:"YOURMONGO", members:[{_id:0,host:'127.0.0.1:20001'},{_id:1,host:'127.0.0.1:20002',arbiterOnly:true},{_id:2,host:'127.0.0.1:20003'}]}> rs.initiate(config)YOURMONGO:SECONDARY> cfg=rs.conf()YOURMONGO:PRIMARY> cfg.members[2].priority=2
2
YOURMONGO:PRIMARY> rs.reconfig(cfg)YOURMONGO:PRIMARY> rs.status()YOURMONGO:PRIMARY> 

三、MongoDB 分片集搭建

任务描述

本关任务:按照编程要求搭建分片集。

相关知识

为了完成本关任务,你需要掌握: 1.用配置文件启动服务; 2.如何配置 config 节点; 3.如何配置 route 节点; 4.如何验证分片集。

:分片实际是在多台机器配置的,由于评测原因我们在一台机子上模拟,其步骤和原理相同。

 

配置文件设置
  • 同复制集一样,我们要准备目录存放我们的数据和日志:

mkdir -p /data/shard1/db
mkdir -p /logs/shard1/log
mkdir -p /data/shard2/db
mkdir -p /logs/shard2/log
mkdir -p /data/shard3/db
mkdir -p /logs/shard3/log
mkdir -p /data/config/db
mkdir -p /logs/config/log
mkdir -p /logs/mongs/log
  • 配置文件 (新建在 /etc/mongo 目录下);

mongod1.conf 内容如下:

dbpath=/data/shard1/db
logpath=/logs/shard1/log/mongodb.log
port=10001
shardsvr=true
fork=true

mongod2.conf 内容如下:

dbpath=/data/shard2/db
logpath=/logs/shard2/log/mongodb.log
port=10002
shardsvr=true
fork=true

 mongod3.conf 内容如下:

dbpath=/data/shard3/db
logpath=/logs/shard3/log/mongodb.log
port=10003
shardsvr=true
fork=true

其中 shardsvr 是用来开启分片的。

  • 从配置文件启动 mongod 服务:
mongod -f /etc/mongo/mongod1.conf
mongod -f /etc/mongo/mongod2.conf
mongod -f /etc/mongo/mongod3.conf
config 节点
  • 配置启动节点服务:
mongod --dbpath /data/config/db --logpath /logs/config/log/mongodb.log --port 10004 --configsvr --replSet cs --fork
  • 连接 route 节点:
mongo localhost:10004
  • 输入以下命令:
use admin
cfg = {_id:'cs',configsvr:true,members:[{_id:0,host:'localhost:10004'}]
}
rs.initiate(cfg)

运行效果如图1所示,说明设置成功:

图1

图 1

route 节点
  • 配置启动节点服务:

mongos --configdb cs/localhost:10004 --logpath /logs/mongs/log/mongodb.log --port 10005 --fork
  • 连接上 route 节点:
mongo localhost:10005
  • 添加分片:
sh.addShard('localhost:10001')
sh.addShard('localhost:10002')
sh.addShard('localhost:10003')

查看集群的状态:分片摘要信息、数据库摘要信息、集合摘要信息等;

sh.status()

运行效果如图 2 所示,说明设置成功:

图2

图 2

分片验证
  • 连接 route 节点:mongo localhost:10005;

数据量太小可能导致分片失败,这是因为 chunksize 默认的大小是 64MB( chunkSize 来制定块的大小,单位是 MB ),使用以下代码把 chunksize 改为 1MB 后,插入数据,便可以分片成功。

use config
db.settings.save( { _id:"chunksize", value: 1 } )
  • 对集合使用的数据库启用分片:
sh.enableSharding("test")
  • 添加索引:
db.user.ensureIndex({ "uid" : 1})
  • 分片:
sh.shardCollection("test.user",{"uid" : 1})
  • 插入10万条数据(大概需要40s 左右):
use test
for(i=0;i<100000;i++){db.user.insert({uid:i,username:'test-'+i})}
  • 再次运行 sh.status() 会多出如图 3 内容,显示了分片的情况。

    图3

    图 3

  • 去各个节点查看数据分布情况:

以下分别是在端口10001(图4)、10002(图5)和10003(图6)查询的文档条数,加起来正好10万条。

图4

图 4

图5

图 5

图6

图 6

编程要求

根据提示,仿照实训中的例子,在右侧命令行进行操作,搭建分片,要求如下:

  • 数据、日志和配置文件存放路径如下:

mkdir -p /data/test2/shard1/db
mkdir -p /logs/test2/shard1/log
mkdir -p /data/test2/shard2/db
mkdir -p /logs/test2/shard2/log
mkdir -p /data/test2/shard3/db
mkdir -p /logs/test2/shard3/log
mkdir -p /data/test2/config/db
mkdir -p /logs/test2/config/log
mkdir -p /logs/test2/mongs/log
mkdir -p /etc/test2
  • 端口选用21001、21002、21003、21004和21005,其中要求21004成为 config 节点,21005为 route 节点。

注意:再次点击测评前删除数据库中的所有索引 db.collection.dropIndexes(),防止影响测评结果。

dbpath=/data/shard1/db
logpath=/logs/shard1/log/mongodb.log
port=10001
shardsvr=true
fork=true

 

 

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

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

相关文章

【python】图像边缘提取效果增强方法-高斯模糊

一、介绍 高斯模糊是一种常用的图像处理技术&#xff0c;用于减少图像中的噪声和细节。它通过对图像中的每个像素点进行加权平均来实现模糊效果。具体而言&#xff0c;高斯模糊使用一个高斯核函数作为权重&#xff0c;对每个像素点周围的邻域进行加权平均。这样可以使得每个像…

在【Cencos7】中安装【Nacos】并适配【PostgreSQL】数据库

在【Cencos7】中安装【Nacos-2.3.0】并适配【PostgreSQL】数据库 安装JDK wget命令下载&#xff1a; wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz解压 tar -xzvf jdk-7u80-linux-x64.tar.gz将解压后的目录移动到/opt下 sudo mv jdk…

二叉树遍历算法和应用

二叉树是指度为 2 的树。它是一种最简单却又最重要的树&#xff0c;在计算机领域中有这广泛的应用。 二叉树的递归定义如下&#xff1a;二叉树是一棵空树&#xff0c;或者一棵由一个根节点和两棵互不相交的分别称为根节点的左子树和右子树所组成的非空树&#xff0c;左子树和右…

【前端】解决前端图表大数据配色难题:利用HSL动态生成颜色方案

解决前端图表大数据配色难题&#xff1a;利用HSL动态生成颜色方案 在数据可视化项目中&#xff0c;尤其是当需要绘制包含大量数据点的图表时&#xff0c;一个常见的挑战是如何为每个数据点分配一个独特而又视觉上容易区分的颜色。使用固定的颜色列表可能在数据点数量超过列表限…

信号完整性之特性阻抗那些事儿

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海。 我们经常说控制阻抗&#xff0c;这个阻抗是什么意思呢&#xff1f; 信号在传输线中&#xff0c;是一步…

使用Android Studio制作一个蓝牙软件 ---(一)

一、创建项目&#xff08;项目名称---BluetoothActivity&#xff09; 二、创建HomeActivity页面 1.点击一个文件夹 --- 鼠标右击 --- 新建 --- Acyivity --- Empty Views Activity 三、创建styles.xml 点击 values文件夹 --- 鼠标右击 --- 新建 --- Values Resource File sty…

【数据结构】04串

串 1. 定义2. 串的比较3. 串的存储结构4. 具体实现5. 模式匹配5.1 常规思路实现5.2 KMP模式匹配算法5.2.1 next数组计算5.2.1 代码计算next数组5.2.2 KMP算法实现 1. 定义 串(string)是由零个或多个字符组成的有限序列&#xff0c;又叫字符串。 一般记为s a 1 , a 2 , . . . ,…

NGO-VMD+皮尔逊系数+小波阈值降噪+重构

NGO-VMD皮尔逊系数小波阈值降噪重构 NGO-VMD皮尔逊系数小波阈值降噪重构代码获取戳此处代码获取戳此处 以西储大学轴承数据为例&#xff0c;进行VMD&#xff0c;且采用NGO进行K a参数寻优 并对分解分量计算皮尔逊相关系数筛选含噪声分量&#xff0c;对其进行小波软硬阈值降噪&a…

C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”&#xff0c;项目中由于各方面因素&#xff0c;总是有人抱怨存在内存泄漏&#xff0c;系统长时间运行之后&#xff0c;可用内存越来越少&#xff0c;甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一&#xff0c;因为除非用完内存或调用…

【JAVA基础篇教学】第十篇:Java中Map详解说明

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十篇&#xff1a;Java中Map详解说明。 在 Java 编程中&#xff0c;Map 接口代表了一种键值对的集合&#xff0c;每个键对应一个值。Map 接口提供了一系列操作方法&#xff0c;可以方便地对键值对进行增删改查等操作。本…

模板方法模式:定义算法骨架的设计策略

在软件开发中&#xff0c;模板方法模式是一种行为型设计模式&#xff0c;它在父类中定义一个操作的算法框架&#xff0c;允许子类在不改变算法结构的情况下重定义算法的某些步骤。这种模式是基于继承的基本原则&#xff0c;通过抽象类达到代码复用的目的。本文将详细介绍模板方…

NASA数据集——亚洲夏季季风化学与气候影响项目超高灵敏度气溶胶光谱(UHSAS)数据

ACCLIP_Aerosol_AircraftInSitu_WB57_Data 简介 ACCLIP_Aerosol_AircraftInSitu_WB57_Data 是亚洲夏季季风化学与气候影响项目&#xff08;ACCLIP&#xff09;期间收集的原地气溶胶数据。本数据集收录了来自下一代激光质谱仪&#xff08;PALMS-NG&#xff09;、单颗粒烟尘光度…

一文读懂Partisia Blockchain,被严重低估的隐私区块链生态

在今年 3 月&#xff0c;隐私公链 Partisia Blockchain 迎来了重要的进展&#xff0c;该生态通证 $MPC 上线了交易所&#xff0c;目前 $MPC 通证可以在 Kucoin、Gate、BitMart、Bitfinex、Bitture 等平台交易&#xff0c;并将在不久后上线 MEXC 平台。 ​ 在上个月上线市场至今…

【项目实战】记录一次PG数据库迁移至GaussDB测试(上)

目录 一、说明 1.1、参考文档 1.2、注意事项 1.3、环境基本情况 二、GaussDB新环境安装 2.1 配置操作环境变量 2.1.1 关闭防火墙 步骤1 执行以下命令&#xff0c;检查防火墙是否关闭。 步骤2 执行以下命令&#xff0c;关闭防火墙并禁止开机启动。 步骤3 修改/etc/sel…

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. 单细胞RNA-seq样本数据说明 样本数据来源文章:Acquired cancer re…

【计算机毕业设计】基于微信小程序的开发项目150套(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f9e1;今天给大家分享200的微信小程序毕业设计&#xff0c;后台用Java开发&#xff0c;这些项目都经过精心挑选&#xff0c;涵盖了不同的实战主题和用例&#xff0c;可做毕业设…

MQ概览及Kafka详解

文章目录 概览MQ优点MQ缺点常见MQ对比JMS消息模型点对点模式发布订阅模式 kafka基础架构发布订阅工作流程生产者生产者文件存储生产者分区策略生产者数据可靠性保证生产者数据一致性保证生产者ack机制ExactlyOnce生产者发送消息流程 消费者消费者分区分配策略消费者消费数据问题…

算法设计与分析实验报告c++实现(TSP问题、哈夫曼编码问题、顾客安排问题、最小生成树问题、图着色问题)

一、实验目的 1&#xff0e;加深学生对贪心算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用贪心算…

streamlit 大模型前段界面

结合 langchain 一起使用的工具&#xff0c;可以显示 web 界面 pip install streamlit duckduckgo-search 运行命令 streamlit run D:\Python_project\NLP\大模型学习\test.py import os from dotenv import load_dotenv from langchain_community.llms import Tongyi load…

matlab学习002-函数及流程控制语句

目录 一&#xff0c;matlab编程基础 1&#xff09;matlab脚本和函数文件 ①脚本文件 ②函数文件 2&#xff09;函数的定义和调用 ①定义 ②调用 3&#xff09;程序流程控制 ①使用for求 122^2……2^622^63之和 ②使用while语句求122^2……2^622^63之和 ③使用matl…