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

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

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

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

    Hessian 是由 caucho 提供的一個基于 binary-RPC 實現的遠程通訊 library

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

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

    參考:
    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 閱讀(436) | 評論 (0)編輯 收藏

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

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

    OSI是Open System Interconnect的縮寫,意為開放式系統互聯。國際標準組織(國際標準化組織)制定了OSI模型。這個模型把網絡通信的工作分為7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。

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

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

    MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,MongoDB的數據結構非常松散,他的數據格式類似json的bjson格式,因此可以存儲比較復雜的數據類型。
    主要功能是解決website的操作性數據存儲,session對象的存儲,數據緩存,高效率的實時計數(比如統計pv,uv)等

    跟mysqld一樣,一個mongod服務可以有建立多個數據庫,每個數據庫可以有多張表,這里的表名叫collection,每個collection 可以存放多個文檔(document),每個文檔都以BSON(binary json)的形式存放于硬盤中。跟關系型數據庫不一樣的地方是,它是的以單文檔為單位存儲的,你可以任意給一個或一批文檔新增或刪除字段,而不會對其它文 檔造成影響,這就是所謂的schema-free,這也是文檔型數據庫最主要的優點。跟一般的key-value數據庫不一樣的是,它的value中存儲 了結構信息,所以你又可以像關系型數據庫那樣對某些域進行讀寫、統計等操作。可以說是兼備了key-value數據庫的方便高效與關系型數據庫的強大功能。 出處


    window下配置運行mongodb:
    mongodb壓縮包解壓縮到目標目錄,比如D:\mongodb,在d:\mongodb目錄下創建db文件夾
    打開cmd窗口,輸入:
    d:\mongodb\bin>mongod.exe –dbpath d:\mongodb\db
    此時mongod進程運行起來,
    再打開一個cmd窗口,輸入:
    d:\mongodb\bin\mongo.exe
    進入mongodb命令模式

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


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

    MongoDB support map/reduce operations

    MongoDB中對象的最大尺寸被限制為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小結 http://www.wentrue.net/blog/?p=772

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

    ICE

    ICE( Internet Communications Engine)是一個面向對象的中間件平臺。從根本上講,這意味著ICE提供了一些工具、API和庫用以開發面向對象的客戶端-服務器的應用程序。 ICE應用程序適合于用在各種異構的環境中:客戶端和服務器可以用不同的語言編寫,能夠運行在不同的操作系統、不同體系結構的機器上,可以用不同的網絡技 術進行通訊(大概10種以上)。這些程序的源代碼可以在不同的開發環境之間移植。


    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 閱讀(251) | 評論 (0)編輯 收藏

    IBatis 怎樣直接執行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>

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

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

    參考:
    1,Ibatis的動態SQL http://hz.seraph.blog.163.com/blog/static/981677452008111902458957/
    2,使用ibatis的一點小技巧 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 閱讀(748) | 評論 (0)編輯 收藏

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


    ??? //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,則調用parent的loadClass進行加載?
    ????????????c?=?parent.loadClass(name,?false);
    ????????}?
    else?{
    ?????????? //
    parent為null,則調用BootstrapClassLoader進行加載
    ????????????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.
    ??????????? //
    如果仍然無法加載成功,則調用自身的findClass進行加載
    ????????????c?=?findClass(name);
    ????????}
    ????}
    ????
    if?(resolve)?{
    ????????resolveClass(c);
    ????}
    ????
    return?c;
    ????}

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

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

    類加載有個雙親委托模式,
    AppClassLoader的父加載器是ExtClassLoader ,ExtClassLoader 的父加載器是bootstrap classloader,bootstrap 是C++寫的類加載器,會負責加載java核心類庫,就是jre/lib/rt.jar
    ExtClassLoader會加載擴展類庫,就是jre/lib/ext下的庫。

    雙親委托模式就是子加載器會先委托父加載器加載,父加載器加載不了子加載器才加載,
    這樣做避免了重復加載,也加強了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,原因是都是用系統類加載器AppClassLoader加載的

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

    參考
    1)java系統類加載器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是一個Java字節碼轉換工具。它能夠把用JDK5.0編譯的Java Class轉換成可運行在JVM1.4

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

    xp下運行MySQL Workbench 5.2報錯:應用程序正常初始化(0xc0000135)失敗,原來是要安裝.net framework3.5。


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

    遠程連接mysql慢的原因可能有:
    1)連接數太多了,很多都是Sleep進程。show processlist
    2)網絡慢
    3)mysql開啟了dns的反向解析
    4)跨內網網段


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


    MyISAM InnoDB 區別

    posted @ 2011-02-22 19:05 leekiang 閱讀(568) | 評論 (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 閱讀(315) | 評論 (0)編輯 收藏

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



    12,聲明一個對象時不會運行類的靜態區塊,在以下情況下會運行靜態區塊:
    ??? 1)new一個對象時;
    ??? 2)調用靜態方法時;
    ??? 3)Class.forName("類名")


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

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

    僅列出標題
    共54頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 Last 
    主站蜘蛛池模板: 激情亚洲一区国产精品| 美女巨胸喷奶水视频www免费| 精品久久久久久久免费人妻 | 免费观看亚洲人成网站| 毛茸茸bbw亚洲人| 69免费视频大片| 在线亚洲v日韩v| 久久亚洲精品成人无码网站| 国产网站在线免费观看| 国产精品免费一区二区三区四区| 亚洲中文字幕久久精品无码VA| 国产成人精品日本亚洲专区 | 日韩亚洲国产高清免费视频| 国产成人综合亚洲绿色| 亚洲精品高清视频| 亚洲成人高清在线| 在线看免费观看AV深夜影院| 一个人看的免费视频www在线高清动漫 | 亚洲午夜精品一区二区公牛电影院| 国产免费人成在线视频| 久久久久av无码免费网| 一级做a爰片久久毛片免费看 | 亚洲精品岛国片在线观看| 每天更新的免费av片在线观看 | 亚洲一级毛片在线观| 中文字幕在线亚洲精品| 午夜毛片不卡高清免费| 免费人成视频在线观看网站| 久香草视频在线观看免费| 一本色道久久88亚洲精品综合| 亚洲av网址在线观看| 亚洲精品偷拍视频免费观看 | 久久一区二区免费播放| 亚洲av无码无线在线观看| 亚洲精品影院久久久久久| 亚洲中久无码永久在线观看同| 日韩午夜免费视频| 亚洲欧洲免费无码| 久久免费看黄a级毛片| 久久99免费视频| 中文在线观看国语高清免费|