VirtualBox 网络设置

VirtualBox 是什么 VirtualBox 是一款 x86 虚拟机软件。原由德国innotek公司开发,2008年Sun收购了Innotek,而Sun于2010年被Oracle收购,2010年1月21日改 名成 Oracle VM VirtualBox。VirtualBox 可在 Linux 和 Windows 主机中运行,并支持在其中安装 Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD 等系列的客户操作系统。 VirtualBox是开源软件,使用双重许可协议,个人和评估使用可以在virtualbox.org免费下载使用而无需支付费用,商用则需付费。 VirtualBox 网络设置 VirtualBox 有4种网络模式,下面将逐一讲解。 NAT模式〈网络地址转换模式〉 NAT模式是最简单的实现虚拟机上网的方式,可以这样理解:Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在。 虚拟机与主机关系: 只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。 虚拟机与网络中其他主机的关系: 只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。 虚拟机与虚拟机之间的关系: 相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。 虚拟主机网络参数默认从 VirtualBox 的虚拟 DHCP Ser 获取: IP地址 子网掩码 网关 DNS 10.0.2.15 255.255.255.0 10.0.2.2 10.0.2.3 一台虚拟机的多个网卡可以被设定使用 NAT, 第一个网卡连接了到专用网 10.0.2.0,第二个网卡连接到专用网络 10.0.3.0,等等。默认得到的客户端ip(IP Address)是10.0.2.15,网关(Gateway)是10.0.2.2,域名服务器(DNS)是10.0.2.3,可以手动参考这个进行修改。 VirtualBox 端口转发 前面讲了宿主机和宿主机网络中的任何主机都不能直接访问虚拟主机,但是VirtualBox 提供了端口转发,使得我们可以设置特定的端口供实体网络访问。 设置发送到宿主机的某些端口转发到虚拟主机,宿主机IP地址干脆就127.0.0.1。 NAT方案优缺点 笔记本已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。 笔记本没插网线时: 主机的“本地连接”有红叉时,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。 Bridged Adapter〈桥接模式〉 需要加载模块vboxnetflt,可以理解为虚拟机通过 VirtualBox 桥接到宿主机的一个网卡中,就像真实存在于宿主机网络中的一台主机一样。它使得虚拟机能被分配到一个网络中独立的IP,因此,虚拟机能与宿主机和宿主机网络中的主机完美互通。被桥接的网卡会开启混杂模式。 ...

February 3, 2019 · 1 min · 134 words · Jacob

基于UrbanSound8K与CNN的音频分类

 语音方面的资料不如图像识别的多,所以特地写了一份博客(并不如何严谨),希望可以帮到大家。 我们需要实现10种语音的分类:冷气机,汽车喇叭,儿童玩耍,狗吠声,钻孔,发动机空转,枪射击,手持式凿岩机,警笛,街头音乐 每个录音长度约为4s,被放在10个fold文件中。 我们采用keras(可以简单的认为keras是前端,tensorflow是后端,类似于tensorflow是个库,我们使用keras调用它的api)实现模型搭建,使用librosa(Librosa是一个用于音频、音乐分析、处理的python工具包)来处理语音。 导入这几个库即可 import keras from keras.layers import Activation, Dense, Dropout, Conv2D, Flatten, MaxPooling2D from keras.models import Sequentia import librosa import librosa.display import numpy as np import pandas as pd import random 读取csv文件 data = pd.read_csv('metadata/UrbanSound8K.csv') valid_data = data[['slice_file_name', 'fold' ,'classID', 'class']][ data['end']-data['start'] >= 3 ] valid_data['path'] = 'fold' + valid_data['fold'].astype('str') + '/' + valid_data['slice_file_name'].astype('str') 读入wav文件 from tqdm import tnrange, tqdm_notebook D=[] for row in tqdm_notebook(valid_data.itertuples()): print(row.path) print(row.classID) y1, sr1 = librosa.load("audio/" + row.path, duration=2.97) ps = librosa.feature.melspectrogram(y=y1, sr=sr1) if ps.shape != (128, 128): continue D.append( (ps, row.classID) ) 划分训练集和测试集,前7000个为训练集,7000以后为数据集 dataset = D random.shuffle(dataset) train = dataset[:7000] test = dataset[7000:] X_train, y_train = zip(*train) X_test, y_test = zip(*test) X_train = np.array([x.reshape( (128, 128, 1) ) for x in X_train]) X_test = np.array([x.reshape( (128, 128, 1) ) for x in X_test]) y_train = np.array(keras.utils.to_categorical(y_train, 10)) y_test = np.array(keras.utils.to_categorical(y_test, 10)) 搭建模型 model = Sequential() input_shape=(128, 128, 1) model.add(Conv2D(24, (5, 5), strides=(1, 1), input_shape=input_shape)) model.add(MaxPooling2D((4, 2), strides=(4, 2))) model.add(Activation('relu')) model.add(Conv2D(48, (5, 5), padding="valid")) model.add(MaxPooling2D((4, 2), strides=(4, 2))) model.add(Activation('relu')) model.add(Conv2D(48, (5, 5), padding="valid")) model.add(Activation('relu')) model.add(Flatten()) model.add(Dropout(rate=0.5)) model.add(Dense(64)) model.add(Activation('relu')) model.add(Dropout(rate=0.5)) model.add(Dense(10)) model.add(Activation('softmax')) 填入数据 ...

