当前位置: 首页 > 编程日记 > 正文

WSFC2016 SMB多通道与网络调校

   SMB多通道是微软Windows Server 2012时新增的一项功能,微软SMB3.0协议的一部分,主要用于SMB文件传输时,检测到多张可通信网卡,自动使用多张网卡进行传输,提高吞吐量,链路容错。


   Windows Server 2012和之前的服务器操作系统最大的一个不同点就在于,2012利用操作系统本身实现了很多原来只有硬件才能做的技术,同时又和各大硬件厂商合作,使各大硬件厂商的设备能够在微软OS上面发挥出最好的性能,例如,2012实现了原生的SMB 多通道,NIC teaming,可以和存储设备感知,实现ODX技术,等等


   SMB多通道,很多人可能没有关心过,其实这是一项很好用的技术,我们不需要额外配置什么,Windows Server 2012 /Win8 之后的OS原生自带,只要你有两台机器,它们之间要进行SMB传输,机器1上面有两张网卡 192.168.1.1和192.168.2.1 ,机器二上面有两张网卡 192.168.1.2 192.168.2.2,那么SMB多通道技术就会自动聚合两站网卡的带宽,进行协议传输,一旦其中一张网卡坏掉,自动使用单条通道进行传输


  通过SMB多通道,我们可以实现类似于MPIO的效果,它的优点就是自动聚合多网卡带宽,最大化利用网卡性能,自动容错,自动扩展,发现有可用通道自动加入传输。缺点就是SMB多通道,只能在SMB协议传输时有用,其它协议传输时无效,但SMB多通道技术可以和NIC teaming技术配合,SMB协议传输使用SMB多通道,其它流量使用NIC teaming


SMB多通道技术要求:


至少需要两台运行Windows Server 2012,Windows Server 2012R2或Windows 8计算机

不需要安装其他功能 - 默认情况下启用SMB Multichannel

多个可通信网络适配器


可选要求

一个或多个支持RSS的网络适配器

使用NIC Teaming配置的多个网络适配器之一

一个或多个支持远程直接内存访问(RDMA)的网络适配器



SMB多通道适用场景



多个支持RSS的网卡


此为SMB多通道典型配置,在2012之前,即便两个节点具备多张可以通讯的网卡,但是传输流量的时候也只会使用一个接口建立连接,并不会自动聚合所有接口带宽,2012开始,一旦检测到多张可通讯网卡,将自动聚合所有网卡,如果网卡支持RSS功能,则SMB为单个会话创建多个TCP / IP连接,每个接口至少有一个或多个连接,此配置使SMB能够使用可用的组合网络适配器带宽,并使得SMB客户端可以在网络适配器出现故障的情况下继续而不会中断。


多个NIC Teaming中的网卡


Windows Server 2012 R2和Windows Server 2012支持通过使用称为网卡绑定的功能将多个网络适配器合并到一个网络适配器的功能。尽管一个Teaming总是提供容错功能,但是当SMB没有SMB多通道部署时,SMB每个团队只能创建一个TCP / IP连接。此配置会导致所使用的CPU内核数量和队列带宽的最大使用量受到限制。


当使用SMB多通道部署SMB时,SMB为单个会话创建多个TCP / IP连接,以实现CPU内核之间更好的平衡并更好地利用可用带宽。NIC Teaming继续提供故障转移功能,这比单独使用SMB Multichannel更快,我们还建议使用网卡组合绑定,因为它为不依赖SMB的其他工作负载提供故障切换功能,这些工作负载无法从SMB多通道的故障切换功能中受益。


单个或多个支持RDMA的网络适配器


SMB多通道检测网络适配器的RDMA功能,这使得SMB Direct功能(SMB Direct over RDMA)成为可能,当使用SMB多通道部署SMB时,SMB检测网络适配器的RDMA能力,并为该单个会话创建多个RDMA连接,每个接口有两个RDMA连接,通过此配置,SMB可以利用RDMA支持的网络适配器提供的高吞吐量,低延迟和低CPU利用率,当您使用多个RDMA接口时,它还提供容错功能。


