大数据CloudSim应用实践

CloudSimExampleA.java

1准备
1.1操作系统
本实验在Windows 7 或Windows 10系统运行均可。

1.2软件
cloudsim-3.0.3.zip;
commons-math3-3.2-bin.zip;
jdk-8u152-windows-x64.exe;
eclipse-jee-neon-3-win32-x86_64
所需资料链接:https://pan.baidu.com/s/1AE4UsmFW0rOny6BFCQiPMA?pwd=2023
2安装JDK
2.1安装JDK
双击运行jdk-8u152-windows-x64.exe。
在这里插入图片描述

在上面对话框中选择默认目录或更改目录安装。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3配置Eclipse集成开发环境
3.1启动Eclipse
运行…\eclipse-jee-neon-3-win32-x86_64\eclipse目录下的eclipse.exe可执行文件。
注意:首次运行eclipse会提示选择WorkSpace,及工作目录,用于存放项目文件,根据自己情况选择一个文件夹即可。
在这里插入图片描述

3.2配置Java运行时环境JRE
在上一步打开的Eclipse集成开发环境窗口中,点击菜单“Window”“Preferences”菜单项:

在这里插入图片描述
打开“Preferences”对话框:
在这里插入图片描述

在“Preferences”窗口中点击“Java”左侧箭头,再点击其下方弹出的“Installed JREs”的左侧箭头(下面这幅图可能不一样,因为我当前这一步已经设置过,故“Installed JRE”中会有内容):
在这里插入图片描述

点击右侧窗口中的“Add”按钮,打开“Add JRE”窗口。
在这里插入图片描述

选择“Standard VM”项,点击下方“Next”按钮,在接下来的对话框中点击“Directory”按钮:
在这里插入图片描述

在弹出的“浏览文件夹”对话框中选择Java运行时环境所在的路径C:\Program Files\Java\jre1.8.0_152(视自己JDK具体安装路径而定):
在这里插入图片描述

点击“确定”按钮返回。
4创建Java项目
4.1创建项目
在Eclipse集成开发窗口中,单击“File”“New”“Java Project”,新建Java项目,命名为“CloudSim”:
在这里插入图片描述

一直点击“Next”或“Finish”按钮即可。
4.2导入jar包
4.2.1导入CloudSim开发包
4.2.1.1.1解压CloudSim开发包
需要使用的CloudSim API在cloudsim-3.0.3.jar包中,该jar包可通过解压cloudsim-3.0.3.zip得到,位于解压后的…\cloudsim-3.0.3\jars文件夹下。
在这里插入图片描述

4.2.1.1.2导入CloudSim开发包
在Eclipse中,在左侧树状结构中,右键单击“CloudSim”项目,选择“Build Path”“Add External Archive”,导入cloudsim-3.0.3.jar。
在这里插入图片描述

4.2.2导入math库
4.2.2.1.1解压math库
因本项目中用到了math里面的类,需要引入commons-math3-3.2.jar这个库。此库通过解压commons-math3-3.2-bin.zip文件可以得到。
4.2.2.1.2导入math库
在Eclipse中,右键单击“CloudSim”项目,选择“Build Path”“Add External Archive”,导入commons-math3-3.2.jar。
4.3运行测试程序
4.3.1导入测试程序代码
CloudSim提供的实例程序放在CloudSim\cloudsim-3.0.3\examples\org\cloudbus\cloudsim\examples目录下。
在这里插入图片描述

在以上examples文件夹中复制CloudSimExample6.java文件,在Eclipse中的“Package Explorer”树形结构中,展开“CloudSim” “src”,右键点击“src”文件夹,在弹出的上下文菜单中选择“Paste”菜单,将CloudSimExample6.java复制到工程中。
在这里插入图片描述

4.3.2修改错误
复制后CloudSimExample6.java文件显示效果及位置如下:
在这里插入图片描述

可以看出其位于“default package”默认包中。但注意上图中CloudSimExample6.java文件前面的图标左下角有个红色的“×”符号,意思是CloudSimExample6.java代码中有错误。接下来排除错误。
在Eclipse中双击CloudSimExample6.java文件,在右侧编辑窗口中打开它。
在这里插入图片描述

