SCSI指令使用之弹带和加载磁带指令使用(实例演示)

mtx命令详解:磁带库管理与SCSI介质更换器自动化控制 SCSI(小型计算机系统接口)是连接计算机与外围设备的标准协议,广泛应用于存储设备领域。其工作原理基于客户端-服务器模型,通过命令描述块(CDB)传递指令,实现设备间的数据交换与控制。在数据备份与归档技术中,SCSI介质更换器(Media Changer)作为关键硬件组件,负责自动化管理可移动存储介质(如磁带)的物理搬运。这项技术的核心价值在于实现海量冷数据的高效、低成本、离线安全存储,尤其适用于长期合规性归档场景。通过命令行工具对介质更换器进行精确控制,系统管理员能够构建可靠的自动化备份流程。mtx正是这 阅读详情

SCSI指令:小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。

这里演示两个命令分别为:
弹出磁带IOCTL_STORAGE_EJECT_MEDIA 和 加载磁带IOCTL_STORAGE_LOAD_MEDIA命令。演示如下:

//弹带指令演示  IOCTL_STORAGE_EJECT_MEDIA
void CtestDlg::OnBnClickedEject()
{
	CString strMsg;
	CString m_strTapeDev = _T("\\\\.\\tape0");//这里指的是驱动器设备
	DWORD accessMode = 0, shareMode = 0;
	//使用CreateFile打开设备,获取句柄信息
	shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;  // default
    accessMode = GENERIC_WRITE | GENERIC_READ;       // default
	HANDLE m_devHandle =   CreateFile(m_strTapeDev,
						    accessMode,
						    shareMode,
						    NULL,
						    OPEN_EXISTING,
						    0,
						    NULL);

    if (m_devHandle == INVALID_HANDLE_VALUE) 
	{
		int err= GetLastError();
		strMsg.Format("Error opening %s. error = %d", m_strTapeDev, err);
		OutPutDebugString(strMsg);
        return;
    }
	else
	{
		strMsg.Format("Device \"%s\" Open OK!",m_strTapeDev);
		OutPutDebugString(strMsg);
	}
	
	BOOL status = 0;
	DWORD dwRet;
	if(m_devHandle == INVALID_HANDLE_VALUE || m_devHandle == NULL)
	{
		return;
	}
	status = DeviceIoControl(m_devHandle,
		IOCTL_STORAGE_EJECT_MEDIA,//弹带指令
		NULL,
		0,
		NULL,
		0,
		&dwRet,
		FALSE); 
	if(!status)
	{
		int err = GetLastError();//获取最后一条失败信息
		strMsg.Format( "Eject Media Error ; error = %d", syserr);
		OutPutDebugString(strMsg);//打印日志信息
	}
	else
	{
		strMsg.Format( "Eject Media OK!");
		OutPutDebugString(strMsg);
	}
	CloseHandle(m_devHandle );
	m_devHandle = NULL;
}
//加载磁带演示IOCTL_STORAGE_LOAD_MEDIA
void CtestDlg::OnBnClickedLoad()
{
	CString strMsg;
	CString m_strTapeDev = _T("\\\\.\\tape0");//这里指的是驱动器设备
	DWORD accessMode = 0, shareMode = 0;
	//使用CreateFile打开设备,获取句柄信息
	shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;  // default
    accessMode = GENERIC_WRITE | GENERIC_READ;       // default
	HANDLE m_devHandle =   CreateFile(m_strTapeDev,
						    accessMode,
						    shareMode,
						    NULL,
						    OPEN_EXISTING,
						    0,
						    NULL);

    if (m_devHandle == INVALID_HANDLE_VALUE) 
	{
		int err= GetLastError();
		strMsg.Format("Error opening %s. error = %d", m_strTapeDev, err);
		OutPutDebugString(strMsg);
        return;
    }
	else
	{
		strMsg.Format("Device \"%s\" Open OK!",m_strTapeDev);
		OutPutDebugString(strMsg);
	}
	BOOL status = 0;
	DWORD dwRet;
	if(m_devHandle == INVALID_HANDLE_VALUE || m_devHandle == NULL)
	{
		return;
	}
	status = DeviceIoControl(m_devHandle,
		IOCTL_STORAGE_LOAD_MEDIA,//加载磁带指令
		NULL,
		0,
		NULL,
		0,
		&dwRet,
		FALSE); 

	if(!status)
	{
		int syserr = GetLastError();
		strMsg.Format( "Load Media Error ; error = %d", syserr);
		OutPutDebugString(strMsg);
	}
	else
	{
		strMsg.Format( "Load Media OK!");
		OutPutDebugString(strMsg);
	}	
	CloseHandle(m_devHandle );
	m_devHandle = NULL;
}