RDMA技术在大型数据传输时性能提升特别明显,在2012R2时,这项技术并不支持NIC teaming,因此如果您想要获得SMB Direct技术,在2012时代,只有选择SMB多通道+RDMA,2016时代起,支持融合网络架构能够获得RDMA技术。


简单介绍完SMB多通道技术,我们再来看下它和WSFC的关系,在WSFC 2012时×××始,群集开始支持SMB多通道技术,SMB多通道和群集,我们分为两个层面来看


  1. 存储流量

  2. CSV重定向流量


典型的场景是Hyper-V over SMB,或 SQL over SMB,前面是应用群集,后面是存储群集,应用通过SMB协议访问存储群集,利用RDMA技术和SMB多通道技术提高传输效率


在这种场景下,SMB多通道,会仅使用角色1的群集网络,即挑选启用客户端和群集通信的网络来做存储流量负载均衡使用


WSFC场景下的SMB多通道通常会遵循以下规则


1.挑选不同子网,度量值尽可能相近的群集网络进行SMB多通道汇总

2.只有网卡速率,RSS  , RDMA等参数完全相同的网卡,才会被纳入SMB多通道传输

3.如果有多个不同速率的网卡都可以使用,则SMB多通道将首选速率块的网卡建立通道


什么是度量值呢,事实上这是隐藏在群集网络内部的运作参数,界面上我们看不到它


在WSFC 2008时×××始,可以通过Powershell命令获得


Get-ClusterNetwork | ft Name, Metric, AutoMetric


WSFC 2008时代,默认情况下群集内部网络度量值为1000,群集首个发现的内部网络为1000,之后的内部网络依次向上递增100,群集以未设置网卡网关为内部网络挑选依据


所有对外网络的群集网络度量值默认为10000,之后发现的依次递增100,群集以设置网卡网关为对外网络挑选依据。


所有无群集通讯的群集网络度量值默认为10100,之后发现的依次递增100,群集以检测到网卡具备ISCSI通信为依据。


一个典型的架构如下


d1beff0f33974749c0ae28b01b137352.png

群集网络获得最低的度量值,因此WSFC 2008时代,CSV流量,群集数据库流量,心跳检测流量将首先通过这个网络进行


实时迁移网卡获得第二低的度量值,因此群集将会使用此网卡进行实时迁移,直接通过GUI界面选择实时迁移网卡,可覆盖此决定。


默认情况下群集网络度量值由群集根据算法自动生成,对于高端用户也可以手动进行修改

05245a5fd2acd41a6a5565449456b044.png


看过一些外国的设计通常针对管理网卡和群集网卡会设置备用网卡,例如这样的架构


Cluster1 900

Cluster2 910

MGMT1 10200

MGMT2 10300


这样设计的一个好处是,可以防止一旦群集功能或管理功能网卡坏掉,去使用其它不应该使用的网卡,事先规划出度量值网卡,到时群集会自动挑选下一度量值网卡使用


到了Windows Server 2012时代 群集网络度量值的评定发生了变化,不仅可以基于角色,还可以基于硬件功能


e240ef047c98cc6409778ddf00b2a52d.png



接下来我们将通过实际搭建一个利用SMB多通道的SOFS群集来实际看下效果


实验环境

9d544b81b3837ab09659a41e2f33d0b5.png

当前SOFS群集已经配置完成

2017-11-23_095251.png

SOFS群集角色已配置完成

2017-11-23_095910.png


群集网络设置如下


2017-11-23_095300.png

默认情况下SMB多通道已启用,可以看到,当我们把文件在两个节点间互相拷贝时,调用了所有网卡

589f1bd07d10c49647d9456b18af02d8.png


ca2f9dc194e26cebcddc97f194d8dd6e.png

禁用SMB多通道功能

28450dec5cbbc278806aef15f7e1ecfd.png

再次拷贝文件,发现已经没有了SMB多通道,只会调用一块网卡进行拷贝。

e6e79368ced3f7833d9827f7129a2ae3.png


d881143fe636fe8a79e7aeae3a9bcfb6.png

再次启用SMB多通道功能

432df6e7cf8118bfead06e6771ea660b.png

拷贝过程重新调用所有网卡

