十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
对于每个学Java的朋友来说,其他的技能或许不需要你那么地重视,但是学Java的技能一定是得十分重视的,对于Java代码编写出色的朋友,企业是一百二十个欢迎的。
高安网站建设公司创新互联公司,高安网站设计制作,有大型网站制作公司丰富经验。已为高安1000+提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的高安做网站的公司定做!
Java代码很大程度上就是一个Java程序员的脸面,那么如何提升写Java代码的技能?跟IT培训一起往下看。
如何提升写Java代码的技能呢?1目标,如果你的写的Java代码目标是超越你自己,那么很容易达成,今天比明天再进步一点,明天比后天再进步一点就好,每天进步一点,那么你就在不断的超越自己,但是这个很难衡量,关键看你为自己制定的目标,这个就必须你特别的具有自制力,然后有着超凡的执行力。
2.目标,如果你的写的Java代码目标是超越别人,那么这个其实也不容易。
你的目标人物,首先确定为谁好呢?超越别人,有时候你的心气很难平,超越别人,但是超越别人,你能做的更好的地方是什么有时候是特别模糊的,所以这个也得好好思考,目标人物要选对,方法要对,心态也得对。
3.提升,首先有个明确的目标,然后再实际提升Java代码。
首先是满足客户需求写好你的Java代码,然后是精益求精修改你的Java代码,如果只是匆匆忙忙地进入下一个任务中,那么你不可避免地成为了穷忙族。
代码写了,但是并没有实际效率,Java代码的编写,最少写三次吧。
很多朋友都在寻找有效提升Java技术的方法,很多朋友的建设性意见,就是你多多练习Java技术,熟能生巧,说起来是很简单,那么具体该怎么练习呢?今天云南电脑培训要为大家具体介绍的就是,提升Java技术有效方式有哪些?希望对你有所帮助。
提升Java技术有效的方法有哪些?
一、提升对Java技术的思考
很多人口里嚷着要提升Java技术,行动也有,但就是不奏效,是怎么回事呢?因为行动前没有好好的思考,比如老是盯着已经掌握熟练的Java技术练习,你为什么不考虑多练练你不熟习的Java技术呢?那么该思考些什么关于Java技术的问题呢?
1)这个技术能解决什么问题(why)
2)比较适合在哪些场景应用(where+when)
3)这个技术跟我已经掌握的哪个知识或技能类似,有什么差别、有什么特点、有什么优点和缺点(what)
4)了解前面的问题后,你在开始考虑提升Java技术那么效果会比较好。
二、善于模仿,把他人的变成你的
你的代码刚开始是怎么学会敲写的呢?不外乎模仿,但是模仿也有诀窍,有的人模仿的快,有的人模仿的慢。时常强调,多去看看其他人的Java代码是怎么编写的,你可以从其他人的Java代码中模仿出很多的东西,甚至你可以尝试去修改其他人的代码,让它跟你的想法更加接近,看看你下次是不是可以这样做,看看学习效率有没有提高或者变得简单,长此以往,你的Java技术一定会有质的提升。
对于Java新手特别苦恼的问题就是自己的编程效率一直都不高,坐在电脑面前几个好几个小时,比如想编一个Java简单的算法,但是一直没有办法编写好。
Java编程效率不高,很多Java新手很沮丧,该怎么办呢?今天就跟湖北北大青鸟一起来看看,Java新手如何提高编程效率?Java新手如何提高编程效率?1.提升Java编程思想作为Java新手,你看别人编程的时候常常发现,不理解这一步为什么要这样编写,但是你回顾去翻看有关次编程的相关内容你又理解了,很多时候你的理论知识跟你的实践操作没有办法完美结合,这就需要提升你的编程思想。
2.掌握Java快捷键编程效率不高,很多时候就是因为不知道有快捷键的存在,Ctrl+C和Ctrl+V的存在帮了我们节省多少个步骤,Java中还有很多其他的快捷键是需要你掌握的,比如Ctrl+Alt+Down键向下复制一行或多行(根据你的选择);Alt+Down键向下移动一行或多行(根据你的选择);Alt+Up键向上移动一行或多行(根据你的选择);等等,这会大大提升你的编程效率。
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编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,此举能够使性能平均提高50%。
2)尽量重用对象。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此生成过多的对象将会给程序的性能带来很大的影响。
3)尽可能使用局部变量。调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建速度较慢。
4)慎用异常。异常对性能不利,只要有异常被抛出,Java虚拟机就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。
5)乘法和除法使用移位操作。用移位操作可以极大地提高性能,因为在计算机底层,对位的操作是最方便、最快的,但是移位操作虽然快,可能会使代码不太好理解,因此最好加上相应的注释。
6)尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用 Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销。
尽量在合适的场合使用单例。使用单例可以减轻加载的负担、缩短加载的时间、提高加载的效率,但并不是所有地方都适用于单例。
可以详细描述一下现在的状况,采用的技术等。
采可以在关键业务处输出业务执行的日志,看在哪一块化费的时间比较长。
个人经验,一般数据库查询所费的时间会多一些(优化数据库查询),当然不排除有其他可能。
前端页面是否采用了Ajax等无刷新技术?
有些业务逻辑中,可以考虑采用一些缓存等。