MSDN函数DeviceIOControl地址:
https://msdn.microsoft.com/en-us/library/aa363216
MSDN函数CreateFile地址:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx

开源LTFS项目实战:在Ubuntu 22.04上从编译到挂载LTO-8磁带的完整记录 本文详细记录了在Ubuntu 22.04系统上从源码编译到挂载LTO-8磁带的完整过程,重点解决LTFS(Linear Tape File System)在Ubuntu环境下的依赖问题和内核模块配置难题。通过实战步骤展示如何利用开源LTFS项目实现磁带存储的现代化管理,充分发挥LTO磁带在冷数据存储中的成本优势和长期保存特性。 阅读详情

相关推荐

别再傻傻分不清了!一文搞懂USB和SCSI到底谁管谁(附BusHound抓包实例)

本文深入解析USB与SCSI协议的层级关系与协作机制,通过BusHound抓包实例揭示存储设备通信本质。文章详细对比了USB和SCSI的核心特性,展示了SCSI命令如何封装在USB协议中传输,并提供了常见故障诊断方法及性能优化技巧,帮助工程师快速定位问题并提升设备性能。

weixin_30568591的博客 498

Windows下两种方法弹出U盘

1. 通过设置IOCTL_STORAGE_EJECT_MEDIA 通过CreateFile打开指定盘符的U盘获取设备句柄hDevice 通过DeviceIoControl(hDevice,FSCTL_DISMOUNT_VOLUME…)强制关闭其他进程对设备的占用 通过DeviceIoControl(hDevice,FSCTL_LOCK_VOLUME…)对设备进行加锁,防止其他进程干扰 通过Dev...

飞鹤的程序员人生 9007

深入浅出SCSI子系统(七)SCSI命令执行