142041da2e43d6e12e06df52ff5e1c7b.png

查看群集网络度量值,发现不太标准,并不是我们想要的,CLUS网卡度量值没有是最低,CLUS MGMET SMB02 度量值过于接近,容易产生负载均衡

e23c2789d08265ab174221ebb4f569d0.png重新定义度量值 CLUS3000  ,SMB01为50000 ,SMB02为50001 ,MGMET为70000。规划控制SMB多通道只在SMB01 SMB02网络传输

6b7c507f28c6e978905970324ded46a2.png

上面我们在SOFS群集内部中查看了SMB多通道的效果,下面我们安装hyper-v群集,进一步查看


当前HV01 HV02节点已经完成Hyper-V群集配置

2017-11-23_095544.png

2017-11-23_095636.png

新建虚拟机,设置存储路径为SOFS群集路径

2017-11-23_095816.png

在虚拟机所在节点查看SMB多通道,可以看到,当前HV节点通过30 40两条通道连接到SOFS存储群集节点,同时利用两张网卡的带宽,并获得了容错性。

2017-11-23_100115.png

通过查看网络配置我们可以发现 在HV群集中,网络度量值为规范,只有SMB01,SMB02网络度量值接近,其它条件也都满足,因此HV群集优先使用此两条链路进行连接

2017-11-21_213640.png

在一些情况下,可能并不会这样顺利,有时度量值计算可能不会像这样按照我们希望的来,会有一些偏差,导致其它网络,例如管理网络,实时迁移网络也和存储网络处于接近的度量值,这样就有可能会产生负载均衡,一旦您部署了SOFS群集与前端群集,发现前端群集没有使用想要的链路去连接到SOFS群集,除了修改度量值,您还可以选择手动创建SMB多通道限制策略,强制限制SMB多通道仅在我们想要的网卡上面执行


首先在前端群集,指连接到SOFS群集的HV或SQL群集,上面运行Get-NetAdapter,查看网卡index记录,记下它

2017-11-21_212700.png

创建SMB多通道限制策略

New-SmbMultichannelConstraint -ServerName wisdom -InterfaceIndex 13,16

2017-11-23_100859.png

New-SmbMultichannelConstraint -ServerName wisdom.oa.com -InterfaceIndex 13,16

2017-11-23_100947.png


ServerName的的地方建议输入SOFS VCO名称及FQDN名称,这样,凡是HV群集连接到SOFS群集的这个名称,都仅会调用到我们指定的网卡,来完成SMB多通道

此设置需在HV群集 或 SQL群集 的每个节点上面进行设置


需要注意:SMB多通道限制策略,只有在网卡已满足SMB多通道要求的情况下才有意义,例如,三块网卡,速率,RSS,RDMA参数相同,度量值也接近,但是你不想要同时使用这三块网卡,只想使用其中两块,那么可以通过SMB多通道限制策略,如果是两块网卡,但是速率不同,创建SMB多通道限制策略无意义,因为SMB多通道必须多网卡速率相同才可以构建多条通道,速率不同的情况下,将仅使用速率高的网卡建立通道。


设置SMB多通道限制策略,主要有以下几种场景


  1. 防止存储通信淹没管理网络,希望管理网络更多的流量来做其它事情

  2. 防止CSV redirect IO流量淹没管理网络


关于CSV redirect IO流量,老王在后面会提到


到这里相信大家对于SMB多通道在WSFC群集的应用有了个初步的认识,简单来说,就是微软在SMB领域的一个创新,让大家更多的去使用它的SMB架构,我们可以部署一个SOFS,交付给前端的HV,SQL,应用使用RDMA SMB多通道技术连接到后端,获得高性能和容错性,为IT基础架构多了一种新的选择,SMB多通道在群集中也可以得到应用,WSFC 2012时代只要满足多子网群集网络,网卡速率参数相同就可以利用SMB多通道技术


SMB多通道技术在WSFC 2012群集中主要有两种应用场景


  1. 传统SMB流量,HV SQL SOFS群集本身使用SMB协议传输存储的流量,这种类型的SMB多通道,会挑选群集网络中,客户端可访问的网络

  2. CSV 重定向流量


