随笔 - 12, 文章 - 0, 评论 - 5, 引用 - 0
数据加载中……

2012年7月19日

esxi 中两台vesx vmkernel不能通信

在一台DELL R710上安装了esxi5.0,并部署了两台esxi5.0的VM,名为vesxA,vesxB.

并在两台vesx上分别创建了vmkernel,连接到同一vSwitch,完成后,发现两台vesx间不能用vmkernel通信。

 

后请教有经验的同事,说是虚中虚需要在vSwitch中开启 混杂模式,经测试问题解决。

 

但是为什么呢?

 

请教高人得出答案:

 

由于vSwitch中的MAC TABLE记录只能从虚拟机的.vmx文件中读取。而.vmx中记录的MAC是虚拟机的网卡的MAC,当我们新建了一个vmkernel port后,生成的MAC并没有写入.vmx。所以当vSwitch 收到关于vmkernel port后,发现没有相关MAC记录,就会把包丢弃。

有人会问,交换机不是有Flooding功能么?

估计是由于vSwitch节省资源开销的原因,没有使用这个功能,所以这个时候就需要打开混杂模式,将vSwitch变成vHUB.

posted @ 2012-07-26 22:36 拼搏 阅读(1982) | 评论 (1)编辑 收藏

Suse Linux开启FTP服务

一、配置/etc/vsftpd.conf文件

 

1、vi /etc/vsftpd.conf

 

2、修改如下配置项

 

 anonymous_enable=YES  改成 anonymous_enable=NO   // 不启用匿名访问

 

 #local_enable=YES           改成 local_enable=YES             // 开启本地用户登录服务

 

 #write_enable=YES          改成 write_enable=YES            // 开启任何用户的写权限

 

二、配置/etc/ftpusers文件

 

1、vi  /etc/ftpusers

 

2、该文件中列出的用户是禁止使用FTP登录的,如果要使这些用户通过FTP登录,在用户前面加上#

 

三、重启FTP服务

 
service vsftpd restart

posted @ 2012-07-26 22:35 拼搏 阅读(9465) | 评论 (0)编辑 收藏

Myeclipse启动不了的解决方法

   我们在开发过程中经常在加载大工程时由于项目很大,导致编译时间很长。或是其他原因导致进度条有时候一直在不停地跑,占用了大量内存,在无奈之下直接将进程kill掉,当再次打开,这时候悲剧的事情发生了 。 
    发现MyEclipse启动不了了,进程的内存大小永远都是恒定值。陷入了一个纠结中。 

这里就说一下在工作经常遇到这样的问题是怎样解决的: 

环境说明 
IDE版本: Myecplise6.0(其他版本方法相同) 
安装路径:D:\dev_IDE\myeclipse 
工作空间:D:\dev_IDE\myeclipse\workspace 

方法一:修改工作空间 
    在刚启动Myeclipse的时候会有一个选择工作空间的地方。换一个新的工作空间即可,若是原来将默认工作空间勾中了,没有出来,就去你的MyEclipse安装路径中(如:D:\dev_IDE\myeclipse\eclipse\configuration\.settings),里面有个org.eclipse.ui.ide.prefs文件,将里面的SHOW_WORKSPACE_SELECTION_DIALOG修改为true即可。 
    这样做有个坏处,就是需要你重新import你的工程,需要重新编译,需要你养成经常备份的习惯。 

方法二:删除错误编译信息 
    这个方法最近才发现,当你由于在编译工程期间将进程kill掉以后,就会有编译加载“内容”出错,导致在启动的时候无法解析这个“内容”,所以要将该内容清除。如,当你的工程名为“TestProject”,在安装文件夹中(D:\dev_IDE\myeclipse\workspace\.metadata\.plugins\org.eclipse.core.resources\.projects\TestProject),有两个文件.markers和.markers.snap,将这两个文件删除。重启Myeclipse,OK了。  

posted @ 2012-07-26 22:34 拼搏 阅读(29938) | 评论 (3)编辑 收藏

三十而立的人生准则,会有更新

第一条: 
    学习是和我的社会地位、收入等挂钩,学习是一种最好的投资。 
第二条: 
    时间管理不是让我在有限的时间里面做更多的事,而是让我在把时间都放在有投资时间里面,去掉不必要做的事,做有投资价值的事(就是很重要但不紧急的事)。比如:锻炼身体,每天锻炼一小时,健康快乐生活一辈子,幸福一辈人。 
