J2me開(kāi)發(fā)
posted @ 2006-11-01 15:30 月亮 閱讀(215) | 評(píng)論 (0) | 編輯 收藏
隨筆 - 40, 文章 - 0, 評(píng)論 - 20, 引用 - 0
|
J2me開(kāi)發(fā)posted @ 2006-11-01 15:30 月亮 閱讀(215) | 評(píng)論 (0) | 編輯 收藏 游戲
有個(gè)輸家,就一定有個(gè)贏家。我是輸家,但我四周望了一圈,卻沒(méi)看到半個(gè)贏家,我想,贏家應(yīng)該也是我了,你說(shuō)呢?
posted @ 2006-09-12 15:35 月亮 閱讀(209) | 評(píng)論 (1) | 編輯 收藏 vi命令詳解
vi命令是unix下常用而重要命令,可在全屏幕方式下編輯一個(gè)或多個(gè)文件。若在vi執(zhí)行時(shí)?
沒(méi)有指定一個(gè)文件,那么vi命令會(huì)自動(dòng)產(chǎn)生一個(gè)無(wú)名的空的工作文件。若指定的文件不存在,? 那么就按指定的文件名創(chuàng)建一個(gè)新的文件。若對(duì)文件的修改不保存的話,v?i命令并不改變?cè)? 來(lái)文件的內(nèi)容。? 注意:vi命令并不鎖住所編輯的文件,因此多個(gè)用戶(hù)可能在同時(shí)編輯一個(gè)文件,那么最后? 下面是vi命令使用的一些選項(xiàng)及含義:?????????? -c?sub-command?在對(duì)指定的文件編輯前,先執(zhí)行指定的命令?sub-command?.? -r?filename?恢復(fù)指定的文件filename?.?????????? -R?將指定的文件以只讀的方式放入編輯器中,這樣不會(huì)保存對(duì)文件的任何修?改。? -y?number?將編輯窗口的大小設(shè)為number行。?????????? 下面是vi編輯所處的三種模式:?????????? .命令模式?進(jìn)入vi時(shí)所處的模式。在此模式下用戶(hù)可輸入各種子命令對(duì)進(jìn)行*作,如刪除行、? .文本輸入模式?在此模式下可以修改一行的內(nèi)容并增添新行。在命令模式下鍵入a?、i?或? .命令項(xiàng)模式?在此模式下,可以通過(guò)子命令輸入更多的參數(shù)。如:w子命令要求輸入一文?
h?將光標(biāo)左移一格。?????????? l?將光標(biāo)右移一格。?????????? j?將光標(biāo)下移一格。?????????? k?將光標(biāo)上移一格。?????????? w?將光標(biāo)移到下一個(gè)小字的前面。?????????? W?將光標(biāo)移到下一個(gè)大字的前面。?????????? b?將光標(biāo)移到前一個(gè)小字的前面。?????????? B?將光標(biāo)移到前一個(gè)大字的前面。?????????? e?將光標(biāo)移到下一個(gè)小字的后面。?????????? E?將光標(biāo)移到前一個(gè)大字的后面。?????????? fc?把光標(biāo)移到同一行的下一個(gè)c字符處。?????????? Fc?把光標(biāo)移到同一行的前一個(gè)c字符處。?????????? tc?把光標(biāo)移到同一行的下一個(gè)字符c的前一格。?????????? Tc?把光標(biāo)移到同一行的前一個(gè)字符c的后一格。?????????? number|?把光標(biāo)移到遞number列上。?????????? 下面是命令模式下在行間移動(dòng)的子命令:?????????? +或Enter?把光標(biāo)移至下一行第一個(gè)非空白字符。?????????? -?把光標(biāo)移至上一行第一個(gè)非空白字符。?????????? 0?把光標(biāo)移到當(dāng)前行的第一個(gè)字符處。?????????? $?把光標(biāo)移到當(dāng)前行的最后一個(gè)字符處。?????????? H?把光標(biāo)移到屏幕最頂端一行。?????????? L?把光標(biāo)移到屏幕最底端一行。?????????? M?把光標(biāo)移到屏幕中間。?????????? 下面是命令模式下改變屏幕顯示的子命令:?????????? z-?把當(dāng)前行作為屏幕的最后一行,并重新顯示屏幕。?????????? z.?把當(dāng)前行作為屏幕的中間一行,并重新顯示屏幕。?????????? Ctrl+l?重新顯示屏幕當(dāng)前內(nèi)容。?????????? /pattern/z-?尋找pattern的下一個(gè)位置,并把所在行設(shè)為屏幕的最后一行。? 下面是在命令模式下用來(lái)顯示頁(yè)面的子命令:?????????? Ctrl?+?f向后滾一頁(yè)。?????????? Ctrl?+?d向后滾半頁(yè)。?????????? Ctrl?+?b向前滾一頁(yè)。?????????? Ctrl?+?u向前滾半頁(yè)。?????????? Ctrl?+?e屏幕向下滾一行。?????????? Ctrl?+?y屏幕項(xiàng)上滾一行。?????????? 下面是在命令模式下用來(lái)查找字符串所使用的子命令:?????????? /pattern?向后尋找指定的pattern?,若遇到文件尾,則從頭再開(kāi)始。? ?pattern?向前尋找指定的pattern?,若遇到文件頭,則從尾再開(kāi)始。? n?在上次指定的方向上,再次執(zhí)行上次定義的查找。?????????? N?在上次指定的方向的相反方向上,再次執(zhí)行上次定義的查找。?????????? /pattern/+number?將光標(biāo)停在包含pattern的行后面第number行上。? /pattern/-number?將光標(biāo)停在包含pattern的行前面第number行上。? %?移到匹配的"()"或"{}"上。?????????? 下面是在文本輸入模式下用來(lái)輸入文本的子命令(用戶(hù)可在任何時(shí)候按Escape返回到命令模式):? a?在光標(biāo)之后開(kāi)始輸入文本。?????????? A在行尾開(kāi)始輸入文本。?????????? i在光標(biāo)之前開(kāi)始輸入文本。?????????? I在行首第一個(gè)非空白字符前輸入文本。?????????? o在光標(biāo)所在行后插入一空行。?????????? O在光標(biāo)所在行前插入一空行。?????????? 下面是在命令模式下改變文本所使用的子命令(用戶(hù)可在任何的時(shí)候按Escape鍵返回到命令模式):? cc或S?修改一整行。?????????? C?改變一行光標(biāo)位置以后的部分。?????????? cw?改變光標(biāo)所在單詞。?????????? dd刪除當(dāng)前行。?????????? D?刪除光標(biāo)所在行光標(biāo)后面的內(nèi)容。?????????? dw刪除光標(biāo)所在的單詞。?????????? J?把下一行內(nèi)容加到本行行尾。?????????? rc把光符所在字符替換成c?.?????????? R?覆蓋本行內(nèi)容。?????????? u恢復(fù)上一次的修改。?????????? x刪除光標(biāo)所在的字符。?????????? ~?改變光標(biāo)所在出字符的大小寫(xiě)。?????????? .?重復(fù)上一個(gè)*作。?????????? <<把當(dāng)前行移到左邊。?????????? >>把當(dāng)前行移到右邊。?????????? 下面是用于文件中拷貝文本的字命令:?????????? p?將緩沖區(qū)內(nèi)容取到光標(biāo)所在行的下面一行。?????????? P?將緩沖區(qū)內(nèi)容取到光標(biāo)所在行的上面一行。?????????? "bd?將文本刪除至有名緩沖區(qū)b?.?????????? "bp?張貼有名緩沖區(qū)b中內(nèi)容。?????????? yy把當(dāng)前行放入緩沖區(qū)。?????????? Y?把當(dāng)前行放入緩沖區(qū)。?????????? Yw把光標(biāo)所在的單詞放入緩沖區(qū)。?????????? 下面是用于保存文件的子命令:?????????? :w?回寫(xiě)修改后的文件。?????????? :w?filename?當(dāng)filename不存在時(shí),把修改后的文件存為文件filename?,當(dāng)文件filename? !w?filename?如果文件filename存在時(shí),把修改后的文件保存為文件filename?.? 下面列出了在vi編輯的多個(gè)文件之間切換所用的子命令:?????????? :n開(kāi)始編輯vi激活的文件列表中的下一個(gè)文件。?????????? :n?filenames?指定將被編輯的新的文件列表。?????????? 下面列出了用于在當(dāng)前文件和另外一個(gè)文件間切換的子命令:?????????? :e?filename?使用filename激活vi?(在vi中裝入另一個(gè)文件filename)。? e!重新裝入當(dāng)前文件,若當(dāng)前文件有改動(dòng),則丟棄以前的改動(dòng)。?????????? :e+filename?使用filename激活vi?,并從文件尾部開(kāi)始編輯。? :e+number?filename?使用filename激活vi?,并在第number行開(kāi)始編輯。? :e#?開(kāi)始編輯另外一個(gè)文件。?????????? 下面是在本文件中加入其他文件代碼所使用的子命令:?????????? :r?filename讀取filename文件,并將其內(nèi)容加到當(dāng)前文件后。??? :r?!?command執(zhí)行command文件,并將其輸出加到當(dāng)前文件后。??? 下面是vi中其他的子命令:?????????? ctrl+g?取得正在編輯文件的有關(guān)信息。?????????? :sh啟動(dòng)sh?,從sh中返回可用exit或ctrl+d?.?????????? :!?Command?執(zhí)行命令command?.?????????? !!重新執(zhí)行上次的:!?Command子命令。?????????? :q退出vi?,若用戶(hù)對(duì)編輯的文件有所修改,系統(tǒng)不會(huì)讓用戶(hù)使用q命令退出。??? :q!退出vi而不管是否對(duì)文件有改動(dòng)。?????????? ZZ或:wq?保存對(duì)文件的修改并退出vi?.?????????? 用戶(hù)可在一個(gè)特殊的文件.exrc中定義特殊的vi命令。在vi中使用這些命令時(shí),必須在該? posted @ 2006-05-13 15:13 月亮 閱讀(346) | 評(píng)論 (0) | 編輯 收藏 精通Log4j?log4j雖然總的來(lái)說(shuō)是比較容易使用的,但是要是想比較精通的操縱它還是有很多地方值得探討的。 <appender name="file" class="org.apache.log4j.RollingFileAppender"> <appender name="error" class="org.apache.log4j.RollingFileAppender"> <logger name="biz.startup"> <logger name="com.aspire" additivity="false"> ***********? log4j 配置文件結(jié)束 ************ **********? 派生的TimeSizeRollingFileAppender類(lèi)***** import org.apache.log4j.FileAppender; public class TimeSizeRollingFileAppender ? private final static String FS = System.getProperty("file.separator"); ********** TimeSizeRollingFileAppender 類(lèi)結(jié)束 ****** ************ 調(diào)用示例 TestLog4j類(lèi) ************** import org.apache.log4j.Logger; public class TestLog4j { ? public static void config(){ ***************? TestLog4j end *********** posted @ 2006-04-26 12:59 月亮 閱讀(405) | 評(píng)論 (0) | 編輯 收藏 23種經(jīng)典的設(shè)計(jì)模式_Prototype模式(原形模式)
很多時(shí)候,創(chuàng)建對(duì)象的時(shí)候,只是在某些屬性值上有區(qū)別,而大部分都很相似,但是這樣的對(duì)象的初始化相對(duì)來(lái)說(shuō)比較復(fù)雜,而且
import java.lang.Cloneable;
public class Test { posted @ 2006-04-16 15:21 月亮 閱讀(560) | 評(píng)論 (0) | 編輯 收藏 小技巧_jsp緩存問(wèn)題的解決
如果一直為jsp的緩存問(wèn)題困擾的話,可以試試在jsp中加入以下幾句話:
<head> <meta http-equiv="Cache-Control" content="max-age=0" forua="true" /> <meta http-equiv="Cache-Control" content="no-cache" forua="true"/> <meta http-equiv="Cache-Control" content="must-revalidate" forua="true" /> </head> max-age=30 就表示緩存的最長(zhǎng)存在時(shí)間是30s,no-cache表示無(wú)緩存,must-revalidate表示每次訪問(wèn)必須重新驗(yàn)證是否有更新! posted @ 2006-04-04 15:11 月亮 閱讀(669) | 評(píng)論 (0) | 編輯 收藏 用Java實(shí)現(xiàn)的Html web服務(wù)器? 馬上就要開(kāi)始轉(zhuǎn)到新的項(xiàng)目組,做一個(gè)全新的項(xiàng)目了,對(duì)于HTTP協(xié)議需要一定的了解,所以周末自己用Java寫(xiě)了一個(gè)簡(jiǎn)單的web服務(wù)器試試,只能實(shí)現(xiàn)簡(jiǎn)單的html文件瀏覽。
public class WebServer {
public class SocketThread extends Thread {
?public SocketThread(Socket s) {
?public void run() {
}
/**
?// 服務(wù)器監(jiān)聽(tīng)的端口
?// 服務(wù)器文件的位置
?/**
?/**
?/**
?/**
?/**
} posted @ 2006-03-28 13:55 月亮 閱讀(457) | 評(píng)論 (0) | 編輯 收藏 Apache FileUpload 使用FileUpload 組件使用注意: 3>示例 posted @ 2006-03-06 12:33 月亮 閱讀(1853) | 評(píng)論 (1) | 編輯 收藏 EJB QL
從一個(gè)表users中查詢(xún)記錄,如果是寫(xiě)成
select i from users as i where i.name=?1則編譯EJB的時(shí)候會(huì)報(bào)錯(cuò),但是如果把users 首字母大寫(xiě)就OK了。 select i from Users as i where i.name=?1 posted @ 2006-02-27 23:34 月亮 閱讀(248) | 評(píng)論 (0) | 編輯 收藏 EJb 會(huì)話Bean在EJB容器中,SessionBean主要有兩種:無(wú)狀態(tài)(stateless)和有狀態(tài)(stateful)。 2、有狀態(tài)EJB,類(lèi)似數(shù)據(jù)庫(kù)的Connect鏈接,也類(lèi)似線程守護(hù),它提供引用池(Bean instance pool),每個(gè)客戶(hù)端會(huì)有單獨(dú)的信息。 這里提到的數(shù)據(jù)成員(變量) i_count ,在EJB規(guī)范中稱(chēng)作:conversational state 。對(duì)它的要求也很多的,例如類(lèi)型為 Serializable objects。還有,還要在ejbActivate(),ejbPassivate(),ejbRemove()等生命周期約定的方法中處理。詳見(jiàn)EJB規(guī)范吧。 我的感想:在看第一遍書(shū)時(shí),還一點(diǎn)感覺(jué)都沒(méi)有,根本就看不明白SessionBean中的session與Servlet容器中的session有什么區(qū)別。 posted @ 2006-02-22 16:35 月亮 閱讀(258) | 評(píng)論 (0) | 編輯 收藏 Ibatis示例
2.先新建一個(gè)xml文件 SqlMap.xml,在這個(gè)文件中定義使用了哪些ibatis資源文件 3.定義資源文件monter.xml **注意dynamic-mapped-statement的name 必須唯一 4.定義一個(gè)公共類(lèi)來(lái)生成SqlMap 6.至此就建立了一個(gè)簡(jiǎn)單的ibatis示例. posted @ 2006-01-06 16:39 月亮 閱讀(335) | 評(píng)論 (0) | 編輯 收藏 通過(guò)weblogic的數(shù)據(jù)源獲得數(shù)據(jù)庫(kù)連接的方法通過(guò)weblogic的數(shù)據(jù)源獲得數(shù)據(jù)庫(kù)連接的方法: import javax.naming.NamingException; public class TestDataSource { public static String WEB_URL = "t3://localhost:9000"; posted @ 2006-01-05 10:51 月亮 閱讀(1245) | 評(píng)論 (0) | 編輯 收藏 一個(gè)設(shè)計(jì)中使用比較多的模式
如果是在需求還沒(méi)確定或者是在兩個(gè)類(lèi)實(shí)現(xiàn)相近功能時(shí)候,會(huì)大量使用下面的方式:
--抽象類(lèi),注意其中的newInstance方法的實(shí)現(xiàn) package com.moonsoft.design; public abstract class Moon { public static Moon newInstance(String classStr){ Class re; try { re = Class.forName(classStr); return (Moon)re.newInstance(); } catch (Exception ex) { ex.printStackTrace(); } return null; } public abstract void println(); } --從Moon類(lèi)派生出來(lái)的一個(gè)字類(lèi),提供println方法的一種實(shí)現(xiàn)方式 package com.moonsoft.design; public class Moon1 extends Moon { public void println(){ System.out.println("I am moon1"); } public void myprintln(){ System.out.println("I am moon1 myprintln"); } } --從Moon類(lèi)派生出來(lái)的另一個(gè)字類(lèi),提供println方法的另一種實(shí)現(xiàn)方式 package com.moonsoft.design; public class Moon2 extends Moon { public void println(){ System.out.println("I am moon2!"); } } --調(diào)用 Moon moon = Moon.newInstance("com.moonsoft.design.Moon1"); moon.println(); 或 Moon moon = Moon.newInstance("com.moonsoft.design.Moon2"); moon.println(); posted @ 2006-01-04 16:41 月亮 閱讀(102) | 評(píng)論 (0) | 編輯 收藏 JSP標(biāo)簽的使用方法
<一>.先從javax.servlet.jsp.tagext.BodyTagSupport派生一個(gè)新的類(lèi),并重載它的doStartTag()方法.如果是想要傳入?yún)?shù)的話,則還要在Bean中加入想要的變量,如這里要傳入一個(gè)url值,所以添加一個(gè)參數(shù):linkUrl. 最后代碼如下: package com.moonsoft.jsptag; <二>新建一個(gè)tld文件,內(nèi)容如下: <taglib>
下面就可以在jsp中使用這個(gè)標(biāo)簽了: <mylinkurl:urllink linkUrl="
這里面的mylinkurl為在本jsp頁(yè)面中設(shè)置的prefix值,urllink為tld文件中tag name,linkUrl為輸入的參數(shù) 這樣就在jsp頁(yè)面上加入了一個(gè): posted @ 2005-12-29 13:47 月亮 閱讀(1434) | 評(píng)論 (0) | 編輯 收藏 Java Excel 使用攻略 現(xiàn)在正在做的項(xiàng)目中涉及大量的Excel文件導(dǎo)出導(dǎo)入操作,都是使用Java Excel來(lái)操作。 import jxl.*; public class OperateExcel { } posted @ 2005-12-06 15:06 月亮 閱讀(2204) | 評(píng)論 (4) | 編輯 收藏 執(zhí)行過(guò)程中動(dòng)態(tài)執(zhí)行方法在編程中可能回碰到一些到實(shí)際運(yùn)行時(shí)才指定要調(diào)用的方法的需要,最典型的是Struct的DispatchAction類(lèi), package learn; 其中幾個(gè)關(guān)鍵的地方說(shuō)明一下: posted @ 2005-11-23 00:18 月亮 閱讀(487) | 評(píng)論 (0) | 編輯 收藏 23種面向?qū)ο蟮脑O(shè)計(jì)模式----Prototype模式
Prototype模式允許一個(gè)對(duì)象再創(chuàng)建另外一個(gè)可定制的對(duì)象,根本無(wú)需知道任何如何創(chuàng)建的細(xì)節(jié),工作原理是:通過(guò)將一個(gè)原型對(duì)象傳給那個(gè)要發(fā)動(dòng)創(chuàng)建的對(duì)象,這個(gè)要發(fā)動(dòng)創(chuàng)建的對(duì)象通過(guò)請(qǐng)求原型對(duì)象拷貝它們自己來(lái)實(shí)施創(chuàng)建。 如何使用? 以勺子為例:
有個(gè)具體實(shí)現(xiàn)(ConcretePrototype):
調(diào)用Prototype模式很簡(jiǎn)單: AbstractSpoon spoon = new SoupSpoon(); 當(dāng)然也可以結(jié)合工廠模式來(lái)創(chuàng)建AbstractSpoon實(shí)例。 在Java中Prototype模式變成clone()方法的使用,由于Java的純潔的面向?qū)ο筇匦裕沟迷贘ava中使用設(shè)計(jì)模式變得很自然,兩者已經(jīng)幾乎是渾然一體了。這反映在很多模式上,如Interator遍歷模式。 posted @ 2005-11-20 20:32 月亮 閱讀(206) | 評(píng)論 (0) | 編輯 收藏 23種面向?qū)ο蟮脑O(shè)計(jì)模式----Factory method模式
--Car 類(lèi) public static void main(String [] argv){ <個(gè)人觀點(diǎn),僅作參考>
posted @ 2005-11-13 21:35 月亮 閱讀(927) | 評(píng)論 (1) | 編輯 收藏 23種面向?qū)ο蟮脑O(shè)計(jì)模式----Singleton模式 Singleton模式為單態(tài)模式或者叫孤子模式,保證一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 的帖子計(jì)數(shù)器,每次瀏覽一次需要計(jì)數(shù),單態(tài)類(lèi)能否保持住這個(gè)計(jì)數(shù),并且能synchronize的安全自動(dòng)加 1,如果你要把這個(gè)數(shù)字永久保存到數(shù)據(jù)庫(kù),你可以在不修改單態(tài)接口的情況下方便的做到。 getInstance方法中控制要使用的是哪個(gè)子類(lèi),具體實(shí)現(xiàn)代碼如下: -----TestSingleton.java -----SubTestSingleton.java <以上為個(gè)人見(jiàn)解,歡迎大家評(píng)論!> posted @ 2005-11-13 15:54 月亮 閱讀(666) | 評(píng)論 (0) | 編輯 收藏 面向?qū)ο蟮?3種設(shè)計(jì)模式
最近對(duì)面向?qū)ο蟮脑O(shè)計(jì)的23種經(jīng)典的設(shè)計(jì)模式做了一個(gè)研究,接下來(lái)的Blog中我會(huì)按我的理解做個(gè)簡(jiǎn)單介紹并提供我寫(xiě)的示例代碼,歡迎大家的評(píng)論,共同提高.
posted @ 2005-11-13 15:40 月亮 閱讀(758) | 評(píng)論 (0) | 編輯 收藏 Oracle數(shù)據(jù)庫(kù)查詢(xún)一個(gè)月的記錄的sql語(yǔ)句
Oracle數(shù)據(jù)庫(kù)查詢(xún)一個(gè)月的記錄的sql語(yǔ)句:
select LASTUPDTIME from spprereg where (to_date('2005-5-1','YYYY-mm-dd')-LASTUPDTIME)<0 and (LAST_DAY(to_date('2005-5-1','YYYY-mm-dd'))-LASTUPDTIME)>0 posted @ 2005-08-06 21:20 月亮 閱讀(2217) | 評(píng)論 (1) | 編輯 收藏 抱著老板的心態(tài)去打工
這是我的一個(gè)朋友寫(xiě)的,轉(zhuǎn)給大家看看。
從某種意義上來(lái)說(shuō),打工真是害人不淺,長(zhǎng)期的打工固化了人的思維,淡化了人的責(zé)任感,扼殺了人的創(chuàng)新思維,沒(méi)有成本概念,缺乏長(zhǎng)遠(yuǎn)規(guī)劃。最為關(guān)鍵的是,打工打得越久,看問(wèn)題的視角就越悲觀,自己也就越自卑。 posted @ 2005-07-10 22:22 月亮 閱讀(289) | 評(píng)論 (0) | 編輯 收藏 成為有錢(qián)人的25種方法
“嫁個(gè)有錢(qián)人”不如自己成為有錢(qián)人,你想發(fā)財(cái)嗎?你知道如何成為有錢(qián)人嗎?
1、做你真正感興趣的事——你會(huì)花很多時(shí)間在上面,因此你一定要感興趣才行,如果不是這樣的話,你不愿意把時(shí)間花在上面,就得不到成功。 2、自己當(dāng)老板。為別人打工,你絕不會(huì)變成巨富,老板一心一意地縮減開(kāi)支,他的目標(biāo)不是使他的職員變成有錢(qián)人。 3、提供一種有實(shí)效的服務(wù),或一種實(shí)際的產(chǎn)品。你要以寫(xiě)作、繪畫(huà)或作曲變成百萬(wàn)富翁的機(jī)會(huì)可以說(shuō)是無(wú)限小,而你要在營(yíng)造業(yè)、房地產(chǎn)、制造業(yè)發(fā)大財(cái)?shù)臋C(jī)會(huì)比較大。記住,出版商賺的錢(qián)比作家多得多。 4、如果你堅(jiān)持要用自己的靈感來(lái)創(chuàng)業(yè)?最好選擇娛樂(lè)業(yè),在這方面,發(fā)財(cái)?shù)乃俣认喈?dāng)快,流行歌曲和電視最理想。 5、不論你是演員或商人,盡量增加你的觀眾。在小咖啡館唱歌的人,所賺的錢(qián)一定比不上替大唱片公司灌唱片的人,地方性的商人,不會(huì)比全國(guó)性的商人賺的錢(qián)多。 6、找出一種需要,然后滿(mǎn)足它。社會(huì)越變?cè)綇?fù)雜,人們所需要的產(chǎn)品和服務(wù)越來(lái)越多,最先發(fā)現(xiàn)這些需求而且滿(mǎn)足他們的人,是改進(jìn)現(xiàn)有產(chǎn)品和服務(wù)的人,也是最先成為富翁的人。 7、不要不敢采用不同的方式——新的方法和新產(chǎn)品,會(huì)造成新的財(cái)富。但必須確定你的新方法比舊方法更理想,你的新方法必 想致富,請(qǐng)?jiān)該u錢(qián) 引爆數(shù)碼影像! 中華川菜火鍋大聯(lián) 加盟樂(lè)可可天天樂(lè) 須增進(jìn)產(chǎn)品外觀、效率、品質(zhì)、方便或者降低成本。 8、如果你受過(guò)專(zhuān)業(yè)教育,或者有特殊才能,充分利用它。如果你燒得一手好菜,而卻要去當(dāng)泥水匠,那就太笨了。 9、在你著手任何事情之前,仔細(xì)地對(duì)周?chē)那樾窝芯恳环U畽C(jī)關(guān)和公共圖書(shū)館,可以提供不少資料,先做研究,可以節(jié)省你不少時(shí)間和金錢(qián)。 10、不要一直都想著發(fā)大財(cái),不如你想想如何改進(jìn)你的事業(yè),您應(yīng)該常常問(wèn)自己的是:“我如何改良我的事業(yè)?”如何使事業(yè)進(jìn)行順利,財(cái)富就會(huì)跟著而來(lái)。 11、可能的話,進(jìn)行一種家庭事業(yè),這種方法可以減少費(fèi)用,增進(jìn)士氣,利潤(rùn)的分配很簡(jiǎn)單,利潤(rùn)能夠得到充分的利用,整個(gè)事業(yè)控制也較容易。 12、盡可能減少你的費(fèi)用,但不能犧牲你的品質(zhì),否則的話,你等于是在慢性自殺,賺錢(qián)的機(jī)會(huì)不會(huì)大。 13、跟同行的朋友維持友誼——他們可能對(duì)你很有幫助。 14、把盡量多的時(shí)間花在事業(yè)上。一天12小時(shí)、一星期6天是最低要求,一天14小時(shí)到18小時(shí)很平常,一星期工作7天最好了。你必須先犧牲家庭和社會(huì)上的娛樂(lè),直到你事業(yè)站穩(wěn)為止。也只有到那時(shí)候,你才能把責(zé)任分給別人。 15、不要不敢自己下決心。聽(tīng)聽(tīng)別人的贊美和批評(píng),但你自己要下決心。 16、不要不敢說(shuō)實(shí)話。拐彎抹角,只會(huì)浪費(fèi)時(shí)間,心里想什么就說(shuō)什么,而且要盡可能地直截了當(dāng)?shù)亍⒚鞔_地說(shuō)出來(lái)。 17、不要不敢承認(rèn)自己的錯(cuò)誤。犯了錯(cuò)誤并不是一種罪行,犯錯(cuò)不改才是罪過(guò)。 18、不要因?yàn)槭【凸悴磺啊J∈请y免的,也是有價(jià)值的,從失敗中,你會(huì)學(xué)到正確的方法論。 19、不要在不可行的觀念上打轉(zhuǎn)。一發(fā)現(xiàn)某種方法行不通,立即把它放棄。世界上有無(wú)數(shù)的方法,把時(shí)間浪費(fèi)在那些不可行的方法上是無(wú)可彌補(bǔ)的損失。 20、不要冒你承擔(dān)不起的風(fēng)險(xiǎn)。如果你損失10萬(wàn)元,若損失得起的話,就可以繼續(xù)下去,但如果你賠不起5萬(wàn)元,而一旦失敗的話,你就完蛋了。 21、一再投資,不要讓你的利潤(rùn)空閑著,你的利潤(rùn)要繼續(xù)投資下去,最好投資別的事業(yè)或你控制的事業(yè)上,那樣,才能錢(qián)滾錢(qián),替你增加好幾倍的財(cái)富。 22、請(qǐng)一位高明的律師——他會(huì)替你節(jié)約更多的金錢(qián)和時(shí)間,比起你所給予的將要多的多。 23、請(qǐng)一位精明的會(huì)計(jì)師。最初的時(shí)候,你自己記賬,但除非你本身是個(gè)會(huì)計(jì)師,你還是請(qǐng)一位精明的會(huì)計(jì)師,可能決定你的成功和失敗——他是值得你花錢(qián)的。 24、請(qǐng)專(zhuān)家替你報(bào)稅。一位機(jī)靈的稅務(wù)專(zhuān)家,可又替你免很多的稅。 25、好好維持你的健康和你的平靜心靈——否則的話,擁有再多的錢(qián)也沒(méi)有什么意思。 posted @ 2005-06-23 12:09 月亮 閱讀(281) | 評(píng)論 (0) | 編輯 收藏 阻礙成功的幾個(gè)性格多疑,敏感,天真,猶豫不決,膽怯,多慮
posted @ 2005-06-23 11:42 月亮 閱讀(250) | 評(píng)論 (0) | 編輯 收藏 辦公室中的省時(shí)小秘訣
1.了解你的精力充沛期。通常人們?cè)谠绯?點(diǎn)左右工作效率最高,可以把最困難的工作放到這時(shí)來(lái)完成。
2.集中一天中的頭兩個(gè)小時(shí)來(lái)處理手頭的工作并不接電話、不開(kāi)會(huì)、不受打擾。這樣可以事半功倍。 3.立刻回復(fù)重要的郵件,將不重要的丟棄。若任它們積累成堆,反而更費(fèi)時(shí)間。 4.做個(gè)任務(wù)清單,將所有的項(xiàng)目和約定記在效率手冊(cè)中。手頭一定要帶著效率手冊(cè)以幫助自己按計(jì)劃行事。 5.學(xué)會(huì)高效地利用零碎時(shí)間,用來(lái)讀點(diǎn)東西或是構(gòu)思一個(gè)文件,不要發(fā)呆或做白日夢(mèng)。 6.把瑣碎的工作寫(xiě)在單子上,以便有零碎時(shí)間時(shí)馬上去做。 7.并非每件工作都值得精工細(xì)做,有些事只要過(guò)得去就可以了。一遍又一遍地寫(xiě)些瑣碎的備忘錄不是高效利用時(shí)間的做法。 8.減少回電話的時(shí)間。如果你需要傳遞的只是一個(gè)信息,不妨在工作以外的時(shí)間在錄音電話上留言,或是發(fā)個(gè)電子郵件。 9.如果有人在電話中喋喋不休地講話,你可以禮貌地結(jié)束電話。 10.對(duì)可能打來(lái)的電話做到心中有數(shù),這樣在你接到所期待的電話后便可迅速找到所需要的各種材料,不必當(dāng)時(shí)亂翻亂找。 11.學(xué)習(xí)上網(wǎng)高效搜尋的技能,以節(jié)省上網(wǎng)查詢(xún)的時(shí)間。把你經(jīng)常要瀏覽的網(wǎng)站收集起來(lái)以便隨時(shí)找到。 12.用國(guó)際互聯(lián)網(wǎng)簡(jiǎn)化商業(yè)旅行的安排。多數(shù)飯店和航線可以網(wǎng)上查詢(xún)和預(yù)訂。 13.只要情況允許就可委派別人分擔(dān)工作。事必躬親會(huì)使自己疲憊不堪,而且永遠(yuǎn)也做不完。不妨請(qǐng)同事幫忙,或讓助手更努力地投入。 14.做個(gè)靈活的日程表,當(dāng)你需要時(shí)便可以忙中偷閑。例如,在中午加班,然后早一小時(shí)離開(kāi)辦公室去健身,或是每天工作10個(gè)小時(shí),然后用星期五來(lái)赴約會(huì)、看醫(yī)生。 15.在離開(kāi)辦公室之前開(kāi)列次日工作的清單,這樣第二天早晨一來(lái)便可以全力以赴。 posted @ 2005-06-22 10:22 月亮 閱讀(245) | 評(píng)論 (0) | 編輯 收藏 關(guān)于Java中方法重載的問(wèn)題
Java中支持方法名相同,但是方法參數(shù)不同而自動(dòng)去選擇執(zhí)行哪一個(gè)方法,如print(int i)和print(String str),雖然方法名相同,但是參數(shù)不同。象這里的int和String 參數(shù)差異比較大所以看起來(lái)這種重載沒(méi)什么差別,但是如果是類(lèi)型差別不大, 會(huì)出現(xiàn)什么情況呢?
看下面的代碼: public void f(float i){ System.out.println("float"); } public viod f(double i){ System.out.println("double"); } 那么執(zhí)行 f(5)會(huì)輸出什么呢?5是被認(rèn)為是float類(lèi)型還是double類(lèi)型還是會(huì)報(bào)錯(cuò)呢?執(zhí)行結(jié)果是 float 。原來(lái)在這種情況下,該數(shù)據(jù)類(lèi)型能被轉(zhuǎn)為一個(gè)較大的數(shù)據(jù)類(lèi)型,比5較大的數(shù)據(jù)類(lèi)型是float,其次才到double,所以輸出結(jié)果是float。還有一個(gè)特殊的情況就是如果輸入類(lèi)型為char,如這里我們執(zhí)行f('a'), 不要以為這會(huì)出錯(cuò),其實(shí)是不會(huì)出錯(cuò)的,因?yàn)槿绻麤](méi)有發(fā)現(xiàn)一個(gè)準(zhǔn)確的char于它匹配,那么它就把這個(gè)char轉(zhuǎn)換成int類(lèi)型,如果沒(méi)有int類(lèi)型和它匹配,在去尋找較大的數(shù)據(jù)類(lèi)型,這里它找到了float,所以這里執(zhí)行flaot('a')輸出的還是 float。 下面再討論另外一種情況,譬如說(shuō)下面這種情況: 定義了下面一個(gè)方法: public void f(int i){ System.out.println("int "); } 如果執(zhí)行f(100.99)會(huì)不會(huì)在這種數(shù)據(jù)類(lèi)型大于這種重載方法期待的變量時(shí)會(huì)怎么處理呢?會(huì)不會(huì)把這種較大的數(shù)據(jù)類(lèi)型縮小到期待的數(shù)據(jù)類(lèi)型?編譯一下,很遺憾出錯(cuò)了,在這種情況下是出錯(cuò)的。 這么快就12點(diǎn)半了,睡覺(jué)了~~~不然明天早晨爬不起來(lái)了。 posted @ 2005-06-10 00:20 月亮 閱讀(372) | 評(píng)論 (0) | 編輯 收藏 Java中的"goto"語(yǔ)句雖然Java中g(shù)oto語(yǔ)句只是java的一個(gè)保留字,沒(méi)有起任何作用,但是我今天在使用continue和break語(yǔ)句時(shí),還是發(fā)現(xiàn)了其中又goto語(yǔ)句的影子。因?yàn)閏ontinue和break語(yǔ)句都支持跳到一個(gè)Label的位置。下面是具體的用法: posted @ 2005-06-08 23:28 月亮 閱讀(2233) | 評(píng)論 (2) | 編輯 收藏 Java對(duì)象比較
Java中檢查兩個(gè)對(duì)象是否相等,這個(gè)看起來(lái)很簡(jiǎn)單的事情但是實(shí)際做起來(lái)不一定是一個(gè)簡(jiǎn)單的事情。我們可能首先想到的是==運(yùn)算符號(hào),但是這個(gè)運(yùn)算符真的能比較兩個(gè)對(duì)象么?我們先看下面一段代碼: public static void main(String [] argv ){ Integer A = new Integer(47); Integer B = new Integer(47); System.out.println( A == B ) ; System.out.println( A != B ); } 可能你覺(jué)得輸出的結(jié)果是true false ,但是結(jié)果正好相反,是:false,true。不要覺(jué)得奇怪,因?yàn)椋剑綄?shí)際比較的是兩個(gè)對(duì)象的句柄,而不是對(duì)象的內(nèi)容,所以 A==B輸出為false, 而A != B 輸出為false. 可能以為equals方法能幫我們解決這個(gè)問(wèn)題,那么來(lái)試一下, class Value { public class EqualsMethod2 {
posted @ 2005-06-08 21:26 月亮 閱讀(450) | 評(píng)論 (0) | 編輯 收藏 Java編程規(guī)則(轉(zhuǎn)自CSDN)
原出處:http://dev.csdn.net/article/20/20614.shtm
(1) 類(lèi)名首字母應(yīng)該大寫(xiě)。字段、方法以及對(duì)象(句柄)的首字母應(yīng)小寫(xiě)。對(duì)于所有標(biāo)識(shí)符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫(xiě)中間單詞的首字母。例如: ThisIsAClassName thisIsMethodOrFieldName 若在定義中出現(xiàn)了常數(shù)初始化字符,則大寫(xiě)static final基本類(lèi)型標(biāo)識(shí)符中的所有字母。這樣便可標(biāo)志出它們屬于編譯期的常數(shù)。 Java包(Package)屬于一種特殊情況:它們?nèi)际切?xiě)字母,即便中間的單詞亦是如此。對(duì)于域名擴(kuò)展名稱(chēng),如com,org,net或者edu等,全部都應(yīng)小寫(xiě)(這也是Java 1.1和Java 1.2的區(qū)別之一)。 (2) 為了常規(guī)用途而創(chuàng)建一個(gè)類(lèi)時(shí),請(qǐng)采取“經(jīng)典形式”,并包含對(duì)下述元素的定義: equals() hashCode() toString() clone()(implement Cloneable) implement Serializable (3) 對(duì)于自己創(chuàng)建的每一個(gè)類(lèi),都考慮置入一個(gè)main(),其中包含了用于測(cè)試那個(gè)類(lèi)的代碼。為使用一個(gè)項(xiàng)目中的類(lèi),我們沒(méi)必要?jiǎng)h除測(cè)試代碼。若進(jìn)行了任何形式的改動(dòng),可方便地返回測(cè)試。這些代碼也可作為如何使用類(lèi)的一個(gè)示例使用。 (4) 應(yīng)將方法設(shè)計(jì)成簡(jiǎn)要的、功能性單元,用它描述和實(shí)現(xiàn)一個(gè)不連續(xù)的類(lèi)接口部分。理想情況下,方法應(yīng)簡(jiǎn)明扼要。若長(zhǎng)度很大,可考慮通過(guò)某種方式將其分割成較短的幾個(gè)方法。這樣做也便于類(lèi)內(nèi)代碼的重復(fù)使用(有些時(shí)候,方法必須非常大,但它們?nèi)詰?yīng)只做同樣的一件事情)。 (5) 設(shè)計(jì)一個(gè)類(lèi)時(shí),請(qǐng)?jiān)O(shè)身處地為客戶(hù)程序員考慮一下(類(lèi)的使用方法應(yīng)該是非常明確的)。然后,再設(shè)身處地為管理代碼的人考慮一下(預(yù)計(jì)有可能進(jìn)行哪些形式的修改,想想用什么方法可把它們變得更簡(jiǎn)單)。 (6) 使類(lèi)盡可能短小精悍,而且只解決一個(gè)特定的問(wèn)題。下面是對(duì)類(lèi)設(shè)計(jì)的一些建議: ■一個(gè)復(fù)雜的開(kāi)關(guān)語(yǔ)句:考慮采用“多形”機(jī)制 ■數(shù)量眾多的方法涉及到類(lèi)型差別極大的操作:考慮用幾個(gè)類(lèi)來(lái)分別實(shí)現(xiàn) ■許多成員變量在特征上有很大的差別:考慮使用幾個(gè)類(lèi) (7) 讓一切東西都盡可能地“私有”——private。可使庫(kù)的某一部分“公共化”(一個(gè)方法、類(lèi)或者一個(gè)字段等等),就永遠(yuǎn)不能把它拿出。若強(qiáng)行拿出,就可能破壞其他人現(xiàn)有的代碼,使他們不得不重新編寫(xiě)和設(shè)計(jì)。若只公布自己必須公布的,就可放心大膽地改變其他任何東西。在多線程環(huán)境中,隱私是特別重要的一個(gè)因素——只有private字段才能在非同步使用的情況下受到保護(hù)。 (8) 謹(jǐn)惕“巨大對(duì)象綜合癥”。對(duì)一些習(xí)慣于順序編程思維、且初涉OOP領(lǐng)域的新手,往往喜歡先寫(xiě)一個(gè)順序執(zhí)行的程序,再把它嵌入一個(gè)或兩個(gè)巨大的對(duì)象里。根據(jù)編程原理,對(duì)象表達(dá)的應(yīng)該是應(yīng)用程序的概念,而非應(yīng)用程序本身。 (9) 若不得已進(jìn)行一些不太雅觀的編程,至少應(yīng)該把那些代碼置于一個(gè)類(lèi)的內(nèi)部。 (10) 任何時(shí)候只要發(fā)現(xiàn)類(lèi)與類(lèi)之間結(jié)合得非常緊密,就需要考慮是否采用內(nèi)部類(lèi),從而改善編碼及維護(hù)工作(參見(jiàn)第14章14.1.2小節(jié)的“用內(nèi)部類(lèi)改進(jìn)代碼”)。 (11) 盡可能細(xì)致地加上注釋?zhuān)⒂胘avadoc注釋文檔語(yǔ)法生成自己的程序文檔。 (12) 避免使用“魔術(shù)數(shù)字”,這些數(shù)字很難與代碼很好地配合。如以后需要修改它,無(wú)疑會(huì)成為一場(chǎng)噩夢(mèng),因?yàn)楦静恢馈?00”到底是指“數(shù)組大小”還是“其他全然不同的東西”。所以,我們應(yīng)創(chuàng)建一個(gè)常數(shù),并為其使用具有說(shuō)服力的描述性名稱(chēng),并在整個(gè)程序中都采用常數(shù)標(biāo)識(shí)符。這樣可使程序更易理解以及更易維護(hù)。 (13) 涉及構(gòu)建器和異常的時(shí)候,通常希望重新丟棄在構(gòu)建器中捕獲的任何異常——如果它造成了那個(gè)對(duì)象的創(chuàng)建失敗。這樣一來(lái),調(diào)用者就不會(huì)以為那個(gè)對(duì)象已正確地創(chuàng)建,從而盲目地繼續(xù)。 (14) 當(dāng)客戶(hù)程序員用完對(duì)象以后,若你的類(lèi)要求進(jìn)行任何清除工作,可考慮將清除代碼置于一個(gè)良好定義的方法里,采用類(lèi)似于cleanup()這樣的名字,明確表明自己的用途。除此以外,可在類(lèi)內(nèi)放置一個(gè)boolean(布爾)標(biāo)記,指出對(duì)象是否已被清除。在類(lèi)的finalize()方法里,請(qǐng)確定對(duì)象已被清除,并已丟棄了從RuntimeException繼承的一個(gè)類(lèi)(如果還沒(méi)有的話),從而指出一個(gè)編程錯(cuò)誤。在采取象這樣的方案之前,請(qǐng)確定finalize()能夠在自己的系統(tǒng)中工作(可能需要調(diào)用System.runFinalizersOnExit(true),從而確保這一行為)。 (15) 在一個(gè)特定的作用域內(nèi),若一個(gè)對(duì)象必須清除(非由垃圾收集機(jī)制處理),請(qǐng)采用下述方法:初始化對(duì)象;若成功,則立即進(jìn)入一個(gè)含有finally從句的try塊,開(kāi)始清除工作。 (16) 若在初始化過(guò)程中需要覆蓋(取消)finalize(),請(qǐng)記住調(diào)用super.finalize()(若Object屬于我們的直接超類(lèi),則無(wú)此必要)。在對(duì)finalize()進(jìn)行覆蓋的過(guò)程中,對(duì)super.finalize()的調(diào)用應(yīng)屬于最后一個(gè)行動(dòng),而不應(yīng)是第一個(gè)行動(dòng),這樣可確保在需要基礎(chǔ)類(lèi)組件的時(shí)候它們依然有效。 (17) 創(chuàng)建大小固定的對(duì)象集合時(shí),請(qǐng)將它們傳輸至一個(gè)數(shù)組(若準(zhǔn)備從一個(gè)方法里返回這個(gè)集合,更應(yīng)如此操作)。這樣一來(lái),我們就可享受到數(shù)組在編譯期進(jìn)行類(lèi)型檢查的好處。此外,為使用它們,數(shù)組的接收者也許并不需要將對(duì)象“造型”到數(shù)組里。 (18) 盡量使用interfaces,不要使用abstract類(lèi)。若已知某樣?xùn)|西準(zhǔn)備成為一個(gè)基礎(chǔ)類(lèi),那么第一個(gè)選擇應(yīng)是將其變成一個(gè)interface(接口)。只有在不得不使用方法定義或者成員變量的時(shí)候,才需要將其變成一個(gè)abstract(抽象)類(lèi)。接口主要描述了客戶(hù)希望做什么事情,而一個(gè)類(lèi)則致力于(或允許)具體的實(shí)施細(xì)節(jié)。 (19) 在構(gòu)建器內(nèi)部,只進(jìn)行那些將對(duì)象設(shè)為正確狀態(tài)所需的工作。盡可能地避免調(diào)用其他方法,因?yàn)槟切┓椒赡鼙黄渌烁采w或取消,從而在構(gòu)建過(guò)程中產(chǎn)生不可預(yù)知的結(jié)果(參見(jiàn)第7章的詳細(xì)說(shuō)明)。 (20) 對(duì)象不應(yīng)只是簡(jiǎn)單地容納一些數(shù)據(jù);它們的行為也應(yīng)得到良好的定義。 (21) 在現(xiàn)成類(lèi)的基礎(chǔ)上創(chuàng)建新類(lèi)時(shí),請(qǐng)首先選擇“新建”或“創(chuàng)作”。只有自己的設(shè)計(jì)要求必須繼承時(shí),才應(yīng)考慮這方面的問(wèn)題。若在本來(lái)允許新建的場(chǎng)合使用了繼承,則整個(gè)設(shè)計(jì)會(huì)變得沒(méi)有必要地復(fù)雜。 (22) 用繼承及方法覆蓋來(lái)表示行為間的差異,而用字段表示狀態(tài)間的區(qū)別。一個(gè)非常極端的例子是通過(guò)對(duì)不同類(lèi)的繼承來(lái)表示顏色,這是絕對(duì)應(yīng)該避免的:應(yīng)直接使用一個(gè)“顏色”字段。 (23) 為避免編程時(shí)遇到麻煩,請(qǐng)保證在自己類(lèi)路徑指到的任何地方,每個(gè)名字都僅對(duì)應(yīng)一個(gè)類(lèi)。否則,編譯器可能先找到同名的另一個(gè)類(lèi),并報(bào)告出錯(cuò)消息。若懷疑自己碰到了類(lèi)路徑問(wèn)題,請(qǐng)?jiān)囋囋陬?lèi)路徑的每一個(gè)起點(diǎn),搜索一下同名的.class文件。 (24) 在Java 1.1 AWT中使用事件“適配器”時(shí),特別容易碰到一個(gè)陷阱。若覆蓋了某個(gè)適配器方法,同時(shí)拼寫(xiě)方法沒(méi)有特別講究,最后的結(jié)果就是新添加一個(gè)方法,而不是覆蓋現(xiàn)成方法。然而,由于這樣做是完全合法的,所以不會(huì)從編譯器或運(yùn)行期系統(tǒng)獲得任何出錯(cuò)提示——只不過(guò)代碼的工作就變得不正常了。 (25) 用合理的設(shè)計(jì)方案消除“偽功能”。也就是說(shuō),假若只需要?jiǎng)?chuàng)建類(lèi)的一個(gè)對(duì)象,就不要提前限制自己使用應(yīng)用程序,并加上一條“只生成其中一個(gè)”注釋。請(qǐng)考慮將其封裝成一個(gè)“獨(dú)生子”的形式。若在主程序里有大量散亂的代碼,用于創(chuàng)建自己的對(duì)象,請(qǐng)考慮采納一種創(chuàng)造性的方案,將些代碼封裝起來(lái)。 (26) 警惕“分析癱瘓”。請(qǐng)記住,無(wú)論如何都要提前了解整個(gè)項(xiàng)目的狀況,再去考察其中的細(xì)節(jié)。由于把握了全局,可快速認(rèn)識(shí)自己未知的一些因素,防止在考察細(xì)節(jié)的時(shí)候陷入“死邏輯”中。 (27) 警惕“過(guò)早優(yōu)化”。首先讓它運(yùn)行起來(lái),再考慮變得更快——但只有在自己必須這樣做、而且經(jīng)證實(shí)在某部分代碼中的確存在一個(gè)性能瓶頸的時(shí)候,才應(yīng)進(jìn)行優(yōu)化。除非用專(zhuān)門(mén)的工具分析瓶頸,否則很有可能是在浪費(fèi)自己的時(shí)間。性能提升的隱含代價(jià)是自己的代碼變得難于理解,而且難于維護(hù)。 (28) 請(qǐng)記住,閱讀代碼的時(shí)間比寫(xiě)代碼的時(shí)間多得多。思路清晰的設(shè)計(jì)可獲得易于理解的程序,但注釋、細(xì)致的解釋以及一些示例往往具有不可估量的價(jià)值。無(wú)論對(duì)你自己,還是對(duì)后來(lái)的人,它們都是相當(dāng)重要的。如對(duì)此仍有懷疑,那么請(qǐng)?jiān)囅胱约涸噲D從聯(lián)機(jī)Java文檔里找出有用信息時(shí)碰到的挫折,這樣或許能將你說(shuō)服。 (29) 如認(rèn)為自己已進(jìn)行了良好的分析、設(shè)計(jì)或者實(shí)施,那么請(qǐng)稍微更換一下思維角度。試試邀請(qǐng)一些外來(lái)人士——并不一定是專(zhuān)家,但可以是來(lái)自本公司其他部門(mén)的人。請(qǐng)他們用完全新鮮的眼光考察你的工作,看看是否能找出你一度熟視無(wú)睹的問(wèn)題。采取這種方式,往往能在最適合修改的階段找出一些關(guān)鍵性的問(wèn)題,避免產(chǎn)品發(fā)行后再解決問(wèn)題而造成的金錢(qián)及精力方面的損失。 (30) 良好的設(shè)計(jì)能帶來(lái)最大的回報(bào)。簡(jiǎn)言之,對(duì)于一個(gè)特定的問(wèn)題,通常會(huì)花較長(zhǎng)的時(shí)間才能找到一種最恰當(dāng)?shù)慕鉀Q方案。但一旦找到了正確的方法,以后的工作就輕松多了,再也不用經(jīng)歷數(shù)小時(shí)、數(shù)天或者數(shù)月的痛苦掙扎。我們的努力工作會(huì)帶來(lái)最大的回報(bào)(甚至無(wú)可估量)。而且由于自己傾注了大量心血,最終獲得一個(gè)出色的設(shè)計(jì)方案,成功的快感也是令人心動(dòng)的。堅(jiān)持抵制草草完工的誘惑——那樣做往往得不償失。 (31) 可在Web上找到大量的編程參考資源,甚至包括大量新聞組、討論組、郵寄列表等。下面這個(gè)地方提供了大量有益的鏈接: posted @ 2005-06-08 16:38 月亮 閱讀(225) | 評(píng)論 (0) | 編輯 收藏 Java對(duì)象操作(自己體會(huì),不一定說(shuō)的正確,但是都是在程序中測(cè)試)
Java中c中的指針的概念,但是我在使用中還是碰到過(guò)一些問(wèn)題,如我把一個(gè)一個(gè)對(duì)象A賦值給對(duì)象B時(shí),這兩個(gè)對(duì)象有一個(gè)改變,那么另外一個(gè)也相應(yīng)的改變。下面分別談?wù)勥@可能發(fā)生問(wèn)題的幾種情況:
<一>從“一個(gè)對(duì)象到另一個(gè)對(duì)象的賦值”,如: Class A = new Class(); Class B = A; 這種情況實(shí)際把句柄從一個(gè)地方復(fù)制到另外一個(gè)地方,這種情況下對(duì)象B和A實(shí)際指向的是同一個(gè)句柄,更新B會(huì)影響到A,同樣更新A也會(huì)影響到B。 <二>把對(duì)象作為方法的參數(shù)傳遞到一個(gè)方法中。Java方法的參數(shù)傳遞可以分成兩種:一種是值傳遞,這種一般是簡(jiǎn)單的數(shù)據(jù)類(lèi)型,如int,long,double,char這些等;一種類(lèi)似是c中的引用傳遞,就是把對(duì)象作為一個(gè)引用傳遞給方法參數(shù),在這種情況下,在方法中把這個(gè)傳入的參數(shù)對(duì)象改變,那么相應(yīng)的傳入這個(gè)參數(shù)引用的對(duì)象也相應(yīng)的改變。如: Number A = new Number(); A.num = 9; test(A); 方法定義: public void test(Number n){ n.num = 99; } 那么A的num值會(huì)變成99. <三>;把對(duì)象保存在ArrayList中.如果把一個(gè)對(duì)象保存在一個(gè)AyyayList中,如果這個(gè)對(duì)象再發(fā)生改變,那么在這個(gè)ArrayList中保存的對(duì)象也會(huì)改變,說(shuō)白了還是兩個(gè)還是公用同一個(gè)句柄.如: Number A = new Number(); A.num = 100; java.util.ArrayList list = new ArrayList(); list.add(A); A.num = 999; Number B = (Number)list.get(0); System.out.println(B.num); 那么輸出為999,對(duì)象A的更改影響到了ArrayList中的保存的對(duì)象. posted @ 2005-06-08 00:19 月亮 閱讀(275) | 評(píng)論 (0) | 編輯 收藏 |
|||