在正常的情况下,所有一个群集中,所有节点对于CSV - 存储,都是直接访问IO,一个写入请求直接通过CSV写入到存储,此流量成为南北向流量,还有一种东西向流量,假设群集中的单个节点失去到存储的访问资格,即是说该节点到链路出现问题,那么CSV卷就会进入重定向模式,在这种模式下,虽然上层连接到CSV的应用不会中断,但会感觉到性能有明显的下降,因此每一次的写入IO,都会由失去资格的节点把IO重定向到可以访问存储的节点,然后该节点再完成IO请求


通常情况下CSV卷进入重定向模式,有以下几种可能


  1. 单节点失去到存储的访问资格

  2. 节点上安装了不兼容的筛选器驱动程序

  3. CSV备份,2008 R2无法创建CSV的单个同步VSS快照,导致在备份操作过程中大量重定向IO,有些存储系统会受到压力,导致2008 R2 Hyper-V群集崩溃


在2012时代,针对于CSV备份机制发生了改变,不再使用VSS备份操作,而是采用分布式快照机制来简单的备份CSV卷


因此在2012时代发生CSV重定向大概有几种可能 1.存储链路 2.节点筛选器驱动干扰 3.元数据更新


通常情况下元数据更新数据量很小,我们不需要过多关心它,筛选器驱动通常如果节点很干净也不会出现


WSFC 2012时代出现CSV重定向几率最多的还是单节点存储链路失败,或还原操作的场景


实际上CSV重定向流量是一种很危险的流量,在2008时代,很多人不知道这一点,于是就放了带宽很低的一个群集通信网络,结果发现当单节点存储链路出问题,CSV重定向模式下整个群集几乎没办法执行IO操作


在WSFC 2008 时代,对于CSV重定向流量,默认情况下,只使用度量值最低的群集网络,来完成重定向时的东西向流量


WSFC 2012时×××始,CSV重定向流量有了新的变化,不再根据度量值挑选,而是使用SMB协议,SMB多通道来完成CSV重定向时的流量传输,使用新的方式传输CSV重定向流量将比原来方式提高四倍,更好的处理CSV重定向时的性能问题,对于CSV重定向时的SMB多通道挑选,将遵循以下规则


1.SMB多通道优先于NetFT的网络优先级,以决定CSV重定向流量使用哪些子网

2.CSV重定向将仅使用内部群集网络进行SMB Multichannel,此行为可以更改为也使用外部网络修改UseClientAccessNetworksForSharedVolumes群集参数

3.SMB多通道需要相同的链路速度和特性(RSS和/或RDMA)才能同时在不同的子网上传输CSV重定向的流量

4.如果适配器不相同,SMB多通道将使用更快的适配器来传输CSV重定向的流量

5.只有在SMB Multichannel不可用或禁用的情况下,故障转移群集才会故障返回到NetFT决定使用哪个子网。然后,将应用最低度量标准逻辑,并通过最低度量子网发送CSV重定向流量


如果不希望重定向流量使用SMB多通道,仅使用单个网络,那么您可以直接关闭节点SMB多通道功能

Set-SMBClientConfiguration -EnableMultichannel $ False”


在一个理想的情况下,一个SMB架构的群集


应该是使用两种不同的SMB多通道,两种SMB多通道网络类型都按照规则执行


存储流量使用对外的网络进行SMB多通道

CSV重定向流量使用群集内部网络进行SMB多通道

2017-11-21_215850.png

如果在WSFC 2012时代遇见CSV重定向流量淹没其它网络的情况,例如还原一个备份失败,CSV重定向流量调用了CSV网卡和管理网卡,淹没了管理网卡,导致管理网卡不能访问,这时候您可以使用New-SmbMultichannelConstraint 来强制限制CSV多通道SMB多通道流量


建议 1.不要使用会产生CSV重定向的备份工具 2.规划特定的网卡来完成CSV重定向 SMB多通道流量