第三条: 
    这个世界上不是什么事情都是非黑既白,有很多灰色地带的,为生存有时还会踩界。 
第四条: 
    in:out=1:1 

posted @ 2012-07-21 22:24 拼搏 阅读(1226) | 评论 (0)编辑 收藏

与JDK奋斗的一上午

话说本人也是手欠啊,操作系统是Win7的前几天无法识别自己的移动硬盘,于是我就还原系统了,JDK安装在D盘。当时还原完就直接将以前安装在D盘的程序文件夹全部删除了。 
然后就是各位熟知的悲剧了,无论怎么重新安装都不行了,我也把注册表里面几乎所有的方法都尝试过了,都不行。查看了网上。总结来看有以下几种“偏方”: 
1、删除注册表里面所有和Java相关的表项 ---------事实上我试过了,但是很不幸,我把有Java的都删了大半,但是我这里没用 

2、关闭windows的windows installer功能打开命令行 ,输入msiexec /unregserver 
重新下载一个 windows installer,重新安装一遍然后再启用就好了                 再输入msiexec /regserver 

3、什么360啊,完美卸载啊都无法删除。 

4、这就是大救星啊...去下一个window  installer  clean up ,打开软件,然后把里面关于JDK的项删除。 

终于可以重新安装JDK了。  

posted @ 2012-07-21 22:24 拼搏 阅读(1177) | 评论 (0)编辑 收藏

设计模式--状态模式(State)

前几天由于忙工作上的事情,每天加班到10点左右才回家,回到家就没有再开电脑更新东西,今天早了一些回家,开始继续更新东西,今天要写的是状态模式,哦,对于一个没有状态的人来说,写状态模式,不知道会写成什么样子,反正是一起讨论用嘛,能把我所知道的清楚表达出来已经很心满意足啦。在理解状态模式的时候,我总觉得它和策略模式很像很像,有人说它们是孪生兄弟,那我们现在看看状态模式到底是一个什么样的东西。

状态模式是对象的一个行为模式,它允许一个对象在其内部状态改变的时候改变其行为,这个对象看上去就像改了了它的类一样。

下图是关于红绿灯转换的一个实现类图,具体的转换是这样子的,在初始的情况下,设定一个灯的状态,比如是绿灯,那么灯的下一个状态则是黄灯,紧接着是红灯,然后再是绿灯,依次循环;通过改变灯的状态,改变其行为。

下面是这个类图的实现代码:

package com.plabmedia.state;

public interface LightState {

/**
* 打印当前的状态
*/
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();
}

}

运行结果:

current state is green
current state is yellow
current state is red
current state is green
current state is yellow
current state is red

上面是对状态模式一个小小的实现,这个实现也仅仅是认识级的,在我们实际应用中,如果用到状态模式,应该比这个要负责的多,只是基本的结构是相似的。那我们下面针对状态模式做一些讨论。

1.在什么情况下使用状态模式:

  • 一个对象的行为依赖于它所处的状态,对象的行为必须随着其状态的改变而改变;
  • 需要多多重条件转移语句进行演化的时候,可以把每个分支封装成一个状态类;现在写代码的时候,我是不太喜欢用条件转移语句,特别是最好的那个else语句,我觉得它承担的东西太多了,前面不满足的情况它都要来处理,凭什么啊。
2.状态模式要注意的地方:
  • 谁来定义状态的变化:客户端还是状态内部决定?这要看当时应用的环境,如果状态的变化是固定的,我觉得可以再客户端进行设定;如果状态的变化依赖于前一个状态,比如在工作流系统中,当前状态是依赖于前一个状态的,这需要状态内部来觉得。
  • 状态对象创建时机:需要的时候创建?还是事先创建好所有的对象,供需要的时候调用?这要分系统需要来决定,如果一个系统,状态变化的顺序固定,不那么频繁,则可以在需要的时候创建所需要的对象;否则,对于频繁变化的状态,从性能上将,还是首先创建好各个状态对象,供需要时调用。
  • 可以把环境类传到具体的状态类中,状态类在需要的时候调用环境类,比如示例中的样子,其实在每个状态类里面,也可以直接调用环境类的print方法,这样看来,Client只需要初始化环境类,然后就可以看到它的状态在不停地变化。