目录 SCSI命令执行 scsi_execute_req SCSI命令执行 scsi_execute_req 上面看到,在探测过程中发送的SCSI命令,如INQUIRY和SPINUP,它们的执行都调用了scsi_execute_req函数。从请求的角度,它们是发源于SCSI层的,但更常见的是来自上层的请求,如读/写文件等。这里将跟踪scsi_execute_req函数的执行,至于来自上层的I/O请求执行过程,在防止后面的块I/O子系统中讨论。 函数scsi_execute_req()代码(摘

sinat_37817094的博客 3389

[转]How to flush a storage volume's file cache, lock and dismount it, and eject the media

Introduction Ejecting a media is a well known task for CD/DVD drives. Here we get a physical ejection. But also ZIP/JAZ drives and card rea

飞鹰技术 1514

深入浅出SCSI子系统(六)SCSI 磁盘驱动

Linux SCSI子系统实现了各种类型的高层驱动,如SCSI磁盘驱动、SCSI磁带驱动和SCSI CDROM驱动等。 SCSI总线类型scsi_bus_type SCSI设备和SCSI驱动

sinat_37817094的博客 7884

29、Linux 数据备份与 SCSI 设备使用指南

本文详细介绍了Linux系统中的磁带备份技术与SCSI设备的使用方法。涵盖tar和mt命令在备份与恢复中的应用,增量备份策略的实施,以及GUI备份工具的使用。同时深入讲解SCSI设备的特性、连接规范、ID设置、终端配置,提供完整的安装、配置、维护及常见故障排除指南,帮助用户高效管理数据存储,保障数据安全。

blue的专栏 30

USB设备的插入和弹出的监听以及软弹出可移动媒体(如Windows的移除USB设备) ....

一、监听USB设备的插入和弹出 当USB设备插入或者弹出时,Windows会产生一条全局消息:WM_DEVICECHANGE 我们需要做的是,获得这条消息的wParam参数,如果为DBT_DEVICEARRIVAL则表示有设备插入并可用, 如果是DBT_DEVICEREMOVECOMPLETE则表示有设备已经移除。再查看lParam参数为DBT_DEVTYP_VOLUME时, 就可以取出DEV_...

u014712365的博客 510

基于CatBoost回归模型的完整预测分析:从建模到SHAP可解释性分析

本文介绍了使用CatBoost回归模型进行完整预测分析的流程。首先导入必要的Python库并加载数据,进行数据预处理包括训练测试集划分和归一化处理。然后通过网格搜索优化CatBoost超参数,使用最优参数训练模型并评估预测性能。结果显示模型具有较高的决定系数(R²=0.9944)和较低的误差指标(RMSE=0.0696)。接着进行残差分析和正态性检验,发现残差基本服从正态分布。最后通过SHAP分析实现模型可解释性,识别关键特征影响。该方法为梯度提升树在回归问题中的应用提供了完整解决方案。

fx666_的博客 746

SCSI指令C编程

一、 Windows系统scsi协议编码1. 结构体定义: #define SPT_SENSE_LENGTH 32 #define SPTWB_DATA_LENGTH 2148 //大小自定义,可能是根据硬件定义 typedef struct _SCSI_PASS_THROUGH { USHORT Length; //sizeof(SCSI_PASS_THROUGH) UC...

悦途的专栏 1747

RAGFlow源码解析-2、从源码构架ragflow v0.25.0镜像

本文详细记录了从零开始构建自定义RAGFlow镜像lt/ragflow:0.25.0的全过程。首先介绍了环境准备,包括检查Node.js、Docker版本和项目结构。然后详细说明了构建步骤:编译前端、创建自定义Dockerfile、构建镜像和验证。接着讲解了docker-compose配置修改要点,包括网络定义、MySQL依赖处理等。最后总结了部署过程中遇到的五个关键问题及解决方案,包括networks未定义、MySQL服务依赖、tiktoken文件缺失、数据库配置错误和端口映射问题。通过完整的操作流程和问

liutao841204的专栏 364

《UVM实战》学习笔记——第三章UVM基础

uvm基础,常见的派生类,config db机制,打印信息等

qq_42135020的博客 5176

SCSI系列九:SCSI上层驱动程序

可以使用cat /proc/scsi/sg/devices或 cat /proc/scsi/sg/device_strs查看 sg devices 设备映射。当删除低级驱动程序时,cat /proc/scsi/scsi和 sg 顺序之间的差异 将会出现(例如rmmod aha1542)或使用remove-single-device删除设备时。只要 ide-scsi 驱动程序是内置的或模块,它就会“捕获”位于/dev/hdd的 cd 写入器(如果需要,IDE 核心驱动程序会加载 ide-scsi 模块)。

探索未知,成就非凡 1848

手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第三节-编写STM32程序实现STM32+ESP8266+原子云服务器+手机APP互相通信—远程数据传输及控制灯

接上一篇,本节使用原子云服务器。编写STM32程序实现STM32+ESP8266+原子云服务器+手机APP互相通信—远程数据传输及控制灯。使用的硬件包括:STM32F103(任意其他款系列也可以的)、正点原子ATK-ESP8266、LED灯。实现编写STM32程序代码来传输单片机数据到原子云服务器和手机APP进行显示,同时通过手机APP和原子云服务器可以远程控制单片机,例如本节实现远程点/灭灯,以此可以扩展开发更多的功能。本专栏本系列的相关文章可查看下面链接:

嵌入式阿齐Archie 8414

hp 磁带机安装配置

hp 磁带机安装配置公司用的是tape array 530磁带机磁带机驱动器是DAT40。HP DAT 40磁带驱动器大小20G。压缩后是40G。注意磁带库比磁带机容量更大,容量上P,管理更智能。里面有机械手,磁带库 = 磁带机 + 机械手磁带比磁盘具有体积小巧、容量大、成本低、寿命长和便携性等优点。但磁带备份慢从数据的安全性出发,来自病

小庄往左走 6547

Mac安装Typescript报错

根本原因是系统级目录的权限限制。推荐通过修改目录权限或使用nvm彻底解决问题。

江拥羡橙的博客 210

YOLOv11 快速入门指南 | 10分钟吃透网络结构与新特性

2024 年 9 月 30 日,Ultralytics 发布了 YOLOv11,这是继 YOLOv8、v9、v10 之后的最新一代实时目标检测模型。 与前几代相比,YOLOv11 在保持“单阶段、实时、端到端”三大基因的同时,带来了两大核心升级:一句话总结:YOLOv11 = 更快 + 更准 + 更少参数。 2.2 微观单元:C3k2 与 C2PSA 2.2.1 C3k2 模块 作用:替换 YOLOv8 的 C2f,做跨阶段局部特征融合。 核心代码(ultralytics/nn/modules/block

shrgegrb的博客 1407

Documentation/scsi/scsi.txt

Chinese translated version of Documentation/scsi/scsi.txt If you have any comment or update to the content, please contact the original document maintainer directly.  However, if you have a prob

u012036443的专栏 951

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真

本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用

MHD0815的博客 179

存储基础 -- SCSI命令格式与使用场景

SCSI命令通过CDB表示,并通过不同的传输协议(如SAS、Fibre Channel、iSCSI等)进行传输。常见的命令包括设备就绪检测(TEST UNIT READY)、信息获取(INQUIRY)、读写操作(READ/WRITE)、容量查询(READ CAPACITY)、错误诊断(REQUEST SENSE)等。在实际应用中,这些命令由操作系统或驱动封装,用户通过文件系统或存储管理工具间接使用。深入了解CDB格式和命令用途,对于驱动开发或存储调优具有重要意义。

sz66cm 学习随笔 1879

MATLAB与图像处理(一):图像中结构张量的求法(Structure Tensor)

1.结构张量的作用:       能够区分图像中的平坦区域,边缘,角点; 2.图像中的结构张量的定义    1)是一个矩阵;    2)与图像的水平,垂直梯度有关,定义如下: 在MATLAB中,可以用如下语句求解:[Ix,Iy]=gradient(Image); 3)求出结构张量矩阵的行列式,和迹(矩阵对角线之和)   行列式:K=det(E);   迹:  