对于这里的场景来说,老王相信国内使用这种SMB架构用于企业生产的还是不多,而且在一个群集里面完成两组SMB多通道,也稍微有点麻烦,需要分别制定不同的SMB多通道策略,那么怎么能够实现一组SMB多通道,完成存储流量和CSV重定向流量,老王想到一种办法,修改群集的一个参数,UseClientAccessNetworksForSharedVolumes,让CSV重定向流量也可以使用对外类型的群集网络,这样的话,只要存储流量和CSV重定向网卡类型的网卡,速率,RSS ,RDMA参数相同,就可以使用SMB多通道功能,届时将是一组SMB多通道,完成存储流量和CSV重定向流量,也可以通过New-SmbMultichannelConstraint 来强制限制CSV多通道SMB多通道的网卡。


那么一个SOFS群集就是 管理网卡一张,对外存储网卡两张 心跳卡一张,对外存储网络既完成SMB存储流量多通道,也完成CSV重定向流量多通道


以上我们看了


  1. SMB多通道技术介绍

  2. SMB多通道在WSFC群集的应用及要求

  3. SMB多通道在SOFS群集内部的应用

  4. SMB多通道在SOFS群集与HV群集之间的应用

  5. SMB多通道的两种不同类型流量:存储连接流量,CSV重定向流量


在WSFC 2016时代,SMB多通道技术和群集的结合变的更为融洽,群集不再要求必须多个子网才可以在群集中做SMB多通道,现在相同子网的多张网卡也可以在群集中构建多通道,事实上,SMB多通道技术本身就支持相同子网多网卡,或不同子网多网卡,只是说2012时代的WSFC有所限制,构建网络拓扑时,相同子网的多张网卡不会被构建到群集的网络拓扑,WSFC 2016时代群集修改了这个规则,相同子网的多个网卡也可以被构建到群集网络拓扑,实现群集SMB多通道



所谓的相同子网多个网卡构建到群集网络拓扑,并不是说,相同子网,会出现多个群集网络,而是可以让一个群集网络下面包含单个子网的多个网卡


本例中共计16node1 16node2两个节点,各节点四块网卡,分别MGMET SMB01 SMB02 Heart

其中

节点1 SMB网卡30.0.0.18 30.0.0.19 

节点2 SMB网卡30.0.0.0.20 30.0.0.21

2017-11-23_123712.png


在两个节点之间拷贝文件,可以看到SMB多通道调用了所有网卡

2017-11-23_124318.png

创建SMB多通道限制策略 ,在各节点分别执行

2017-11-23_130457.png

再次拷贝,发现只调用选定网卡

2017-11-23_132425.png

运行命令查看,发现当前对于HV02节点的文件拷贝,只是通过30网段的四张网卡进行

2017-11-23_131939.png

除了限制SMB默认传输流量,我们还可以限制CSV重定向流量


配置群集,允许CSV重定向流量使用外部网络  (可选,建议最好可以单独布置多张内部通信网卡)


2017-11-23_125525.png


分别新建存储各节点CSV重定向 SMB多通道限制策略

针对于CSV重定向 SMB多通道限制策略,server name不能输入常规的机器名称,根据结果来看应该是NETFT虚拟出来的一个地址,该名称可以通过下图命令获得

此策略需分别在连接存储的CSV各节点设置其它节点的名称

2017-11-23_132647.png

创建完成后,模拟CSV重定向

2017-11-23_130749.png

通过命令可以查看到,节点1由于模拟了CSV重定向模式,因此节点1对于CSV的东西向流量访问都将通过节点2完成

2017-11-23_131717.png


细心的朋友可能会发现,这里的命令和 2012时代不太一样, 2016的Get-SmbMultichannelConnection命令 多了一个 SmbInstance参数

2017-11-23_133256.png

通过这个参数,我们可以看出,SMB多通道在各个不同的类型中所使用的网卡


Default:传统SMB传输

CSV:CSV重定向

SBL:2016 SDS特定流量

SR:2016 存储复制特定流量


由于环境有限,在WSFC 2016场景中,我并没有完整的展示后端SOFS群集,前端HV群集的场景

本例我们是以一个融合群集为例

事实上如果说是前端HV群集,后端SOF群集,才是最佳的架构

在这种架构里面

SMB多通道限制策略应该这样设计


HV群集设计由那两块网卡完成存储连接SMB存储连接多通道