可以看到这条语句package org.cloudbus.cloudsim.examples;中有红色波浪下划线,表明有语法问题。鼠标放到该语句上,显示:
在这里插入图片描述

点击2行蓝色文字中的第一行,“Move ‘CloudSimExample6.java to package org.cloudbus.cloudsim.examples’”,表示将CloudSimExample6.java文件放到Eclipse窗口左面的树形结构的org.cloudbus.cloudsim.examples包中。这样代码中原先带红色波浪线的语句就与实际的包(代码的存放位置)相符,其错误得到了修改。修改之后的效果如下:
在这里插入图片描述

包的存放文件夹与包的对应关系(此图仅为帮助理解):
在这里插入图片描述

4.3.3运行
保证右侧编辑区当前活动(当前正在编辑状态)的窗口为CloudSimExample6.java。
点击工具栏上的绿色三角形按钮Run AsJava Application Alt+Shift+X,J,运行程序,如图:
在这里插入图片描述

5数据中心仿真实例
5.1导入实例代码
1.将我随本Word文档打包的CloudSimExampleA.java代码导入项目,具体步骤同4.3.1,不同的是由原来导入CloudSimExample6.java文件,改为现在导入CloudSimExampleA.java文件。
2.遵照4.3.2步骤将CloudSimExampleA放到org.cloudbus.cloudsim.examples包中,如下图。
在这里插入图片描述

5.2运行

附CloudSimExampleA.java代码:

/** Title:        CloudSim Toolkit* Description:  CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation*               of Clouds* Licence:      GPL - http://www.gnu.org/copyleft/gpl.html** Copyright (c) 2009, The University of Melbourne, Australia*/package org.cloudbus.cloudsim.examples;//qiuzhuli, 2023-06-11import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.CloudletSchedulerTimeShared;
import org.cloudbus.cloudsim.Datacenter;
import org.cloudbus.cloudsim.DatacenterBroker;
import org.cloudbus.cloudsim.DatacenterCharacteristics;
import org.cloudbus.cloudsim.Host;
import org.cloudbus.cloudsim.Log;
import org.cloudbus.cloudsim.Pe;
import org.cloudbus.cloudsim.Storage;
import org.cloudbus.cloudsim.UtilizationModel;
import org.cloudbus.cloudsim.UtilizationModelFull;
import org.cloudbus.cloudsim.Vm;
import org.cloudbus.cloudsim.VmAllocationPolicySimple;
import org.cloudbus.cloudsim.VmSchedulerTimeShared;
import org.cloudbus.cloudsim.core.CloudSim;
import org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;/*** An example showing how to create* scalable simulations.*/
//public class CloudSimExample6 {//qiuzhuli, 2023-06-11
public class CloudSimExampleA {//qiuzhuli, 2023-06-11/** The cloudlet list. */private static List<Cloudlet> cloudletList;/** The vmlist. */private static List<Vm> vmlist;//private static List<Vm> createVM(int userId, int vms) {//qiuzhuli, 2023-06-11private static List<Vm> createVM(int userId, int mips[]) {//qiuzhuli, 2023-06-11//Creates a container to store VMs. This list is passed to the broker laterLinkedList<Vm> list = new LinkedList<Vm>();//VM Parameterslong size = 10000; //image size (MB)int ram = 512; //vm memory (MB)//int mips = 1000;//qiuzhuli, 2023-06-11long bw = 1000;int pesNumber = 1; //number of cpusString vmm = "Xen"; //VMM name//create VMs//Vm[] vm = new Vm[vms];//qiuzhuli, 2023-06-11Vm[] vm = new Vm[mips.length];//qiuzhuli, 2023-06-11for(int i=0;i<mips.length;i++){//vm[i] = new Vm(i, userId, mips, pesNumber, ram, bw, size, vmm,//qiuzhuli, 2023-06-11 //new CloudletSchedulerTimeShared());//qiuzhuli, 2023-06-11vm[i] = new Vm(i, userId, mips[i], pesNumber, ram, bw, size, vmm, new CloudletSchedulerTimeShared());//qiuzhuli, 2023-06-11//for creating a VM with a space shared scheduling policy for cloudlets://vm[i] = Vm(i, userId, mips, pesNumber, ram, bw, size, priority, vmm, new CloudletSchedulerSpaceShared());list.add(vm[i]);}return list;}//private static List<Cloudlet> createCloudlet(int userId, int cloudlets){//qiuzhuli, 2023-06-11private static List<Cloudlet> createCloudlet(int userId, long cloudlets[]){//qiuzhuli, 2023-06-11// Creates a container to store CloudletsLinkedList<Cloudlet> list = new LinkedList<Cloudlet>();//cloudlet parameters//long length = 1000;//qiuzhuli, 2023-06-11long fileSize = 300;long outputSize = 300;int pesNumber = 1;UtilizationModel utilizationModel = new UtilizationModelFull();//Cloudlet[] cloudlet = new Cloudlet[cloudlets];//qiuzhuli, 2023-06-11Cloudlet[] cloudlet = new Cloudlet[cloudlets.length];//qiuzhuli, 2023-06-11//for(int i=0;i<cloudlets;i++){//qiuzhuli, 2023-06-11for(int i=0;i<cloudlets.length;i++){/*cloudlet[i] = new Cloudlet(i, length, pesNumber, fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel);*///qiuzhuli, 2023-06-11cloudlet[i] = new Cloudlet(i, cloudlets[i], pesNumber, fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel);//qiuzhuli, 2023-06-11// setting the owner of these Cloudletscloudlet[i].setUserId(userId);list.add(cloudlet[i]);}return list;}// STATIC METHODS ////*** Creates main() to run this example*/public static void main(String[] args) {//Log.printLine("Starting CloudSimExample6...");//qiuzhuli, 2023-06-11Log.printLine("Starting CloudSimExampleA...");//qiuzhuli, 2023-06-11try {// First step: Initialize the CloudSim package. It should be called// before creating any entities.int num_user = 1;   // number of grid usersCalendar calendar = Calendar.getInstance();boolean trace_flag = false;  // mean trace events// Initialize the CloudSim libraryCloudSim.init(num_user, calendar, trace_flag);// Second step: Create Datacenters//Datacenters are the resource providers in CloudSim. We need at list one of them to run a CloudSim simulation@SuppressWarnings("unused")Datacenter datacenter0 = createDatacenter("Datacenter_0");@SuppressWarnings("unused")Datacenter datacenter1 = createDatacenter("Datacenter_1");//Third step: Create BrokerDatacenterBroker broker = createBroker();int brokerId = broker.getId();//Fourth step: Create VMs and Cloudlets and send them to broker/*vmlist = createVM(brokerId,20); //creating 20 vmscloudletList = createCloudlet(brokerId,40); // creating 40 cloudlets*/int mips[] = {278,289,132,209,286,333,212,423};//虚拟机的CPU性能(mips)//qiuzhuli, 2023-06-11/*所需的指令数*/long cloudlets[] = new long[] {19365, 49809, 30218, 44157, 16754, 18336,20045, 31493, 30727, 31017, 59008, 32000, 46790, 77779, 93467, 67853};//qiuzhuli, 2023-06-11//vmlist = createVM(brokerId,20); //creating 20 vms//qiuzhuli, 2023-06-11vmlist = createVM(brokerId, mips); //creating 20 vms//qiuzhuli, 2023-06-11//cloudletList = createCloudlet(brokerId,40); // creating 40 cloudlets//qiuzhuli, 2023-06-11cloudletList = createCloudlet(brokerId, cloudlets); // creating 40 cloudlets//qiuzhuli, 2023-06-11broker.submitVmList(vmlist);broker.submitCloudletList(cloudletList);// Fifth step: Starts the simulationCloudSim.startSimulation();// Final step: Print results when simulation is overList<Cloudlet> newList = broker.getCloudletReceivedList();CloudSim.stopSimulation();printCloudletList(newList);//Log.printLine("CloudSimExample6 finished!");//qiuzhuli, 2023-06-11Log.printLine("CloudSimExampleA finished!");//qiuzhuli, 2023-06-11}catch (Exception e){e.printStackTrace();Log.printLine("The simulation has been terminated due to an unexpected error");}}private static Datacenter createDatacenter(String name){// Here are the steps needed to create a PowerDatacenter:// 1. We need to create a list to store one or more//    MachinesList<Host> hostList = new ArrayList<Host>();// 2. A Machine contains one or more PEs or CPUs/Cores. Therefore, should//    create a list to store these PEs before creating//    a Machine.List<Pe> peList1 = new ArrayList<Pe>();int mips = 1000;// 3. Create PEs and add these into the list.//for a quad-core machine, a list of 4 PEs is required:peList1.add(new Pe(0, new PeProvisionerSimple(mips))); // need to store Pe id and MIPS RatingpeList1.add(new Pe(1, new PeProvisionerSimple(mips)));peList1.add(new Pe(2, new PeProvisionerSimple(mips)));peList1.add(new Pe(3, new PeProvisionerSimple(mips)));//Another list, for a dual-core machineList<Pe> peList2 = new ArrayList<Pe>();peList2.add(new Pe(0, new PeProvisionerSimple(mips)));peList2.add(new Pe(1, new PeProvisionerSimple(mips)));//4. Create Hosts with its id and list of PEs and add them to the list of machinesint hostId=0;int ram = 2048; //host memory (MB)long storage = 1000000; //host storageint bw = 10000;hostList.add(new Host(hostId,new RamProvisionerSimple(ram),new BwProvisionerSimple(bw),storage,peList1,new VmSchedulerTimeShared(peList1))); // This is our first machinehostId++;hostList.add(new Host(hostId,new RamProvisionerSimple(ram),new BwProvisionerSimple(bw),storage,peList2,new VmSchedulerTimeShared(peList2))); // Second machine//To create a host with a space-shared allocation policy for PEs to VMs://hostList.add(//		new Host(//			hostId,//			new CpuProvisionerSimple(peList1),//			new RamProvisionerSimple(ram),//			new BwProvisionerSimple(bw),//			storage,//			new VmSchedulerSpaceShared(peList1)//		)//	);//To create a host with a oportunistic space-shared allocation policy for PEs to VMs://hostList.add(//		new Host(//			hostId,//			new CpuProvisionerSimple(peList1),//			new RamProvisionerSimple(ram),//			new BwProvisionerSimple(bw),//			storage,//			new VmSchedulerOportunisticSpaceShared(peList1)//		)//	);// 5. Create a DatacenterCharacteristics object that stores the//    properties of a data center: architecture, OS, list of//    Machines, allocation policy: time- or space-shared, time zone//    and its price (G$/Pe time unit).String arch = "x86";      // system architectureString os = "Linux";          // operating systemString vmm = "Xen";double time_zone = 10.0;         // time zone this resource locateddouble cost = 3.0;              // the cost of using processing in this resourcedouble costPerMem = 0.05;		// the cost of using memory in this resourcedouble costPerStorage = 0.1;	// the cost of using storage in this resourcedouble costPerBw = 0.1;			// the cost of using bw in this resourceLinkedList<Storage> storageList = new LinkedList<Storage>();	//we are not adding SAN devices by nowDatacenterCharacteristics characteristics = new DatacenterCharacteristics(arch, os, vmm, hostList, time_zone, cost, costPerMem, costPerStorage, costPerBw);// 6. Finally, we need to create a PowerDatacenter object.Datacenter datacenter = null;try {datacenter = new Datacenter(name, characteristics, new VmAllocationPolicySimple(hostList), storageList, 0);} catch (Exception e) {e.printStackTrace();}return datacenter;}//We strongly encourage users to develop their own broker policies, to submit vms and cloudlets according//to the specific rules of the simulated scenarioprivate static DatacenterBroker createBroker(){DatacenterBroker broker = null;try {broker = new DatacenterBroker("Broker");} catch (Exception e) {e.printStackTrace();return null;}return broker;}/*** Prints the Cloudlet objects* @param list  list of Cloudlets*/private static void printCloudletList(List<Cloudlet> list) {int size = list.size();Cloudlet cloudlet;String indent = "    ";Log.printLine();Log.printLine("========== OUTPUT ==========");Log.printLine("Cloudlet ID" + indent + "STATUS" + indent +"Data center ID" + indent + "VM ID" + indent + indent + "Time" + indent + "Start Time" + indent + "Finish Time");DecimalFormat dft = new DecimalFormat("###.##");for (int i = 0; i < size; i++) {cloudlet = list.get(i);Log.print(indent + cloudlet.getCloudletId() + indent + indent);if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){Log.print("SUCCESS");Log.printLine( indent + indent + cloudlet.getResourceId() + indent + indent + indent + cloudlet.getVmId() +indent + indent + indent + dft.format(cloudlet.getActualCPUTime()) +indent + indent + dft.format(cloudlet.getExecStartTime())+ indent + indent + indent + dft.format(cloudlet.getFinishTime()));}}}
}

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

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

