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

          Java 推薦讀物與源代碼閱讀
          給學(xué)習(xí)J2EE的朋友一些值得研究的開源項目
          http://miaoxiaodong78.blog.163.com/blog/static/1876513620061158824481/
          http://miaoxiaodong78.blog.163.com/blog/static/18765136200611141046446/
          http://www.javaeye.com/topic/854647
          http://www.javaeye.com/topic/264490
          http://www.javaeye.com/topic/698774

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

          JDK1.6?
          ??????? Integer?v1?=?100;
          ????????Integer?v2?
          =?100;
          ????????System.out.println(v1?
          ==?v2);?//?輸出:true
          ????????
          ????????Integer?w1?
          =?200;
          ????????Integer?w2?
          =?200;
          ????????System.out.println(w1?
          ==?w2);?//?輸出:false

          ????????Integer?s1?
          =?new?Integer(100);
          ????????Integer?s2?
          =?new?Integer(100);
          ????????System.out.println(s1?
          ==?s2);?//?輸出:false
          ????????
          ????????String?str1
          ="test";
          ????????String?str2
          ="test";
          ????????System.out.println(str1
          ==str2);//?輸出:true
          ????????
          ????????String?nstr1
          =new?String("aa");
          ????????String?nstr2
          =new?String("aa");
          ????????System.out.println(nstr1
          ==nstr2);?//?輸出:false

          原因:當(dāng)給Integer變量直接賦整數(shù)值時,如果這個數(shù)值位于[-128,127]內(nèi),JVMJava Virtual Machine)就直接使用cache中緩存的Integer對象,否則,JVM會重新創(chuàng)建一個Integer對象。

          參考:
          http://www.cnblogs.com/bitfan/archive/2010/10/24/1859687.html

          posted @ 2011-01-02 01:32 leekiang 閱讀(236) | 評論 (0)編輯 收藏

          安裝Sun JDK

          1. 從Oracle官方網(wǎng)站下載最新的Linux版本JDK二進(jìn)制包。對于Java 6來說,文件名是 jdk-6u23-linux-i586.bin

          2. 復(fù)制下載好的文件到你準(zhǔn)備安裝JDK的文件目錄下。這里我將其放在:

          ??? /home/<username>/java/jdk-6u23-linux-i586.bin

          3. 打開 Terminal,

          ? ? $ cd /home/<username>/java

          ??? $ sudo sh jdk-6u23-linux-i586.bin

          應(yīng)該也可以 $ sudo chmod 755? jdk-6u23-linux-i586.bin,然后$ ./jdk-6u23-linux-i586.bin

          4. JDK會被安裝在二進(jìn)制包所在的同一目錄內(nèi)

          設(shè)置JAVA環(huán)境變量

          方法1:修改/etc/profile文件
          所有用戶都會使用這些環(huán)境變量
          <1>在 shell終端執(zhí)行命令:gedit /etc/profile
          <2>在 profile文件末尾加入:
          JAVA_HOME=/home/<username>/java/jdk1.6.0_23
          PATH=$JAVA_HOME/bin:$PATH
          CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          export JAVA_HOME,PATH,CLASSPATH
          <3>重啟系統(tǒng)


          /etc/profile這個文件,是系統(tǒng)啟動是要自動執(zhí)行的文件,任何一個用戶登錄系統(tǒng)都會執(zhí)行這個文件。
          所以盡量不要去修改這個配置文件。
          而且如果修改出錯,系統(tǒng)可能就起不來了,見"修改了ubuntu的etc/profile文件,系統(tǒng)不能進(jìn)入了“(http://www.ctochina.net/forum/show/106)
          /etc/profile會首先執(zhí)行/etc/profile.d/目錄下的所有*.sh文件
          這也就給我們一個可擴(kuò)展的思路。
          如果我們需要配置JDK,那么就在/etc/profile.d/下創(chuàng)建jdk.sh文件
          如果需要配置oracle,那么就在/etc/profile.d/下創(chuàng)建oracle.sh文件
          來源:http://www.aygfsteel.com/zhyiwww/archive/2010/01/29/311240.html

          方法2:修改.bashrc文件
          如果你需要給某個用戶權(quán)限使用這些環(huán)境變量,你只需要修改其個人用戶主目錄下的.bashrc就可以了,而不像第一種方法給所有用戶權(quán)限。
          <1>在 shell終端執(zhí)行命令:gedit /home/<username>/.bashrc
          <2>在.bashrc文件末尾加入:
          export JAVA_HOME=/home/<username>/java/jdk1.6.0_23
          export PATH=$JAVA_HOME/bin:
          /var/lib/gems/1.8/bin:$PATH
          export
          CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          <3>重新登錄

          方法3:直接在shell下修改
          用于在Shell下臨時使用,換個Shell即無效
          export JAVA_HOME=/home/<username>/java/jdk1.6.0_23
          export CLASSPATH=.:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar
          export PATH=$JAVA_HOME/bin:$PATH

          注意:
          <1>Linux下環(huán)境變量使用:(冒號)分隔路徑,不同于Windows下的;
          <2>Linux使用($+環(huán)境變量名)來引用原來變量的值,Windows則是使用%+環(huán)境變量名+%.比如$PATH和%PATH%
          <3>CLASSPATH中不能存在空格,如Windows下的C:\Documents and Settings\seagar\jdk1.5將是不合法的路徑名
          <4>CLASSPATH中的當(dāng)前目錄"."不能忽略
          <5>export把環(huán)境變量導(dǎo)出為全局變量
          <6>大小寫嚴(yán)格區(qū)分


          測試安裝情況
          1.java -version查看版本號
          2.使用??? 編輯器編寫一個Java程序
          (1)#root > gedit Hello.java
          (2)編寫程序
          public class Hello
          {
          ???? public static void main(String[] args)
          ???? {
          ????????? System.out.println("Hello");
          ???? }
          }
          3.編譯:javac Hello.java
          4.執(zhí)行:java Hello



          與環(huán)境變量相關(guān)的文件可能還會有/etc/bashrc等,不過這是shell變量,是局部的,對于特定的shell器作用。/etc/profile是全局的,適用于所有的shell。出處

          沒搞明白,如果JAVAHOME配置在.bashrc里,那么安裝的eclipse使用的是哪個jdk

          我也沒搞明白什么時候用export,什么時候不用


          查看當(dāng)前用戶的環(huán)境變量的命令:env


          Ubuntu中有如下幾個文件可以設(shè)置環(huán)境變量
          1
          、/etc/profile:在登錄時,操作系統(tǒng)定制用戶環(huán)境時使用的第一個文件,此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時,該文件被執(zhí)行。
          2
          、/etc/environment:在登錄時操作系統(tǒng)使用的第二個文件,系統(tǒng)在讀取你自己的profile,設(shè)置環(huán)境文件的環(huán)境變量。
          3
          ~/.bash_profile:在登錄時用到的第三個文件是.profile文件,每個用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時,該 文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變游戲量,執(zhí)行用戶的.bashrc文件。/etc/bashrc:為每一個運(yùn)行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時,該文件被讀取.
          4
          、~/.bashrc:該文件包含專用于你的bash shellbash信息,當(dāng)?shù)卿洉r以及每次打開新的shell,該該文件被讀取。
          幾個環(huán)境變量的優(yōu)先級1>2>3。此段摘自這里

          還有/etc/bash.bashrc呢


          參考:

          http://blog.csdn.net/jeffygn2006/archive/2010/12/17/6081918.aspx

          http://hwhhyh25.javaeye.com/blog/512410

          http://flysnow.javaeye.com/blog/810083
          http://konglx.javaeye.com/blog/702965




          /etc/profile改錯了,系統(tǒng)起不來怎么辦?
          在啟動時按F2,
          選擇recovery mode(一般是第二個選項),然后用root登錄
          執(zhí)行sudo vi
          /etc/profile
          系統(tǒng)提示是修改(E)還是恢復(fù)(R)(Recover)等,按R鍵,系統(tǒng)執(zhí)行后發(fā)現(xiàn)該文檔沒有變化,暫不管。
          重新執(zhí)行sudo vi /etc/profile然后按E鍵,
          一路確認(rèn)到文檔最后面
          按"dd"鍵刪除自己加的那幾行,然后按ESC回到命令狀態(tài),
          輸入“:wq!”,按Enter鍵保存退出。
          最后reboot
          另外一個辦法:又新建了一個虛擬機(jī),把原來破壞了的虛擬機(jī)的硬盤掛載到新建的虛擬機(jī)上,把數(shù)據(jù)倒過來了。
          用LIVECD啟動后也可以改
          另外可能SSH進(jìn)去后SU ROOT 再改動

          開機(jī)狂按ESC進(jìn)入grub,grub是什么意思
          啟動時按住shift鍵可出現(xiàn)grub的菜單,再進(jìn)入recovery mode

          進(jìn)恢復(fù)模式,進(jìn)入命令行,用vi/vim把你的改動搞回去。如果你原來的的profile文件有備份就簡單的cp就可以了。要sudo提權(quán)。
          教訓(xùn):
          1、修改配置前先備份;
          2、一定要學(xué)一點(diǎn)純終端的vi/vim的簡單操作;
          gedit前最好先 sudo cp 一下 把原文件加上.bak后綴

          gedit好辦,會留下~尾巴做備份的。
          ls /etc? #顯示etc文件所有的文件。如果有profile~的話舊執(zhí)行
          或者是whereis profile~ ? #這個事查找profile~文件
          sudo cp /etc/profile~ /etc/profile #注意空格
          exit #退出。

          [江湖救急]修改/etc/profile重啟后無法進(jìn)入系統(tǒng)
          Vista和Ubuntu雙系統(tǒng)引導(dǎo) – 修改默認(rèn)啟動的操作系統(tǒng)
          vi編輯器常用的命令及快捷鍵
          系統(tǒng)修復(fù) 修改/etc/profile后無法進(jìn)入系統(tǒng) 且所有命令都無法使用

          posted @ 2010-12-30 02:30 leekiang 閱讀(1609) | 評論 (0)編輯 收藏

          Static 的意義與實(shí)作方式

          ?

          Class(static) field :共用一塊記憶體
          class(static) method
          :共用一塊記憶體
          instance(
          static) field :隨著每個 instance 各有一塊記憶體
          instance (
          static) method :共用一塊記憶體
          ??? instance method
          為什么不是隨著每個 instance 占有一塊記憶體,反倒是共用一塊記憶體?其實(shí),讓每個 instance method 如同 instance field 一樣,隨著每個 instance 占有一塊記憶體,這么做當(dāng)然是可以的,只是 Java 編譯器和 JVM 都不這么做,因為太浪費(fèi)記憶體空間了。一個 field 少則占用一個 byte ,多則占用數(shù)百 Byte ,但是 method 少則數(shù)個 byte ,多則數(shù)百 Kilo Byte 。 Mehtod 耗費(fèi)的記憶體是 field 的數(shù)百倍,甚至數(shù)千倍,當(dāng)然是能共用就盡量共用,比較不會消耗記憶體。既然 JVM 讓一個 class 的所有 instance 共用相同的 instance method ,下面兩行程式碼在 instanceMethod() 內(nèi)部時,如何區(qū)分是 instance1 instance2 ?
          instance1.instanceMethod();
          instance2.instanceMethod();
          因為編譯器會幫我們在把 instance1 instance2 個別傳入 instanceMethod() 中當(dāng)作第一個參數(shù)。也就是說,任何 instance method 參數(shù)的實(shí)際個數(shù)都會比表面上多一個,這個多出來的參數(shù)是由 Java 編譯器幫我們加上去的,用來代表對應(yīng)的 instance 。此參數(shù)的變數(shù)名稱為 this ,也是 Java 的一個關(guān)鍵字( keyword )。
          ???
          當(dāng)調(diào)用某個 instance method 或使用某個 instance field 時,你必須在前面加上該 instance 的名稱,如果該 instance method/field 相關(guān)的 instance 和當(dāng)時程式碼所在的 instance method instance 指的是同一個 instance 時,該 instance 的名稱就是 this ,這種情況下,你也可以選擇不在前面加上「 this. 」。
          ???
          然而,在某些狀況下,非得在前面加上「 this. 」不可。例如,當(dāng) method 中的參數(shù)或區(qū)域變數(shù)和 instance field 名稱完全相同時,如果不在前面冠上「 this. 」,那么指的是參數(shù)或區(qū)域變數(shù);如果在前面冠上「 this. 」,那么指的才是 instance field 。

          轉(zhuǎn)自http://www.aygfsteel.com/guoyongfei/archive/2009/02/06/253571.html

          posted @ 2010-12-30 01:20 leekiang 閱讀(402) | 評論 (0)編輯 收藏

          入侵基于java Struts的JSP網(wǎng)站

          posted @ 2010-12-29 21:19 leekiang 閱讀(263) | 評論 (0)編輯 收藏

          1,sudo apt-get install build-essential
          2,gedit
          3,sudo apt-get install devhelp
          4,hello.c
          5,gcc hello.c -o hello
          6,./hello

          http://blog.csdn.net/dreamer_gz/archive/2009/03/01/3948137.aspx
          http://hi.baidu.com/jancwh/blog/item/7d41e53c2a4912cf9f3d62b3.html

          posted @ 2010-12-29 02:12 leekiang 閱讀(230) | 評論 (0)編輯 收藏

          sudo apt-get install mysql-server
          mysql -u root -p

          在windows中用HeidiSQL連mysql時報"Can’t connect to MySQL server on..."
          解決:sudo apt-get install mysql-client,重啟mysql,不管用。查到資料,應(yīng)該是MySQL Server綁定了本地地址。
          打開/etc/mysql/my.cnf,找到bind-address = 127.0.0.1,去除IP地址綁定,把它改為:bind-address = 0.0.0.0 然后重啟MySQL。

          又報"host is not allowed to connect to this MySQL"
          解決:
          mysql>use mysql;
          mysql>show tables; (確認(rèn)一下表user是否存在)
          mysql>update user set host='%' where host='loalhost' and user='root';
          重啟mysql
          當(dāng)然,也可通過授權(quán):GRANT ALL PRIVILEGES ON *.* TO......

          查看編碼
          show variables like 'character%';




          查看mysql版本的幾種辦法:
          1,在終端下:mysql -V
          2,在mysql中:mysql> status;
          3,mysql> select version();

          posted @ 2010-12-29 01:45 leekiang 閱讀(342) | 評論 (0)編輯 收藏

          ??? 1.什么是pv

            PV(page view),即頁面瀏覽量,或點(diǎn)擊量;通常是衡量一個網(wǎng)絡(luò)新聞頻道或網(wǎng)站甚至一條網(wǎng)絡(luò)新聞的主要指標(biāo)。

            高手對pv的解釋是,一個訪問者在24小時(0點(diǎn)到24點(diǎn))內(nèi)到底看了你網(wǎng)站幾個頁面。這里需要強(qiáng)調(diào):同一個人瀏覽你網(wǎng)站同一個頁面,不重復(fù)計算pv量,點(diǎn)100次也算1次。說白了,pv就是一個訪問者打開了你的幾個頁面。

            PV之于網(wǎng)站,就像收視率之于電視,從某種程度上已成為投資者衡量商業(yè)網(wǎng)站表現(xiàn)的最重要尺度。

            pv的計算:當(dāng)一個訪問者訪問的時候,記錄他所訪問的頁面和對應(yīng)的IP,然后確定這個IP今天訪問了這個頁面沒有。如果你的網(wǎng)站到了23點(diǎn),單純IP有60萬條的話,每個訪問者平均訪問了3個頁面,那么pv表的記錄就要有180萬條。

            有一個可以隨時查看PV流量以及你的網(wǎng)站世界排名的工具alexa工具條,安裝吧!網(wǎng)編們一定要安裝這個。

            2.什么是uv

            uv(unique visitor),指訪問某個站點(diǎn)或點(diǎn)擊某條新聞的不同IP地址的人數(shù)。

            在同一天內(nèi),uv只記錄第一次進(jìn)入網(wǎng)站的具有獨(dú)立IP的訪問者,在同一天內(nèi)再次訪問該網(wǎng)站則不計數(shù)。獨(dú)立IP訪問者提供了一定時間內(nèi)不同觀眾數(shù)量的統(tǒng)計指標(biāo),而沒有反應(yīng)出網(wǎng)站的全面活動。

            3.什么是PR值

            PR值,即PageRank,網(wǎng)頁的級別技術(shù)。取自Google的創(chuàng)始人Larry Page,它是Google排名運(yùn)算法則(排名公式)的一部分,用來標(biāo)識網(wǎng)頁的等級/重要性。級別從1到10級,10級為滿分。PR值越高說明該網(wǎng)頁越受歡迎(越重要)。

            例如:一個PR值為1的網(wǎng)站表明這個網(wǎng)站不太具有流行度,而PR值為7到10則表明這個網(wǎng)站非常受歡迎(或者說極其重要)。

          轉(zhuǎn)自http://edu.admin5.com/article/20061221/1221314F2006.shtml

          posted @ 2010-12-21 23:24 leekiang 閱讀(359) | 評論 (0)編輯 收藏

          在前面“應(yīng)用拆分”主題中,我們提到了一個大型互聯(lián)網(wǎng)應(yīng)用需要進(jìn)行良好的拆分,而那里我們僅僅說了”應(yīng)用級別”的拆分,其實(shí)我們的互聯(lián)網(wǎng)應(yīng)用除了應(yīng) 用級別的拆分以外,還有另外一個很重要的層面就是存儲如何拆分的。因此這個主題主要涉及到如何對存儲系統(tǒng),通常就是所說的RDBMS進(jìn)行拆分。

          確定了這個小節(jié)的主題之后,我們回顧一下,一個互聯(lián)網(wǎng)應(yīng)用從小變大的過程中遇到的一些問題,通過遇到的問題來引出我們拆分RDBMS的重要性。

          系統(tǒng)剛開始的時候,因為系統(tǒng)剛上線,用戶不多,那個時候,所有的數(shù)據(jù)都放在了同一個數(shù)據(jù)庫中,這個時候因為用戶少壓力小,一個數(shù)據(jù)庫完全可以應(yīng)付的 了,但是隨著運(yùn)營那些哥們辛苦的吶喊和拼命的推廣以后,突然有一天發(fā)現(xiàn),oh,god,用戶數(shù)量突然變多了起來,隨之而來的就是數(shù)據(jù)庫這哥們受不了,它終 于在某一天大家都和愜意的時候掛掉啦。此時,咱們搞技術(shù)的哥們,就去看看究竟是啥原因,我們查了查以后,發(fā)現(xiàn)原來是數(shù)據(jù)庫讀取壓力太大了,此時咱們都清楚 是到了讀寫分離的時候,這個時候我們會配置一個server為master節(jié)點(diǎn),然后配幾個salve節(jié)點(diǎn),這樣以來通過讀寫分離,使得讀取數(shù)據(jù)的壓力分 攤到了不同的salve節(jié)點(diǎn)上面,系統(tǒng)終于又恢復(fù)了正常,開始正常運(yùn)行了。但是好景還是不長,有一天我們發(fā)現(xiàn)master這哥們撐不住了,它負(fù)載老高了, 汗流浹背,隨時都有翹掉的風(fēng)險,這個時候就需要咱們垂直分區(qū)啦(也就是所謂的分庫),比如將商品信息,用戶信息,交易信息分別存儲到不同的數(shù)據(jù)庫中,同時 還可以針對商品信息的庫采用master,salve模式,OK,通過分庫以后,各個按照功能拆分的數(shù)據(jù)庫寫壓力被分擔(dān)到了不同的server上面,這樣 數(shù)據(jù)庫的壓力終于有恢復(fù)到正常狀態(tài)。但是是不是這樣,我們就可以高枕無憂了呢?NO,這個NO,不是我說的,是前輩們通過經(jīng)驗總結(jié)出來的,隨著用戶量的不 斷增加,你會發(fā)現(xiàn)系統(tǒng)中的某些表會變的異常龐大,比如好友關(guān)系表,店鋪的參數(shù)配置表等,這個時候無論是寫入還是讀取這些表的數(shù)據(jù),對數(shù)據(jù)庫來說都是一個很 耗費(fèi)精力的事情,因此此時就需要我們進(jìn)行“水平分區(qū)”了(這就是俗話說的分表,或者說sharding)。

          上面說了很多,無非就是告訴大家一個事實(shí)“數(shù)據(jù)庫是系統(tǒng)中最不容易scale out的一層”,一個大型的互聯(lián)網(wǎng)應(yīng)用必然會經(jīng)過一個從單一DB server,到Master/salve,再到垂直分區(qū)(分庫),然后再到水平分區(qū)(分表,sharding)的過程,而在這個過程中,Master /salve 以及垂直分區(qū)相對比較容易,對應(yīng)用的影響也不是很大,但是分表會引起一些棘手的問題,比如不能跨越多個分區(qū)join查詢數(shù)據(jù),如何平衡各個shards的 負(fù)載等等,這個時候就需要一個通用的DAL框架來屏蔽底層數(shù)據(jù)存儲對應(yīng)用邏輯的影響,使得底層數(shù)據(jù)的訪問對應(yīng)用透明化。

          出處:大型B2C網(wǎng)站高性能可伸縮架構(gòu)技術(shù)探秘

          又拍網(wǎng)架構(gòu)中的分庫設(shè)計

          posted @ 2010-12-12 00:55 leekiang 閱讀(713) | 評論 (0)編輯 收藏

          書:
          《深入理解MySQL》 即Expert MySQL
          《MySQL核心內(nèi)幕》
          《深入理解MySQL核心技術(shù)》Understanding MySQL Internals
          《MySQL技術(shù)內(nèi)幕:InnoDB存儲引擎》
          《深入淺出MySQL--數(shù)據(jù)庫開發(fā)、優(yōu)化與管理維護(hù)》

          ppt:
          http://www.slideshare.net/caroljmcdonald/mysqlfordevelopers
          http://www.slideshare.net/jackbillow/mysql-best-practices

          講座:
          可擴(kuò)展的MySQL數(shù)據(jù)庫設(shè)計http://v.youku.com/v_playlist/f2614454o1p0.html

          posted @ 2010-12-10 03:04 leekiang 閱讀(277) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共54頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 Last 
          主站蜘蛛池模板: 福海县| 漾濞| 修水县| 将乐县| 荥阳市| 大姚县| 隆昌县| 清远市| 呼玛县| 鹿泉市| 尼玛县| 临沭县| 尉犁县| 金堂县| 公主岭市| 稻城县| 汨罗市| 开江县| 阿克苏市| 平乐县| 中超| 湘阴县| 双柏县| 两当县| 石泉县| 湖口县| 滨州市| 茌平县| 上犹县| 杭州市| 乌什县| 郎溪县| 垦利县| 齐齐哈尔市| 元江| 定州市| 新竹县| 隆安县| 永修县| 潞城市| 始兴县|