SOFS群集设计由那两块网卡完成CSV重定向多通道


对于SMB存储多通道只需要在HV一方设计即可,SOFS群集会检测到对方只与我开放两条通道,而自动选择两条通道去建立连接


SOFS群集直接和存储连接,承载CSV卷,因此有必要设计CSV重定向流量多通道,可以通过添加多个内部群集网卡,然后通过策略限定,或修改参数,允许CSV重定向使用对外网卡


需要注意的一点是,SMB多通道限制策略,需要输入一个ServerName名称,在完成场景下,应该是在HV或SQL各节点创建这条策略,输入名称应该SOFS的VCO和VCO FQDN名称


本例我们用于模拟测试输入的对方节点名称,实际场景是不会这样做的!


对于CSV重定向 SMB多通道的限制是特殊的,因为它的Server Name不是使用的节点名称,而是使用的奇怪的地址,这点可以通过事先模拟CSV重定向,获取到对方地址,然后创建CSV重定向的 SMB多通道限制策略


以上为WSFC 2016 SMB多通道的新功能介绍,WSFC 2016时×××始,支持群集使用单个子网不同网卡构建SMB多通道,新增SMB Instance命令,用于查看SMB多通道用途



本文转自 老收藏家 51CTO博客,原文链接:http://blog.51cto.com/wzde2012/2043510


相关文章:

一个常用的正则表达验证类

这是 風語深蓝很早以前写的一个正则表达式验证工具类,包含了一些常见的校验和支持自定义的正则表达式匹配,可以选择完全匹配,也可以获取所有匹配项。曾用它仿造Eclispe下的正则表达式插件写过一个工具。因为最近突然有几个朋友都在问这方面的…

Signal和slot的声明和连接

信号(SIGNAL)和槽(SLOT)是Qt编程的一个重要部分。这个机制可以在对象之间彼此并不了解的情况下将它们的行为联系起来。Signal和slot的声明(一)在Qt程序设计中,凡是包含signal和slot的类中都要加上Q_OBJECT的定义,下面的例子给出了…

重磅!深度学习知识总结和调参技巧开放下载了

近年来,人工智能正在进入一个蓬勃发展的新时期,这主要得益于深度学习和CV领域近年来的发展和成就。在这其中,卷积神经网络的成功也带动了更多学术和商业应用的发展和进步。为了避免“内卷”,更多人选择学习进阶,但是仍…

Oracle优化器:星型转换

Oracle 8i中引入了星型转换(star transformation)的优化器新特性以便更有效地处理星型查询。星型查询语句多用于基于星型模型设计的数据仓库应用中。星型模型的称谓源于该种模型以图形化表现时看起来形似一颗海星。这颗星的中央会由一个或多个事实表(fact tables)组成&#xff…

php安装模式mod_php和Fastcgi的选择与对比

安装php又面临到了模式的选择,以前都是选择mod_php模式,因为这样安装比较方便哈,今天突然关心起FastCGI这种模式,败毒了一把,找到了一些关于mod_php和Fastcgi的选择与对比这方面的讨论,现在发出来留一个记号…

暴雨之后,评估与重建可以用这个数据集

作者:神经星星来源:HyperAI超神经场景描述:连续多日的暴雨给郑州和河南部分城市,带来了严重的洪涝灾害,牵动了全国人民的心。灾难面前,现阶段的科技和具体解决方案,也能发挥出关键作用。关键词&…

从jQuery的缓存到事件监听

很久以前&#xff0c;我还在cnblogs里面逛的时候就提出过一个问题&#xff08;刚找了半天没找到&#xff09;。不知道大家有没有发现&#xff0c;用jQuery选择器"选择"之后的DOM上会添加jQuery*********属性。 <DIV idd1 jQuery1294122065250"1">abc…

对一些品种数量校正

update sphwph set shl1-1 where spidSPH00002323 and piciJHAYMA00017433_5 and hwHWI00000022 update sphwph set shl-11 where spidSPH00002323 and piciJHAYMA00021159_2 and hwHWI00000022 3月7日调拨后少了398 update sphwph set shl0398 where piciJHAYMA00024241_1 an…

