重新探索自我

              客觀條件受制于人,并不足懼。重要的是,我們擁有選擇的自由,可以對現(xiàn)實(shí)環(huán)境積極回應(yīng),
              為生命負(fù)責(zé),為自己創(chuàng)造有利的機(jī)會,做一個(gè)“真正”操之在我的人!

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            3 隨筆 :: 10 文章 :: 5 評論 :: 0 Trackbacks

          2006年11月23日 #

          ?

          一、 General Techniques

          1、? 引數(shù)以 by value 方式而非 by reference 方式傳遞

          2、? 對于不變的 data object reference 使用 final ,final 僅僅令 object reference 自身成為不變量,但并不限制它所指向?qū)ο蟮母淖?/span>

          3、? 缺省情況下,所有 non-static 都可以被覆寫,不然 , 則用 final 防止覆寫

          4、? vector 容器包含的是對象,與 arrays 要區(qū)別,但我認(rèn)為 Vector 的功能實(shí)際上有些像跟 Array List 差不多,只是 vector 現(xiàn)在不經(jīng)常使用

          5、? 多態(tài)優(yōu)于 instanceof ,只有在不得已的情況下使用

          “如果你根據(jù)對象的型別來觸發(fā)行為,那就改給自己一個(gè)耳光”

          例如,當(dāng)你必須從一個(gè) base type 做向下轉(zhuǎn)型為 derived type 的時(shí)候,必須使用它

          ….

          Vector shapeVector = new Vector(10);

          shapeVector.add(new Triangle());

          shapeVector.add(new Triangle());

          shapeVector.add(new Circle());

          ??? //...

          ??? //Assume many Triangles and Circles are added and removed

          ??? //...

          ??? int size = shapeVector.size();

          ??? for (int i=0; i<size; i++)

          ??? {

          ????? Object o = shapeVector.get(i);

          ????? if (o instanceof Triangle)

          ????? {

          ??????? if (((Triangle)o).isRightTriangle())

          ??????? {

          ????????? //...

          ??????? }

          ????? }

          ????? else if (o instanceof Circle)

          ????? {

          ??????? double rad = ((Circle)o).radius();

          ??????? //...

          ????? }

          }

          ???????? 6 、一旦不需要對象的引用,就將它設(shè)為 null ;

          ?????? 盡管有 GC, 你還是要關(guān)注的你的代碼如何運(yùn)用內(nèi)存;

          ????????

          ?

          二、? 對象與相等性

          7 、區(qū)分 reference type primitive type ,理解他們的差異,你會在運(yùn)用他們時(shí)候做出明智的

          選擇;

          ???????? Boolean(boolean)

          ???????? Character(char)

          Byte(byte)

          Integer(int)

          Float(float)

          Long(long)

          Short(short)

          Double(double)

          基本型別相等,只要是值相等就可以拉,不管是不是同一類型;而引用類型必須則按照引用的比較方式來比較,譬如 equals();

          ?

          8 java.lang.object 提供的 equals() 方法很多時(shí)候不是你想要的,你需要自己寫一些比較的方法

          public boolean equals(Object obj)

          ? {

          ?

          ??? if (this == obj)

          ????? return true;

          ?

          ??? if (obj != null && getClass() == obj.getClass())

          ??? {

          ????? Golfball gb = (Golfball)obj;? //Classes are equal, downcast.

          ????? if (brand.equals(gb.brand()) &&? //Compare attributes.

          ????????? make.equals(gb.make()) &&

          ????????? compression == gb.compression())

          ????? {

          ??????? return true;

          ????? }

          ??? }

          ??? return false;

          ? }

          ?

          三、? java 異常

          1、?? try,cacth,finally

          ?

          不要將 catch 的異常覆蓋掉,在這樣的情況下,我們要專門把異常保存下來,如用一個(gè) vector 保存;

          不要忽略任何一個(gè)異常,因?yàn)楫惓R坏┏霈F(xiàn),拋出異常的那個(gè)線程將會終止;

          將一個(gè)異常加入到 throw 子句,會影響到調(diào)用它的所有函數(shù)

          使用 finally 防止資源泄露,譬如在連接數(shù)據(jù)庫的時(shí)候在 finally 中關(guān)閉連接;

          不要從 try 字段中返回;

          不要用 try 、 catch 用于流程控制 ;

          不要每逢出錯(cuò)的使用 try catch;

          不要在構(gòu)造函數(shù)中拋出異常;

          拋出異常前,請將對象置為有效狀態(tài);

          四、? 性能

          1、?? 先把焦點(diǎn)放在設(shè)計(jì),數(shù)據(jù)機(jī)構(gòu)和算法方面

          2、?? 如果進(jìn)行字符串的拼接,用 String Buffer String 快許多倍

          3、?? 在面向?qū)ο笾?,對象的?chuàng)建是昂貴的,因此需要將對象的創(chuàng)建成本降到最低,減少一些沒有必要的對象,在非必要的時(shí)候,別產(chǎn)生你的對象

          4、?? 將同步減少到最低,增加 stack 的使用

          5、?? 使用基本型別代碼會更快

          6、?? 在使用 vector 時(shí)候,用 get() 來獲取對象,而不是 Interator

          7、?? 優(yōu)先使用 array, 再考慮 ArrayList Vector ,如果不需要 vector 的同步特性,考慮使用 ArrayList

          8、?? 盡可能的重復(fù)使用對象,這比重新創(chuàng)建對象更有效

          9、?? 使用緩式評估,延遲計(jì)算,不必要的計(jì)算永遠(yuǎn)都不要計(jì)算

          10、 手動優(yōu)化你的代碼,特別是執(zhí)行的順序

          posted @ 2006-11-23 18:50 蔣利文 閱讀(254) | 評論 (0)編輯 收藏

          一、 簡介

          ? ??????? Apache JMeter 100 %的 Java 桌面應(yīng)用程序。用于對軟件做壓力測試(例如 Web 應(yīng)用)。 它可以用于測試靜態(tài)何動態(tài)資源例如靜態(tài)文件、 Java 小服務(wù)程序、 CGI 腳本、 Java 對象、數(shù)據(jù)庫, FTP 服務(wù)器 , 等等。 JMeter 可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來在不同壓力類別下測試它們的強(qiáng)度和分析整體性能。

          另外, JMeter 能夠?qū)?yīng)用程序做衰退測試,通過創(chuàng)建帶有斷言的腳本來驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性, JMeter 允許使用正則表達(dá)式創(chuàng)建斷言。

          將來開發(fā)的主要目標(biāo)是使得 JMeter 盡可能地變成一個(gè)有用的衰退測試工具,而不損失 JMeter 地壓力測試能力。

          衰退測試:通過回歸測試等方法來保證經(jīng)過修改的代碼沒有衰退(質(zhì)量下降)。

          ?

          二、 安裝與配置

          JMeter 的安裝過程非常簡單:

          第一步 安裝 JDK (這里使用 JDK 1.5.0

          第二步 下載 JMeter ,并解壓

          ?????? 官方下載地址: http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi ,下載

          jakarta-jmeter-2.2.zip 包,大小: 9.52M

          第三步 配置環(huán)境變量

          ?????? JAVA_HOME = …

          ??? JMeter = …

          ??? CLASS_PATH=”%JAVA_HOME%\bin;%JAVA_HOME%\lib\tools.jar;%JMeter\bin%”

          第四步 運(yùn)行

          ?????? 在命令行運(yùn)行 jmeter.bat ,出現(xiàn)如下界面,說明安裝成功:

          ?

          三、 項(xiàng)目應(yīng)用

          1.?????? 項(xiàng)目需求

          模擬 5 個(gè)用戶并發(fā)請求,每個(gè)用戶請求兩次(一次請求結(jié)束后,發(fā)出下一個(gè)請求),得出各個(gè)請求樣本的響應(yīng)時(shí)間,并得出一些統(tǒng)計(jì)性的數(shù)據(jù)。

          2.?????? 建立測試計(jì)劃

          首先,添加一個(gè)線程組,如下圖:

          用戶并發(fā)數(shù)為 5 ,因?yàn)橐粋€(gè)用戶請求我們可以看作是一個(gè)請求線程,所以我們將線程數(shù)設(shè)置為 5 。這里設(shè)置休眠時(shí)間為 0 ,循環(huán)的次數(shù)為 2 。

          其次,建立默認(rèn)的 HTTP 連接屬性,這樣不用每次都重新輸入?yún)?shù),如下圖: ?

          再次,建立要測試的 Http 請求,如下圖

          最后,建立查看結(jié)果形式,我們采用表格數(shù)據(jù)記錄

          ? ?

          ?????? 3 .運(yùn)行測試腳本

          ????????????? 點(diǎn)擊要測試的腳本,然后執(zhí)行菜單運(yùn)行 》開始,測試開始。

          ? ???? 4 .測試數(shù)據(jù)分析

          ????????????? 測試完成之后,數(shù)據(jù)如下:
          ??????

          聚合數(shù)據(jù)分析結(jié)果如下:

          模擬 5 個(gè)用戶并發(fā)訪問 http://10.36.32.5:8080/wwwncsl/default.htm 頁面,每個(gè)用戶循環(huán)訪問一次,總共 10 個(gè)樣本數(shù)據(jù)。最大響應(yīng)時(shí)間為 10.355s ,最短響應(yīng)時(shí)間為 2.84s ,平均為 6.572s

          90% 的可能集中在響應(yīng)時(shí)間為 10.355s 。

          posted @ 2006-11-23 18:37 蔣利文 閱讀(1539) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 威海市| 汾西县| 任丘市| 民丰县| 南和县| 常德市| 安顺市| 昌图县| 凤台县| 黄陵县| 民权县| 甘孜| 法库县| 吉首市| 什邡市| 南川市| 万山特区| 昌都县| 昌吉市| 天峻县| 大姚县| 温泉县| 镇平县| 沙河市| 中西区| 郧西县| 桃园市| 揭西县| 交口县| 苍山县| 堆龙德庆县| 湘阴县| 广平县| 普陀区| 恩平市| 浠水县| 北碚区| 盐池县| 比如县| 眉山市| 灵台县|