wenyusuran的专栏 5242

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

linux 识别磁带库,[转]红旗Linux下使用HP MSL 6060磁带库

HP MSL 6060是6000系列带库的其中一个细型号。在客户现场,原红旗DC Server 4.1 SP1 for x86通过QLA2312的HBA卡无法识别到带库的机械手设备。通过升级相应的HBA卡驱动,以及使用mtx套件,实现检查磁带库状态及使用磁带库作备份操作。一、系统平台硬件:引用服务器:Dell PowerEdge 6650HBA卡:Qlogic 2312软件:引用OS:RedFla...

weixin_42340136的博客 1390

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux中的SCSI模型及iSCSI示例

在Linux内核中SCSI驱动应该是最为复杂的驱动,没有之一。因为对于整个SCSI系统来说,不只包含一种类型的设备,而是一类设备。前面文章我们简单介绍了Linux操作系统内核中SCSI子系统的整体架构,我们这里简单回忆一下。 在Linux内核中抽象了一个称谓SCSI总线的虚拟总线。而在SCSI总线上又包含SCSI的驱动和设备。 图1 SCSI体系结构 Linux操作系统中的SCSI整个架...

shuningzhang的专栏 5087

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何对 Backup Exec for Windows Servers 中的磁带库或磁带驱动器问题进行故障排除?

How To: 如何对 Backup Exec for Windows Servers 中的磁带库或磁带驱动器问题进行故障排除? Article:TECH117227 | Created: 2009-01-02 | ...

weixin_34007879的博客 2385

SCSI系列六:内核配置及启动

Linux 内核配置通常可以在文件/usr/src/linux/.config的内核源代码中找到。不建议直接编辑此文件,而是使用以下配置选项之一:make config - 启动基于字符的问答会话make menuconfig - 启动面向终端的配置工具(使用 ncurses)make xconfig - 启动基于 X 的配置工具相关帮助按钮显示的这些选择的描述可以在平面 ASCII 文件中找到: /usr/src/linux/Documentation/Configure.help。

探索未知,成就非凡 1171

磁带机、磁带库和磁盘阵列三者之间的区别

磁带机、磁带库和磁盘阵列三者之间的区别 磁带机 磁带机(Tape Drive)一般指单驱动器产品,通常由磁带驱动器和磁带构成,是一种经济、可靠、容量大、速度快的备份设备。这种产品采用高纠错能力编码技术和写后即读通道技术,可以大大提高数据备份的可靠性。根据装带方式的不同,一般分为手动装带磁带机和自动装带磁带机,即自动加载磁带机。 自动加载磁带机实际上是将磁...

weixin_34367845的博客 2083

linux系统scsi硬盘,Linux系统SCSI磁盘管理全攻略(一)

Linux系统SCSI磁盘管理全攻略(一)介绍本系列文章系统、全面地介绍了Linux 的SCSI设备管理机制和整套操作命令。包括以下六大主题:Linux SCSI子系统概述Linux主机LUN识别动态SAN网络重配LUN发现步骤Linux设备命名SCSI磁盘限制本文作为系列第一篇,解答了用户的常见问题,如:怎样确认驱模块是否被加载?怎样查看SCSI子系统已发现并识别的设备?如何验证内核已正确识别出...

weixin_42342032的博客 2656
上一篇: 从oracle到Sqlserver数据库的数据迁移(图文详解)
下一篇: C++使用CreateProcess执行cmd命令(实例演示)
Coding13
博客等级 码龄10年 53粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值