隨筆 - 12, 文章 - 0, 評(píng)論 - 5, 引用 - 0
          數(shù)據(jù)加載中……

          2012年7月19日

          esxi 中兩臺(tái)vesx vmkernel不能通信

          在一臺(tái)DELL R710上安裝了esxi5.0,并部署了兩臺(tái)esxi5.0的VM,名為vesxA,vesxB.

          并在兩臺(tái)vesx上分別創(chuàng)建了vmkernel,連接到同一vSwitch,完成后,發(fā)現(xiàn)兩臺(tái)vesx間不能用vmkernel通信。

           

          后請(qǐng)教有經(jīng)驗(yàn)的同事,說(shuō)是虛中虛需要在vSwitch中開(kāi)啟 混雜模式,經(jīng)測(cè)試問(wèn)題解決。

           

          但是為什么呢?

           

          請(qǐng)教高人得出答案:

           

          由于vSwitch中的MAC TABLE記錄只能從虛擬機(jī)的.vmx文件中讀取。而.vmx中記錄的MAC是虛擬機(jī)的網(wǎng)卡的MAC,當(dāng)我們新建了一個(gè)vmkernel port后,生成的MAC并沒(méi)有寫(xiě)入.vmx。所以當(dāng)vSwitch 收到關(guān)于vmkernel port后,發(fā)現(xiàn)沒(méi)有相關(guān)MAC記錄,就會(huì)把包丟棄。

          有人會(huì)問(wèn),交換機(jī)不是有Flooding功能么?

          估計(jì)是由于vSwitch節(jié)省資源開(kāi)銷(xiāo)的原因,沒(méi)有使用這個(gè)功能,所以這個(gè)時(shí)候就需要打開(kāi)混雜模式,將vSwitch變成vHUB.

          posted @ 2012-07-26 22:36 拼搏 閱讀(2018) | 評(píng)論 (1)編輯 收藏

          Suse Linux開(kāi)啟FTP服務(wù)

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

           

          1、vi /etc/vsftpd.conf

           

          2、修改如下配置項(xiàng)

           

           anonymous_enable=YES  改成 anonymous_enable=NO   // 不啟用匿名訪(fǎng)問(wèn)

           

           #local_enable=YES           改成 local_enable=YES             // 開(kāi)啟本地用戶(hù)登錄服務(wù)

           

           #write_enable=YES          改成 write_enable=YES            // 開(kāi)啟任何用戶(hù)的寫(xiě)權(quán)限

           

          二、配置/etc/ftpusers文件

           

          1、vi  /etc/ftpusers

           

          2、該文件中列出的用戶(hù)是禁止使用FTP登錄的,如果要使這些用戶(hù)通過(guò)FTP登錄,在用戶(hù)前面加上#

           

          三、重啟FTP服務(wù)

           
          service vsftpd restart

          posted @ 2012-07-26 22:35 拼搏 閱讀(9492) | 評(píng)論 (0)編輯 收藏

          Myeclipse啟動(dòng)不了的解決方法

             我們?cè)陂_(kāi)發(fā)過(guò)程中經(jīng)常在加載大工程時(shí)由于項(xiàng)目很大,導(dǎo)致編譯時(shí)間很長(zhǎng)。或是其他原因?qū)е逻M(jìn)度條有時(shí)候一直在不停地跑,占用了大量?jī)?nèi)存,在無(wú)奈之下直接將進(jìn)程kill掉,當(dāng)再次打開(kāi),這時(shí)候悲劇的事情發(fā)生了 。 
              發(fā)現(xiàn)MyEclipse啟動(dòng)不了了,進(jìn)程的內(nèi)存大小永遠(yuǎn)都是恒定值。陷入了一個(gè)糾結(jié)中。 

          這里就說(shuō)一下在工作經(jīng)常遇到這樣的問(wèn)題是怎樣解決的: 

          環(huán)境說(shuō)明 
          IDE版本: Myecplise6.0(其他版本方法相同) 
          安裝路徑:D:\dev_IDE\myeclipse 
          工作空間:D:\dev_IDE\myeclipse\workspace 

          方法一:修改工作空間 
              在剛啟動(dòng)Myeclipse的時(shí)候會(huì)有一個(gè)選擇工作空間的地方。換一個(gè)新的工作空間即可,若是原來(lái)將默認(rèn)工作空間勾中了,沒(méi)有出來(lái),就去你的MyEclipse安裝路徑中(如:D:\dev_IDE\myeclipse\eclipse\configuration\.settings),里面有個(gè)org.eclipse.ui.ide.prefs文件,將里面的SHOW_WORKSPACE_SELECTION_DIALOG修改為true即可。 
              這樣做有個(gè)壞處,就是需要你重新import你的工程,需要重新編譯,需要你養(yǎng)成經(jīng)常備份的習(xí)慣。 

          方法二:刪除錯(cuò)誤編譯信息 
              這個(gè)方法最近才發(fā)現(xiàn),當(dāng)你由于在編譯工程期間將進(jìn)程kill掉以后,就會(huì)有編譯加載“內(nèi)容”出錯(cuò),導(dǎo)致在啟動(dòng)的時(shí)候無(wú)法解析這個(gè)“內(nèi)容”,所以要將該內(nèi)容清除。如,當(dāng)你的工程名為“TestProject”,在安裝文件夾中(D:\dev_IDE\myeclipse\workspace\.metadata\.plugins\org.eclipse.core.resources\.projects\TestProject),有兩個(gè)文件.markers和.markers.snap,將這兩個(gè)文件刪除。重啟Myeclipse,OK了。  

          posted @ 2012-07-26 22:34 拼搏 閱讀(30015) | 評(píng)論 (3)編輯 收藏

          三十而立的人生準(zhǔn)則,會(huì)有更新

          第一條: 
              學(xué)習(xí)是和我的社會(huì)地位、收入等掛鉤,學(xué)習(xí)是一種最好的投資。 
          第二條: 
              時(shí)間管理不是讓我在有限的時(shí)間里面做更多的事,而是讓我在把時(shí)間都放在有投資時(shí)間里面,去掉不必要做的事,做有投資價(jià)值的事(就是很重要但不緊急的事)。比如:鍛煉身體,每天鍛煉一小時(shí),健康快樂(lè)生活一輩子,幸福一輩人。 
          第三條: 
              這個(gè)世界上不是什么事情都是非黑既白,有很多灰色地帶的,為生存有時(shí)還會(huì)踩界。 
          第四條: 
              in:out=1:1 

          posted @ 2012-07-21 22:24 拼搏 閱讀(1246) | 評(píng)論 (0)編輯 收藏

          與JDK奮斗的一上午

          話(huà)說(shuō)本人也是手欠啊,操作系統(tǒng)是Win7的前幾天無(wú)法識(shí)別自己的移動(dòng)硬盤(pán),于是我就還原系統(tǒng)了,JDK安裝在D盤(pán)。當(dāng)時(shí)還原完就直接將以前安裝在D盤(pán)的程序文件夾全部刪除了。 
          然后就是各位熟知的悲劇了,無(wú)論怎么重新安裝都不行了,我也把注冊(cè)表里面幾乎所有的方法都嘗試過(guò)了,都不行。查看了網(wǎng)上。總結(jié)來(lái)看有以下幾種“偏方”: 
          1、刪除注冊(cè)表里面所有和Java相關(guān)的表項(xiàng) ---------事實(shí)上我試過(guò)了,但是很不幸,我把有Java的都刪了大半,但是我這里沒(méi)用 

          2、關(guān)閉windows的windows installer功能打開(kāi)命令行 ,輸入msiexec /unregserver 
          重新下載一個(gè) windows installer,重新安裝一遍然后再啟用就好了                 再輸入msiexec /regserver 

          3、什么360啊,完美卸載啊都無(wú)法刪除。 

          4、這就是大救星啊...去下一個(gè)window  installer  clean up ,打開(kāi)軟件,然后把里面關(guān)于JDK的項(xiàng)刪除。 

          終于可以重新安裝JDK了。  

          posted @ 2012-07-21 22:24 拼搏 閱讀(1204) | 評(píng)論 (0)編輯 收藏

          設(shè)計(jì)模式--狀態(tài)模式(State)

          前幾天由于忙工作上的事情,每天加班到10點(diǎn)左右才回家,回到家就沒(méi)有再開(kāi)電腦更新東西,今天早了一些回家,開(kāi)始繼續(xù)更新東西,今天要寫(xiě)的是狀態(tài)模式,哦,對(duì)于一個(gè)沒(méi)有狀態(tài)的人來(lái)說(shuō),寫(xiě)狀態(tài)模式,不知道會(huì)寫(xiě)成什么樣子,反正是一起討論用嘛,能把我所知道的清楚表達(dá)出來(lái)已經(jīng)很心滿(mǎn)意足啦。在理解狀態(tài)模式的時(shí)候,我總覺(jué)得它和策略模式很像很像,有人說(shuō)它們是孿生兄弟,那我們現(xiàn)在看看狀態(tài)模式到底是一個(gè)什么樣的東西。

          狀態(tài)模式是對(duì)象的一個(gè)行為模式,它允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變其行為,這個(gè)對(duì)象看上去就像改了了它的類(lèi)一樣。

          下圖是關(guān)于紅綠燈轉(zhuǎn)換的一個(gè)實(shí)現(xiàn)類(lèi)圖,具體的轉(zhuǎn)換是這樣子的,在初始的情況下,設(shè)定一個(gè)燈的狀態(tài),比如是綠燈,那么燈的下一個(gè)狀態(tài)則是黃燈,緊接著是紅燈,然后再是綠燈,依次循環(huán);通過(guò)改變燈的狀態(tài),改變其行為。

          下面是這個(gè)類(lèi)圖的實(shí)現(xiàn)代碼:

          package com.plabmedia.state;

          public interface LightState {

          /**
          * 打印當(dāng)前的狀態(tài)
          */
          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();
          }

          }

          運(yùn)行結(jié)果:

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

          上面是對(duì)狀態(tài)模式一個(gè)小小的實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)也僅僅是認(rèn)識(shí)級(jí)的,在我們實(shí)際應(yīng)用中,如果用到狀態(tài)模式,應(yīng)該比這個(gè)要負(fù)責(zé)的多,只是基本的結(jié)構(gòu)是相似的。那我們下面針對(duì)狀態(tài)模式做一些討論。

          1.在什么情況下使用狀態(tài)模式:

          • 一個(gè)對(duì)象的行為依賴(lài)于它所處的狀態(tài),對(duì)象的行為必須隨著其狀態(tài)的改變而改變;
          • 需要多多重條件轉(zhuǎn)移語(yǔ)句進(jìn)行演化的時(shí)候,可以把每個(gè)分支封裝成一個(gè)狀態(tài)類(lèi);現(xiàn)在寫(xiě)代碼的時(shí)候,我是不太喜歡用條件轉(zhuǎn)移語(yǔ)句,特別是最好的那個(gè)else語(yǔ)句,我覺(jué)得它承擔(dān)的東西太多了,前面不滿(mǎn)足的情況它都要來(lái)處理,憑什么啊。
          2.狀態(tài)模式要注意的地方:
          • 誰(shuí)來(lái)定義狀態(tài)的變化:客戶(hù)端還是狀態(tài)內(nèi)部決定?這要看當(dāng)時(shí)應(yīng)用的環(huán)境,如果狀態(tài)的變化是固定的,我覺(jué)得可以再客戶(hù)端進(jìn)行設(shè)定;如果狀態(tài)的變化依賴(lài)于前一個(gè)狀態(tài),比如在工作流系統(tǒng)中,當(dāng)前狀態(tài)是依賴(lài)于前一個(gè)狀態(tài)的,這需要狀態(tài)內(nèi)部來(lái)覺(jué)得。
          • 狀態(tài)對(duì)象創(chuàng)建時(shí)機(jī):需要的時(shí)候創(chuàng)建?還是事先創(chuàng)建好所有的對(duì)象,供需要的時(shí)候調(diào)用?這要分系統(tǒng)需要來(lái)決定,如果一個(gè)系統(tǒng),狀態(tài)變化的順序固定,不那么頻繁,則可以在需要的時(shí)候創(chuàng)建所需要的對(duì)象;否則,對(duì)于頻繁變化的狀態(tài),從性能上將,還是首先創(chuàng)建好各個(gè)狀態(tài)對(duì)象,供需要時(shí)調(diào)用。
          • 可以把環(huán)境類(lèi)傳到具體的狀態(tài)類(lèi)中,狀態(tài)類(lèi)在需要的時(shí)候調(diào)用環(huán)境類(lèi),比如示例中的樣子,其實(shí)在每個(gè)狀態(tài)類(lèi)里面,也可以直接調(diào)用環(huán)境類(lèi)的print方法,這樣看來(lái),Client只需要初始化環(huán)境類(lèi),然后就可以看到它的狀態(tài)在不停地變化。
          3.狀態(tài)模式與策略模式的區(qū)別:
          我粗俗的說(shuō)一些,從我的理解的基礎(chǔ)上,二者之間的區(qū)別在于狀態(tài)模式在集體作戰(zhàn),而策略模式是單兵作戰(zhàn),怎么說(shuō)呢?狀態(tài)模式因?yàn)槠鋬?nèi)部狀態(tài)的改變會(huì)有不同的行為出現(xiàn),而對(duì)于策略模式,只要客戶(hù)端選中了一種策略,在整個(gè)生命周期內(nèi),都是這種策略。所以,在區(qū)分使用狀態(tài)模式和策略模式的時(shí)候,主要是看系統(tǒng)有沒(méi)有狀態(tài)的變化,如果系統(tǒng)在整個(gè)生命周期內(nèi),只有一種狀態(tài),那很好,選擇策略模式;如果系統(tǒng)在整個(gè)過(guò)程中,狀態(tài)多樣性,那需要選擇狀態(tài)模式。
          先寫(xiě)這么多吧,好沒(méi)有狀態(tài)啊,希望大家都抽出時(shí)間一起討論,說(shuō)說(shuō)自己對(duì)狀態(tài)模式的看法。

          posted @ 2012-07-21 22:23 拼搏 閱讀(1036) | 評(píng)論 (0)編輯 收藏

          tomcat 配置環(huán)境變量

          1.我的電腦---屬性---高級(jí)系統(tǒng)設(shè)置---環(huán)境變量---(系統(tǒng)變量)新建


          變量名:CATALINA_HOME(必須)

          變量值:tomcat的路徑      (我的是:   E:\工具\(yùn)學(xué)習(xí)軟件\apache-tomcat-6.0.35\apache-tomcat-6.0.35)


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

             變量值后:;%CATALINA_HOME%;%CATALINA_HOME%\bin;(用;和前面的分開(kāi))


          3. win+R 就可以cmd了(默認(rèn)是startup開(kāi)啟,shutdown 結(jié)束;我是改成ts開(kāi)啟,td結(jié)束)

          posted @ 2012-07-19 22:21 拼搏 閱讀(759) | 評(píng)論 (0)編輯 收藏

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

          AOP原理

                    spring用代理類(lèi)包裹切面,把他們織入到Spring管理的bean中。也就是說(shuō)代理類(lèi)偽裝成目標(biāo)類(lèi),它會(huì)截取對(duì)目標(biāo)類(lèi)中方法的調(diào)用,讓調(diào)用者對(duì)目標(biāo)類(lèi)的調(diào)用都先變成調(diào)用偽裝類(lèi),偽裝類(lèi)中就先執(zhí)行了切面,再把調(diào)用轉(zhuǎn)發(fā)給真正的目標(biāo)bean。 


          生活中的AOP

          現(xiàn)在可以自己想一想,怎么搞出來(lái)這個(gè)偽裝類(lèi),才不會(huì)被調(diào)用者發(fā)現(xiàn)(過(guò)JVM的檢查,JAVA是強(qiáng)類(lèi)型檢查,哪里都要檢查類(lèi)型)。 
          實(shí)現(xiàn)和目標(biāo)類(lèi)相同的接口,我也實(shí)現(xiàn)和你一樣的接口,反正上層都是接口級(jí)別的調(diào)用,這樣我就偽裝成了和目標(biāo)類(lèi)一樣的類(lèi)(實(shí)現(xiàn)了同一接口,咱是兄弟了),也就逃過(guò)了類(lèi)型檢查,到j(luò)ava運(yùn)行期的時(shí)候,利用多態(tài)的后期綁定(所以spring采用運(yùn)行時(shí)),偽裝類(lèi)(代理類(lèi))就變成了接口的真正實(shí)現(xiàn),而他里面包 裹了真實(shí)的那個(gè)目標(biāo)類(lèi),最后實(shí)現(xiàn)具體功能的還是目標(biāo)類(lèi),只不過(guò)偽裝類(lèi)在之前干了點(diǎn)事情(寫(xiě)日志,安全檢查,事物等)。 

          兄弟模式

          生活解析

          這就好比,一個(gè)人讓你辦件事,每次這個(gè)時(shí)候,你弟弟就會(huì)先出來(lái),當(dāng)然他分不出來(lái)了,以為是你,你這個(gè)弟弟雖然辦不了這事,但是他知道你能辦,所以就答應(yīng)下來(lái)了,并且收了點(diǎn)禮物(寫(xiě)日志),收完禮物了,給把事給人家辦了啊,所以你弟弟又找你這個(gè)哥哥來(lái)了,最后把這是辦了的還是你自己。但是你自己并不知道你弟弟已經(jīng)收禮物了,你只是專(zhuān)心把這件事情做好。 

          在兄弟模式中spring會(huì)使用JDK的java.lang.reflect.Proxy類(lèi),它允許Spring動(dòng)態(tài)生成一個(gè)新類(lèi)來(lái)實(shí)現(xiàn)必要的接口,織入通知,并且把對(duì)這些接口的任何調(diào)用都轉(zhuǎn)發(fā)到目標(biāo)類(lèi)。

          實(shí)際理論

          JDK動(dòng)態(tài)代理:其代理對(duì)象必須是某個(gè)接口的實(shí)現(xiàn),它是通過(guò)在運(yùn)行期間創(chuàng)建一個(gè)接口的實(shí)現(xiàn)類(lèi)來(lái)完成對(duì)目標(biāo)對(duì)象的代理。

           父子模式

              生活解析

          順著這個(gè)思路想,要是本身這個(gè)類(lèi)就沒(méi)實(shí)現(xiàn)一個(gè)接口呢,你怎么偽裝我,我就壓根沒(méi)有機(jī)會(huì)讓你搞出這個(gè)雙胞胎的弟弟,那么就用第2種代理方式,創(chuàng)建一個(gè)目標(biāo)類(lèi)的子類(lèi),生個(gè)兒子,讓兒子偽裝我 。

           生成子類(lèi)調(diào)用,這次用子類(lèi)來(lái)做為偽裝類(lèi),當(dāng)然這樣也能逃過(guò)JVM的強(qiáng)類(lèi)型檢查,我繼承的嗎,當(dāng)然查不出來(lái)了,子類(lèi)重寫(xiě)了目標(biāo)類(lèi)的所有方法,當(dāng)然在這些重寫(xiě)的方法中,不僅實(shí)現(xiàn)了目標(biāo)類(lèi)的功能,還在這些功能之前,實(shí)現(xiàn)了一些其他的(寫(xiě)日志,安全檢查,事物等)。 

          這次的對(duì)比就是,兒子先從爸爸那把本事都學(xué)會(huì)了,所有人都找兒子辦事情,但是兒子每次辦和爸爸同樣的事之前,都要收點(diǎn)小禮物(寫(xiě)日志),然后才去辦真正的事。當(dāng)然爸爸是不知道兒子這么干的了。 這里就有件事情要說(shuō),某些本事是爸爸獨(dú)有的(final的),兒子學(xué)不了,學(xué)不了就辦不了這件事,辦不了這個(gè)事情,自然就不能收人家禮了。  

          在父子模式中spring使用CGLIB庫(kù)生成目標(biāo)類(lèi)的一個(gè)子類(lèi),在創(chuàng)建這個(gè)子類(lèi)的時(shí)候,spring織入通知,并且把對(duì)這個(gè)子類(lèi)的調(diào)用委托到目標(biāo)類(lèi)。 

          實(shí)際理論

          CGLIB代理:實(shí)現(xiàn)原理類(lèi)似于JDK動(dòng)態(tài)代理,只是它在運(yùn)行期間生成的代理對(duì)象是針對(duì)目標(biāo)類(lèi)擴(kuò)展的子類(lèi)。CGLIB是高效的代碼生成包,底層是依靠ASM(開(kāi)源的java字節(jié)碼編輯類(lèi)庫(kù))操作字節(jié)碼實(shí)現(xiàn)的,性能比JDK強(qiáng)。

          兩種模式總結(jié)

          相比之下,兄弟模式好些,它能更好的實(shí)現(xiàn)松耦合,尤其在今天都高喊著面向接口編程的情況下,父子模式只是在沒(méi)有實(shí)現(xiàn)接口的時(shí)候,也能織入通知,應(yīng)當(dāng)做一種例外。

          posted @ 2012-07-19 22:20 拼搏 閱讀(855) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 汶川县| 集安市| 迭部县| 德钦县| 香港 | 广汉市| 兴仁县| 静乐县| 永兴县| 工布江达县| 新化县| 揭西县| 福泉市| 澄江县| 庄浪县| 华亭县| 大方县| 佛冈县| 蓝山县| 太和县| 新乡市| 栖霞市| 德州市| 阿拉善左旗| 卓资县| 会宁县| 沙坪坝区| 土默特右旗| 勃利县| 喀什市| 全椒县| 乌恰县| 泗阳县| 洪雅县| 介休市| 南靖县| 恩平市| 迁西县| 永康市| 定安县| 犍为县|