對于每個學Java的朋友來說,其他的技能或許不需要你那么地重視,但是學Java的技能一定是得十分重視的,對于Java代碼編寫出色的朋友,企業(yè)是一百二十個歡迎的。
高安網(wǎng)站建設公司創(chuàng)新互聯(lián)公司,高安網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為高安1000+提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的高安做網(wǎng)站的公司定做!
Java代碼很大程度上就是一個Java程序員的臉面,那么如何提升寫Java代碼的技能?跟IT培訓一起往下看。
如何提升寫Java代碼的技能呢?1目標,如果你的寫的Java代碼目標是超越你自己,那么很容易達成,今天比明天再進步一點,明天比后天再進步一點就好,每天進步一點,那么你就在不斷的超越自己,但是這個很難衡量,關鍵看你為自己制定的目標,這個就必須你特別的具有自制力,然后有著超凡的執(zhí)行力。
2.目標,如果你的寫的Java代碼目標是超越別人,那么這個其實也不容易。
你的目標人物,首先確定為誰好呢?超越別人,有時候你的心氣很難平,超越別人,但是超越別人,你能做的更好的地方是什么有時候是特別模糊的,所以這個也得好好思考,目標人物要選對,方法要對,心態(tài)也得對。
3.提升,首先有個明確的目標,然后再實際提升Java代碼。
首先是滿足客戶需求寫好你的Java代碼,然后是精益求精修改你的Java代碼,如果只是匆匆忙忙地進入下一個任務中,那么你不可避免地成為了窮忙族。
代碼寫了,但是并沒有實際效率,Java代碼的編寫,最少寫三次吧。
很多朋友都在尋找有效提升Java技術的方法,很多朋友的建設性意見,就是你多多練習Java技術,熟能生巧,說起來是很簡單,那么具體該怎么練習呢?今天云南電腦培訓要為大家具體介紹的就是,提升Java技術有效方式有哪些?希望對你有所幫助。
提升Java技術有效的方法有哪些?
一、提升對Java技術的思考
很多人口里嚷著要提升Java技術,行動也有,但就是不奏效,是怎么回事呢?因為行動前沒有好好的思考,比如老是盯著已經(jīng)掌握熟練的Java技術練習,你為什么不考慮多練練你不熟習的Java技術呢?那么該思考些什么關于Java技術的問題呢?
1)這個技術能解決什么問題(why)
2)比較適合在哪些場景應用(where+when)
3)這個技術跟我已經(jīng)掌握的哪個知識或技能類似,有什么差別、有什么特點、有什么優(yōu)點和缺點(what)
4)了解前面的問題后,你在開始考慮提升Java技術那么效果會比較好。
二、善于模仿,把他人的變成你的
你的代碼剛開始是怎么學會敲寫的呢?不外乎模仿,但是模仿也有訣竅,有的人模仿的快,有的人模仿的慢。時常強調,多去看看其他人的Java代碼是怎么編寫的,你可以從其他人的Java代碼中模仿出很多的東西,甚至你可以嘗試去修改其他人的代碼,讓它跟你的想法更加接近,看看你下次是不是可以這樣做,看看學習效率有沒有提高或者變得簡單,長此以往,你的Java技術一定會有質的提升。
對于Java新手特別苦惱的問題就是自己的編程效率一直都不高,坐在電腦面前幾個好幾個小時,比如想編一個Java簡單的算法,但是一直沒有辦法編寫好。
Java編程效率不高,很多Java新手很沮喪,該怎么辦呢?今天就跟湖北北大青鳥一起來看看,Java新手如何提高編程效率?Java新手如何提高編程效率?1.提升Java編程思想作為Java新手,你看別人編程的時候常常發(fā)現(xiàn),不理解這一步為什么要這樣編寫,但是你回顧去翻看有關次編程的相關內容你又理解了,很多時候你的理論知識跟你的實踐操作沒有辦法完美結合,這就需要提升你的編程思想。
2.掌握Java快捷鍵編程效率不高,很多時候就是因為不知道有快捷鍵的存在,Ctrl+C和Ctrl+V的存在幫了我們節(jié)省多少個步驟,Java中還有很多其他的快捷鍵是需要你掌握的,比如Ctrl+Alt+Down鍵向下復制一行或多行(根據(jù)你的選擇);Alt+Down鍵向下移動一行或多行(根據(jù)你的選擇);Alt+Up鍵向上移動一行或多行(根據(jù)你的選擇);等等,這會大大提升你的編程效率。
3.訓練Java編程速度很多的時候覺得自己編程沒效率,沒辦法改善嗎?自然不是,這就需要你自己多多訓練Java編程速度,比如給自己設置相應的時間,每次編程都記錄下相應的時間,這樣你心里對自己花了多長時間有底,下次遇到同一類型的編程再對比下時間,慢慢提高對自己的要求,你的編程效率一定會有所進步。
使用了jacob.jar來調用activex控件,本機需安裝WPS或pdfcreator
001 package experiments;
002
003 import com.jacob.activeX.ActiveXComponent;
004 import com.jacob.com.Dispatch;
005 import com.jacob.com.DispatchEvents;
006 import com.jacob.com.Variant;
007 import java.io.File;
008 import java.util.logging.Level;
009 import java.util.logging.Logger;
010
011 public class Doc2Pdf {
012
013 public static Converter newConverter(String name) {
014 if (name.equals("wps")) {
015 return new Wps();
016 } else if (name.equals("pdfcreator")) {
017 return new PdfCreator();
018 }
019 return null;
020 }
021
022 public synchronized static boolean convert(String word, String pdf) {
023 return newConverter("pdfcreator").convert(word, pdf);
024 }
025
026 public static interface Converter {
027
028 public boolean convert(String word, String pdf);
029 }
030
031 public static class Wps implements Converter {
032
033 public synchronized boolean convert(String word, String pdf) {
034 File pdfFile = new File(pdf);
035 File wordFile = new File(word);
036 ActiveXComponent wps = null;
037 try {
038 wps = new ActiveXComponent("wps.application");
039 ActiveXComponent doc = wps.invokeGetComponent("Documents").invokeGetComponent("Open", newVariant(wordFile.getAbsolutePath()));
040 doc.invoke("ExportPdf", new Variant(pdfFile.getAbsolutePath()));
041 doc.invoke("Close");
042 doc.safeRelease();
043 } catch (Exception ex) {
044 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
045 return false;
046 } catch (Error ex) {
047 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
048 return false;
049 } finally {
050 if (wps != null) {
051 wps.invoke("Terminate");
052 wps.safeRelease();
053 }
054 }
055 return true;
056 }
057 }
058
059 public static class PdfCreator implements Converter {
060
061 public static final int STATUS_IN_PROGRESS = 2;
062 public static final int STATUS_WITH_ERRORS = 1;
063 public static final int STATUS_READY = 0;
064 private ActiveXComponent pdfCreator;
065 private DispatchEvents dispatcher;
066 private volatile int status;
067 private Variant defaultPrinter;
068
069 private void init() {
070 pdfCreator = new ActiveXComponent("PDFCreator.clsPDFCreator");
071 dispatcher = new DispatchEvents(pdfCreator, this);
072 pdfCreator.setProperty("cVisible", new Variant(false));
073 pdfCreator.invoke("cStart", new Variant[]{newVariant("/NoProcessingAtStartup"), new Variant(true)});
074 setCOption("UseAutosave", 1);
075 setCOption("UseAutosaveDirectory", 1);
076 setCOption("AutosaveFormat", 0); // 0 = PDF
077 defaultPrinter = pdfCreator.getProperty("cDefaultPrinter");
078 status = STATUS_IN_PROGRESS;
079 pdfCreator.setProperty("cDefaultprinter", "PDFCreator");
080 pdfCreator.invoke("cClearCache");
081 pdfCreator.setProperty("cPrinterStop", false);
082 }
083
084 private void setCOption(String property, Object value) {
085 Dispatch.invoke(pdfCreator, "cOption", Dispatch.Put, new Object[]{property, value}, new int[2]);
086 }
087
088 private void close() {
089 if (pdfCreator != null) {
090 pdfCreator.setProperty("cDefaultprinter", defaultPrinter);
091 pdfCreator.invoke("cClearCache");
092 pdfCreator.setProperty("cPrinterStop", true);
093 pdfCreator.invoke("cClose");
094 pdfCreator.safeRelease();
095 pdfCreator = null;
096 }
097 if (dispatcher != null) {
098 dispatcher.safeRelease();
099 dispatcher = null;
100 }
101 }
102
103 public synchronized boolean convert(String word, String pdf) {
104 File pdfFile = new File(pdf);
105 File wordFile = new File(word);
106 try {
107 init();
108 setCOption("AutosaveDirectory", pdfFile.getParentFile().getAbsolutePath());
109 if (pdfFile.exists()) {
110 pdfFile.delete();
111 }
112 pdfCreator.invoke("cPrintfile", wordFile.getAbsolutePath());
113 int seconds = 0;
114 while (isInProcess()) {
115 seconds++;
116 if (seconds 30) { // timeout
117 throw new Exception("convertion timeout!");
118 }
119 Thread.sleep(1000);
120 }
121 if (isWithErrors()) return false;
122 // 由于轉換前設置cOption的AutosaveFilename不能保證輸出的文件名與設置的相同(pdfcreator會加入/修改后綴名)
123 // 所以這里讓pdfcreator使用自動生成的文件名進行輸出,然后在保存后將其重命名為目標文件名
124 File outputFile = newFile(pdfCreator.getPropertyAsString("cOutputFilename"));
125 if (outputFile.exists()) {
126 outputFile.renameTo(pdfFile);
127 }
128 } catch (InterruptedException ex) {
129 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
130 return false;
131 } catch (Exception ex) {
132 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
133 return false;
134 } catch (Error ex) {
135 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
136 return false;
137 } finally {
138 close();
139 }
140 return true;
141 }
142
143 private boolean isInProcess() {
144 return status == STATUS_IN_PROGRESS;
145 }
146
147 private boolean isWithErrors() {
148 return status == STATUS_WITH_ERRORS;
149 }
150
151 // eReady event
152 public void eReady(Variant[] args) {
153 status = STATUS_READY;
154 }
155
156 // eError event
157 public void eError(Variant[] args) {
158 status = STATUS_WITH_ERRORS;
159 }
160 }
161
162 public static void main(String[] args) {
163 convert("e:\\test.doc", "e:\\output.pdf");
164 }
165 }
1)盡量指定類、方法的final修飾符。帶有final修飾符的類是不可派生的,Java編譯器會尋找機會內聯(lián)所有的final方法,內聯(lián)對于提升Java運行效率作用重大,此舉能夠使性能平均提高50%。
2)盡量重用對象。由于Java虛擬機不僅要花時間生成對象,以后可能還需要花時間對這些對象進行垃圾回收和處理,因此生成過多的對象將會給程序的性能帶來很大的影響。
3)盡可能使用局部變量。調用方法時傳遞的參數(shù)以及在調用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實例變量等,都在堆中創(chuàng)建速度較慢。
4)慎用異常。異常對性能不利,只要有異常被拋出,Java虛擬機就必須調整調用堆棧,因為在處理過程中創(chuàng)建了一個新的對象。異常只能用于錯誤處理,不應該用來控制程序流程。
5)乘法和除法使用移位操作。用移位操作可以極大地提高性能,因為在計算機底層,對位的操作是最方便、最快的,但是移位操作雖然快,可能會使代碼不太好理解,因此最好加上相應的注釋。
6)盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用 Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導致了性能開銷。
盡量在合適的場合使用單例。使用單例可以減輕加載的負擔、縮短加載的時間、提高加載的效率,但并不是所有地方都適用于單例。
可以詳細描述一下現(xiàn)在的狀況,采用的技術等。
采可以在關鍵業(yè)務處輸出業(yè)務執(zhí)行的日志,看在哪一塊化費的時間比較長。
個人經(jīng)驗,一般數(shù)據(jù)庫查詢所費的時間會多一些(優(yōu)化數(shù)據(jù)庫查詢),當然不排除有其他可能。
前端頁面是否采用了Ajax等無刷新技術?
有些業(yè)務邏輯中,可以考慮采用一些緩存等。
網(wǎng)站題目:提高效率的java代碼,java高效編程
分享網(wǎng)址:http://jinyejixie.com/article22/hojgcc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、手機網(wǎng)站建設、靜態(tài)網(wǎng)站、自適應網(wǎng)站、云服務器、ChatGPT
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)