開發(fā)過程需要注意的問題有下面這些:1. 服務(wù)器端必須提供輸入數(shù)據(jù)正確性的驗證,客戶端的Javascript驗證可以沒有。
這是基于安全性的考慮,因為Javascript是很容易被繞過的,增加客戶端驗證只是為了減少服務(wù)器壓力、界面更加容易使用。 2. 適度使用Session,盡量不要在Session里放很大的集合對象,以免內(nèi)存消耗過大,因為很多用戶訪問的時候會產(chǎn)生很多的Session。
參數(shù)傳遞應(yīng)該盡量通過Request。熟悉HTTP有助于更好的理解Session、Cookie、Request等的機制。
3. 在帶有分頁的查詢界面,盡量不要使用POST方法來傳遞參數(shù),POST傳遞的參數(shù)在地址欄里是看不到的,刷新后會有重新提交表單的提示。使用GET方法傳遞參數(shù)要注意URL的長度不能超過1K。
4. 分層應(yīng)該清晰,一般目前我們分為View(Jsp或FreeMarker加上Action)、Bean(Service)、DAO這么三層,即顯示層、業(yè)務(wù)層、數(shù)據(jù)層。記錄集ResultSet這種只能出現(xiàn)在DAO層中的對象不能出現(xiàn)在Bean(Service)層中,同樣HttpServletRequest這種只能出現(xiàn)在View層的對象也不應(yīng)出現(xiàn)在Bean(Service)層中。
這并不是絕對的。 5. 盡量使用簡單SQL,避免兩表以及多表聯(lián)查。
多表聯(lián)查會導(dǎo)致數(shù)據(jù)庫壓力大幅增加,而且不利于在內(nèi)存中對部分記錄進行緩存,代碼的重用性也難以提高。 6. 避免在循環(huán)里執(zhí)行findXXById這樣的方法,不如執(zhí)行一個findXXByIds這樣的方法一次性把記錄取到Map里。
大部分有實際對象對應(yīng)的表應(yīng)該提供這樣一個方法。 7. 如果使用最原始的jdbc編程的話需要注意資源的正確釋放,在循環(huán)里new出來的Statement或者ResultSet就要在循環(huán)里關(guān)閉。
8. 在編寫SQL進行查詢的時候,需要能夠判斷這個SQL是否已經(jīng)使用了索引,避免全表掃描,必要的時候增加索引。 9. 在寫一個方法前,首先查看有沒有相同功能或者很類似功能的方法已經(jīng)有了,尤其是工具類方法,往往已經(jīng)寫過了,避免重復(fù)代碼的產(chǎn)生,發(fā)現(xiàn)重復(fù)代碼及時進行處理。
如果一段代碼被重復(fù)使用兩遍或以上,那么可以考慮專門寫個方法來放這段代碼,同樣多次使用的常量也應(yīng)該專門定義出來。 10. 在一個方法里并不一定只能有一個return,如果已經(jīng)有結(jié)果了盡早return,沒必要增加嵌套的層次,那樣會導(dǎo)致代碼可讀性不佳,但也不能return太多,代碼看起來比較舒服就可以了。
11. 不要滿足于能夠熟練的編寫DAO和Bean(Service)的代碼,相比較而言,后臺如果在成熟框架的支持下,編碼是沒有太大難度的,也不值得沾沾自喜,因為這是對Java研發(fā)工程師基本的要求。適當(dāng)?shù)呐囵B(yǎng)一下前臺的編碼能力,學(xué)會使用Dreamweaver。
不要輕視界面,也別認(rèn)為這是界面設(shè)計的事情,界面對用戶來說就是軟件,學(xué)會編寫CSS和調(diào)整界面對你沒有壞處。 12. 非常明確Java和javascript作用的范圍,明確它們能做的事情。
13. 一般很奇怪的現(xiàn)象都是由一些低級錯誤引起的,如果你查了一段時間也沒有結(jié)果,那么讓別人來查吧。 14. 不要用可能被修改的字段來做主鍵,那樣會讓相關(guān)記錄的更新成為一個大麻煩。
15. 如果被迫使用Hibernate和jdbc混合操作數(shù)據(jù)庫的話,不要用Hibernate來做復(fù)雜查詢和統(tǒng)計。Hibernate用的不好的話,帶來的便利是非常有限的。
16. 數(shù)據(jù)庫中經(jīng)常被讀取,但是很少修改的話,應(yīng)該把這樣的數(shù)據(jù)讀到內(nèi)存中用OSCache之類的緩存起來,然后定期或者觸發(fā)的去更新,有助于減少讀數(shù)據(jù)庫次數(shù),提升性能。 17. 編碼的時候應(yīng)該注意部署環(huán)境帶來的影響,這種影響包括操作系統(tǒng)不同帶來路徑的差異;應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間時間的差異;外網(wǎng)可能部署在多臺服務(wù)器上,放到Session里的對象因為需要復(fù)制所以要實現(xiàn)java.io.Serializable接口等。
18. 盡量不要在jsp上編寫太多代碼,保持jsp的整潔很重要,用Dreamweaver打開不至于一塌糊涂,根本看不出來這是個什么界面。 19. 目前我們的項目一般都使用Spring來管理數(shù)據(jù)庫事務(wù),而且一般都配置在Bean(Service)即業(yè)務(wù)層這一層,應(yīng)該注意要保持事務(wù)的完整性,不要把一些應(yīng)該放在一起的操作分散在Action這一層。
相關(guān)的更新操作可以認(rèn)為是一個事務(wù),比如:增加一個家長,同時更新學(xué)生是否有家長的字段。 20. 在Spring的配置中,對于有些需要保持獨立事務(wù)的方法操作,比如生成主鍵等,應(yīng)該聲明該方法為獨立事務(wù)ROPAGATION_REQUIRES_NEW。
Bean(Service)里如果拋出checked exception,事務(wù)默認(rèn)是不會回滾的,需要加以聲明,比如PROPAGATION_REQUIRED,-PassportException。 21. 在一個Bean(Service)中引用其他Bean(Service)的時候盡量引用Bean(Service),而不是DAO。
因為其他的Bean(Service)往往封裝DAO的操作后,又做了進一步的完善,比如增加校驗等,所以應(yīng)該重用這些方法,而不必要去引用DAO的方法來重寫這些操作。 22. 至少在Bean(Service)的接口定義上增加注釋,方便他人引用你寫的方法。
23. 好好利用集合框架里的Map、List、Set。尤其是HashMap、ArrayList、HashSet用的最多,這些類是多條數(shù)據(jù)操作的基礎(chǔ),它們都不是線程安全的。
24. 現(xiàn)在跑的快的頁面,隨著數(shù)據(jù)量的增加,可能會變的很慢,所以應(yīng)該意識到頁面可能變慢的原因。
自己和別人思路的差異。
2。初學(xué)者請不要看太多太多的書那會誤人子弟的,先找本系統(tǒng)的學(xué),很多人用了很久都是只對部分功能熟悉而已,不系統(tǒng)還是不夠的。
3??磶椭?,不要因為很難而自己是初學(xué)者所以就不看;幫助永遠(yuǎn)是最好的參考手冊,雖然幫助的文字有時候很難看懂,總覺得不夠直觀。
4。不要被對象、屬性、方法等詞匯所迷惑;最根本的是先了解最基礎(chǔ)知識。
5。不要放過任何一個看上去很簡單的小問題--他們往往并不那么簡單,或者可以引伸出很多知識點;不會舉一反三你就永遠(yuǎn)學(xué)不會。
6。知道一點東西,并不能說明你會寫腳本,腳本是需要經(jīng)驗積累的。
7。學(xué)腳本并不難,JSP、ASP、PHP等等也不過如此--難的是長期堅持實踐和不遺余力的博覽群書; 8。
看再多的書是學(xué)不全腳本的,要多實踐 9。把時髦的技術(shù)掛在嘴邊,還不如把過時的技術(shù)記在心里; 10。
學(xué)習(xí)腳本最好的方法之一就是多練習(xí); 11。 在任何時刻都不要認(rèn)為自己手中的書已經(jīng)足夠了; 12。
看得懂的書,請仔細(xì)看;看不懂的書,請硬著頭皮看; 13。別指望看第一遍書就能記住和掌握什么——請看第二遍、第三遍; 14。
請把書上的例子親手到電腦上實踐,即使配套光盤中有源文件; 15。 把在書中看到的有意義的例子擴充;并將其切實的運用到自己的工作中; 16。
不要漏掉書中任何一個練習(xí)——請全部做完并記錄下思路; 17。當(dāng)你用腳本到一半?yún)s發(fā)現(xiàn)自己用的方法很拙劣時,請不要馬上停手;請盡快將余下的部分粗略的完成以保證這個代碼的完整性,然后分析自己的錯誤并重新編寫和工作。
18。別心急,寫腳本確實不容易;水平是在不斷的實踐中完善和發(fā)展的; 19。
每學(xué)到一個腳本難點的時候,嘗試著對別人講解這個知識點并讓他理解----你能講清楚才說明你真的理解了; 20。記錄下在和別人交流時發(fā)現(xiàn)的自己忽視或不理解的知識點; 21。
保存好你做過的所有的源文件----那是你最好的積累之一; 22。對于網(wǎng)絡(luò),還是希望大家能多利用一下,很多問題不是非要到論壇來問的,首先你要學(xué)會自己找答案,比如google、百度都是很好的搜索引擎,你只要輸入關(guān)鍵字就能找到很多相關(guān)資料,別老是等待別人給你希望,看的出你平時一定也很懶! 23,到一個論壇,你學(xué)會去看以前的帖子,不要什么都不看就發(fā)帖子問,也許你的問題早就有人問過了,你再問,別人已經(jīng)不想再重復(fù)了,做為初學(xué)者,誰也不希望自己的帖子沒人回的。
24,雖然不是打擊初學(xué)者,但是這句話還是要說:論壇論壇,就是大家討論的地方,如果你總期望有高手總無償指點你,除非他是你親戚?。∮懻撜?,起碼是水平相當(dāng)?shù)牟庞杏懻摰恼f法,如果水平真差距太遠(yuǎn)了,連基本操作都需要別人給解答,誰還跟你討論呢。 浮躁的人容易問:我到底該學(xué)什么;----別問,學(xué)就對了; 浮躁的人容易問:Js有錢途嗎;----建議你去搶銀行; 浮躁的人容易說:我要中文版!我英文不行!----不行?學(xué)呀! 浮躁的人分兩種:只觀望而不學(xué)的人;只學(xué)而不堅持的人; 浮躁的人永遠(yuǎn)不是一個高手。
一、J2ME中需要的Java基礎(chǔ)知識 現(xiàn)在有大部分人,都是從零開始學(xué)J2ME的,學(xué)習(xí)J2ME的時候,總是從Java基礎(chǔ)開始學(xué)習(xí),而且現(xiàn)在講Java基礎(chǔ)的書籍中都是以J2SE來講基礎(chǔ),這就給學(xué)習(xí)造成了一些不必要的麻煩,下面將J2ME中用到的和不需要的Java基礎(chǔ)知識做一個簡單的說明。
J2ME中使用到的Java基礎(chǔ)知識: 1、Java語法基礎(chǔ):包括基本數(shù)據(jù)類型、關(guān)鍵字、運算符等等 2、面向?qū)ο蟮乃枷耄侯惡蛯ο蟮母拍?,繼承和多態(tài)等等。 3、異常處理 4、多線程 J2ME中沒有用到的Java基礎(chǔ)知識: 1、JDK中javac和java命令的使用 2、Java基礎(chǔ)中的很多類在J2ME中沒有,或者類中的方法做了大量的精簡。
所以建議在J2ME中熟悉類庫。 3、Applet、AWT、Swing這些知識在J2ME中根本使用不到。
簡單說這么多,希望學(xué)J2ME的朋友們能少走一些彎路,不足之處希望大家積極指正和補充。 二、J2ME中暫時無法完成的功能 列一些J2ME中暫時無法完成的功能,希望大家能積極補充: 1、在手機中不更改代碼實現(xiàn)移植,主要指游戲。
2、動態(tài)修改按鈕文字。 3、在Canvas上接受中文輸入。
4、操作本地資源、例如地址本、已收短信息等。 5、制作破壞性的手機病毒。
6、其他等待大家來補充。
Java的線程編程非常簡單。
但有時會看到一些關(guān)于線程的錯誤用法。下面列出一些應(yīng)該注意的問題。
1.同步對象的恒定性 All java objects are references。 對于局部變量和參數(shù)來說,java里面的int, float, double, boolean等基本數(shù)據(jù)類型,都在棧上。
這些基本類型是無法同步的;java里面的對象(根對象是Object),全都在堆里,指向?qū)ο蟮膔eference在棧上。 java中的同步對象,實際上是對于reference所指的“對象地址”進行同步。
需要注意的問題是,千萬不要對同步對象重新賦值。 舉個例子。
class A implements Runnable { Object lock = new Object(); void run() { for(。
) { synchronized(lock) { // do something 。
lock = new Object(); } } } } run函數(shù)里面的這段同步代碼實際上是毫無意義的。因為每一次lock都給重新分配了新的對象的reference,每個線程都在新的reference同步。
大家可能覺得奇怪,怎么會舉這么一個例子。 因為我見過這樣的代碼,同步對象在其它的函數(shù)里被重新賦了新值。
這種問題很難查出來。所以,一般應(yīng)該把同步對象聲明為final。
final Object lock = new Object(); 使用Singleton Pattern 設(shè)計模式來獲取同步對象,也是一種很好的選擇。 2.如何放置共享數(shù)據(jù) 實現(xiàn)線程,有兩種方法,一種是繼承Thread類,一種是實現(xiàn)Runnable接口。
上面舉的例子,采用實現(xiàn)Runnable接口的方法。本文推薦這種方法。
首先,把需要共享的數(shù)據(jù)放在一個實現(xiàn)Runnable接口的類里面,然后,把這個類的實例傳給多個Thread的構(gòu)造方法。 這樣,新創(chuàng)建的多個Thread,都共同擁有一個Runnable實例,共享同一份數(shù)據(jù)。
如果采用繼承Thread類的方法,就只好使用static靜態(tài)成員了。如果共享的數(shù)據(jù)比較多,就需要大量的static靜態(tài)成員,令程序數(shù)據(jù)結(jié)構(gòu)混亂,難以擴展。
這種情況應(yīng)該盡量避免。 編寫一段多線程代碼,處理一個稍微復(fù)雜點的問題。
兩種方法的優(yōu)劣,一試便知。 3.同步的粒度 線程同步的粒度越小越好,即,線程同步的代碼塊越小越好。
盡量避免用synchronized修飾符來聲明方法。盡量使用synchronized(anObject)的方式,如果不想引入新的同步對象,使用synchronized(this)的方式。
而且,synchronized代碼塊越小越好。 4.線程之間的通知 這里使用“通知”這個詞,而不用“通信”這個詞,是為了避免詞義的擴大化。
線程之間的通知,通過Object對象的wait()和notify() 或notifyAll() 方法實現(xiàn)。 下面用一個例子,來說明其工作原理: 假設(shè)有兩個線程,A和B。
共同擁有一個同步對象,lock。 1.首先,線程A通過synchronized(lock) 獲得lock同步對象,然后調(diào)用lock。
wait()函數(shù),放棄lock同步對象,線程A停止運行,進入等待隊列。 2.線程B通過synchronized(lock) 獲得線程A放棄的lock同步對象,做完一定的處理,然后調(diào)用 lock。
notify() 或者lock。notifyAll() 通知等待隊列里面的線程A。
3.線程A從等待隊列里面出來,進入ready隊列,等待調(diào)度。 4.線程B繼續(xù)處理,出了synchronized(lock)塊之后,放棄lock同步對象。
5.線程A獲得lock同步對象,繼續(xù)運行。
1、不要排斥新技術(shù)和新工具。
Android Studio 1.0 之后的版本,基本已經(jīng)穩(wěn)定到可以支持正常的工作開發(fā)的程度了。單純就書寫效率而言,Android Studio 帶來的好處絕對大于它和Gradle的學(xué)習(xí)成本。
JetBrains的IDE,用過都說好。還有就是適當(dāng)?shù)奶嵘齮argetSdkVer… 顯示全部 1、不要排斥新技術(shù)和新工具。
Android Studio 1.0 之后的版本,基本已經(jīng)穩(wěn)定到可以支持正常的工作開發(fā)的程度了。單純就書寫效率而言,Android Studio 帶來的好處絕對大于它和Gradle的學(xué)習(xí)成本。
JetBrains的IDE,用過都說好。 還有就是適當(dāng)?shù)奶嵘齮argetSdkVersion到新版本。
2、代碼設(shè)計方面的問題,大部分都能在Android系統(tǒng)源碼里找到解決方案。 當(dāng)你想設(shè)計一個新模塊,或者實現(xiàn)一個新ui組件的時候,應(yīng)該采用哪些設(shè)計模式、應(yīng)該以哪種形式給外界提供接口之類的問題,大部分都可以參考Android系統(tǒng)的源碼,找到實現(xiàn)方式。
Google為安卓程序員提供了一座現(xiàn)成的寶庫。 3、理解Android和Java內(nèi)存管理方式,至少要理解垃圾回收和Java的引用。
就好比學(xué)OC就要先理解黃金法則一樣,而java的內(nèi)存管理,其實比OC要好理解多了。 這可能會幫助你大大減少程序異步操作產(chǎn)生的空指針崩潰。
也會幫助你理解為什么濫用單例模式會導(dǎo)致內(nèi)存的臃腫。還會幫助你養(yǎng)成不用“+”去連接超大字符串的好習(xí)慣。
4、ContentProvider并不是只有在跨進程共享數(shù)據(jù)的才有用,把數(shù)據(jù)庫表映射到一個獨立的uri是Google鼓勵的實現(xiàn)方式。 從設(shè)計上講,用uri(統(tǒng)一資源標(biāo)識符)去描述數(shù)據(jù),肯定比sql語句要理想。
從效果上講,用CursorLoader讀取數(shù)據(jù)是讓iOS程序員都羨慕不已的事情,作為android程序員,何苦不用呢。 5、理解Activity任務(wù)棧。
非Activity的Context對象如果直接啟動Activity會報錯,這只是一個表面現(xiàn)象,真正起作用的其實是Activity任務(wù)棧機制。 理解Activity任務(wù)棧機制以及Activity的各種啟動方式,會幫助解決大部分頁面關(guān)系錯亂問題,以及應(yīng)用互相掉起、任務(wù)欄進入應(yīng)用、后臺彈窗引起的各種問題。
6、對于一些奇葩的第三方ROM,調(diào)用其非主流api的時候,可以使用反射。 在適配一些第三方ROM的的時候,調(diào)用一些在開發(fā)環(huán)境中沒有,但在運行環(huán)境中有的方法時,可以使用反射。
比方說,華為雙卡手機可能會提供獲取第二塊SIM卡信息的api,如果直接調(diào)用,在開發(fā)環(huán)境可能無法通過正常編譯,用反射就沒問題。這屬于不得已而用反射的一種情況。
7、SQLite的鎖,是數(shù)據(jù)庫級別的鎖,也就是說同一個數(shù)據(jù)庫的寫操作無法并發(fā)執(zhí)行。 所以,在數(shù)據(jù)庫設(shè)計的時候,如果表太多,盡量將沒有關(guān)聯(lián)的表拆到多個數(shù)據(jù)庫文件中。
8、Bitmap的內(nèi)存占用問題。 這是一個困擾2.X時代android程序員的問題。
2.X時代Bitmap對象雖然存儲在堆內(nèi)存中,但是用了一個byte數(shù)組存儲其像素信息。通過計數(shù)器來記錄該像素信息被引用的個數(shù)。
有人認(rèn)為這個byte數(shù)組在native堆中,但事實上它也在堆中。 只有在使用者調(diào)用recycle()后,Bitmap對象才會釋放像素信息,才會在失去引用后,被垃圾回收機制銷毀。
再加上DVM的heap size有嚴(yán)格的閥值,所以在使用大量圖片資源的時候,及其容易發(fā)生OOM。 解決辦法一般都是,用一個哈希表存儲Bitmap對象的軟引用,作為內(nèi)存緩存,并在適當(dāng)時機掉用其recycle()。
3.0以上版本Bitmap對象可以通過垃圾回收機制完全銷毀,理論上不用再調(diào)用recycle()。
用java進行移動端后臺開發(fā)方法:
第一種:可以選擇用Java EE的編程結(jié)構(gòu)去編寫,需要把HTML的界面轉(zhuǎn)換成其他的數(shù)據(jù),例如json、xml,二者選擇其中一個即可。
第二種:通過tomact的網(wǎng)絡(luò)服務(wù)器使用httpurlconnection,客戶端與后臺建立通訊,直接用socket進行連接。
第三種:全能型的編程人員可以用前端經(jīng)常使用的HTML5、css、JavaScript相結(jié)合進行開發(fā)。
注意點:
Java web后臺開發(fā)跟手機app后臺開發(fā)原理相同,主要不同點在于app的后臺開發(fā)和web的傳輸數(shù)據(jù)格式有差異。
安裝后需要配置好環(huán)境變量~安裝MyEclipse的話,自帶的有JDK。
這里我說說怎么自己配置環(huán)境吧,步驟如下(舉例你把JDK安裝在D:/jdk1.6里面):右擊我的電腦,選擇“屬性”;選擇“高級”選項卡,點擊“環(huán)境變量”;在系統(tǒng)變量里面添加“JAVA_HOME”這個變量,變量值為JDK安裝路徑,此路徑下包括lib,bin,jre等文件夾,如“D:/jdk1.6”;添加Path這個變量,使得系統(tǒng)可以在任何路徑下識別java命令,變量值設(shè)為:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin添加CLASSPATH這個變量,這個變量為java加載類(classorlib)路徑,只有類在classpath中,java命令才能識別,變量值設(shè)為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意前面要加“.”,表示當(dāng)前路徑)。
1. 為Activity聲明系統(tǒng)配置變更事件系統(tǒng)配置變更事件是指轉(zhuǎn)屏,區(qū)域語言發(fā)生變化,屏幕尺寸發(fā)生變化等等,如果Activity沒有聲明處理這些事件,發(fā)生事件時,系統(tǒng)會把Activity殺掉然后重啟,并嘗試恢復(fù)狀態(tài),Activity有機會通過onSaveInstanceState()保存一些基本數(shù)據(jù)到Bundle中,然后此Bundle會在Activity的onCreate()中傳遞過去。
雖然這貌似正常,但是這會引發(fā)問題,因為很多其他的東西比如Dialog等是要依賴于具體Activity實例的。所以這種系統(tǒng)默認(rèn)行為通常都不是我們想要的。
為了避免這些系統(tǒng)默認(rèn)行為,就需要為Activity聲明這些配置,如下二個是每個Activity必須聲明的:幾乎所有的Activity都要聲明如上,為什么Android不把它們變成Default的呢?2. 盡量使用Android的API這好像是廢話,在Android上面開發(fā)不用Android API用什么?因為Android幾乎支持Java SE所有的API,所以有很多地方Android API與Java SE的API會有重復(fù)的地方,比如說對于文件的操作最好使用Android里面Context封裝的API,而不要直接使用File對象:Context.openFileOutput(String); // no File file = new File(String)原因就是API里面會考慮到Android平臺本身的特性;再如,少用Thread,而多使用AsyncTask等。3. 要考慮到Activity和進程被殺掉的情況如了通常情況退出Activity外,還有Activity因其他原因被殺的情況,比如系統(tǒng)內(nèi)存過低,系統(tǒng)配置變更,有異常等等,要考慮和測試這種情況,特別是Activity處理重要的數(shù)據(jù)時,做好的數(shù)據(jù)的保存。
4. 小心多語言有些語言真的很啰嗦,中文或英文很簡短就能表達的事情到了其他語言就變的死長死長的,所以如果是wrap_content就可能把其他控制擠出可視范圍; 如果是指定長度就可能顯示不全。也要注意特殊語言比如那些從右向左讀的語言。
5. 不要用四大組件去實現(xiàn)接口一是組件的對象都比較大,實現(xiàn)接口比較浪費,而且讓代碼更不易讀和理解; 另外更重要的是導(dǎo)致多方引用,可能會引發(fā)內(nèi)存泄露。6. 用getApplication()來取Context當(dāng)參數(shù)對于需要使用Context對象作為參數(shù)的函數(shù),要使用getApplication()獲取Context對象當(dāng)參數(shù),而不要使用this,除非你需要特定的組件實例!getApplication()返回的Context是屬于Application的,它會在整個應(yīng)用的生命周期內(nèi)存在,遠(yuǎn)大于某個組件的生命周期,所以即使某個引用長期持有Context對象也不會引發(fā)內(nèi)存泄露。
7. 主線程只做UI控制和Frameworks回調(diào)相關(guān)的事。附屬線程只做費時的后臺操作。
交互只通過Handler。這樣就可以避免大量的線程問題。
8. Frameworks的回調(diào)不要做太多事情僅做必要的初始化,其他不是很重要的事情可以放到其他線程中去做,或者用Handler Schedule到稍后再做。9. 要考慮多分辨率至少為hdpi, mdpi, ldpi準(zhǔn)備圖片和布局。
元素的單位也盡可能的使用dip而不要用px。10. 利用Android手機的硬鍵幾乎所有的Android手機都有BACK和MENU,它們的作用是返回和彈出菜單,所以就不要再在UI中設(shè)計返回按扭和菜單按扭。
很多優(yōu)秀的應(yīng)用如隨手記和微信都有返回鍵,他們之所以有是因為他們都是從iOS上移植過來的,為了保存體驗的一致,所以也有了返回和菜單。但這不夠Android化,一個純正的Android是沒有必須重復(fù)硬鍵的功能的。
首先否認(rèn)你上述的這幾點:
1.打字速度:
每分鐘寫多少字母。 不代表開發(fā)效率呢。 開發(fā)工作是需要結(jié)合需求的、不是一通亂寫、寫代碼不像打字員、基礎(chǔ)包都是有聯(lián)想功能的.. 比如String 只需要st。 后面的就給你聯(lián)想出來了,等。
2、不會所謂的數(shù)據(jù)結(jié)構(gòu)和算法能立足嗎?
既然是JAVA小白、基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)還是要清楚的、比如(string,int,object。)深層次無需知道了、這種級別也接觸不到。算法。 對邏輯實現(xiàn)還是很有幫助的。常用簡單的比如排序算法。 不過簡單點的,數(shù)組都提供了排序的方法。其它看實際情況分析了。
總結(jié)下:新入職的java小白需要注意的點(開發(fā)層面的)
1、代碼整潔
2、注釋清晰
3、按照java開發(fā)規(guī)范進行開發(fā)(比如命名規(guī)范。 如果公司有明確規(guī)定就安裝公司規(guī)定執(zhí)行,如果沒有就按照行業(yè)規(guī)范)
4、理解OOP面向?qū)ο缶幊谈拍?、圍繞OOP思想開發(fā)。(其實框架都給你搭建好了、只是補邏輯代碼也不需要注意太多)
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:4.107秒