摘要: 本文介紹了解決Redis數(shù)據(jù)庫響應(yīng)延遲問題的方法,將有助于你找出Redis 響應(yīng)延遲的問題所在。
閱讀全文
posted @
2014-07-22 17:11 zhangxl 閱讀(1837) |
評(píng)論 (0) |
編輯 收藏
摘要: 豁達(dá)是正確樂觀的面對(duì)失敗的系統(tǒng)。不需要過多的擔(dān)心,需要一種去說那又怎樣的能力。因此架構(gòu)的設(shè)計(jì)是如此的重要。許多優(yōu)秀的系統(tǒng)沒有進(jìn)一步成長的能力,我們應(yīng)該做的是使用其他的系統(tǒng)去共同分擔(dān)工作。 Redis是 其中一
閱讀全文
posted @
2014-07-22 15:27 zhangxl 閱讀(388) |
評(píng)論 (0) |
編輯 收藏
摘要: 在redis服務(wù)器中的分區(qū)主要包含兩個(gè)目標(biāo):
通過利用多臺(tái)計(jì)算機(jī)內(nèi)存的和值,允許我們構(gòu)造更大的數(shù)據(jù)庫。
通過多核和多臺(tái)計(jì)算機(jī),允許我們擴(kuò)展計(jì)算能力;通過多臺(tái)計(jì)算機(jī)和網(wǎng)絡(luò)適配器,允許我們擴(kuò)展網(wǎng)絡(luò)帶寬。
閱讀全文
posted @
2014-07-14 12:17 zhangxl 閱讀(673) |
評(píng)論 (1) |
編輯 收藏
摘要: 二叉樹是數(shù)據(jù)結(jié)構(gòu)世界中具有重要地位的一種數(shù)據(jù)結(jié)構(gòu)。它同時(shí)具備有序數(shù)組和鏈表的優(yōu)點(diǎn),同時(shí)又彌補(bǔ)了有序數(shù)組插入數(shù)據(jù)、鏈表查找的缺點(diǎn)。同時(shí)也是各種面試中常見的問題。現(xiàn)通過java實(shí)現(xiàn)二叉樹,加深對(duì)二叉樹的理解。
閱讀全文
posted @
2014-04-18 18:34 zhangxl 閱讀(336) |
評(píng)論 (0) |
編輯 收藏
摘要: 對(duì)于MongoDB collection下的文檔而言,在文件大于16MB時(shí),我們應(yīng)該使用GridFS。在一些解決方案中,使用MongoDB的GridFS存儲(chǔ)大文件,比使用系統(tǒng)級(jí)別的文件系統(tǒng)更便利。當(dāng)文件系統(tǒng)的目錄對(duì)文件數(shù)量有限制時(shí),你應(yīng)該使用GridFS來存儲(chǔ)需要的盡可能多的文件;
閱讀全文
posted @
2013-04-09 18:41 zhangxl 閱讀(508) |
評(píng)論 (0) |
編輯 收藏
語法
jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP
參數(shù)
option 參數(shù)是單一的,緊跟在命令后面。
pid 要被映射的進(jìn)程。必須是java進(jìn)程。用jps可以獲得java進(jìn)程列表
executable 產(chǎn)生核心轉(zhuǎn)儲(chǔ)的可執(zhí)行java代碼
core 要被映射的核心文件
remote-hostname-or-IP 遠(yuǎn)程調(diào)試服務(wù)器的域名或者ip地址(看jsadebugd)
server-id 可選唯一id,如果多個(gè)服務(wù)器運(yùn)行在同一個(gè)遠(yuǎn)程主機(jī)
描述
是復(fù)制共享對(duì)象的內(nèi)存映射、給定進(jìn)程的堆內(nèi)存、核心文件、遠(yuǎn)程調(diào)試服務(wù)器。如果給定的進(jìn)程是再64的VM,你需要制定參數(shù),例如:
jmap -J-d64 -heap pid
注意:這個(gè)工具在未來的JDK里可能不支持或者不出現(xiàn)。在windows系統(tǒng)里沒有dbgeng.dll, 需要安裝'Debugging Tools for Windows'來運(yùn)行這些工具。同時(shí)PATH環(huán)境變量必須包含被目標(biāo)進(jìn)程或者崩潰導(dǎo)出文件位置鎖使用的jvm.dll路徑。例如:
set PATH=\jre\bin\client;%PATH%
OPTIONS
<no option> 當(dāng)沒有選項(xiàng),jmap復(fù)制共享對(duì)象映射。目標(biāo)虛擬機(jī)中的每一個(gè)分享對(duì)象、開始地址、映射大小、完整路徑被復(fù)制。這類似于Solaris中的pmap工具。
-dump:[live,]format=b,file=<filename> 把java堆導(dǎo)出成hprof二進(jìn)制格式文件。live子選項(xiàng)是可選的。如果指定,只有堆中的活對(duì)象被導(dǎo)出。瀏覽堆鏡像,你可以使用jhat。
-finalizerinfo 復(fù)制正在等待回收的對(duì)象信息
-heap 復(fù)制一個(gè)堆得概要。使用的GC算法堆配置,使用代的大小。
-histo[:live] 復(fù)制一個(gè)堆得柱狀圖。每個(gè)Java類,對(duì)象個(gè)數(shù),內(nèi)存大小(byte),類全路徑。VM的內(nèi)部類用*為前綴。如果live子選項(xiàng)被指定,只有活對(duì)象被計(jì)數(shù)。
-permstat 打印堆中永生代的類加載器的寬泛統(tǒng)計(jì)。每個(gè)加載器的名字,活性,地址,父加載器,它加載的類的大小。另外,駐留字符串的大小和數(shù)量。
-F 強(qiáng)制。使用jmap -dump 或者 jmap -histo 選項(xiàng)時(shí),如果pid沒有響應(yīng)。在這個(gè)模式下live子選項(xiàng)不支持。
-h 幫助
-help 幫助
-J<flag> java虛擬機(jī)選項(xiàng)
posted @
2013-03-18 17:32 zhangxl 閱讀(1127) |
評(píng)論 (0) |
編輯 收藏
摘要: 使用java的人都知道,如果覆蓋了Object的equals方法,那么必須要覆蓋hashCode方法,并且如果兩個(gè)對(duì)象用equals方法比較返回true,那么這兩個(gè)對(duì)象hashCode返回的值也必須是相等的,并且對(duì)于同一個(gè)對(duì)象,equals方法需要比較的屬性值沒有被修改,那么每次調(diào)用hashCode返回的值應(yīng)該是一致的。 &nb...
閱讀全文
posted @
2012-08-16 18:39 zhangxl 閱讀(423) |
評(píng)論 (0) |
編輯 收藏
摘要: HashMap內(nèi)部有一個(gè)Entry數(shù)組,可以稱之為hash table。HashMap的默認(rèn)構(gòu)造值為初始容量為16,負(fù)載因子為0.75,閥值(初始容量*負(fù)載因子)為12。其默認(rèn)構(gòu)造子如下:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeH...
閱讀全文
posted @
2012-02-13 14:42 zhangxl 閱讀(420) |
評(píng)論 (0) |
編輯 收藏
摘要: java nio 實(shí)現(xiàn) Ping命令行
閱讀全文
posted @
2012-02-07 16:53 zhangxl 閱讀(915) |
評(píng)論 (0) |
編輯 收藏
摘要: AbstractApplicationContext繼承于DefaultResourceLoader,因此AbstractApplicationContext也具備了資源加載的功能。同時(shí)ApplicationContext擴(kuò)展了ResourcePatternResolver接口,所以ApplicationContext的實(shí)現(xiàn)類對(duì)外表現(xiàn)的Loader應(yīng)該為ResourcePatternResolver。通俗來講,就是說容器具備資源模式解釋的功能,并能對(duì)一資源位置進(jìn)行加載
閱讀全文
posted @
2012-02-07 11:57 zhangxl 閱讀(510) |
評(píng)論 (0) |
編輯 收藏
摘要: Spring框架提供基于依賴注入的IOC容器,完成對(duì)象的構(gòu)造、依賴注入、對(duì)象聲明周期維護(hù)等功能,下面將以FileSystemXmlApplicationContext為例來分析Spring IOC容器的實(shí)現(xiàn)。
閱讀全文
posted @
2012-02-07 11:10 zhangxl 閱讀(722) |
評(píng)論 (0) |
編輯 收藏
摘要:
Apache Benchmark簡稱為ab,是apache自帶的用于HTTP Server測(cè)試的工具。它可以接受單一的URL,然后重復(fù)地按照指定的多個(gè)獨(dú)立線程的方式加載,并使用不同的命令行參數(shù)控制訪問的次數(shù)、最大的并發(fā)訪問數(shù)等。另外一項(xiàng)不錯(cuò)的功能是可以輸出比較詳細(xì)的報(bào)告。
語法 ab [ -A auth-userna...
閱讀全文
posted @
2011-09-15 16:09 zhangxl 閱讀(3224) |
評(píng)論 (1) |
編輯 收藏
摘要: 里面采用java NIO進(jìn)行通信管理,以前也了解過一些關(guān)于這方面的知識(shí)但是都不太系統(tǒng),最近兩天抽時(shí)間對(duì)這塊進(jìn)行一下掃盲。我主要參考以下兩篇文章,個(gè)人認(rèn)為這兩篇文章還是不錯(cuò)的入門級(jí)文章,講的比較通俗易懂。
閱讀全文
posted @
2011-06-30 16:24 zhangxl 閱讀(2792) |
評(píng)論 (1) |
編輯 收藏
下載安裝包:amoeba-mysql-binary-2.1.0-RC5.tar.gz
下載源代碼:http://amoeba.googlecode.com/svn/trunk
1.定位Amoeba啟動(dòng)類
打開amoeba.bat,經(jīng)過分析,amoeba的啟動(dòng)是通過classworlds進(jìn)行加載的,關(guān)于classworlds請(qǐng)參見http://classworlds.codehaus.org/launchusage.html
在amoeba.bat中是通過以下語句來定位classworlds啟動(dòng)應(yīng)用的配置項(xiàng)的
set DEFAULT_OPTS=%DEFAULT_OPTS% "-Dclassworlds.conf=%AMOEBA_HOME%\bin\amoeba.classworlds"


以下是amoeba.classworlds的內(nèi)容
main is com.meidusa.amoeba.server.AmoebaProxyServer from amoeba

[amoeba]

load $
{amoeba.home}/lib/**//*.jar
load ${amoeba.home}/lib/classes


意思就是amoeba應(yīng)用是從com.meidusa.amoeba.server.AmoebaProxyServer開始啟動(dòng)的。
接下來把a(bǔ)moeba下的源文件和amoeba-mysql下的源文件導(dǎo)入到項(xiàng)目中,以及相關(guān)jar;
為了能在bebug模式下啟動(dòng),建議在debug-arguments下增加start arguments;
posted @
2011-06-24 17:08 zhangxl 閱讀(1386) |
評(píng)論 (0) |
編輯 收藏
上網(wǎng)找了一些資料,主要就是關(guān)于跨平臺(tái)的一些細(xì)節(jié):
1 程序設(shè)計(jì)的信息編碼要注意,一般要采用 ASCII碼字符集,并不是所有的操作系統(tǒng)都支持Unicode碼。
后來研究一下,還是UTF-8。
2 程序中不要硬性編碼與平臺(tái)相關(guān)的任何常量,比如行分隔符、文件分隔符、路徑分隔符等。
在unix和mac 中是“/”,在windows里是“\”。
如要用這些常量,要使用 Java.util.properties 類的getProperty 方法。
如: Java.util.properties.getProperty("file.seParator")
可以獲得文件分隔符,getProperty("line.seParator") 返回行分隔符。
getProperty("path.seParator") 返回路徑分隔符
3 編寫跨平臺(tái)網(wǎng)絡(luò)程序時(shí),不要使用 Java.net.InetAddress類的getHostName方法得到主機(jī)名,
因?yàn)椴煌钠脚_(tái)的主機(jī)名格式不同。最好使用 getAddress得到格式相同的IP地址。另外,
程序中的所有的主機(jī)都要換成IP地址。
4 如寫GUI程序,在使用AWT組件時(shí)不能硬性設(shè)置組件的大小和為止,而應(yīng)該使用JAVA的布局管理器(Layout manager)
來設(shè)置。
5 不同的操作系統(tǒng),不同的機(jī)器,系統(tǒng)支持的顏色和屏幕的大小和分辨率都不同,如何獲得這些屬性,
使用 Java.awt.systemcolor 類可以獲得需要的顏色,如該類的 inactiveCaption 就是窗口邊框
活動(dòng)標(biāo)題背景色 Menu是菜單背景色,使用Java.awt.Tookit 的 getScreenResolution可以以
“像素每英寸”為單位顯示分辨率。
該類 getScreenSize 可以得到屏幕大小(英寸), LoadSystemcolors 可以列出所有的系統(tǒng)顏色。
6 程序中使用任何一個(gè)方法時(shí),要詳細(xì)查看文檔,確保,使用的方法不是文檔已經(jīng)申明為過時(shí)的方法,
也不是文檔中未標(biāo)明的隱含方法。
posted @
2009-08-19 11:02 zhangxl 閱讀(328) |
評(píng)論 (0) |
編輯 收藏
上網(wǎng)找了一些資料,主要就是關(guān)于跨平臺(tái)的一些細(xì)節(jié):
1 程序設(shè)計(jì)的信息編碼要注意,一般要采用 ASCII碼字符集,并不是所有的操作系統(tǒng)都支持Unicode碼。
后來研究一下,還是UTF-8。
2 程序中不要硬性編碼與平臺(tái)相關(guān)的任何常量,比如行分隔符、文件分隔符、路徑分隔符等。
在unix和mac 中是“/”,在windows里是“\”。
如要用這些常量,要使用 Java.util.properties 類的getProperty 方法。
如: Java.util.properties.getProperty("file.seParator")
可以獲得文件分隔符,getProperty("line.seParator") 返回行分隔符。
getProperty("path.seParator") 返回路徑分隔符
3 編寫跨平臺(tái)網(wǎng)絡(luò)程序時(shí),不要使用 Java.net.InetAddress類的getHostName方法得到主機(jī)名,
因?yàn)椴煌钠脚_(tái)的主機(jī)名格式不同。最好使用 getAddress得到格式相同的IP地址。另外,
程序中的所有的主機(jī)都要換成IP地址。
4 如寫GUI程序,在使用AWT組件時(shí)不能硬性設(shè)置組件的大小和為止,而應(yīng)該使用JAVA的布局管理器(Layout manager)
來設(shè)置。
5 不同的操作系統(tǒng),不同的機(jī)器,系統(tǒng)支持的顏色和屏幕的大小和分辨率都不同,如何獲得這些屬性,
使用 Java.awt.systemcolor 類可以獲得需要的顏色,如該類的 inactiveCaption 就是窗口邊框
活動(dòng)標(biāo)題背景色 Menu是菜單背景色,使用Java.awt.Tookit 的 getScreenResolution可以以
“像素每英寸”為單位顯示分辨率。
該類 getScreenSize 可以得到屏幕大小(英寸), LoadSystemcolors 可以列出所有的系統(tǒng)顏色。
6 程序中使用任何一個(gè)方法時(shí),要詳細(xì)查看文檔,確保,使用的方法不是文檔已經(jīng)申明為過時(shí)的方法,
也不是文檔中未標(biāo)明的隱含方法。
posted @
2009-08-19 11:01 zhangxl 閱讀(394) |
評(píng)論 (0) |
編輯 收藏
今天在看完xtree.js代碼后,發(fā)現(xiàn)一個(gè)問題。在執(zhí)行javascript的document.write(obj)方法時(shí),如果obj實(shí)現(xiàn)了prototype的toString()方法,document.wirte方法將能自動(dòng)調(diào)用obj的toString()方法。代碼如下:
???/*----------?? 樹構(gòu)造代碼 ---------*/
??????? if (document.getElementById) {
?????????? var tree = new WebFXTree('Root');
?????????? tree.setBehavior('classic');
?????????? var a = new WebFXTreeItem('1');
?????????? tree.add(a);
?????????? var b = new WebFXTreeItem('1.1');
?????????? a.add(b);
????????? b.add(new WebFXTreeItem('1.1.1'));
????????? b.add(new WebFXTreeItem('1.1.2'));
????????? b.add(new WebFXTreeItem('1.1.3'));
????????? var f = new WebFXTreeItem('1.1.4');
????????? b.add(f);
????????
document.write(tree);
/*------------------ xtree.js代碼片段 ----------*/
WebFXTree.prototype.toString = function() {
alert("it's here!");
?var str = "<div id=\"" + this.id + "\" ondblclick=\"webFXTreeHandler.toggle(this);\" class=\"webfx-tree-item\" onkeydown=\"return webFXTreeHandler.keydown(this, event)\">" +
??"<img id=\"" + this.id + "-icon\" class=\"webfx-tree-icon\" src=\"" + ((webFXTreeHandler.behavior == 'classic' && this.open)?this.openIcon:this.icon) + "\" onclick=\"webFXTreeHandler.select(this);\">" +
??"<a href=\"" + this.action + "\" id=\"" + this.id + "-anchor\" onfocus=\"webFXTreeHandler.focus(this);\" onblur=\"webFXTreeHandler.blur(this);\"" +
??(this.target ? " target=\"" + this.target + "\"" : "") +
??">" + this.text + "</a></div>" +
??"<div id=\"" + this.id + "-cont\" class=\"webfx-tree-container\" style=\"display: " + ((this.open)?'block':'none') + ";\">";
?var sb = [];
?for (var i = 0; i < this.childNodes.length; i++) {
??sb[i] = this.childNodes[i].toString(i, this.childNodes.length);
?}
?this.rendered = true;
?return str + sb.join("") + "</div>";
};
經(jīng)過跟蹤,證實(shí)在執(zhí)行document.write(tree)時(shí),調(diào)用了
WebFXTree.prototype.toString 方法。
posted @
2009-08-13 16:20 zhangxl 閱讀(1013) |
評(píng)論 (1) |
編輯 收藏