1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      短信代碼優(yōu)化java,短信優(yōu)化是什么意思

      Java代碼的優(yōu)化方法有哪些

      說到代碼優(yōu)化,每個人或多或少都掌握一到兩種方法,但是這樣的方法對提升代碼運行效率效果不大,最重要是對代碼的重視和了解,這樣才能提升代碼的運行效率。在進行代碼優(yōu)化的過程中,方法是非常重要的,多掌握幾種方法,根據(jù)代碼的不同情況選擇適合的方法進行優(yōu)化。下面電腦培訓為大家介紹Java代碼優(yōu)化的幾種方法。

      創(chuàng)新互聯(lián)主營洮南網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,App定制開發(fā),洮南h5微信平臺小程序開發(fā)搭建,洮南網(wǎng)站營銷推廣歡迎洮南等地區(qū)企業(yè)咨詢

      1、使用指定類、方法的final修飾符

      具有final修飾符的類不可派生。在Java核心API中,有許多最終應用程序的例子,例如java.lang.String,整個類都是final。為類指定final修飾符允許繼承類,并且為方法指定final修飾符允許覆蓋該方法。如果將類指定為final,IT培訓認為該類的所有方法都是final。Java編譯器將尋找內(nèi)聯(lián)所有最終方法的機會。內(nèi)聯(lián)對于提高Java操作的效率非常重要。這可以將性能平均提高50%。

      2、重用對象

      String對象的使用是非常重要的,StringBuilder/StringBuffer并不是字符串連接。由于Java虛擬機需要時間來生成對象,所以將來垃圾收集和處理這些對象可能需要一些時間。因此,生成太多對象將對程序的性能產(chǎn)生很大影響。

      3、使用局部變量

      調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在堆棧中,速度更快。其他變量(如靜態(tài)變量和實例變量)在堆中創(chuàng)建并且速度較慢。此外,昆明北大青鳥發(fā)現(xiàn)在堆棧中創(chuàng)建的變量,當方法完成運行時,內(nèi)容消失,不需要進行額外的垃圾收集。

      4、及時關(guān)閉流

      在Java編程過程中,在執(zhí)行數(shù)據(jù)庫連接和I/O流操作時要小心。使用后,北大青鳥云南嘉薈校區(qū)官網(wǎng)建議應及時關(guān)閉以釋放資源。因為這些大型物體的操作會導致系統(tǒng)的大量開銷,稍微粗心會導致嚴重的后果。

      如何用Java實現(xiàn)短信自動發(fā)送功能

      方法一:

      1.web.xml中配置listener

      listener

      listener-class

      cn.com.jxlife.shs.web.action.csinquiry.surrender.MyListener

      /listener-class

      /listener

      2.創(chuàng)建listener

      import java.util.Timer;

      import javax.servlet.ServletContextEvent;

      import javax.servlet.ServletContextListener;

      public class MyListener implements ServletContextListener {

      private Timer timer = null;

      @Override

      public void contextInitialized(ServletContextEvent sce) {

      timer = new Timer(true);

      //設置任務計劃,啟動和間隔時間

      timer.schedule(new MyTask(), 0, 3*60*1000);

      //3分鐘

      //timer.schedule(new MyTask(), 0, 3*60*1000);

      //在1秒后執(zhí)行此任務,每次間隔2秒

      //timer.schedule(new MyTask(), 1000, 2000);

      }

      @Override

      public void contextDestroyed(ServletContextEvent sce) {

      timer.cancel();

      }

      }

      3.創(chuàng)建啟動的類MyTask

      import java.util.Date;

      import java.util.TimerTask;

      public class MyTask extends TimerTask {

      @Override

      public void run() {

      System.out.println("call at " + (new Date()));

      }

      }

      方法二:

      spring 下實現(xiàn)定時工作的調(diào)度框架quartz

      · 1。從下載quartz的開源包

      quartz-1.7.3.tar.gz

      3.07M

      · 2。從quartz-1.7.3.tar.gz 找到quartz-1.7.3.jar,放到項目的classpath下

      (放到webroot/WEB-INF/lib)下

      · 3。定義一個需要時間調(diào)度的程序

      package com.machome.quartz;

      public class CustomJob1 {

      public void onTimeWork() {

      System.out.println("數(shù)據(jù)備份任務啟動");

      System.out.println("...");

      System.out.println("數(shù)據(jù)備份任務完成");

      }

      }

      · 4。剩余的工作就都在spring xml文件里完成了

      !-- 被調(diào)度的bean --

      bean id="job1" class="com.machome.quartz.CustomJob1"/bean

      !-- 定義任務對象 --

      bean id="jobtask1"

      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"

      !-- 被調(diào)度的bean --

      property name="targetObject"

      ref bean="job1" /

      /property

      !-- 被調(diào)度的bean中的被調(diào)度的方法 --

      property name="targetMethod"

      valueonTimeWork/value

      /property

      /bean

      !-- 定義觸發(fā)對象 --

      bean id="trigger1"

      class="org.springframework.scheduling.quartz.CronTriggerBean"

      !-- 任務對象 --

      property name="jobDetail"

      ref bean="jobtask1" /

      /property

      !-- cron表達式 --

      property name="cronExpression"

      value10,15,20,25,30,35,40,45,50,55 * * * * ?/value

      /property

      /bean

      !-- 調(diào)度對象 --

      !-- 如果將lazy-init='false'那么容器啟動就會執(zhí)行調(diào)度程序 --

      bean id="scheduler" lazy-init="false"

      class="org.springframework.scheduling.quartz.SchedulerFactoryBean"

      !-- 觸發(fā)對象 --

      property name="triggers"

      list

      ref bean="trigger1" /

      /list

      /property

      /bean

      · 5。 將spring 項目部署到TOMCAT或JBOSS服務器上

      deploy項目

      重啟TOMCAT server

      · 6。看結(jié)果:

      cron表達式參考:Quartz的cron表達式

      Java代碼優(yōu)化的常用方法有什么

      1)盡量指定類、方法的final修飾符。帶有final修飾符的類是不可派生的,Java編譯器會尋找機會內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對于提升Java運行效率作用重大,此舉能夠使性能平均提高50%。

      2)盡量重用對象。由于Java虛擬機不僅要花時間生成對象,以后可能還需要花時間對這些對象進行垃圾回收和處理,因此生成過多的對象將會給程序的性能帶來很大的影響。

      3)盡可能使用局部變量。調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實例變量等,都在堆中創(chuàng)建速度較慢。

      4)慎用異常。異常對性能不利,只要有異常被拋出,Java虛擬機就必須調(diào)整調(diào)用堆棧,因為在處理過程中創(chuàng)建了一個新的對象。異常只能用于錯誤處理,不應該用來控制程序流程。

      5)乘法和除法使用移位操作。用移位操作可以極大地提高性能,因為在計算機底層,對位的操作是最方便、最快的,但是移位操作雖然快,可能會使代碼不太好理解,因此最好加上相應的注釋。

      6)盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用 Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導致了性能開銷。

      盡量在合適的場合使用單例。使用單例可以減輕加載的負擔、縮短加載的時間、提高加載的效率,但并不是所有地方都適用于單例。

      Java代碼如何優(yōu)化

      今天就跟中公優(yōu)就業(yè)一起來看看java代碼優(yōu)化細節(jié)。

      1、盡量指定類、方法的final修飾符

      帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String,整個類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以被重寫。如果指定了一個類為final,則該類所有的方法都是final的。Java編譯器會尋找機會內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對于提升Java運行效率作用重大,具體參見Java運行期優(yōu)化。此舉能夠使性能平均提高50%。

      2、盡量重用對象

      特別是String對象的使用,出現(xiàn)字符串連接時應該使用StringBuilder/StringBuffer代替。由于Java虛擬機不僅要花時間生成對象,以后可能還需要花時間對這些對象進行垃圾回收和處理,因此,生成過多的對象將會給程序的性能帶來很大的影響。

      3、盡可能使用局部變量

      調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實例變量等,都在堆中創(chuàng)建,速度較慢。另外,棧中創(chuàng)建的變量,隨著方法的運行結(jié)束,這些內(nèi)容就沒了,不需要額外的垃圾回收。

      4、及時關(guān)閉流

      Java編程過程中,進行數(shù)據(jù)庫連接、I/O流操作時務必小心,在使用完畢后,及時關(guān)閉以釋放資源。因為對這些大對象的操作會造成系統(tǒng)大的開銷,稍有不慎,將會導致嚴重的后果。

      5、盡量減少對變量的重復計算

      明確一個概念,對方法的調(diào)用,即使方法中只有一句語句,也是有消耗的,包括創(chuàng)建棧幀、調(diào)用方法時保護現(xiàn)場、調(diào)用方法完畢時恢復現(xiàn)場等。所以例如下面的操作:

      for (int i = 0; i list.size(); i++){...}

      建議替換為:

      for (int i = 0, int length = list.size(); i length; i++){...}

      這樣,在list.size()很大的時候,就減少了很多的消耗

      6、盡量采用懶加載的策略,即在需要的時候才創(chuàng)建

      例如:

      String str = "aaa";if (i == 1){list.add(str);}

      建議替換為:

      if (i == 1){String str = "aaa";list.add(str);}

      7、慎用異常

      異常對性能不利。拋出異常首先要創(chuàng)建一個新的對象,Throwable接口的構(gòu)造函數(shù)調(diào)用名為fillInStackTrace()的本地同步方法,fillInStackTrace()方法檢查堆棧,收集調(diào)用跟蹤信息。只要有異常被拋出,Java虛擬機就必須調(diào)整調(diào)用堆棧,因為在處理過程中創(chuàng)建了一個新的對象。異常只能用于錯誤處理,不應該用來控制程序流程。

      8、不要在循環(huán)中使用try…catch…,應該把其放在最外層

      除非不得已。如果毫無理由地這么寫了,只要你的領導資深一點、有強迫癥一點,八成就要罵你為什么寫出這種垃圾代碼來了

      9、如果能估計到待添加的內(nèi)容長度,為底層以數(shù)組方式實現(xiàn)的集合、工具類指定初始長度

      比如ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、HashSet等等,以StringBuilder為例:

      (1)StringBuilder() // 默認分配16個字符的空間

      (2)StringBuilder(int size) // 默認分配size個字符的空間

      (3)StringBuilder(String str) // 默認分配16個字符+str.length()個字符空間

      可以通過類(這里指的不僅僅是上面的StringBuilder)的來設定它的初始化容量,這樣可以明顯地提升性能。比如StringBuilder吧,length表示當前的StringBuilder能保持的字符數(shù)量。因為當StringBuilder達到最大容量的時候,它會將自身容量增加到當前的2倍再加2,無論何時只要StringBuilder達到它的最大容量,它就不得不創(chuàng)建一個新的字符數(shù)組然后將舊的字符數(shù)組內(nèi)容拷貝到新字符數(shù)組中—-這是十分耗費性能的一個操作。試想,如果能預估到字符數(shù)組中大概要存放5000個字符而不指定長度,最接近5000的2次冪是4096,每次擴容加的2不管,那么:

      (1)在4096 的基礎上,再申請8194個大小的字符數(shù)組,加起來相當于一次申請了12290個大小的字符數(shù)組,如果一開始能指定5000個大小的字符數(shù)組,就節(jié)省了一倍以上的空間

      (2)把原來的4096個字符拷貝到新的的字符數(shù)組中去

      這樣,既浪費內(nèi)存空間又降低代碼運行效率。所以,給底層以數(shù)組實現(xiàn)的集合、工具類設置一個合理的初始化容量是錯不了的,這會帶來立竿見影的效果。但是,注意,像HashMap這種是以數(shù)組+鏈表實現(xiàn)的集合,別把初始大小和你估計的大小設置得一樣,因為一個table上只連接一個對象的可能性幾乎為0。初始大小建議設置為2的N次冪,如果能估計到有2000個元素,設置成new HashMap(128)、new HashMap(256)都可以。

      10、當復制大量數(shù)據(jù)時,使用System.arraycopy()命令

      Java代碼優(yōu)化有哪些方法

      這個多了去了,一般需要注意的就是:

      異常處理try-catch方法

      進程沖突,程序死鎖。

      重復代碼的優(yōu)化,一般要求不要有重復的代碼應用。

      無用代碼,沒有用到的當然該丟掉。

      邊界測試

      黑盒-白盒測試等

      一般代碼是不可能沒有bug的,bug也不是全部是壞的。


      分享文章:短信代碼優(yōu)化java,短信優(yōu)化是什么意思
      轉(zhuǎn)載來于:http://www.ef60e0e.cn/article/hsoodg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        郸城县| 新泰市| 崇礼县| 西宁市| 五家渠市| 隆林| 宁南县| 高阳县| 延川县| 科技| 武穴市| 昌平区| 香河县| 洪洞县| 浙江省| 阳城县| 通山县| 图木舒克市| 犍为县| 建德市| 丽江市| 稷山县| 莱西市| 女性| 江川县| 贞丰县| 永昌县| 辛集市| 保德县| 巴塘县| 福海县| 当雄县| 南皮县| 浦北县| 肥乡县| 新田县| 德江县| 青海省| 临猗县| 新昌县| 毕节市|