3.状态模式与策略模式的区别:
我粗俗的说一些,从我的理解的基础上,二者之间的区别在于状态模式在集体作战,而策略模式是单兵作战,怎么说呢?状态模式因为其内部状态的改变会有不同的行为出现,而对于策略模式,只要客户端选中了一种策略,在整个生命周期内,都是这种策略。所以,在区分使用状态模式和策略模式的时候,主要是看系统有没有状态的变化,如果系统在整个生命周期内,只有一种状态,那很好,选择策略模式;如果系统在整个过程中,状态多样性,那需要选择状态模式。
先写这么多吧,好没有状态啊,希望大家都抽出时间一起讨论,说说自己对状态模式的看法。

posted @ 2012-07-21 22:23 拼搏 阅读(1008) | 评论 (0)编辑 收藏

tomcat 配置环境变量

1.我的电脑---属性---高级系统设置---环境变量---(系统变量)新建


变量名:CATALINA_HOME(必须)

变量值:tomcat的路径      (我的是:   E:\工具\学习软件\apache-tomcat-6.0.35\apache-tomcat-6.0.35)


2.找到path变量,在后面加上

   变量值后:;%CATALINA_HOME%;%CATALINA_HOME%\bin;(用;和前面的分开)


3. win+R 就可以cmd了(默认是startup开启,shutdown 结束;我是改成ts开启,td结束)

posted @ 2012-07-19 22:21 拼搏 阅读(734) | 评论 (0)编辑 收藏

Spring AOP源于生活的原理(一)

AOP原理

          spring用代理类包裹切面,把他们织入到Spring管理的bean中。也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean。 


生活中的AOP

现在可以自己想一想,怎么搞出来这个伪装类,才不会被调用者发现(过JVM的检查,JAVA是强类型检查,哪里都要检查类型)。 
实现和目标类相同的接口,我也实现和你一样的接口,反正上层都是接口级别的调用,这样我就伪装成了和目标类一样的类(实现了同一接口,咱是兄弟了),也就逃过了类型检查,到java运行期的时候,利用多态的后期绑定(所以spring采用运行时),伪装类(代理类)就变成了接口的真正实现,而他里面包 裹了真实的那个目标类,最后实现具体功能的还是目标类,只不过伪装类在之前干了点事情(写日志,安全检查,事物等)。 

兄弟模式

生活解析

这就好比,一个人让你办件事,每次这个时候,你弟弟就会先出来,当然他分不出来了,以为是你,你这个弟弟虽然办不了这事,但是他知道你能办,所以就答应下来了,并且收了点礼物(写日志),收完礼物了,给把事给人家办了啊,所以你弟弟又找你这个哥哥来了,最后把这是办了的还是你自己。但是你自己并不知道你弟弟已经收礼物了,你只是专心把这件事情做好。 

在兄弟模式中spring会使用JDK的java.lang.reflect.Proxy类,它允许Spring动态生成一个新类来实现必要的接口,织入通知,并且把对这些接口的任何调用都转发到目标类。

实际理论

JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理。

 父子模式

    生活解析

顺着这个思路想,要是本身这个类就没实现一个接口呢,你怎么伪装我,我就压根没有机会让你搞出这个双胞胎的弟弟,那么就用第2种代理方式,创建一个目标类的子类,生个儿子,让儿子伪装我 。

 生成子类调用,这次用子类来做为伪装类,当然这样也能逃过JVM的强类型检查,我继承的吗,当然查不出来了,子类重写了目标类的所有方法,当然在这些重写的方法中,不仅实现了目标类的功能,还在这些功能之前,实现了一些其他的(写日志,安全检查,事物等)。 

这次的对比就是,儿子先从爸爸那把本事都学会了,所有人都找儿子办事情,但是儿子每次办和爸爸同样的事之前,都要收点小礼物(写日志),然后才去办真正的事。当然爸爸是不知道儿子这么干的了。 这里就有件事情要说,某些本事是爸爸独有的(final的),儿子学不了,学不了就办不了这件事,办不了这个事情,自然就不能收人家礼了。  

在父子模式中spring使用CGLIB库生成目标类的一个子类,在创建这个子类的时候,spring织入通知,并且把对这个子类的调用委托到目标类。 

实际理论

CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强。

两种模式总结

相比之下,兄弟模式好些,它能更好的实现松耦合,尤其在今天都高喊着面向接口编程的情况下,父子模式只是在没有实现接口的时候,也能织入通知,应当做一种例外。

posted @ 2012-07-19 22:20 拼搏 阅读(835) | 评论 (0)编辑 收藏