<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

    #

    正常的網絡連接中很少會出現多個包丟失的現象,每成功接收或轉發100,000個數據包最多只會有幾個包丟失(如圖1)。在Linux虛擬機中,通過ifconfig命令可以很輕松地監控到這種狀態。

      圖1. 通常以太網卡是不會丟包的

      當虛擬機的網絡在突發大量訪問的情況下,可能會發生多個包丟失,這樣就需要調整虛擬機的網絡設置。首先,確認虛擬機使用了VMXNET3虛擬網 卡驅動。這樣,在Linux宿主機的特定情況下,當大數據文件在高帶寬的網絡上傳輸時會發生多數據包丟失。關閉接收和轉發校驗總和可以解決這種情況。因為 校驗總和的作用是停止錯誤包的發送,這樣做會增加風險。考慮到以太網卡的錯誤率通常低于百萬分之一,風險的級別并不高。

      使用Linux ethtool工具來關閉VMware網絡設置中的接收和轉發校驗總和,在命令行窗口中以root賬戶登錄ethtool。例如關閉網卡eth0的校驗總 和命令如下:readethtool --offload eth0 rx off tx off;

      命令生效后,打開相應網卡的配置文件:

      /etc/sysconfig/network/ifcfg-eth0 ( SUSE) 或 /etc/sysconfig/network-scripts/ifcfg-eth0 (Red Hat )

      同時把ETHTOOL_OPTIONS參數變為ETHTOOL_OPTIONS='--offload eth0 rx off tx off'

      如果依然存在丟包問題,嘗試用ethtool工具增加接收隊列的緩沖區大小。默認情況下,緩存設為256,可以設置的最大值為4096。重新設置緩存大小為512,使用命令ethtool -G eth0 512。如果結果不理想,嘗試更大的值。

      遇到Windows虛擬機的高丟包率就需要調整VMXNET3驅動的網絡設置。在Device Manager中右鍵單擊VMXNET3驅動并選擇Properties。在Advanced頁中有兩個參數:Small RX Buffers和RX Ring #1 Size。適當增加這些參數的值然后測試能否有改善。逐步加大該值直到問題解決。

      多數情況下,這些設置可以降低虛擬機的丟包率。如果調整網絡參數失敗,或許就需要解決虛擬機其它的一些性能相關問題,而不是虛擬機和ESXi平 臺之間的VMware網絡設置。咨詢宿主機OS 的相關專家,應該有很多可以調整性能的相關參數。當心更改了錯誤的參數可能會對虛擬機帶來明顯的負面影響。

    posted @ 2014-07-15 22:53 ivaneeo 閱讀(497) | 評論 (0)編輯 收藏

    http://code4app.net/category/cocos2d
    http://www.cocos2d-x.org/hub/all?category=5
    http://blog.makeapp.co/
    posted @ 2014-06-04 17:09 ivaneeo 閱讀(289) | 評論 (0)編輯 收藏

    http://ricston.com/blog/mule-image-hosting-raml-mulerequester/
    posted @ 2014-05-28 23:32 ivaneeo 閱讀(330) | 評論 (0)編輯 收藏

    什么東西可以監控OpenStack呢?OpenStack對監控的需求起碼有以下這些:

     

    • 不僅要能監控物理機,也能監控虛機
    • 監控信息也必須是tenant隔離的
    • 監控項的收集應該是自動地
    • 監控工具應該一般化以監控任何設備
    • 監控工具必須提供API

    下面是監控工具的一般架構:

     

    zhjk

     

    網上搜索了一下,現在主流的監控工具有:Nagios, cacti, Zabbix, Muni, Zenoss。我不是做運維的對這些工具都不熟,以前不熟,現在也不熟。下面是一些理解,不一定準。

    Nagios,最老牌了,比較通用的監控工具。特大的特點是報警。圖形化功能一般般。一般要安裝Agent,配置起來看網上的說法是比較復雜的,沒用過,沒實際發言權。

    cacti,圖形化功能不錯,所以Nagios一般結合它來使用。

    Zabbix,監控和圖形化功能都還可以了,尤其有一本電子書 zabbix 1.8 network monitoring

    Zenoss, 監控新貴,它使用無Agent的通用技術如SNMP和SSL來監控,部署起來會比較方便。尤其是Zenoss公司有人現在也加入OpenStack社區了,專門開發了一個OpenStack特有的擴展(

    https://github.com/zenoss/ZenPacks.zenoss.OpenStack)不幸的是,目前只支持Nova API 1.1,且它只能收集單個tenant的數據,不利于rating和billing。

    OpenStack Ceilometer工程主要監控的是tenant下虛機的數據,用來做billing的,物理機的監控支持不大好。

    比較來比較去,如果是我,可能會做如下選型決定,不一定正確 :

    Nagios 或者 Zenoss (視情況)

     

    下面內容來自:http://docs.openstack.org/developer/ceilometer/, 我們看一下Ceilometer工程的現狀, 架構如下:

     

    zhjk2

     

    運行OpenStack各組件的節點上一般有Agent來收集信息,收集后發給MQ,Ceilometer的Collector進程監控到數據之后存儲到DB之中。從http://docs.openstack.org/developer/ceilometer/measurements.html 這頁顯示的監控項來看,目前Ceilometer監控來的數據主要來只是用來做billing的

     

    文章來源:http://blog.csdn.net/quqi99/article/details/9400747
    文章作者:張華 http://blog.csdn.net/quqi99

    posted @ 2014-05-28 01:01 ivaneeo 閱讀(436) | 評論 (0)編輯 收藏

    使用truelicense實現用于JAVA工程license機制(包括license生成和驗,有需要的朋友可以參考下。


    開發的軟件產品在交付使用的時候,往往會授權一段時間的試用期,這個時候license就派上用場了。不同于在代碼中直接加上時間約束,需要重新授權的時候使用license可以避免修改源碼,改動部署,授權方直接生成一個新的license發送給使用方替換掉原來的license文件即可。下面將講述使用truelicense來實現license的生成和使用。Truelicense是一個開源的證書管理引擎,詳細介紹見https://truelicense.java.net/

    一、首先介紹下license授權機制的原理:

    1、 生成密鑰對,方法有很多。

    2、 授權者保留私鑰,使用私鑰對包含授權信息(如使用截止日期,MAC地址等)的license進行數字簽名。

    3、 公鑰給使用者(放在驗證的代碼中使用),用于驗證license是否符合使用條件。

    接下來是本例制作license的具體步驟:

    二、第一步:使用keytool生成密鑰對

    以下命令在dos命令行執行,注意當前執行目錄,最后生成的密鑰對即在該目錄下:

    1、首先要用KeyTool工具來生成私匙庫:(-alias別名 –validity 3650表示10年有效)

    keytool -genkey -alias privatekey -keystoreprivateKeys.store -validity 3650

    2、然后把私匙庫內的公匙導出到一個文件當中:

    keytool -export -alias privatekey -file certfile.cer -keystore privateKeys.store

    3、然后再把這個證書文件導入到公匙庫:

    keytool -import -alias publiccert -file certfile.cer -keystore publicCerts.store

    最后生成文件privateKeys.store、publicCerts.store拷貝出來備用。

    三、第二步:生成證書(該部分代碼由授權者獨立保管執行)

    1、 首先LicenseManagerHolder.java類:

    package cn.melina.license; import de.schlichtherle.license.LicenseManager; import de.schlichtherle.license.LicenseParam;  /**  * LicenseManager??????  * @author melina  */ public class LicenseManagerHolder { 	 	private static LicenseManager licenseManager;   	public static synchronized LicenseManager getLicenseManager(LicenseParam licenseParams) {     	if (licenseManager == null) {     		licenseManager = new LicenseManager(licenseParams);     	}     	return licenseManager;     } } 

    2、 然后是主要生成license的代碼CreateLicense.java:

    package cn.melina.license;  import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Properties; import java.util.prefs.Preferences; import javax.security.auth.x500.X500Principal; import de.schlichtherle.license.CipherParam; import de.schlichtherle.license.DefaultCipherParam; import de.schlichtherle.license.DefaultKeyStoreParam; import de.schlichtherle.license.DefaultLicenseParam; import de.schlichtherle.license.KeyStoreParam; import de.schlichtherle.license.LicenseContent; import de.schlichtherle.license.LicenseParam; import de.schlichtherle.license.LicenseManager;  /**  * CreateLicense  * @author melina  */ public class CreateLicense { 	//common param 	private static String PRIVATEALIAS = ""; 	private static String KEYPWD = ""; 	private static String STOREPWD = ""; 	private static String SUBJECT = ""; 	private static String licPath = ""; 	private static String priPath = ""; 	//license content 	private static String issuedTime = ""; 	private static String notBefore = ""; 	private static String notAfter = ""; 	private static String consumerType = ""; 	private static int consumerAmount = 0; 	private static String info = ""; 	// 為了方便直接用的API里的例子 	// X500Princal是一個證書文件的固有格式,詳見API 	private final static X500Principal DEFAULTHOLDERANDISSUER = new X500Principal( 			"CN=Duke、OU=JavaSoft、O=Sun Microsystems、C=US"); 	 	public void setParam(String propertiesPath) { 		// 獲取參數 		Properties prop = new Properties(); 		InputStream in = getClass().getResourceAsStream(propertiesPath); 		try { 			prop.load(in); 		} catch (IOException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} 		PRIVATEALIAS = prop.getProperty("PRIVATEALIAS"); 		KEYPWD = prop.getProperty("KEYPWD"); 		STOREPWD = prop.getProperty("STOREPWD"); 		SUBJECT = prop.getProperty("SUBJECT"); 		KEYPWD = prop.getProperty("KEYPWD"); 		licPath = prop.getProperty("licPath"); 		priPath = prop.getProperty("priPath"); 		//license content 		issuedTime = prop.getProperty("issuedTime"); 		notBefore = prop.getProperty("notBefore"); 		notAfter = prop.getProperty("notAfter"); 		consumerType = prop.getProperty("consumerType"); 		consumerAmount = Integer.valueOf(prop.getProperty("consumerAmount")); 		info = prop.getProperty("info"); 		 	}  	public boolean create() {		 		try { 			/************** 證書發布者端執行 ******************/ 			LicenseManager licenseManager = LicenseManagerHolder 					.getLicenseManager(initLicenseParams0()); 			licenseManager.store((createLicenseContent()), new File(licPath));	 		} catch (Exception e) { 			e.printStackTrace(); 			System.out.println("客戶端證書生成失敗!"); 			return false; 		} 		System.out.println("服務器端生成證書成功!"); 		return true; 	}  	// 返回生成證書時需要的參數 	private static LicenseParam initLicenseParams0() { 		Preferences preference = Preferences 				.userNodeForPackage(CreateLicense.class); 		// 設置對證書內容加密的對稱密碼 		CipherParam cipherParam = new DefaultCipherParam(STOREPWD); 		// 參數1,2從哪個Class.getResource()獲得密鑰庫;參數3密鑰庫的別名;參數4密鑰庫存儲密碼;參數5密鑰庫密碼 		KeyStoreParam privateStoreParam = new DefaultKeyStoreParam( 				CreateLicense.class, priPath, PRIVATEALIAS, STOREPWD, KEYPWD); 		LicenseParam licenseParams = new DefaultLicenseParam(SUBJECT, 				preference, privateStoreParam, cipherParam); 		return licenseParams; 	}  	// 從外部表單拿到證書的內容 		public final static LicenseContent createLicenseContent() { 			DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 			LicenseContent content = null; 			content = new LicenseContent(); 			content.setSubject(SUBJECT); 			content.setHolder(DEFAULTHOLDERANDISSUER); 			content.setIssuer(DEFAULTHOLDERANDISSUER); 			try { 				content.setIssued(format.parse(issuedTime)); 				content.setNotBefore(format.parse(notBefore)); 				content.setNotAfter(format.parse(notAfter)); 			} catch (ParseException e) { 				// TODO Auto-generated catch block 				e.printStackTrace(); 			} 			content.setConsumerType(consumerType); 			content.setConsumerAmount(consumerAmount); 			content.setInfo(info); 			// 擴展 			content.setExtra(new Object()); 			return content; 		} } 

    3、 測試程序licenseCreateTest.java:

    package cn.melina.license; import cn.melina.license.CreateLicense; public class licenseCreateTest { 	public static void main(String[] args){ 		CreateLicense cLicense = new CreateLicense(); 		//獲取參數 		cLicense.setParam("./param.properties"); 		//生成證書 		cLicense.create(); 	} } 

    4、 生成時使用到的param.properties文件如下:

    ##########common parameters########### #alias PRIVATEALIAS=privatekey #key(該密碼生成密鑰對的密碼,需要妥善保管,不能讓使用者知道) KEYPWD=bigdata123456 #STOREPWD(該密碼是在使用keytool生成密鑰對時設置的密鑰庫的訪問密碼) STOREPWD=abc123456 #SUBJECT SUBJECT=bigdata #licPath licPath=bigdata.lic #priPath priPath=privateKeys.store ##########license content########### #issuedTime issuedTime=2014-04-01 #notBeforeTime notBefore=2014-04-01 #notAfterTime notAfter=2014-05-01 #consumerType consumerType=user #ConsumerAmount consumerAmount=1 #info info=this is a license 

    根據properties文件可以看出,這里只簡單設置了使用時間的限制,當然可以自定義添加更多限制。該文件中表示授權者擁有私鑰,并且知道生成密鑰對的密碼。并且設置license的內容。

    四、第三步:驗證證書(使用證書)(該部分代碼結合需要授權的程序使用)

    1、 首先LicenseManagerHolder.java類,同上。

    2、 然后是主要驗證license的代碼VerifyLicense.java:

    package cn.melina.license;  import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.prefs.Preferences;  import de.schlichtherle.license.CipherParam; import de.schlichtherle.license.DefaultCipherParam; import de.schlichtherle.license.DefaultKeyStoreParam; import de.schlichtherle.license.DefaultLicenseParam; import de.schlichtherle.license.KeyStoreParam; import de.schlichtherle.license.LicenseParam; import de.schlichtherle.license.LicenseManager;  /**  * VerifyLicense  * @author melina  */ public class VerifyLicense { 	//common param 	private static String PUBLICALIAS = ""; 	private static String STOREPWD = ""; 	private static String SUBJECT = ""; 	private static String licPath = ""; 	private static String pubPath = ""; 	 	public void setParam(String propertiesPath) { 		// 獲取參數 		Properties prop = new Properties(); 		InputStream in = getClass().getResourceAsStream(propertiesPath); 		try { 			prop.load(in); 		} catch (IOException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		} 		PUBLICALIAS = prop.getProperty("PUBLICALIAS"); 		STOREPWD = prop.getProperty("STOREPWD"); 		SUBJECT = prop.getProperty("SUBJECT"); 		licPath = prop.getProperty("licPath"); 		pubPath = prop.getProperty("pubPath"); 	}  	public boolean verify() {		 		/************** 證書使用者端執行 ******************/  		LicenseManager licenseManager = LicenseManagerHolder 				.getLicenseManager(initLicenseParams()); 		// 安裝證書 		try { 			licenseManager.install(new File(licPath)); 			System.out.println("客戶端安裝證書成功!"); 		} catch (Exception e) { 			e.printStackTrace(); 			System.out.println("客戶端證書安裝失敗!"); 			return false; 		} 		// 驗證證書 		try { 			licenseManager.verify(); 			System.out.println("客戶端驗證證書成功!"); 		} catch (Exception e) { 			e.printStackTrace(); 			System.out.println("客戶端證書驗證失效!"); 			return false; 		} 		return true; 	}  	// 返回驗證證書需要的參數 	private static LicenseParam initLicenseParams() { 		Preferences preference = Preferences 				.userNodeForPackage(VerifyLicense.class); 		CipherParam cipherParam = new DefaultCipherParam(STOREPWD);  		KeyStoreParam privateStoreParam = new DefaultKeyStoreParam( 				VerifyLicense.class, pubPath, PUBLICALIAS, STOREPWD, null); 		LicenseParam licenseParams = new DefaultLicenseParam(SUBJECT, 				preference, privateStoreParam, cipherParam); 		return licenseParams; 	} } 

    3、 測試程序licenseVerifyTest.java:

    package cn.melina.license;  public class licenseVerifyTest { 	public static void main(String[] args){ 		VerifyLicense vLicense = new VerifyLicense(); 		//獲取參數 		vLicense.setParam("./param.properties"); 		//驗證證書 		vLicense.verify(); 	} } 

    4、 驗證時使用到的Properties文件如下:

    ##########common parameters########### #alias PUBLICALIAS=publiccert #STOREPWD(該密碼是在使用keytool生成密鑰對時設置的密鑰庫的訪問密碼) STOREPWD=abc123456 #SUBJECT SUBJECT=bigdata #licPath licPath=bigdata.lic #pubPath pubPath=publicCerts.store 

    根據該驗證的properties可以看出,使用者只擁有公鑰,沒有私鑰,并且也只知道訪問密鑰庫的密碼,而不能知道生成密鑰對的密碼。

    五、說明:

    注意實際操作中,公鑰、私鑰、證書等文件的存放路徑。

    以上代碼需要用到truelicense的一些包,可以自行網上搜,也可以下載我的完整工程,里面附帶了所需的jar包。

    以上兩個完整工程提供下載:http://download.csdn.net/detail/luckymelina/7141131

    GOOD LUCK!小伙伴們加油!歡迎與我交流。

    posted @ 2014-04-30 03:32 ivaneeo 閱讀(6574) | 評論 (0)編輯 收藏

         摘要: 之前做了一個web項目的時候,好好的網站第二天總是會提示using the Connector/J connection property 'autoReconnect=true' to avoid this problem.  這樣的錯誤1com.mysql.jdbc.CommunicationsException: The last packet successfully recei...  閱讀全文
    posted @ 2014-04-28 13:32 ivaneeo 閱讀(478) | 評論 (0)編輯 收藏

    /etc/rabbitmq.conf:

    [
        {rabbit, [{loopback_users, []}]}
    ].
    posted @ 2014-04-04 21:28 ivaneeo 閱讀(1652) | 評論 (0)編輯 收藏

    http://outofmemory.cn/code-snippet/4079/java-usage-Xuggler-get-video-shichang-fen-bianlv-high-kuan-kind-information
    posted @ 2014-04-01 00:44 ivaneeo 閱讀(1225) | 評論 (0)編輯 收藏

    Canvas里的globalCompositeOperation是個很少用到的函數,不太熟悉程序繪圖的同學們估計壓根都不知道這玩意是干什么的.

    簡單來說,Composite(組合),就是對你在繪圖中,后繪制的圖形與先繪制的圖形之間的組合顯示效果,比如在國畫中,你先畫一筆紅色,再來一筆綠色,相交的部分是一種混色,而在油畫中,綠色就會覆蓋掉相交部分的紅色,這在程序繪圖中的處理就是Composite,Canvas API中對應的函數就是globalCompositeOperation,跟globalAlpha一樣,這個屬性是全局的,所以在使用的時候要注意save和restore.

    我在練習這個函數的時候,用的是chrome瀏覽器,但是測試結果卻跟實際應該出現的結果不太一致,開始我以為是寫錯了,檢查數遍卻沒有問題,疑惑之下換了各種瀏覽器來測試,真是囧啊,每個瀏覽器居然都不一樣,連同核心的chrome和safari都不一樣...下面是測試結果.


    chrome


    firefox


    opera


    safari


    firefox官方網站給的實際效果圖

    下面是每一個選項的說明(我表達的可能不太明白,看圖吧):

    source-over 默認,相交部分由后繪制圖形的填充(顏色,漸變,紋理)覆蓋,全部瀏覽器通過

    source-in 只繪制相交部分,由后繪制圖形的填充覆蓋,其余部分透明,webkit兩兄弟沒有通過

    source-out 只繪制后繪制圖形不相交的部分,由后繪制圖形的填充覆蓋,其余部分透明,webkit兩兄弟沒有通過

    source-atop 后繪制圖形不相交的部分透明,相交部分由后繪制圖形的填充覆蓋,全部瀏覽器通過

    destination-over 相交部分由先繪制圖形的填充(顏色,漸變,紋理)覆蓋,全部瀏覽器通過

    destination-in 只繪制相交部分,由先繪制圖形的填充覆蓋,其余部分透明,webkit兩兄弟沒有通過

    destination-out 只繪制先繪制圖形不相交的部分,由先繪制圖形的填充覆蓋,其余部分透明,全部瀏覽器通過

    destination-atop 先繪制圖形不相交的部分透明,相交部分由先繪制圖形的填充覆蓋,webkit兩兄弟沒有通過

    lighter 相交部分由根據先后圖形填充來增加亮度,全部瀏覽器通過

    darker 相交部分由根據先后圖形填充來降低亮度,chrome通過,firefox官方說Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0以后版本移除這個效果-0-,why?safari看似可以,但是無論你什么顏色,它都給填充成黑色,opera無效果

    copy 只繪制后繪制圖形,只有opera通過

    xor 相交部分透明,全部瀏覽器通過

    結果太令人無語了,特別是firefox那個新版本移除,我靠,為嘛啊?chrome和safari難兄難弟,成績一塌糊涂,難道是webkit核心的問題?safari那個填充黑色很有IE6-中png透明問題的風范...opera表現很搶眼,只有一個效果未實現,繼續努力!

    評分及瀏覽器版本:
    Chrome dev 7.0.503.0 : 7/12
    Firefox 3.6.6 : 10/12
    Opera 10.53 : 11/12
    Safari 4.0.3(531.9.1) : 6/12
    posted @ 2014-03-28 15:48 ivaneeo 閱讀(279) | 評論 (0)編輯 收藏

     Logging In to Guacamole

    You can access the web login screen for Guacamole from the server at http://127.0.0.1:8080/guacamole

    The default user is "guacadmin", with the default password of "guacadmin". You can change your password by editing your own user in the administration screen.

    With everything configured correctly you should be able to access the web login screen through Amahi at http://guacamole.yourhdaname.com:8080/guacamole/

    posted @ 2014-03-25 18:36 ivaneeo 閱讀(610) | 評論 (0)編輯 收藏

    僅列出標題
    共67頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 Last 
    主站蜘蛛池模板: 亚洲人配人种jizz| 亚洲一线产品二线产品| 一级片在线免费看| a级片在线免费看| 久久国内免费视频| 国产精品久久亚洲不卡动漫| 1024免费福利永久观看网站| 亚洲国产精品人人做人人爽| 美女裸体无遮挡免费视频网站| 国产18禁黄网站免费观看| 免费人成视频在线观看免费| 中文字幕影片免费在线观看 | 一级毛片免费毛片毛片| 亚洲午夜福利精品无码| 黄床大片免费30分钟国产精品| 亚洲人色婷婷成人网站在线观看| 亚洲日韩国产二区无码| 国产精品色午夜免费视频| 亚洲一卡2卡3卡4卡国产网站| 一级毛片不卡免费看老司机| 亚洲午夜久久久影院| 久草视频在线免费看| 亚洲国产成人精品电影| 啦啦啦在线免费视频| 亚洲色偷偷偷网站色偷一区| 噼里啪啦免费观看高清动漫4| 亚洲熟妇AV一区二区三区浪潮 | 亚洲人成在线免费观看| 亚洲VA中文字幕无码毛片| 精品在线视频免费| 免费观看的毛片手机视频| 亚洲1区1区3区4区产品乱码芒果 | 亚洲午夜国产精品无卡| 欧洲精品免费一区二区三区 | 亚洲H在线播放在线观看H| 免费国产成人高清视频网站| 免费无码作爱视频| 亚洲自偷自偷图片| 精选影视免费在线 | 亚洲无限乱码一二三四区| 四虎影库久免费视频|