相关文章

W25Q64(模拟SPI)读写数据的简单应用

文章目录 一、W25Q64是什么&#xff1f;二、使用步骤1.硬件1.引脚说明2.硬件连接3.设备ID4.内部框架5.指令集指令集1指令集2 2.软件1.W25Q64引脚定义代码如下&#xff08;示例&#xff09;&#xff1a;2.W25Q64初始化代码如下&#xff08;示例&#xff09;&#xff1a;3.W25Q64…

【IC前端虚拟项目】MVU模块方案与背景熟悉

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 mvu这个模块是干嘛用的呢&#xff1f;从这个名字就可以看出来move_unit&#xff0c;应该是做数据搬运的。很多指令级中都会有数据搬运的指令&#xff0c;这类指令的作用一般是在片内片外缓存以及通用专用…

Java基础语法之抽象类和接口

抽象类 什么是抽象类 并不是所有的类都是用来描述对象的&#xff0c;这样的类就是抽象类 例如&#xff0c;矩形&#xff0c;三角形都是图形&#xff0c;但图形类无法去描述具体图形&#xff0c;所以它的draw方法无法具体实现&#xff0c;这个方法就可以没设计成抽象方法&…

常用模块之(time/datetime)

【 一 】时间模块&#xff08;time/datetime&#xff09; 【 二 】 表示时间的三种方式 *时间戳&#xff08;Timestamp&#xff09;是指1970年1月1日00:00:00开始计算的偏移量。可以使用time模块中的time()函数获取当前时间的时间戳&#xff0c;也可以使用datetime模块中的tim…

