MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Hessian 是由 caucho 提供的一個(gè)基于 binary-RPC 實(shí)現(xiàn)的遠(yuǎn)程通訊 library

          問題:
          服務(wù)器端用java,客戶端也必須用java嗎?

          有人說Hessian效率不夠高,還說kryo是個(gè)高效的Java序列化庫,kryonet是一個(gè)基于kryo的RPC庫,使用TCP和UDP通訊,目前不支持http協(xié)議。

          參考:
          http://blog.sina.com.cn/s/blog_56fd58ab0100o4wv.html
          http://otom31.javaeye.com/blog/141043
          http://liuwangxia.javaeye.com/blog/761709

          posted @ 2011-03-03 00:24 leekiang 閱讀(438) | 評(píng)論 (0)編輯 收藏

          http://blog.sina.com.cn/s/blog_56fd58ab0100mrl6.html
          http://java.chinaitlab.com/rcj/791632.html

          posted @ 2011-03-03 00:01 leekiang 閱讀(250) | 評(píng)論 (0)編輯 收藏

          OSI是Open System Interconnect的縮寫,意為開放式系統(tǒng)互聯(lián)。國際標(biāo)準(zhǔn)組織(國際標(biāo)準(zhǔn)化組織)制定了OSI模型。這個(gè)模型把網(wǎng)絡(luò)通信的工作分為7層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。

          IP、ARP等在第三層
          TCP、UDP在第四層
          HTTP、FTP、SMTP、telnet等在第七層

          posted @ 2011-03-02 23:42 leekiang 閱讀(201) | 評(píng)論 (0)編輯 收藏

          MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,MongoDB的數(shù)據(jù)結(jié)構(gòu)非常松散,他的數(shù)據(jù)格式類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。
          主要功能是解決website的操作性數(shù)據(jù)存儲(chǔ),session對(duì)象的存儲(chǔ),數(shù)據(jù)緩存,高效率的實(shí)時(shí)計(jì)數(shù)(比如統(tǒng)計(jì)pv,uv)等

          跟mysqld一樣,一個(gè)mongod服務(wù)可以有建立多個(gè)數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫可以有多張表,這里的表名叫collection,每個(gè)collection 可以存放多個(gè)文檔(document),每個(gè)文檔都以BSON(binary json)的形式存放于硬盤中。跟關(guān)系型數(shù)據(jù)庫不一樣的地方是,它是的以單文檔為單位存儲(chǔ)的,你可以任意給一個(gè)或一批文檔新增或刪除字段,而不會(huì)對(duì)其它文 檔造成影響,這就是所謂的schema-free,這也是文檔型數(shù)據(jù)庫最主要的優(yōu)點(diǎn)。跟一般的key-value數(shù)據(jù)庫不一樣的是,它的value中存儲(chǔ) 了結(jié)構(gòu)信息,所以你又可以像關(guān)系型數(shù)據(jù)庫那樣對(duì)某些域進(jìn)行讀寫、統(tǒng)計(jì)等操作。可以說是兼?zhèn)淞薻ey-value數(shù)據(jù)庫的方便高效與關(guān)系型數(shù)據(jù)庫的強(qiáng)大功能。 出處


          window下配置運(yùn)行mongodb:
          mongodb壓縮包解壓縮到目標(biāo)目錄,比如D:\mongodb,在d:\mongodb目錄下創(chuàng)建db文件夾
          打開cmd窗口,輸入:
          d:\mongodb\bin>mongod.exe –dbpath d:\mongodb\db
          此時(shí)mongod進(jìn)程運(yùn)行起來,
          再打開一個(gè)cmd窗口,輸入:
          d:\mongodb\bin\mongo.exe
          進(jìn)入mongodb命令模式

          常用命令:
          show dbs????????????? 查看有哪些數(shù)據(jù)庫,默認(rèn)會(huì)有admin,local兩個(gè)數(shù)據(jù)庫
          db.serverStatus()???? 查詢服務(wù)器狀態(tài)
          use testdb??????????? 打開數(shù)據(jù)庫,沒有的話立即建一個(gè)
          db.testc.save({a:10}) 向 collection testc 中保存一條信息,沒有collection的話立即建一個(gè)
          db.testc.find()?????? 檢索所有記錄
          show collections????? 顯示所有collection名字


          Mongodb不支持內(nèi)建的事務(wù)(沒有內(nèi)建事務(wù)不意味著完全不能有事務(wù)的功能),對(duì)于某些應(yīng)用也就不適合,例如銀行或會(huì)計(jì)系統(tǒng)。不過對(duì)于大部分的互聯(lián)網(wǎng)應(yīng)用來說并不存在這個(gè)問題。
          適用場景見官方說明 http://www.mongodb.org/display/DOCS/Use+Cases

          MongoDB support map/reduce operations

          MongoDB中對(duì)象的最大尺寸被限制為4MB?

          參考:
          http://www.fushanlang.com/blog/install-windows-mongodb-302/
          http://www.javaeye.com/topic/748322
          http://www.jzxue.com/shujuku/shujukuzonghe/201005/19-3807.html
          http://database.51cto.com/art/201005/198041.htm
          mongodb小結(jié) http://www.wentrue.net/blog/?p=772

          posted @ 2011-03-02 04:27 leekiang 閱讀(552) | 評(píng)論 (0)編輯 收藏

          ICE

          ICE( Internet Communications Engine)是一個(gè)面向?qū)ο蟮闹虚g件平臺(tái)。從根本上講,這意味著ICE提供了一些工具、API和庫用以開發(fā)面向?qū)ο蟮目蛻舳?服務(wù)器的應(yīng)用程序。 ICE應(yīng)用程序適合于用在各種異構(gòu)的環(huán)境中:客戶端和服務(wù)器可以用不同的語言編寫,能夠運(yùn)行在不同的操作系統(tǒng)、不同體系結(jié)構(gòu)的機(jī)器上,可以用不同的網(wǎng)絡(luò)技 術(shù)進(jìn)行通訊(大概10種以上)。這些程序的源代碼可以在不同的開發(fā)環(huán)境之間移植。


          http://www.javaeye.com/topic/599109
          http://masterkey.javaeye.com/blog/182954
          http://masterkey.javaeye.com/blog/182975

          posted @ 2011-03-02 00:15 leekiang 閱讀(254) | 評(píng)論 (0)編輯 收藏

          IBatis 怎樣直接執(zhí)行SQL語句:
          <sqlMap namespace="bbs_define">
          ??? <!– selectBySql –>
          ??? <select id="selectBySql" resultClass="java.util.HashMap"
          ??????? remapResults="true"
          ??????? parameterClass="java.util.HashMap">
          ??????? <isNotEmpty property="sql">$sql$</isNotEmpty>
          ??? </select>??
          ??? <!– updateBySql –>
          ??? <update id="updateBySql" parameterClass="java.util.HashMap">
          ??????? <isNotEmpty property="sql">$sql$</isNotEmpty>
          ??? </update>??
          </sqlMap>

          其中最重要的設(shè)置是“remapResults="true"”。remapResults設(shè)置成true,表示結(jié)果字段可以是不定的。也就是說,這次可返回“ID,NAME”兩個(gè)字段,下次何返回“ID,NAME,TYPE_ID”三個(gè)字段,也可以返回“*”

          用ibatis實(shí)現(xiàn)數(shù)據(jù)切分:
          http://code.google.com/p/shardbatis/
          http://code.google.com/p/ibatis-sharding/
          阿里開源的CobarClient(http://www.javaeye.com/topic/977224)

          參考:
          1,Ibatis的動(dòng)態(tài)SQL http://hz.seraph.blog.163.com/blog/static/981677452008111902458957/
          2,使用ibatis的一點(diǎn)小技巧 http://qa.taobao.com/?p=7371
          3,http://www.ibm.com/developerworks/cn/opensource/os-cn-ibatis/?ca=drs-tp4608
          4,http://itnewsvendor.appspot.com/2303004-ibatis_%E6%95%B4%E7%90%86_batis.html
          5,http://itnewsvendor.appspot.com/4633016-ibatis_2.x_%E6%97%A5%E5%BF%97.html
          6,http://blog.sina.com.cn/s/blog_63f93f510100i16h.html
          7,http://lijingyao8206.javaeye.com/blog/840204
          8, http://qa.taobao.com/?p=7677
          9,http://blog.csdn.net/sunyujia/archive/2008/07/13/2646030.aspx
          10,iBATIS不適合使用的四種情況淺析 http://developer.51cto.com/art/200907/136897.htm
          11,http://blog.sina.com.cn/s/blog_63f93f510100i16h.html
          12,IBatis下DAO單元測試另類思路

          posted @ 2011-02-26 22:47 leekiang 閱讀(752) | 評(píng)論 (0)編輯 收藏

          打印Thread.currentThread().getContextClassLoader(),顯示如下:
          sun.misc.Launcher$AppClassLoader@19821f
          這個(gè)加載器是系統(tǒng)類加載器。ClassLoader.getSystemResourceAsStream("com/config.xml")使用的就是系統(tǒng)類加載器定位資源的。


          ??? //JDK1.6,java.lang.ClassLoader的loadClass(String?name,?boolean?resolve)方法的源碼
          protected?synchronized?Class<?>?loadClass(String?name,?boolean?resolve)
          ????
          throws?ClassNotFoundException
          ????{
          ????
          //?First,?check?if?the?class?has?already?been?loaded
          ????Class?c?=?findLoadedClass(name);
          ????
          if?(c?==?null)?{
          ????????
          try?{
          ????????
          if?(parent?!=?null)?{
          ?????????? //
          如果parent不為null,則調(diào)用parent的loadClass進(jìn)行加載?
          ????????????c?=?parent.loadClass(name,?false);
          ????????}?
          else?{
          ?????????? //
          parent為null,則調(diào)用BootstrapClassLoader進(jìn)行加載
          ????????????c?=?findBootstrapClassOrNull(name);
          ????????}
          ????????}?
          catch?(ClassNotFoundException?e)?{
          ????????????????
          //?ClassNotFoundException?thrown?if?class?not?found
          ????????????????
          //?from?the?non-null?parent?class?loader
          ???????? }
          ???????
          if?(c?==?null)?{
          ????????????
          //?If?still?not?found,?then?invoke?findClass?in?order to?find?the?class.
          ??????????? //
          如果仍然無法加載成功,則調(diào)用自身的findClass進(jìn)行加載
          ????????????c?=?findClass(name);
          ????????}
          ????}
          ????
          if?(resolve)?{
          ????????resolveClass(c);
          ????}
          ????
          return?c;
          ????}

          java中共有三種類型的類加載器:
          ??? 1、引導(dǎo)(bootstrap)類加載器(用來加載java API類),例如加載java.lang.String類
          ??? 2、擴(kuò)展類加載器(就是sun.misc.Launcher$ExtClassLoader,用來加載jre\lib\ext目錄下的jar包)
          ??? 3、系統(tǒng)類加載器(就是sun.misc.Launcher$AppClassLoader,主要用來加載CLASSPATH設(shè)置目錄中的Class)

          創(chuàng)建一個(gè)URLClassLoader,發(fā)現(xiàn)其父加載器(parent,注意不是父類)的類型為sun.misc.Launcher$AppClassLoader,而sun.misc.Launcher$AppClassLoader和sun.misc.Launcher$ExtClassLoader的父類都是URLClassLoader。AppClassLoader的父加載器是ExtClassLoader,ExtClassLoader的父加載器為null,即bootstrap類加載器。

          類加載有個(gè)雙親委托模式,
          AppClassLoader的父加載器是ExtClassLoader ,ExtClassLoader 的父加載器是bootstrap classloader,bootstrap 是C++寫的類加載器,會(huì)負(fù)責(zé)加載java核心類庫,就是jre/lib/rt.jar
          ExtClassLoader會(huì)加載擴(kuò)展類庫,就是jre/lib/ext下的庫。

          雙親委托模式就是子加載器會(huì)先委托父加載器加載,父加載器加載不了子加載器才加載,
          這樣做避免了重復(fù)加載,也加強(qiáng)了java的安全了,防止了惡意加載器去加載核心庫。

          String?name?=?"com.domain.Account";
          ????????????
          ????????????URL?url1?
          =?new?URL("file:/D:/workspace/test/bin/");
          ????????????ClassLoader?cl?
          =?new?URLClassLoader(new?URL[]?{?url1?});
          ????????????Class?c1?
          =?cl.loadClass(name);
          ????????????
          ????????????URL?url2?
          =?new?URL("file:/D:/workspace/test/bin");
          ????????????ClassLoader?cl2?
          =?new?URLClassLoader(new?URL[]?{?url2?});
          ????????????Class?c2?
          =?cl2.loadClass(name);
          ????????????
          ????????????System.out.println(c1
          ==c2);//返回true,原因是都是用系統(tǒng)類加載器AppClassLoader加載的

          注意:
          1,在類A中使用Class.forName加載類B,那么加載類A的類加載器將會(huì)用于加載類B,這樣兩個(gè)類的類加載器是同一個(gè)。
          2,Class.forName("")和classLoader.load("")的區(qū)別主要是前者會(huì)做初始化,后者不會(huì)。見jdk注釋:A?call?to?forName("X")?causes?the?class?named?X?to?be?initialized.? 自己分別用兩種方式裝載一個(gè)帶靜態(tài)代碼的類就知道了。jdbc需要通過Class.forName("")的方式來裝載JDBC驅(qū)動(dòng)程序(例如 Class.forName("com.mysql.jdbc.Driver"),之所以用Class.forName而沒有用 ClassLoader.load(),就是因?yàn)樾枰狫VM完成Driver的初始化工作,而不僅僅是裝載),然后通過一個(gè)統(tǒng)一的工廠類 Java.sql.DriverManager來取得數(shù)據(jù)庫連接,并執(zhí)行各種操作。Class.forName("")不僅load?class而且還保證resolve這個(gè)class,包括常量池解析,類初始化。。。這樣JDBC驅(qū)動(dòng)使用這個(gè)方法,才能保證類里的靜態(tài)方法執(zhí)行,一般驅(qū)動(dòng)類的靜態(tài)方法會(huì)向DriverManager注冊(cè)自己,如果用classloader.load("")就不一定會(huì)resolve這個(gè)class,也就不能保證注冊(cè)驅(qū)動(dòng)類!
          看了com.mysql.jdbc.Driver類的源碼,靜態(tài)代碼就一句:java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver())
          3,

          參考
          1)java系統(tǒng)類加載器AppClassLoader之淺談 http://blog.sina.com.cn/s/blog_4db6a3f101000do1.html
          2)java類加載原理分析 http://gongmingwind.javaeye.com/blog/338366
          3)解讀ClassLoader http://www.javaeye.com/topic/83978
          4)http://xyiyy.javaeye.com/blog/362107

          Retrotranslator是一個(gè)Java字節(jié)碼轉(zhuǎn)換工具。它能夠把用JDK5.0編譯的Java Class轉(zhuǎn)換成可運(yùn)行在JVM1.4

          posted @ 2011-02-24 17:58 leekiang 閱讀(423) | 評(píng)論 (0)編輯 收藏

          xp下運(yùn)行MySQL Workbench 5.2報(bào)錯(cuò):應(yīng)用程序正常初始化(0xc0000135)失敗,原來是要安裝.net framework3.5。


          MySQL和PostgreSQL的情況就很類似Oracle兩種不同的運(yùn)行方式:MySQL是多線程模型,類似Oracle的MTS,每個(gè)數(shù)據(jù)庫線程消 耗很少的資源,數(shù)據(jù)庫服務(wù)器能夠負(fù)載很多的并發(fā)連接線程;而PostgreSQL類似Oracle的Dedicate,每個(gè)數(shù)據(jù)庫進(jìn)程消耗比較多的資源, 負(fù)載能力比較差,但是復(fù)雜查詢的執(zhí)行效果更好。
          特別值得一提的是,在以前的Linux操作系統(tǒng)下,傳統(tǒng)的多線程程序并不能夠表現(xiàn)出比多進(jìn)程程序優(yōu)越得多的性能。這是因?yàn)長inux操作系統(tǒng)不支持內(nèi)核級(jí)多線程,只支持用戶級(jí)多線程,在Linux的內(nèi)核中用輕量級(jí)進(jìn)程來模擬線程,映射到用戶級(jí)線程上。
          但是Linux Kernel 2.6引入的NPTL改變了這一狀況(事實(shí)上我把NPTL看成Linux在服務(wù)器操作系統(tǒng)領(lǐng)域的一次里程碑式的進(jìn)步)。NPTL使得內(nèi)核支持多線程,極大 的提高了多線程程序的性能。關(guān)于NPTL給多線程程序帶來的巨大的性能提升,我這里就有一個(gè)活生生的例子,請(qǐng)看:
          http://forum.iteye.com/viewtopic.php?t=5322
          操作系統(tǒng)Kernel從2.4升級(jí)到2.6以后(主要是增加了NPTL),Java應(yīng)用服務(wù)器的網(wǎng)絡(luò)處理性能提升了5倍之多! (網(wǎng)絡(luò)處理性能代表了高并發(fā)情況下的負(fù)載能力和響應(yīng)能力)
          來源:http://www.iteye.com/topic/13042

          遠(yuǎn)程連接mysql慢的原因可能有:
          1)連接數(shù)太多了,很多都是Sleep進(jìn)程。show processlist
          2)網(wǎng)絡(luò)慢
          3)mysql開啟了dns的反向解析
          4)跨內(nèi)網(wǎng)網(wǎng)段


          遠(yuǎn)程連接mysql速度慢的解決方法:skip-name-resolve取消DNS的反向解析
          在my.cnf中[mysqld]部分加入: skip-name-resolve 。但這樣會(huì)引起一個(gè)問題:連接mysql時(shí),不能使用 localhost連接了,而是要使用ip地址的;如果是按localhost對(duì)用戶賦權(quán)限的話,用戶登錄權(quán)限也要修改一下的。


          MyISAM InnoDB 區(qū)別

          posted @ 2011-02-22 19:05 leekiang 閱讀(572) | 評(píng)論 (0)編輯 收藏

          tinycore 約10M
          puppy linux 約100M

          參考:
          http://dan.febird.net/2009/05/41856-tinycore-linux-grub4dos.html
          http://dan.febird.net/2009/01/35687-u-disk-puppy-linux.html

          posted @ 2011-02-18 00:08 leekiang 閱讀(319) | 評(píng)論 (0)編輯 收藏

          1,java體系結(jié)構(gòu)包括四個(gè)獨(dú)立但相關(guān)的技術(shù):java語言、class文件格式、java的api、java虛擬機(jī)
          2,java虛擬機(jī)是一臺(tái)抽象的計(jì)算機(jī),主要任務(wù)是裝載class文件并且執(zhí)行其中的字節(jié)碼。不同的java虛擬機(jī),其執(zhí)行引擎的實(shí)現(xiàn)可能不一樣。分為軟件實(shí)現(xiàn)和硬件實(shí)現(xiàn)(內(nèi)嵌在芯片),軟件實(shí)現(xiàn)有以下幾種:(1)每次都會(huì)解釋字節(jié)碼(2)即時(shí)編譯,即編譯成本低機(jī)器代碼,緩存起來可以重用(3)自適應(yīng)優(yōu)化器
          3,每一個(gè)類被裝載的時(shí)候,java虛擬機(jī)都監(jiān)視這個(gè)類,看它到底是被啟動(dòng)(bootstrap)類裝載器還是被用戶定義類裝載器裝載。當(dāng)被裝載的類引用了另外一個(gè)類時(shí),虛擬機(jī)就會(huì)使用裝載第一個(gè)類的類裝載器裝載被引用的類。由于java虛擬機(jī)采用這種方式進(jìn)行類的加載,所以被裝載的類默認(rèn)情況下只能看到被同一個(gè)類裝載器裝載的類。通過這種方法,java的體系結(jié)構(gòu)允許在一個(gè)java應(yīng)用程序中建立多個(gè)命名空間。運(yùn)行時(shí)的java程序中的每一個(gè)類裝載器都有它自己的命名空間。
          例子:瀏覽器上的java虛擬機(jī)為不同的網(wǎng)絡(luò)地址創(chuàng)建不同的用戶定義類裝載器,用來裝載不同來源的class文件,這種不同網(wǎng)址的applet就不會(huì)相互影響。
          問題:1)自己寫的類如果調(diào)用了java的api,那么類裝載器是一個(gè)什么樣的情況。同一個(gè)類可能被不同的類裝載器裝載?
          ????? 2)看一下tomcat的類裝載器的實(shí)現(xiàn)
          ?? ?? 3)java的虛擬機(jī)與ruby和python的有何區(qū)別?
          ?? ?? 4)有沒有一種打包工具,把java代碼打包成不需要java虛擬機(jī)的本地可執(zhí)行代碼
          ?? ?? 5)java的動(dòng)態(tài)連接和動(dòng)態(tài)擴(kuò)展指的是什么?
          4,java語言的特殊之處是程序既被編譯又被解釋。首先,編譯器將程序編譯為一種稱之為java字節(jié)碼(bytecode)的與平臺(tái)無關(guān)的中間語言。解釋器分析并運(yùn)行每條java字節(jié)碼指令。編譯只發(fā)生一次;而解釋在每次執(zhí)行程序時(shí)都會(huì)執(zhí)行(通常是如此,具體實(shí)現(xiàn)可能不一樣)。



          12,聲明一個(gè)對(duì)象時(shí)不會(huì)運(yùn)行類的靜態(tài)區(qū)塊,在以下情況下會(huì)運(yùn)行靜態(tài)區(qū)塊:
          ??? 1)new一個(gè)對(duì)象時(shí);
          ??? 2)調(diào)用靜態(tài)方法時(shí);
          ??? 3)Class.forName("類名")


          參考
          1,http://xyiyy.javaeye.com/blog/362092
          2,http://xyiyy.javaeye.com/blog/362107

          posted @ 2011-01-29 21:36 leekiang 閱讀(585) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共54頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 Last 
          主站蜘蛛池模板: 全州县| 泰来县| 普陀区| 获嘉县| 武陟县| 金坛市| 广安市| 高安市| 彝良县| 烟台市| 合山市| 嘉峪关市| 四川省| 宜州市| 揭西县| 宜城市| 攀枝花市| 凤翔县| 依兰县| 轮台县| 施甸县| 上杭县| 襄汾县| 武功县| 新泰市| 曲阳县| 安乡县| 玛纳斯县| 青海省| 东台市| 榆林市| 高邮市| 潢川县| 涿州市| 诸暨市| 凤凰县| 安多县| 新营市| 晋中市| 吉安县| 汉川市|