收藏喜+1!值得使用的100个Python小技巧

目前Python可以说是非常流行&#xff0c;在目前的编程语言中&#xff0c;Python的抽象程度是最高的&#xff0c;是最接近自然语言的&#xff0c;很容易上手。你可以用它来完成很多任务&#xff0c;比如数据科学、机器学习、Web开发、脚本编写、自动化等。下面&#xff0c;给大家…

一款基jquery超炫的动画导航菜单

今天给大家分享一款基jquery超炫的动画导航菜单。这款导航菜单&#xff0c;初始时页面中间一个按钮&#xff0c;单击按钮&#xff0c;菜单从左侧飞入页中。再次单击按钮&#xff0c;导航飞入左侧消息。动画效果很非常炫。一起看下效果图&#xff1a; 在线预览 源码下载 实现的…

如何用C#动态编译、执行代码

在开始之前&#xff0c;先熟悉几个类及部分属性、方法&#xff1a;CSharpCodeProvider、ICodeCompiler、CompilerParameters、CompilerResults、Assembly。  一、CSharpCodeProvider    提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码&#xff0c;可…

【解决】MySql 5.6 运行崩溃错误

【解决】MySql 5.6 运行崩溃错误 最近弄了一台云主机&#xff0c;配置是20G磁盘空间&#xff0c;1G运行内存的Linux服务器。在上面安装了LAMP&#xff08;RHEL7.2Apache2.4MySql5.6PHP5.6&#xff09;&#xff0c;然后搭建wordpress网站&#xff0c;可是网站运行没多久&#xf…

制作安全网站的checklist

原作者charlee、原始链接 http://tech.idv2.com/2008/04/19/secure-website-checklist/ fcicq最近在IPA上看到一篇安全相关的文章&#xff0c;它的最末尾有个checklist&#xff0c;于是催我把它翻译了。前几天比较忙&#xff0c;周末没什么事儿了&#xff0c;就翻译一下吧。 原…

百变冰冰!手把手教你实现CVPR2021最新妆容迁移算法

作者&#xff1a;小潘师兄来源&#xff1a;AI算法与图像处理简介在本文中&#xff0c;我们从不同的角度将妆容迁移问题分解为两步提取-分配过程。为此&#xff0c;我们提出了一种基于风格的可控GAN模型&#xff0c;该模型由三个部分组成&#xff0c;每个部分分别对应于目标风格…

Vlan 4096的限制原因

为什么80%的码农都做不了架构师&#xff1f;>>> VLAN配置的最大可能值为4094&#xff0c;它的由来如下所述&#xff1a; IEEE802.1q协议也就是“Virtual Bridged Local Area Networks”&#xff08;虚拟桥接局域网&#xff0c;简称虚拟局域网&#xff09;协议&#…

Hive 数据模型

Hive 数据模型 Hive 数据表有五种类型&#xff1a;内部表&#xff0c;外部表&#xff0c;分区表&#xff0c;桶表&#xff0c;视图表&#xff0c;默认以 tab 分隔 * MySQL (Oracle) 表默认以逗号分隔&#xff0c;因此&#xff0c;要想导入 MySQL(Oracle) 数据&#xff0c;需要设…

完整中英文世界国家级联下拉列表插件【前端版】

为什么80%的码农都做不了架构师&#xff1f;>>> 这个小东西是之前小项目上临时增加功能的产物&#xff0c;那时候在网上找了很久都没有能用的插件&#xff0c;要么是数据残缺少得可怜&#xff0c;还有就是实现手段非常低效不可维护那种&#xff0c;各种奇拔问题&am…

何时使用margin和padding?

margin和padding的意义相信大家都很清楚&#xff0c;可是在具体应用中&#xff0c;到底应该使用哪一个&#xff0c;就比较难于判断了。 这篇文章 说得挺清楚的&#xff0c;在这里翻译一下&#xff0c;供参考。 何时应当使用margin 需要在border外侧添加空白时。 空白处不需要…

10年IT老兵给新人程序员的几点建议