大创项目推荐 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数&#xff1a;2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

ElasticSearch学习篇8_Lucene之数据存储(Stored Field、DocValue、BKD Tree)

前言 Lucene全文检索主要分为索引、搜索两个过程&#xff0c;对于索引过程就是将文档磁盘存储然后按照指定格式构建索引文件&#xff0c;其中涉及数据存储一些压缩、数据结构设计还是很巧妙的&#xff0c;下面主要记录学习过程中的StoredField、DocValue以及磁盘BKD Tree的一些…

PyQt6 QScrollBar滚动条控件

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计48条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

录制第一个jmeter性能测试脚本2(http协议)_图书管理系统

我们手工编写了一个测试计划&#xff0c;现在我们通过录制的方式来实现那个测试计划。也就是说‘’测试计划目标和上一节类似&#xff1a;让5个用户在2s内登录图书管理系统&#xff0c;然后进入 页面进行查看。 目录 欢迎访问我的免费课程 PPT、安装包、视频应有尽有&#xff…

【微服务】Spring Aop原理深入解析

目录 一、前言 二、aop概述 2.1 什么是AOP 2.2 AOP中的一些概念 2.2.1 aop通知类型 2.3 AOP实现原理 2.3.1 aop中的代理实现 2.4 静态代理与动态代理 2.4.1 静态代理实现 三、 jdk动态代理与cglib代理 3.1 jdk动态代理 3.1.1 jdk代理示例 3.1.2 jdk动态代理模拟实现…

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

