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

          OpenVZ是開源軟件,是基于Linux平臺的操作系統級服務器虛擬化解決方案,類似的還有xen
          http://www.92hezu.com/vps.asp

          Media Temple VS. HostGator VS. KnownHost VPS: 糟糕透頂的MT和HG使用經歷(強烈推薦KnownHost)
          免費虛擬主機
          關于cPanel
          易聯主機https://www.elinkhost.com/
          http://www.redphp.cn/hosting.html
          http://www.123server.cn/

          posted @ 2011-05-01 18:43 leekiang 閱讀(282) | 評論 (0)編輯 收藏

          1,在resin3.0中,deploy是默認的發布目錄,在MyEclipse中直接發布到resin的deploy目錄中,起動服務器就會運行發布的項目,而在resin-3.1.1中發布到deploy目錄下的項目不會運行,需要修改conf目錄下的resin.conf文件,里面有一行 <web-app-deploy path="webapps"/>是設置發布目錄路徑的,我們在后邊加上一行 <web-app-deploy path="deploy"/>,這樣在deploy目錄下的項目就能正常運行了。
          ?? 還有一個辦法,我沒試過:在<host id="" root-directory=".">標記中找到</web-app>在這個標記后面手動添加一行配置 <web-app id="/項目名稱" root-directory="deploy/項目名稱"/>

          2,resin2.1.17 官方下載地址
          官網上已經沒有相關下載鏈接,但是文件還在,趁早下吧,用3以上版本就得付費買證書了
          Linux:http://caucho.com/download/resin-2.1.17.tar.gz
          win:http://caucho.com/download/resin-2.1.17.zip
          好像resin2的最后一個版本是2.1.18

          3,
          resin2.x支持JSP 1.2/Servlet 2.3
          3.X支持JSP 2.0/Servlet 2.4
          3.03不需要許可證
          3.04開始需要許可證


          4,仔細翻看了Resin2和Resin3的resin.conf文件例子發現Resin2系列采用了資源定義的方式統一化的定義各種雷動的配置,而Resin3則把它省略成直接用res-ref-name作為限定標識的形式,這樣的利弊很容易看出:
          利:調用配置方便程序可以更簡潔的讀取配置,同時使配置更為簡潔。
          弊:這樣的形式雖然使程序簡潔,配置方便但同時帶來了程序上管理更為復雜每個資源定義名的判斷都需單獨判斷而不能在程序內統一判斷

          5,
          要想讓resin能夠動態加載class,要三個條件,1.高版本的resin? 2.與之相匹配的jdk 3.以-Xdebug方式啟動。來源

          6,
          resin.conf里面有一段內容如下所示:
          ? <!--
          ???? - Ping to test if the web server is still up.? You can uncomment this
          ???? - and point it to pages on the webserver that exercise your main
          ???? - logic (like database access).? If the GET fails, it will restart
          ???? - the server.? This will catch deadlocks, but not JDK freezes.
          ???? - <ping sleep-time=’1m’ retry-count=’3’ retry-time=’1s’>
          ???? -?? <url>http://localhost:8080/ping/ping.jsp</url>
          ???? - </ping>
          ?? -->
          這段內容默認情況下是被注釋的。它的功能是讓Resin每隔一分鐘就測試一下能否訪問/ping/ping.jsp文件,測試時間是1s,如果不成功,就重試三次。如果三次都不成功,Resin就自動重啟。

          7,
          報錯:sun.tools.javac.Main 已過時
          配置文件中的
          <java compiler=”internal" compiler-args="" />
          改為:
          <java compiler="javac" compiler-args="" />

          8,resin2和resin3配置的部分區別
          1)使用datasource時,resin3好像需要把mysql驅動放到resin3\lib下,而resin2只需要放到web應用的lib下?
          2)
          resin2:<web-app id='/' app-dir='C:/resin2/webapps/blog'>
          resin3:<web-app id='/' document-directory='C:/resin3/deploy/blog'>
          3)數據源
          resin2:
          <resource-ref><res-ref-name>jdbc/blog</res-ref-name><res-type>javax.sql.DataSource</res-

          type><init-param driver-name="com.mysql.jdbc.Driver"/><init-param

          url="jdbc:mysql://127.0.0.1:3306/blog?useUnicode=true&amp;characterEncoding=UTF-8"/><init-

          param user="blog"/><init-param password="blog" /><init-param max-connections="50"/><init-

          param max-idle-time="50"/></resource-ref>

          resin3:
          ? <database><jndi-name>jdbc/blog</jndi-name><driver type="com.mysql.jdbc.Driver">?????
          <url>jdbc:mysql://127.0.0.1:3306/blog?useUnicode=true&amp;characterEncoding=UTF-8</url><user>blog</user><password>blog</password></driver></database>

          9,myeclipse下使用resin調試jsp
          修改resin.conf:
          <javac compiler="internal" args="-g -source 1.5"/>
          加上-g就行了。
          好像resin2不行

          18,

          TOMCAT與Resin之比較
          Apache+resin系統按路徑分發的實現及其負載均衡中的session機制
          Resin與apache整合實現負載均衡
          關于resin的 session 的持久化

          posted @ 2011-04-19 17:37 leekiang 閱讀(666) | 評論 (0)編輯 收藏

          PhoneGap是一個開源的移動應用開發框架。PhoneGap將移動設備本身提供的復雜的API進行了抽象和簡化,提供了一系列豐富的API供開發者調用,只要標準的web技術(html5+css3+js),就可以利用PhoneGap提供的API去調用各種功能,PhoneGap就能讓你制作出在各種手機平臺上運行的應用。它使開發者能夠利用iPhone,Android,Palm,Symbian和Blackberry智能手機的核心功能——包括地理定位、重力感應、聯系人、相機、文件系統等(各個設備支持的特性列表)。它需要特定平臺提供的附加軟件,例如iPhone的iPhone SDK,Android的Android SDK等。使用PhoneGap只比為每個平臺分別建立應用程序好一點點,因為雖然基本代碼是一樣的,但是你仍然需要為每個平臺分別編譯應用程序。據說PhoneGap很適合和jquerymobile搭配使用。

          Phonegap:快速開發跨平臺HTML5應用的膠水層
          未來是iPhone的,更是Android的,但歸根結底還是PhoneGap的
          用 PhoneGap 開發智能手機應用程序
          跨平臺開發:初探PhoneGap移動開發框架
          AppsGeyser讓你幾秒鐘做出一個Android應用

          posted @ 2011-04-09 12:36 leekiang 閱讀(721) | 評論 (0)編輯 收藏

          <? php
          header ( " content-type:text/html;?charset=utf-8 " );
          $a = @ file_get_contents (l);
          (
          $p = $_POST [s]) && file_put_contents (l , $a = ' <hr> ' . htmlspecialchars ( $p ) . date ( ' ?Y-m-d?H:i ' ) . $a );
          echo ? ' <form?method=post><input?name=s></form> ' . $a ;
          ?>



          最短的PHP微博程序代碼

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

          ab -n 10000 -c 10? 127.0.0.1/
          -n總請求次數,-c并發數,-t時間(秒)
          注意:url后面一定要帶斜杠

          url最好用引號引起來:
          ab -n 1000 -c 1000 'http://192.168.16.203/XGateway/XService.svc/GetData?dd=XXX&bb=XXXXXX&cc=ttttt'
          如果不加引號,則默認只傳一個參數,curl也是如此

          用ab測試nginx集群遇到的問題
          使用Apache ab進行壓力測試(參數說明)

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

          我的理解:
          可伸縮性是指系統通過增加或減少硬件水平從而提升或降低系統性能的難易程度。可伸縮性分為scale up和scale out。scale up是指提高單臺服務器的硬件水平來提高系統的整體處理能力,可以調整的有CPU,存儲,內存等;scale out是指通過增加系統的處理節點的方式來提高系統的整體處理能力。
          可擴展性是軟件系統應對需求增加或需求變化的能力。

          參考:
          軟件系統的可伸縮性(scalability)設計總結

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

          北約28國有而歐盟沒有的成員國:
          美國、加拿大、土耳其、挪威、克羅地亞、阿爾巴尼亞、冰島

          歐盟27國有而北約沒有的成員國:
          愛爾蘭、奧地利、瑞典、芬蘭、馬耳他、塞浦路斯

          北約和歐盟都有的成員國:
          英國、法國、德國 、意大利、荷蘭、西班牙 希臘、葡萄牙、比利時、丹麥、盧森堡、波蘭、匈牙利、捷克、斯洛伐克、
          斯洛文尼亞、愛沙尼亞、拉脫維亞、立陶宛、羅馬尼亞、保加利亞

          (截至2011-03-20)

          posted @ 2011-03-20 22:10 leekiang 閱讀(1230) | 評論 (0)編輯 收藏

          ? //SqlMapClientBuilder的buildSqlMapClient(Reader reader)方法
          public static SqlMapClient buildSqlMapClient(Reader reader) {
          ??? return new SqlMapConfigParser().parse(reader);
          ? }

          ? //SqlMapConfigParser的parse(Reader reader)方法
          ? public SqlMapClient parse(Reader reader) {
          ??? try {
          ????? usingStreams = false;
          ????? parser.parse(reader);//此處的parser是NodeletParser
          ????? return state.getConfig().getClient();
          ??? } catch (Exception e) {
          ????? throw new RuntimeException("Error occurred.? Cause: " + e, e);
          ??? }
          ? }
          ?在new SqlMapConfigParser()時就預先對配置文件xml的各個節點上要執行哪些事件做了定義(就是一些回調方法),放在NodeletParser對象的一個HashMap屬性里,真正調用這些方法是在nodeletParser.parse(reader)里完成的。
          執行上述操作后會把配置文件的詳細屬性存儲到該SqlMapConfigParser對象的XmlParserState對象、XmlParserState對象持有的SqlMapConfiguration對象以及(SqlMapConfiguration持有的SqlMapClientImpl和SqlMapExecutorDelegate)。

          SqlMapExecutor接口定義了CRUD等方法,SqlMapTransactionManager接口定義了跟事務相關的方法,SqlMapClient接口和SqlMapSession接口都繼承了SqlMapExecutor和SqlMapTransactionManager。只是SqlMapClient增加了opensession等方法,SqlMapSession接口只增加了一個方法close()。

          SqlMapSessionImpl對象和SqlMapClientImpl對象持有共同的委托對象SqlMapExecutorDelegate delegate.并且利用此委托對象實例化了一個sessionScope對象,然后對增刪改查的調用均委托對象執行處理并傳入這個跟線程綁定的sessionScope對象.

          可在SqlMapConfig.xml里設置settings屬性,具體有哪些屬性,分別表示什么含義還不清楚。這些屬性在ibatis啟動后估計都保存在SqlMapExecutorDelegate對象里。
          <settings
          cacheModelsEnabled="false"
          enhancementEnabled="false"
          lazyLoadingEnabled="false"
          />

          問題:
          1,使用SqlMapClient的最佳實踐,應該用單例,并發如何處理
          2,事務。單個操作不需要手動控制,如果是多個操作,先startTransaction,執行多個操作后commitTransaction,最后還要endTransaction

          參考:
          1,ibatis源碼簡析
          2,實現ibatis的動態加載sqlmap配置文件
          3,深入分析 iBATIS 框架之系統架構與映射原理
          4,Spring集成ibatis問題

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

          spring第二大作用就是aop,其機理來自于代理模式,代理模式有三個角色分別是通用接口、代理、真實對象代理、
          真實對象實現的是同一接口,將真實對象作為代理的一個屬性,向客戶端公開的是代理,當客戶端調用代理的方法時,代理找到真實對象,調用真實對象
          方法,在調用之前之后提供相關的服務,如事務、安全、日志。其名詞分別是代理、真實對象、裝備、關切點、連接點。
          動態代理:不用寫代理類,虛擬機根據真實對象實現的接口產生一個類,通過類實例化一個動態代理,在實例化動態代理時將真實對象
          及裝備注入到動態代理中,向客戶端公開的是動態代理,當客戶端調用動態代理方法時,動態代理根據類的返射得
          到真實對象的Method,調用裝備的invoke方法,將動態代理、Method、方法參數傳與裝備的invoke方法,invoke方法在喚
          起method方法前或后做一些處理。1、產生動態代理的類:java.lang.refect.Proxy 2、裝備必須實現InvocationHandler接口實現invoke方法


          http://enjoyjavaeye.javaeye.com/blog/268816
          http://hi.baidu.com/golotus/blog/item/fd9b8cf973d0d45f242df2f2.html
          http://byduke.javaeye.com/blog/392850
          Spring的起源和背景以及你為什么要使用Spring
          http://topic.csdn.net/u/20110224/14/ac48a152-7595-4f6f-b877-2905258b38ef.html
          Spring工作原理探秘
          http://www.360doc.com/content/10/1215/11/4957029_78291485.shtml

          posted @ 2011-03-16 02:13 leekiang 閱讀(458) | 評論 (0)編輯 收藏

          1,double d =?1?/?4;System.out.println(d);//輸出為0

          2,??? public static void main(String[] args) {
          ??? ??? StringBuffer a = new StringBuffer("a");
          ??? ??? StringBuffer b = new StringBuffer("b");
          ??? ??? append(a, b);
          ??? ??? System.out.println(a.toString() + "," + b.toString());//輸出為"ab,a"
          ??? }

          ??? public static void append(StringBuffer a, StringBuffer b) {
          ??? ??? a.append(b);
          ??? ??? b = a;
          ??? }
          ?? 解釋:由于java方法傳值是值傳遞,所以方法里面的a,b雖然和方法外的a,b指向的對象一樣,但是這兩個引用在棧中的位置不一樣。
          過程大概是首先在棧中復制引用a為a',b為b',并令a'指向a所指的在堆中的StringBuffer對象,b'指向b所指的在堆中的StringBuffer對象。
          因此方法中的b=a只是起到了b'=a'的作用,并沒有影響方法外b的指向。
          ??????? 其實public static void append(StringBuffer a, StringBuffer b)中的變量a,b只是main方法中的變量a,b的引用地址副本,也就是說相當于append中的a與main中的a是指向同一個地址,append中 的b與main中的b是指向同一個地址,所以a.append(b)操作影響到了main方法中的a,但是append方法中的b=a;操作只是改變了 append方法的中b的指向,并沒有改變main方法中b的指向。
          ??????? java是按值傳遞,對象類型的話,分為棧上的引用和堆上的對象,棧上的引用被復制一份,如果操作堆上的對象則對象改變,但是如果操作引用則不改變
          ??????? java方法的參數傳遞有兩種規則:(1)按值傳遞(by value) ,八種基本數據類型和String? (2)按址傳遞(by address) ,除String以外的所有復合數據類型,包括數組、類和接口

          3,如果使用switch,那么每一個case和default里都要加break

          Java容易搞錯的知識點

          posted @ 2011-03-13 23:38 leekiang 閱讀(308) | 評論 (0)編輯 收藏

          僅列出標題
          共54頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
          主站蜘蛛池模板: 金湖县| 精河县| 卫辉市| 商河县| 井研县| 伊宁市| 托克逊县| 陇川县| 平顶山市| 游戏| 阜阳市| 毕节市| 安西县| 安福县| 沭阳县| 中牟县| 筠连县| 西充县| 夏邑县| 肇州县| 东阳市| 缙云县| 乌审旗| 中宁县| 黄石市| 芮城县| 天全县| 本溪市| 鄂州市| 化德县| 文登市| 延边| 宁陵县| 姚安县| 抚顺县| 菏泽市| 开江县| 重庆市| 泗洪县| 新巴尔虎右旗| 富平县|