October 6, 2018 · 1 min · 204 words · Jacob

unzip解压zip文件

功能作用:解压缩zip文件 位置:/usr/bin/unzip 格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir] 主要参数 -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换 -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。 -l 显示压缩文件内所包含的文件 -f 更新现有的文件 -t 检查压缩文件是否正确,但不解压 -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中 -z 仅显示压缩文件的备注文字 -v 执行是时显示详细的信息。或查看压缩文件目录,但不解压 -T 将压缩文件内的所有文件的最新变动时间设为解压缩时候的时间 -x 指定不要处理.zip压缩文件中的哪些文件 -d 指定文件解压缩后所要存储的目录 -n 解压缩时不要覆盖原有的文件 -q 安静模式,执行时不显示任何信息 -o 不必先询问用户,unzip执行后覆盖原有文件 -a 对文本文件进行必要的字符转换 -j 不处理压缩文件中原有的目录路径 -aa 把所有的文件目录当作文本处理 -U use escapes for all non-ASCII Unicode -UU 忽略Unicode编码字符 -C 压缩文件中的文件名称区分大小写 -L 将压缩文件中的全部文件名改为小写 -X 解压缩时同时回存文件原来的UID/GID -V 保留VMS的文件版本信息 -K 保留文件的setuid/setgid/tacky属性 -M 将输出结果送到more程序处理 -O 指定字符编码为DOS,Windows和OS/2 -I 指定字符编码为UNIX 应用实例 ...

October 3, 2018 · 1 min · 114 words · Jacob

Centos7修改已存在的用户

目标: 将 jakc 用户更名为 jack 登出要修改用户名的用户(没有注销登录的用户无法修改) 以root身份登录终端,进行如下操作: #修改用户名和用户根目录,找到要修改用户的配置行,将这行出现的 jakc 全部改为 jack vim /etc/passwd vim /etc/shadow # 做法同上 vim /etc/group # 修改用户组,将用户组名改为新用户名,操作类似上步. mv /home/jakc /home/jack # 最后修改用户根目录名! 目标: 将 jack 用户密码更新位 jack123 普通用户 a. 获取超级用户root权限 命令:su或者su -或者su - root b. passwd 用户名 超级用户 a. 打开system-auth文件 命令:vi /etc/pam.d/system-auth b. passwd 超级用户名

March 12, 2018 · 1 min · 49 words · Jacob

NodeJS安装

下载二进制压缩包: cd /usr/local/src wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz 解压缩包: xz -d node-v8.12.0-linux-x64.tar.xz tar -xvf node-v8.12.0-linux-x64.tar.xz mv node-v8.12.0-linux-x64 /usr/local/node 到此为止,nodejs 就算是安装好了一半,可以执行如下命令测试: /usr/local/node/bin/node -v 上面虽说可以使用了,可是每次运行都加上 /usr/local/node/bin/ 有点难受,所以我们接下来配置环境变量,打开 /etc/profile ,在最下面加入如下代码: vim /etc/profile # set for nodejs export NODE_HOME=/usr/local/node export PATH=$NODE_HOME/bin:$PATH 是刚刚配置的环境变量生效: source /etc/profile 验证环境变量是否配置好: node -v npm -v 执行以上操作后,nodejs 算是安装好了,但是当试图安装一个全局包的时候你可能会遇到 EACCES 错误。这个错误表明你没有当前 npm 用来存储全局包命令目录的写权限。可以通过下面两种方式之一来修复解决这个问题: 方式一:修改 npm 默认目录的权限 找到 npm 目录路径: npm config get prefix 大多数系统,目录一般是 /usr/local 警告: 如果路径显示的是 /usr,直接采用方式二:修改 npm 默认目录的位置 修改 npm 目录的拥有者为当前用户: sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} 使用这个命令同时修改了 npm 下面子目录和其他工具命令(lib/node_modules,bin,and share) ...

January 14, 2018 · 1 min · 115 words · Jacob