【CSDN 编者按】对于很多计算机专业的同学而言&#xff0c;“进大厂”已经成为毕业后职业道路的首选。但是面试官最喜欢什么样的应届生你知道吗&#xff1f;在校期间应该为找工作做哪些准备&#xff1f;除了技术好&#xff0c;在职场中还有哪些必备软实力&#xff1f;今天&…

asp.net文件上传下载的简单实现

使用FileUpload上传&#xff1a; protected void btnUpload_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { /*通过文件扩展名判断文件类型*/ string fileExt System.IO.Path.Ge…

JAVA数组的定义及用法

数组是有序数据的集合&#xff0c;数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素。 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; 当中类型(type)能够为Java中随意的数据类型&#xff0c;包含简单类型组合类型&#xff0c;数组名…

英特尔公布新技术路线图,将为 AWS、高通代工芯片

编译|刘春霖出品|AI科技大本营(ID:rgznai100)图源|IC photo今天英特尔宣布其旗下的工厂将开始制造高通芯片&#xff0c;并公布了公司有史以来最详细的制程工艺和封装技术路线图&#xff0c;希望在 2025 年前赶上台积电、三星电子。除了公布其近十多年来首个全新晶体管架构 Ribb…

epoll相关资料整理

http://www.cppblog.com/converse/archive/2008/10/13/63928.htmlepoll相关资料整理 学习epoll有一段时间了,最近终于有一个服务器采用了epoll模型,从中积累了一些epoll的资料.个人感觉目前可以找到的epoll相关的资料太少了,因为epoll仅被linux 2.6以上版本内核所支持,它的应用…

18.绝对路径和相对路径

什么是绝对路径&#xff08;Absolute Pathname&#xff09;&#xff1f; 1.绝对路径必定由“/”开头 2.绝对路径是为档案/文件的所在位置做指向 3.在任何时候&#xff0c;都可以用绝对路径来找到我们想要的文件 PS&#xff1a;绝对路径只对当前所在目录有效。 什么是相对路径&a…

IE的box模型显示bug

原作者charlee、原始链接http://tech.idv2.com/2007/01/02/ie-box-model-bug/以及本声明。 box模型即由<div>等块元素的 margin、padding、border、width、height 等属性构成的显示模型&#xff0c;它是CSS布局的基础。通过设置<div>的各种属性&#xff0c;可以得到…

AI 能匹敌程序员了吗?OpenAI 新研究展​示 NLP 大模型的局限性

作者&#xff1a;Ben Dickson来源&#xff1a;数据实战派Codex在一篇新论文中&#xff0c;OpenAI 的研究人员展示了 Codex 的详细信息&#xff0c;它是一种生成软件源代码的深度学习模型。Codex 可以为 OpenAI 和 GitHub 联合开发的 “AI 配对程序员” 工具 Copilot 提供支持。…

MSLicensing​中断远程桌面连接

---------------------------中断远程桌面连接---------------------------客户端无法建立跟远程计算机的连接。导致这个错误的可能的原因是:1) 远程计算机上的远程连接可能没有启用。2) 已超出远程计算机上的连接最大数。3) 建立连接时出现了一个网络错误。------------------…

如何恢复,迁移,添加, 删除 Voting Disks

如何恢复&#xff0c;迁移&#xff0c;添加, 删除 Voting Disks 恢复流程 在11gR2 之前&#xff0c;我们可以直接直接使用dd命令对voting disk进行备份。 DD示例 备份votedisk盘&#xff1a; [rootraw1 bin]# dd if/dev/raw/raw2 of/home/oracle/voting_disk.bak 恢复votedisk盘…

跨站脚本攻击(XSS)FAQ

原作者charlee、原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明。 该文章简单地介绍了XSS的基础知识及其危害和预防方法。Web开发人员的必读。译自 http://www.cgisecurity.com/articles/xss-faq.shtml。 简介 现在的网站包含大量的动态内容以提高用户体验&…

linux中的for命令

bash shell提供了for命令&#xff0c;用于创建通过一系列值重复的循环。每次重复使用系列中的一个值执行一个定义的命令集。for命令基本格式为&#xff1a;for var in listdo commandsdone1.读取列表中的值 #!/bin/bash #basic for command for test in a b c d e f doecho The…