konhon

          忘掉過(guò)去,展望未來(lái)。找回自我,超越自我。
          逃避不一定躲的過(guò), 面對(duì)不一定最難過(guò), 孤單不一定不快樂(lè), 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過(guò), 但我卻能找個(gè)理由讓自己快樂(lè).

          Google

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

          #

          SRP 單一職責(zé)原則
                  就一個(gè)類(lèi)而言,應(yīng)該僅有一個(gè)引起它變化的原因。

          OCP 開(kāi)放-封閉原則
                   軟件實(shí)體(類(lèi)、模塊、函數(shù))應(yīng)該可以擴(kuò)展, 但不可修改。

          LSP Liskov替換原則
                  子類(lèi)型必須能夠替換它們的基類(lèi)型。

          DIP 依賴(lài)倒置原則
                  抽象不應(yīng)該依賴(lài)于細(xì)節(jié)。細(xì)節(jié)應(yīng)該依賴(lài)于抽象。

          ISP 接口隔離原則
                 不應(yīng)該強(qiáng)迫客戶(hù)依賴(lài)于它們不用的方法。接口屬于客戶(hù),不屬于它所在的類(lèi)層次結(jié)構(gòu)。

          REP 重用發(fā)布等價(jià)原則
                  重用的粒度就是發(fā)布的粒度。

          CCP 共同封閉原則
                   包中的所有類(lèi)對(duì)于同一類(lèi)性質(zhì)的變化應(yīng)該是共同封閉的,一個(gè)變化若對(duì)一個(gè)包產(chǎn)生影響,則將對(duì)該包中的所有類(lèi)產(chǎn)生影響,而對(duì)于其他的包不造成任何影響。

          CRP 共同重用原則
                   一個(gè)包中的所有類(lèi)應(yīng)該是共同重用的。如果重用了包中的一個(gè)類(lèi),那么就要重用包中的所有類(lèi)。

          ADP 無(wú)環(huán)依賴(lài)原則
                   朝著穩(wěn)定的方向進(jìn)行依賴(lài)。

          SAP 穩(wěn)定抽象原則
                  包的抽象程度應(yīng)該和其穩(wěn)定程度一致。
          posted @ 2005-09-05 01:05 konhon 優(yōu)華 閱讀(350) | 評(píng)論 (0)編輯 收藏

          RecordStore是已byte陣列存儲(chǔ)的.所以需要將整個(gè)物件序列化成byte 陣列存入紀(jì)錄倉(cāng)儲(chǔ),也可以從資料倉(cāng)儲(chǔ)之中讀入一個(gè)byte 陣列,然後將其回復(fù)成原本物件內(nèi)部的狀態(tài)。
          在此我們要借助四個(gè)類(lèi)別的協(xié)助,他們分別是:
          ByteArrayOutputStream、ByteArrayInputStream、
          DataOutputStream、DataInputStream。

          轉(zhuǎn)換例子如下:
          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.DataInputStream;
          import java.io.DataOutputStream;

          public class FriendData {
              String name;

              String tel;

              boolean sex;

              
          int age;

              
          public FriendData() {
                  name 
          = "NO NAME";
                  tel 
          = "NO TEL";
                  sex 
          = false;
                  age 
          = 0;
              }


              
          public byte[] encode() {
                  
          byte[] result = null;
                  
          try {
                      ByteArrayOutputStream bos 
          = new ByteArrayOutputStream();
                      DataOutputStream dos 
          = new DataOutputStream(bos);
                      dos.writeUTF(name);
                      dos.writeUTF(tel);
                      dos.writeBoolean(sex);
                      dos.writeInt(age);
                      result 
          = bos.toByteArray();
                      dos.close();
                      bos.close();
                  }
           catch (Exception e) {
                  }

                  
          return result;
              }


              
          public void decode(byte[] data) {
                  
          try {
                      ByteArrayInputStream bis 
          = new ByteArrayInputStream(data);
                      DataInputStream dis 
          = new DataInputStream(bis);
                      name 
          = dis.readUTF();
                      tel 
          = dis.readUTF();
                      sex 
          = dis.readBoolean();
                      age 
          = dis.readInt();
                      dis.close();
                      bis.close();
                  }
           catch (Exception e) {
                  }

              }

          }

          posted @ 2005-09-02 02:21 konhon 優(yōu)華 閱讀(637) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Canvas;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Graphics;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;

          public class LLEventMIDlet extends MIDlet {
              
          private Display display;

              
          public LLEventMIDlet() {
                  super();
                  display 
          = Display.getDisplay(this);
                  
          // TODO Auto-generated constructor stub
              }


              
          protected void startApp() throws MIDletStateChangeException {
                  
          // TODO Auto-generated method stub
                  MyCanvas mc = new MyCanvas();
                  display.setCurrent(mc);
              }


              
          protected void pauseApp() {
                  
          // TODO Auto-generated method stub

              }


              
          protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
                  
          // TODO Auto-generated method stub

              }


              
          private class MyCanvas extends Canvas {
                  String action 
          = "";

                  
          public void paint(Graphics g) {
                      g.setColor(
          255255255);
                      g.fillRect(
          00, getWidth(), getHeight());
                      g.setColor(
          000);
                      
          if (hasRepeatEvents()) {
                          g.drawString(
          "Repeat"10100);
                      }
           else {
                          g.drawString(
          "NonRepeat"10100);
                      }

                      g.drawString(action, 
          10200);
                  }

                  
          protected void keyPressed(int keyCode){
                      action 
          = "KP: " + (char)keyCode;
                      repaint();
                  }

                  
          protected void keyReleased(int keyCode){
                      action 
          = "KR: " + (char)keyCode;
                      repaint();
                  }

                  
          protected void keyRepeated(int keyCode){
                      action 
          = "KRe: " + (char)keyCode;
                      repaint();
                  }

              }


          }



          在MIDP 1.0 規(guī)格中,Canvas 類(lèi)別裡頭定義了幾個(gè)常數(shù),他們分
          別是: KEY_NUM0 、KEY_NUM1 、KEY_NUM2 、KEY_NUM3 、KEY_NUM4 、KEY_NUM5 、KEY_NUM6 、KEY_NUM7 、KEY_ NUM8 、KEY_NUM9 、KEY_STAR、KEY_POUND 共11 個(gè),分別代表0~9 的數(shù)字鍵、星號(hào)鍵、以及井號(hào)鍵。我們可以利用這幾個(gè)常數(shù)判定鍵盤(pán)(按鈕)事件處理函式所傳進(jìn)來(lái)的keyCode,藉以了解哪個(gè)按鈕被按下了,當(dāng)然,除了這些按鍵之外,其他的按鍵也會(huì)有其對(duì)應(yīng)值,您必須自己嘗試找出來(lái),但是為了可以跨平臺(tái),建議您僅只使用這些標(biāo)準(zhǔn)的定義鍵。

          為了Game 設(shè)計(jì)師的方便,MIDP 1.0 規(guī)格中,Canvas 類(lèi)別裡頭定義了幾個(gè)與Game 鍵盤(pán)代碼相關(guān)的常數(shù),他們分別是UP、DOWN、LEFT、RIGHT、FIRE、GAME_A、GAME_B、GAME_C、GAME_D。這些定義雖然很可能會(huì)和之前的定義有所重複,但是因?yàn)橛辛艘粚映橄笮裕谝浦驳臅r(shí)候也就方便多了。

          那麼,在程式裡頭該如何處理呢? Canvas 裡頭提供了兩個(gè)函式:
          1. getGameAction() ?? 傳入keyCode,函式會(huì)回傳所代表的
          Game 鍵盤(pán)代碼。
          用法如下:
          public void keyPressed(int keyCode)
          {
          switch(getGameAction(keyCode))
          {
          case Canvas.LEFT:
          moveLeft() ;
          break ;
          case Canvas.FIRE:
          fire() ;
          break ;

          }

          }


          2. getKeyCode() ?? 傳入Game 鍵盤(pán)代碼,函式會(huì)回傳所代表的
          keyCode。
          用法如下:
          public void keyPressed(int keyCode)
          {
          if(keyCode == getKeyCode(Canvas.LEFT))
          {
          moveLeft() ;
          }
          else if(keyCode == getKeyCode(Canvas.FIRE))
          {
          fire() ;
          }


          }
          任選任何一種方法,都可以達(dá)到跨平臺(tái)的目的。
          posted @ 2005-09-01 04:19 konhon 優(yōu)華 閱讀(1016) | 評(píng)論 (0)編輯 收藏

          其實(shí)這是有一套規(guī)格可循的。規(guī)則如下:

          1. 先比較每個(gè)Command 物件的命令型態(tài),優(yōu)先順序越高的越先出現(xiàn)。
          在Command 物件之中共定義了八種命令型態(tài),從優(yōu)先順序最高到最低列表如下:
          Command.BACK
          Command.CANCEL
          Command.EXIT
          Command.HELP
          Command.ITEM
          Command.OK
          Command.SCREEN
          Command.STOP


          2. 如果命令型態(tài)相同,就比較其優(yōu)先權(quán),設(shè)定值越低的越先出現(xiàn)。

          3. 如果優(yōu)先權(quán)相同,就以利用addCommand()加入畫(huà)面的先後順序決定。
          posted @ 2005-09-01 03:10 konhon 優(yōu)華 閱讀(1188) | 評(píng)論 (0)編輯 收藏

          轉(zhuǎn)載自:www.csdn.net

          java程序顯示中文是大家都遇到過(guò)的問(wèn)題,尤其是JAD文件的中文問(wèn)題,一般都用native2ascii工具轉(zhuǎn)換,這里收藏了native2ascii工具的詳細(xì)說(shuō)明:


          native2ascii - Native-to-ASCII Converter
          Converts a file with native-encoded characters (characters which are non-Latin 1 and non-Unicode) to one with Unicode-encoded characters. 
          SYNOPSIS
          native2ascii [options] [inputfile [outputfile]]

          DESCRIPTION
          The Java compiler and other Java tools can only process files which contain Latin-1 and/or Unicode-encoded (\udddd notation) characters. native2ascii converts files which contain other
           character encodings into files containing Latin-1 and/or Unicode-encoded charaters. 
          If outputfile is omitted, standard output is used for output. If, in addition, inputfile is 
          omitted, standard input is used for input. 

          OPTIONS
          -reverse 
          Perform the reverse operation: convert a file with Latin-1 and/or Unicode encoded characters to one with native-encoded characters. 


          -encoding encoding_name 
          Specify the encoding name which is used by the conversion procedure. 
          The default encoding is taken from System property file.encoding. 
          The encoding_name string must be a string taken from the first column of the table 
          below. 


          -------------------------------------------------------------

          Converter        Description
          Class
          -------------------------------------------------------------

          8859_1           ISO 8859-1
          8859_2           ISO 8859-2
          8859_3           ISO 8859-3
          8859_4           ISO 8859-4
          8859_5           ISO 8859-5
          8859_6           ISO 8859-6
          8859_7           ISO 8859-7
          8859_8           ISO 8859-8
          8859_9           ISO 8859-9
          Big5             Big5, Traditional Chinese
          CNS11643         CNS 11643, Traditional Chinese
          Cp037            USA, Canada(Bilingual, French), Netherlands,
                                         Portugal, Brazil, Australia
          Cp1006           IBM AIX Pakistan (Urdu)
          Cp1025           IBM Multilingual Cyrillic: Bulgaria, Bosnia,
                                         Herzegovinia, Macedonia(FYR)
          Cp1026           IBM Latin-5, Turkey
          Cp1046           IBM Open Edition US EBCDIC
          Cp1097           IBM Iran(Farsi)/Persian
          Cp1098           IBM Iran(Farsi)/Persian (PC)
          Cp1112           IBM Latvia, Lithuania
          Cp1122           IBM Estonia
          Cp1123           IBM Ukraine
          Cp1124           IBM AIX Ukraine
          Cp1125           IBM Ukraine (PC)
          Cp1250           Windows Eastern European
          Cp1251           Windows Cyrillic
          Cp1252           Windows Latin-1
          Cp1253           Windows Greek
          Cp1254           Windows Turkish
          Cp1255           Windows Hebrew
          Cp1256           Windows Arabic
          Cp1257           Windows Baltic
          Cp1258           Windows Vietnamese
          Cp1381           IBM OS/2, DOS People's Republic of China (PRC)
          Cp1383           IBM AIX People's Republic of China (PRC)
          Cp273            IBM Austria, Germany
          Cp277            IBM Denmark, Norway
          Cp278            IBM Finland, Sweden
          Cp280            IBM Italy
          Cp284            IBM Catalan/Spain, Spanish Latin America
          Cp285            IBM United Kingdom, Ireland
          Cp297            IBM France
          Cp33722          IBM-eucJP - Japanese (superset of 5050)
          Cp420            IBM Arabic
          Cp424            IBM Hebrew
          Cp437            MS-DOS United States, Australia, New Zealand,
                                         South Africa
          Cp500            EBCDIC 500V1
          Cp737            PC Greek
          Cp775            PC Baltic
          Cp838            IBM Thailand extended SBCS
          Cp850            MS-DOS Latin-1
          Cp852            MS-DOS Latin-2
          Cp855            IBM Cyrillic
          Cp857            IBM Turkish
          Cp860            MS-DOS Portuguese
          Cp861            MS-DOS Icelandic
          Cp862            PC Hebrew
          Cp863            MS-DOS Canadian French
          Cp864            PC Arabic
          Cp865            MS-DOS Nordic
          Cp866            MS-DOS Russian
          Cp868            MS-DOS Pakistan
          Cp869            IBM Modern Greek
          Cp870            IBM Multilingual Latin-2
          Cp871            IBM Iceland
          Cp874            IBM Thai
          Cp875            IBM Greek
          Cp918            IBM Pakistan(Urdu)
          Cp921            IBM Latvia, Lithuania (AIX, DOS)
          Cp922            IBM Estonia (AIX, DOS)
          Cp930            Japanese Katakana-Kanji mixed with 4370 UDC,
                                         superset of 5026
          Cp933            Korean Mixed with 1880 UDC, superset of 5029
          Cp935            Simplified Chinese Host mixed with 1880 UDC,
                                         superset of 5031
          Cp937            Traditional Chinese Host miexed with 6204 UDC,
                                         superset of 5033
          Cp939            Japanese Latin Kanji mixed with 4370 UDC,
                                         superset of 5035
          Cp942            Japanese (OS/2) superset of 932
          Cp948            OS/2 Chinese (Taiwan) superset of 938
          Cp949            PC Korean
          Cp950            PC Chinese (Hong Kong, Taiwan)
          Cp964            AIX Chinese (Taiwan)
          Cp970            AIX Korean
          EUCJIS           JIS, EUC Encoding, Japanese
          GB2312           GB2312, EUC encoding, Simplified Chinese
          GBK              GBK, Simplified Chinese
          ISO2022CN        ISO 2022 CN, Chinese
          ISO2022CN_CNS    CNS 11643 in ISO-2022-CN form, T. Chinese
          ISO2022CN_GB     GB 2312 in ISO-2022-CN form, S. Chinese
          ISO2022KR        ISO 2022 KR, Korean
          JIS              JIS, Japanese
          JIS0208          JIS 0208, Japanese
          KOI8_R           KOI8-R, Russian
          KSC5601          KS C 5601, Korean
          MS874            Windows Thai
          MacArabic        Macintosh Arabic
          MacCentralEurope Macintosh Latin-2
          MacCroatian      Macintosh Croatian
          MacCyrillic      Macintosh Cyrillic
          MacDingbat       Macintosh Dingbat
          MacGreek         Macintosh Greek
          MacHebrew        Macintosh Hebrew
          MacIceland       Macintosh Iceland
          MacRoman         Macintosh Roman
          MacRomania       Macintosh Romania
          MacSymbol        Macintosh Symbol
          MacThai          Macintosh Thai
          MacTurkish       Macintosh Turkish
          MacUkraine       Macintosh Ukraine
          SJIS             Shift-JIS, Japanese
          UTF8             UTF-8


          不過(guò)WTK可以直接解決JAD的中文問(wèn)題:
              settings>MidLets>MidLet-1屬性改成你想要顯示的中文后重新生成JAD和JAR文件即可。
          posted @ 2005-09-01 02:10 konhon 優(yōu)華 閱讀(682) | 評(píng)論 (0)編輯 收藏

          out momory 一陣天旋地轉(zhuǎn)內(nèi)存又溢出了。在手機(jī)上這種痛苦經(jīng)常都有,套一句俗話(huà)在手機(jī)上用內(nèi)存必須勒緊褲腰帶。雖然現(xiàn)在pc內(nèi)存上G都不奇怪,可是在手機(jī)上卻只能以K來(lái)記,可能某位同志會(huì)馬上跳出來(lái)說(shuō)也有上M的,記住中國(guó)還不富大多數(shù)手機(jī)都是低端手機(jī)。寫(xiě)手機(jī)程序讓我仿佛回到了dos時(shí)代(自我安慰一下那個(gè)時(shí)代也煉出了不少高手說(shuō)不定我是下一個(gè))。言歸正傳做內(nèi)存優(yōu)化可以歸結(jié)為以下幾種方法。代碼優(yōu)化,圖片優(yōu)化,第三方工具優(yōu)化等…

          一.代碼優(yōu)化
          內(nèi)存會(huì)溢出肯定和代碼逃不了關(guān)系,99.99%學(xué)java的人都知道垃圾回收器是java的一大優(yōu)點(diǎn)并據(jù)此來(lái)嘲笑C++。顯然這個(gè)特性為代碼編寫(xiě)者省了不少事,但這個(gè)特性卻帶來(lái)了不少隱患。舉個(gè)例子在游戲當(dāng)中經(jīng)常有不同場(chǎng)景的切換,如從游戲邏輯退到主菜單邏輯,對(duì)游戲邏輯對(duì)象的態(tài)度很多人會(huì)選擇忘記等待垃圾回收器來(lái)收尸^_^。乍看之下似乎并無(wú)不妥垃圾回收器會(huì)來(lái)善后。實(shí)際上垃圾回收器并非實(shí)時(shí)的,它不像C++的Delete語(yǔ)句馬上釋放不用的內(nèi)存。當(dāng)從游戲邏輯切換到主菜單邏輯這時(shí)兩個(gè)對(duì)象同時(shí)存在很可能這時(shí)內(nèi)存就不夠用了。讀到這里很多人會(huì)發(fā)現(xiàn)實(shí)際上垃圾回收器在j2me上并不怎么好用,從一個(gè)角度上來(lái)講在j2me上所有垃圾必須由手工釋放,除簡(jiǎn)單類(lèi)型以外所有對(duì)象都必須顯式地置空例如 imgs=null; 實(shí)際上java提供了一個(gè)不錯(cuò)的工具用來(lái)查找內(nèi)存溢出,java.lang.Runtime.freeMemory() 。它可以返回當(dāng)前的剩余內(nèi)存數(shù),將它適當(dāng)?shù)陌卜旁诖a中可以有效的監(jiān)測(cè)內(nèi)存使用狀況。很大一部份的j2me程序員之前都是從事pc軟件開(kāi)發(fā)工作,充裕的內(nèi)存掩蓋了許多寫(xiě)代碼的不良習(xí)慣。如下所示:
          //a 不為空
          a=new Logic();
          很多人可能對(duì)此有異議,他們會(huì)認(rèn)為新的對(duì)象會(huì)把舊的對(duì)象沖掉并且釋放內(nèi)存。這里面包含兩個(gè)問(wèn)題:1. 該段代碼是先創(chuàng)建對(duì)象然后再進(jìn)行賦值操作的,也就是說(shuō)在這期間有兩個(gè)對(duì)象同時(shí)存在這就很可能會(huì)產(chǎn)生溢出。2. 這樣做也會(huì)妨礙垃圾回收器的工作
          較好的寫(xiě)法如下:
          a=null;
          a=new Logic();
          雖然麻煩了點(diǎn)但在j2me中還是必要的。接著看下例。
          drawString("游戲時(shí)間:" + time ,50,50,Graphics.LEFT|Graphics.TOP);
          "游戲時(shí)間:" + time 很完美在paint()方法當(dāng)中每次都被刷一遍顯示在屏幕上。危機(jī)往往隱藏在美麗的外表,該語(yǔ)句會(huì)引起新的內(nèi)存重新分配來(lái)存儲(chǔ) "游戲時(shí)間:" + time 而顯示完以后又必須由垃圾回收器釋放,用了雙倍時(shí)間,并且容易發(fā)生內(nèi)存溢出。依此類(lèi)推在重復(fù)執(zhí)行的方法里應(yīng)盡量避免重復(fù)定義對(duì)象。與paint()方法類(lèi)似在循環(huán)里也有類(lèi)似的情況存在。
          把所有對(duì)象的初始化放在構(gòu)造函數(shù)里想必是再正當(dāng)不過(guò)了,大多數(shù)人通常的做法是把當(dāng)前邏輯所要用到的資源通通初始化完畢。
          很大一部份的內(nèi)存溢出都是發(fā)生在構(gòu)造函數(shù)中。內(nèi)存使用的高峰期都是在構(gòu)造函數(shù)中所以避開(kāi)這個(gè)高峰能有效的防止溢出。建議最好的辦法是第一次使用時(shí)初始化。如下所示
          if (img==null){
          //初始化
          }
          現(xiàn)在做游戲很多時(shí)候都需要地圖數(shù)組,聲音數(shù)組,還有一些其它資源這些資源很多可以放在代碼中也有的可以放在文件當(dāng)中。
          強(qiáng)烈建議將這些資源放在文件中需要時(shí)在load進(jìn)來(lái)。這些資源文件如果放在代碼中則會(huì)占用不小的代碼段空間,而代碼一般是程序一運(yùn)行就裝載到內(nèi)存當(dāng)中。
          除上面列舉的方法外還有一些大家所熟知的順便一提, 比如關(guān)閉沒(méi)用的rms ,關(guān)閉沒(méi)用的網(wǎng)絡(luò)連接,關(guān)閉沒(méi)用的流。正確地停止線程。良好的程序架構(gòu)減少代碼偶合性也是一個(gè)不錯(cuò)的方法,無(wú)論在代碼調(diào)式,內(nèi)存釋放都可以做到非常清析。

          二. 圖片優(yōu)化
          j2me的內(nèi)存殺手無(wú)疑非圖片莫屬,一張3k的圖片可以占用20多k的內(nèi)存不信大家把load前后的內(nèi)存剩余打印出來(lái)對(duì)比看看。所以防止內(nèi)存溢出最直接的辦法就是從圖片入手。
          1.圖片壓縮: 多數(shù)人馬上會(huì)想到這個(gè)辦法。不錯(cuò)這個(gè)辦法是最有效的。在photoshop里圖片制作完成后不要選擇 "存儲(chǔ)為",而是選擇 "存儲(chǔ)為 web 所用格式" 可以根據(jù)里面的選項(xiàng)進(jìn)行壓縮,特別是顏色這一項(xiàng)越小越好不過(guò)相應(yīng)的圖像會(huì)有所失真。不要認(rèn)為這樣就完了。
          實(shí)際上該圖片還可以再次壓縮,在網(wǎng)上有許多類(lèi)似的工具。推薦一款可以壓縮png格式的軟件 xat.com Image Optimizer 效果不錯(cuò)。經(jīng)常都有 70% 的壓縮率且圖像不會(huì)失真。
          假如你有多張規(guī)格一樣的圖片,那么建議你把它做成一張長(zhǎng)條圖片。有兩個(gè)原因:
          1、 這樣節(jié)省存儲(chǔ)空間和內(nèi)存空間。大家可做個(gè)試驗(yàn)將10張圖片的內(nèi)容放在一張當(dāng)中對(duì)比看看文件大小有沒(méi)有變化。
          2 、10張圖片需要10個(gè)image 對(duì)象需要進(jìn)行10次io操作浪費(fèi)時(shí)間不說(shuō)還浪費(fèi)內(nèi)存。當(dāng)筆者發(fā)現(xiàn)這個(gè)好處時(shí)興奮地把所有圖片都存成一張,吱地一聲內(nèi)存又溢出了...原因想必大家也知道!!圖片太大了不要把不同界面的圖片整合在一起否則經(jīng)常會(huì)得不償失。
          作圖時(shí)還有一些細(xì)節(jié)需要注意,顏色數(shù)量,分辯率,圖像模式(最好是索引顏色),畫(huà)布大小都會(huì)影響到圖片大小。

          三. 工具優(yōu)化
          誰(shuí)都知道混淆器是用來(lái)保護(hù)代碼的以加大反編譯的難度(個(gè)人認(rèn)為這是在嘲笑程序員的智商)。實(shí)際上用它來(lái)優(yōu)化程序也是不錯(cuò)的選擇,至少有兩點(diǎn)好處:1、 壓縮程序大小。一個(gè)60k的程序經(jīng)常可以壓掉10k左右。10k的空間對(duì)于寫(xiě)低端手機(jī)的程序員簡(jiǎn)直是雪中送碳,多少超過(guò)64k限制的游戲都受過(guò)它的恩惠;2、節(jié)省內(nèi)存空間。用腳去想也想得出來(lái)代碼少了內(nèi)存里的代碼段自然就短了。
          根據(jù)經(jīng)驗(yàn)很多人都會(huì)用jb自帶的混淆器RetroGuard,實(shí)際上它效果并不怎么好。推薦使用proguard 在 http://sf.net 可以免費(fèi)下載,它可以比retroguard 多壓縮3至4 k 以上而且安全性更好。
          posted @ 2005-08-31 19:10 konhon 優(yōu)華 閱讀(376) | 評(píng)論 (0)編輯 收藏

          昨天在網(wǎng)上看到有關(guān)J2me的開(kāi)發(fā), 便想試試.於是下載了開(kāi)發(fā)工具.
          eclipse 3.0.1, eclipseme0.4.0安裝一切正常.

          安裝後便依照網(wǎng)上寫(xiě)了一個(gè)HelloWorld程序, 運(yùn)行,怪事出來(lái)啦, 模似器一閃,馬上又自動(dòng)關(guān)閉啦. 看不到效果.

          今天早上反把eclipse換成3.1的, eclipseme換成1.1.0的, 再試試, 問(wèn)題居然解決啦, 郁悶呀, Java這東西老是怪問(wèn)題, 而且大多數(shù)都版本不兼容所引起的, 開(kāi)源這東西雖然好, 可是這開(kāi)源程序之間的兼容可是個(gè)大問(wèn)題.

          posted @ 2005-08-31 19:09 konhon 優(yōu)華 閱讀(361) | 評(píng)論 (0)編輯 收藏

          好久沒(méi)有接觸公司的程序啦, 因?yàn)橐恢睕](méi)出現(xiàn)問(wèn)題所有也懶得理它,
          可能是太長(zhǎng)時(shí)間沒(méi)弄它啦, 今天上午一個(gè)小問(wèn)題 居然發(fā)了我兩個(gè)小時(shí)
          posted @ 2005-08-30 21:42 konhon 優(yōu)華 閱讀(269) | 評(píng)論 (0)編輯 收藏

          可以用JDK中自帶的native2ascii.exe得到.
          在命令提示符下輸入: native2ascii後, 然後再輸入漢字, 就可得到所要漢的Unicode.

          漢字=Unicode
          零=#38646
          壹=#22777
          貳=#36144
          叁=#21441
          肆=#32902
          伍=#20237
          陸=#38470
          柒=#26578
          捌=#25420
          玖=#29590
          拾=#25342
          佰=#20336
          仟=#20191
          萬(wàn)=#19975
          拾=#25342
          佰=#20336
          仟=#20191
          億=#20159
          整=#25972
          負(fù)=#36127
          分=#20998
          角=#35282
          元=#20803
          posted @ 2005-08-30 19:07 konhon 優(yōu)華 閱讀(323) | 評(píng)論 (0)編輯 收藏

          function TForm1.ExtractString(const aString: string; const aSeparator: char; var aPos: Integer): string;
          var
            I: Integer;
          begin
            I := aPos;
            while (I <= Length(aString)) and (aString[I] <> aSeparator) do Inc(I);
            Result := Trim(Copy(aString, aPos, I - aPos));
            if (I <= Length(aString)) and (aString[I] = aSeparator) then Inc(I);
            aPos := I;
          end;

          procedure TForm1.Button1Click(Sender: TObject);
          var
            lString, lSubString: string;
            lPos, j: integer;
          begin
            lString := '023842394201342|343242423423|342342424|533423|2455';
            lPos := 1;
            j := 0;

            while lPos <= Length(lString) do
            begin
              lSubString := ExtractString(lString, '|', lPos);
              inc(j);
              if j = 2 then    // 第二個(gè)
                showmessage(lSubString);
            end;
          end;

          posted @ 2005-08-29 19:21 konhon 優(yōu)華 閱讀(736) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共21頁(yè): First 上一頁(yè) 13 14 15 16 17 18 19 20 21 下一頁(yè) 
          主站蜘蛛池模板: 贵溪市| 即墨市| 津市市| 环江| 镇安县| 黔江区| 新余市| 海口市| 离岛区| 宁国市| 进贤县| 巫溪县| 武定县| 灌阳县| 彩票| 巴里| 泾川县| 甘洛县| 长阳| 英德市| 陇西县| 鹤峰县| 海阳市| 明水县| 威信县| 博兴县| 富锦市| 波密县| 本溪市| 芦山县| 孟连| 柘城县| 张家川| 浮梁县| 纳雍县| 临夏县| 西和县| 平昌县| 河源市| 叙永县| 宁阳县|