??xml version="1.0" encoding="utf-8" standalone="yes"?>
q在两台vesx上分别创ZvmkernelQ连接到同一vSwitch,完成后,发现两台vesx间不能用vmkernel通信?/p>
后请教有l验的同事,说是虚中虚需要在vSwitch中开?h模式Q经试问题解决?/p>
但是Z么呢Q?/p>
h高h得出{案Q?/p>
׃vSwitch中的MAC TABLE记录只能从虚拟机?vmx文g中读取。?vmx中记录的MAC是虚拟机的网卡的MACQ当我们新徏了一个vmkernel port后,生成的MACq没有写?vmx。所以当vSwitch 收到关于vmkernel port后,发现没有相关MAC记录Q就?x)把包丢弃?/p>
有h?x)问Q交换机不是有Flooding功能么?
估计是由于vSwitch节省资源开销的原因,没有使用q个功能Q所以这个时候就需要打开h模式Q将vSwitch变成vHUB.
1、vi /etc/vsftpd.conf
2、修改如下配|项
anonymous_enable=YES Ҏ(gu) anonymous_enable=NO // 不启用匿名访?/p>
#local_enable=YES Ҏ(gu) local_enable=YES // 开启本地用L(fng)录服?/p>
#write_enable=YES Ҏ(gu) write_enable=YES // 开启Q何用L(fng)写权?/p>
二、配|?etc/ftpusers文g
1、vi /etc/ftpusers
2、该文g中列出的用户是禁止用FTPd的,如果要ɘq些用户通过FTPdQ在用户前面加上#
三、重启FTP服务
service vsftpd restart
状态模式是对象的一个行为模式,它允怸个对象在其内部状态改变的时候改变其行ؓ(f)Q这个对象看上去像改了了它的类一栗?/p>
下图是关于红l灯转换的一个实现类图,具体的{换是q样子的Q在初始的情况下Q设定一个灯的状态,比如是绿灯,那么灯的下一个状态则是黄灯,紧接着是红灯,然后再是l灯Q依ơ@环;通过改变灯的状态,改变其行为?/p>
下面是这个类囄实现代码Q?/p>
package com.plabmedia.state;
public interface LightState {
/**
* 打印当前的状?br />*/
public void print(Light light);}
package com.plabmedia.state;
public class RedLight implements LightState{
@Override
public void print(Light light) {
System.out.println("current state is red");
light.setState(new GreenLight());
}}
package com.plabmedia.state;
public class YellowLight implements LightState{
@Override
public void print(Light light) {
System.out.println("current state is yellow");
light.setState(new RedLight());
}}
package com.plabmedia.state;
public class GreenLight implements LightState {
@Override
public void print(Light light) {
System.out.println("current state is green");
light.setState(new YellowLight());
}}
package com.plabmedia.state;
public class Light {
private LightState state;
public LightState getState() {
return state;
}public void setState(LightState state) {
this.state = state;
}public void print(){
state.print(this);
}public Light(LightState state){
this.state = state;
}}
package com.plabmedia.state;
public class Client {
public static void main(String args[]){
Light light = new Light(new GreenLight());
light.print();
light.print();
light.print();
light.print();
light.print();
light.print();
}}
q行l果Q?/p>
current state is green
current state is yellow
current state is red
current state is green
current state is yellow
current state is red
上面是对状态模式一个小的实现Q这个实C仅仅是认识的,在我们实际应用中Q如果用到状态模式,应该比这个要负责的多Q只是基本的l构是相似的。那我们下面针对状态模式做一些讨论?/p>
1.在什么情况下使用状态模式:(x)
变量名:(x)CATALINA_HOME(必须)
变量|(x)tomcat的\? (我的是:(x) E:\工具\学习(fn)软g\apache-tomcat-6.0.35\apache-tomcat-6.0.35)
2.扑ֈpath变量Q在后面加上
变量值后Q?%CATALINA_HOME%;%CATALINA_HOME%\bin;Q用;和前面的分开Q?/p>
3. win+R 可以cmd?默认是startup开?shutdown l束;我是Ҏ(gu)ts开?tdl束)
spring用代理类包裹切面Q把他们l入到Spring理的bean中。也是说代理类伪装成目标类Q它?x)截取对目标cMҎ(gu)的调用,让调用者对目标cȝ调用都先变成调用伪装c,伪装cM先执行了切面,再把调用转发l真正的目标bean?nbsp;
现在可以自己想一惻I怎么搞出来这个伪装类Q才不会(x)被调用者发玎ͼqJVM的检查,JAVA是强cd(g)查,哪里都要(g)查类型)?nbsp;
实现和目标类相同的接口,我也实现和你一L(fng)接口Q反正上层都是接口别的调用Q这h׃装成了和目标cML(fng)c(实现了同一接口Q咱是兄弟了Q,也就逃过了类型检查,到javaq行期的时候,利用多态的后期l定Q所以spring采用q行ӞQ伪装类Q代理类Q就变成了接口的真正实现Q而他里面?裹了真实的那个目标类Q最后实现具体功能的q是目标c,只不q伪装类在之前干了点事情Q写日志Q安全检查,事物{)?nbsp;
生活解析
q就好比Q一个h让你办g事,每次q个时候,你弟弟就?x)先出来Q当然他分不出来了,以ؓ(f)是你Q你q个弟弟虽然办不了这事,但是他知道你能办Q所以就{应下来了,q且收了点礼物(写日志)Q收完礼物了Q给把事lh家办了啊Q所以你弟弟又找你这个哥哥来了,最后把q是办了的还是你自己。但是你自己q不知道你弟弟已l收C物了,你只是专心把qg事情做好?nbsp;
在兄弟模式中spring?x)用JDK的java.lang.reflect.Proxyc,它允许Spring动态生成一个新cL实现必要的接口,l入通知Qƈ且把对这些接口的M调用都{发到目标cR?/p>
实际理论
JDK动态代理:(x)其代理对象必L某个接口的实玎ͼ它是通过在运行期间创Z个接口的实现cL完成对目标对象的代理?/p>
父子模式
生活解析
着q个思\惻I要是本nq个cd没实C个接口呢Q你怎么伪装我,我就压根没有Z(x)让你搞出q个双胞(yu)胎的弟弟Q那么就用第2U代理方式,创徏一个目标类的子c,生个儿子Q让儿子伪装?nbsp;?/p>
生成子类调用Q这ơ用子类来做Z装类Q当然这样也能逃过JVM的强cd(g)查,我承的吗,当然查不出来了,子类重写了目标类的所有方法,当然在这些重写的Ҏ(gu)中,不仅实现了目标类的功能,q在q些功能之前Q实C一些其他的Q写日志Q安全检查,事物{)?nbsp;
q次的对比就是,儿子先从爸爸那把本事都学?x)了Q所有h都找儿子办事情,但是儿子每次办和爸爸同样的事之前Q都要收点小C物Q写日志Q,然后才去办真正的事。当然爸爸是不知道儿子这么干的了?q里有件事情要_(d)某些本事是爸爸独有的(final?Q儿子学不了Q学不了办不了qg事,办不了这个事情,自然׃能收人家Cg?nbsp;
在父子模式中spring使用CGLIB库生成目标类的一个子c,在创个子cȝ时候,springl入通知Qƈ且把对这个子cȝ调用委托到目标类?nbsp;
实际理论
CGLIB代理Q实现原理类gJDK动态代理,只是它在q行期间生成的代理对象是针对目标cL展的子类。CGLIB是高效的代码生成包,底层是依靠ASMQ开源的java字节码编辑类库)操作字节码实现的Q性能比JDK强?/blockquote>两种模式ȝ
相比之下Q兄弟模式好些,它能更好的实现松耦合Q尤其在今天都高喊着面向接口~程的情况下Q父子模式只是在没有实现接口的时候,也能l入通知Q应当做一U例外?/p>
]]>
备䆾其实是Z防止出错或者宕机时Q作为冗余的一U手Dc(din)?/span>
一?/span>Oracle备䆾从备份类型上分可以分Zc:(x)物理备䆾和逻辑备䆾
1?nbsp;物理备䆾Q?/span>copyQ将datafile?/span>control file{文?/span>copy到别的地?/span>
Oracle也提供了一些工h?/span>rman、用L(fng)理备份?/span>
2?nbsp;逻辑备䆾Q复制数?/span>
imp/exp?/span>impdp/expdp
二、按备䆾时的数据库状?/span>
两种状态:(x)启动状态和关闭状?/span>
1?nbsp;热备份(联机备䆾Q?/span>
2?nbsp;冷备份(脱机备䆾Q?/span>
三、从备䆾的状?/span>
1、一致性备份(拥有相同?/span>scnQ?/span>
2、非一致性备?/span>
四、备份规模大?/span>
1、完全备?/span>
注意Q归档模式下的备份才为有效备份,当然要分Z致性和不一致性?/span>
非归档需要关闭才是有效备份,打开的不使用?/span>
3?nbsp;表空间备?/span>
注意Q当数据库在归档模式下备份才有效备䆾
表空间处于只L?/span>offline有效备䆾
4?nbsp;数据文g
注意Q归档下的备份是有效备䆾
数据文g被设|ؓ(f)read olny或?/span>offline时的备䆾有效
5、控制文?/span>
6、归档日志文?/span>
是业务回到数据块崩溃前的状?/span>
一?/span>实例恢复Q?/span>crash recoveryQ?/span>
Oracle自动q行
1、缓存恢复(cache recoveryQ?/span>
2、事务恢复(transaction recoveryQ?/span>
二、介质恢复(media recoveryQ?/span>
三、恢复方?/span>
1、完全恢?/span>
1Q如果是整库恢复
?/span>mount数据?/span>
认所有的数据文g?/span>online状?/span>
执行恢复操作
用所?/span>Redo logs文g
2Q表I间或者数据文件及(qing)恢复
?/span>open?/span>
需要恢复的表空间设|ؓ(f)offline
执行恢复
?/span>redo logs
2?nbsp;不完全恢?/span>
1Q?nbsp;Z旉
2Q?nbsp;Zscn
3Q?nbsp;Zcancel
4Q?nbsp;Z日志序列?/span>
1?nbsp;用户理的备份和恢复
2?nbsp;RMAN
3?nbsp;Imp/exp?/span>impdp/expdp
4?nbsp;FLASHBACK
5?nbsp;GG
通常数据L以不同的格式Q存储在不同的地方,有的可能是文本文Ӟ有的虽然h表结构但不属于同一U数据源。这些情冉|大地妨碍了数据的集中处理。ؓ(f)此SQL Server提供了DTSQData Transformation ServersQ组件?/span>
DTS本n包含多个工具Qƈ提供了接口来实现在Q何支持OLEDB的数据源间导入,导出或传递数据,qɘq一工作变得单,高效?/span>
利用DTS可能在Q何OLEDBQODBC 驱动E序的数据源或文本文件和SQL Server之间导入导出或传递数据具?span style="color: #cc6600; ">表现在:(x)
数据的导入导出服?/span>Q?/span>
通过d数据在不同应用程序间交换数据。例如:(x)可以文本文件或Microsoft Access数据库导入到SQL ServerQ也可以把数据从SQL Server导出CQ何OLEDB数据源?/span>
转换数据Q?/span>
所谓传递是指在数据未到辄标数据源前而对数据采取的系列操作。比如:(x)DTS允许从源数据源的一列或多列计算出新的列|然后其存储在目标数据库中?/span>
传递数据库对象
在异构数据源情况下,DTS的内|工具只能在数据源间传递表定义和数据。如果要传递其他数据库对象Q如索引Q约束,视图Ӟ必须定义一个Q务,从而在目标数据库上执行那些包含在Q务中的SQL语句QSQL语句是被用来创徏q些数据库对象的?/span>
DTSl构
DTS数据导入,导出或传递定义成可存储的对象Q即包裹或称为包Q每一个包都是包括一个或h一定顺序的多个d的工作流Q每个Q务可以将数据从某一数据源拷贝至目标数据源,或用Active脚本转换数据Q或执行SQL语句Q或q行外部E序。也可以在SQL Server数据源间传递数据库对象。包对象用来创徏q存储步骤,q些步骤定义了一pdd执行的顺序,以及(qing)执行d的必要细节?/span>
包是层对象Q它包含三种底层对象Q?span style="color: #000066; ">q接QQ务,步骤?/span>
q接Q定义了有关源和目标数据的信息,q些信息包括数据格式和位|以?qing)安全认证的密码。DTS可不包含或包含多个连?/span>
dQ每个DTS包都含有一个或多个dQ每个Q务都是数据{换(传递)处理的工作项目?/span>
步骤Q步骤对象定义了d执行的顺序,以及(qing)某一d的执行是否依赖前一d的结果。步骤的一个重要特性是步骤的优先权U束?/span>
数据的导?/span>
Ҏ(gu)一Q用企业理?/span>
1Q?nbsp; 打开企业理器,打开要导入数据的数据库,在表上按右键Q所有Q?#8212;—导入数据Q弹出DTS导入/导出向导Q按下一?/span>
2Q?nbsp; 选择数据源,卌导入的文Ӟ按下一?/span>
3Q?nbsp; 选择目的Q选择Microsoft OLEDB 提供E序Q选择数据库服务器Q然后单d要的w䆾验证方式。按下一?/span>
4Q?nbsp; 在指定表格复制或查询对话框中Q单d制表?/span>
5Q?nbsp; 在选择源表格对话框中,单击全部选定。下一步,完成?/span>
Ҏ(gu)二:(x)Transact—SQL语句
数据的导?/span>
Ҏ(gu)一Q用企业理?/span>
1Q?nbsp; 打开企业理器,打开要导入数据的数据库,在表上按右键Q所有Q?#8212;—导入数据Q弹出DTS导入/导出向导Q按下一?/span>
2Q单M一步就?x)出现导出数据源对话?/span>
3Q单M一步,则选择目的对话?/span>
4Q单M一步,则出现指定表复制或查询对话框
5Q单M一步,选择源表和视囑֯话框
6Q?/span>
8Q?/span>