OpenCV 源码编译并实现 CUDA 加速 Windows 1. 环境准备1.1 软件环境1. 2 源码下载 2. CMake编译项目2.1 创建cmake项目2.2 设置编译配置2.3 解决异常2.3.1 文件下载异常2.3.2 解决CUDA版本异常 2.4 编译项目 3. Visual Studio 编译项目4. 项目测试5. 总结 OpenCV是一个基于Apac…

Ubuntu 常用命令之 ln 命令用法介绍

ln命令在Ubuntu系统中用于创建硬链接或符号链接。硬链接是指向文件的物理地址&#xff0c;而符号链接&#xff08;也称为软链接&#xff09;是指向文件路径的引用。 命令格式&#xff1a;ln [选项]... [-T] 目标&#xff08;源文件&#xff09; 链接&#xff08;目标文件&…

【FPGA】Verilog:编码器 | 实现 4 到 2 编码器

0x00 编码器&#xff08;Encoder&#xff09; 编码器与解码器相反。当多台设备向计算机提供输入时&#xff0c;编码器会为每一个输入生成一个与设备相对应的信号&#xff0c;因此有多少比特就有多少输出&#xff0c;以数字形式表示输入的数量。 例如&#xff0c;如果有四个输…

NAS搭建WebDAV服务同步Zotero科研文献

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献&#xff0c;不但免费&#xff0c;功能还很强大实用。 ​ Zotero 支…

重新认识Word——尾注

重新认识Word——尾注 参考文献格式文献自动生成器插入尾注将数字带上方括号将参考文献中的标号改为非上标 多处引用一篇文献多篇文献被一处引用插入尾注有横线怎么删除&#xff1f;删除尾注 前面我们学习了如何给图片&#xff0c;公式自动添加编号&#xff0c;今天我们来看看毕…

LSTM ——作业

习题6-4 推导LSTM网络中参数的梯度&#xff0c; 并分析其避免梯度消失的效果 习题6-3P 编程实现下图LSTM运行过程 1. 使用Numpy实现LSTM算子 import numpy as np # 创建一个numpy数组x&#xff0c;它是一个4x4的矩阵&#xff0c;包含9个元素 x np.array([[1, 0, 0, 1],[3, …

Unity中URP下的菲涅尔效果实现(URP下的法线和视线向量怎么获取)

文章目录 前言一、实现思路二、实现原理我们可以由下图直观的感受到 N 与 L夹角越小&#xff0c;点积越接近&#xff08;白色&#xff09;1。越趋近90&#xff0c;点积越接近0&#xff08;黑色&#xff09; 三、实现URP下的菲涅尔效果1、我们新建一个Shader&#xff0c;修改为最…

安全密码(字符串)

#include <stdio.h> #include <stdbool.h> #include <string.h> bool is_secure_password(const char* password); int main() {int M;char password[51];// 读取输入中的密码数量 Mscanf("%d", &M);// 处理每个密码for (int i 0; i < M; …

Pytorch:Tensorboard简要学习

目录 一、TensorBoard简介二、TensorBoard的安装与启动Tensorboard的安装Tensorboard的启动 三、TensorBoard的简单使用3.1 SummaryWriter()3.2 add_scalar()和add_scalars()3.3 add_histogram()3.4 模型指标监控 四、总结参考博客 一、TensorBoard简介 TensorBoard 是Google开…

17.Oracle中instr()函数查询字符位置

1、instr()函数的格式 &#xff08;俗称&#xff1a;字符查找函数&#xff09; 格式一&#xff1a;instr( string1, string2 ) // instr(源字符串, 目标字符串) 格式二&#xff1a;instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符…

typescript使用解构传参

看下面这个函数 interface Student {id: number;name: string;class: string;sex: string;}function matriculation(student: Student) {//...}我们要调用它,就需要传递一个实现了Student约束的对象进去 interface Student {id: number;name: string;class: string;sex: string…