qiyadeng

          專注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

          這篇文章將使用兩個例子計算兩個日期的時間差。
          1.使用Java SDK。
          2.使用Joda庫。
          1.使用Java SDK
           計算兩個Date之間的時間差,基本思路為把Date轉換為ms(微秒),然后計算兩個微秒時間差。時間的兌換規則如下:

          1s秒 = 1000ms毫秒 1min分種 = 60s秒 1hours小時 = 60min分鐘 1day天 = 24hours小時
          package com.qiyadeng.date;

          import java.text.SimpleDateFormat;
          import java.util.Date;

          public class DateDifferentExample {
              
          public static void main(String[] args) {
                  String dateStart 
          = "2013-02-19 09:29:58";
                  String dateStop 
          = "2013-02-20 11:31:48";

                  SimpleDateFormat format 
          = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                  Date d1 
          = null;
                  Date d2 
          = null;

                  
          try {
                      d1 
          = format.parse(dateStart);
                      d2 
          = format.parse(dateStop);

                      
          //毫秒ms
                      long diff = d2.getTime() - d1.getTime();

                      
          long diffSeconds = diff / 1000 % 60;
                      
          long diffMinutes = diff / (60 * 1000% 60;
                      
          long diffHours = diff / (60 * 60 * 1000% 24;
                      
          long diffDays = diff / (24 * 60 * 60 * 1000);

                      System.out.print(
          "兩個時間相差:");
                      System.out.print(diffDays 
          + " 天, ");
                      System.out.print(diffHours 
          + " 小時, ");
                      System.out.print(diffMinutes 
          + " 分鐘, ");
                      System.out.print(diffSeconds 
          + " 秒.");

                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  }

              }
          }

          運行結果:

          兩個時間相差:1 天, 2 小時, 1 分鐘, 50 秒.

          2.Joda時間庫

          package com.qiyadeng.date;

          import java.text.SimpleDateFormat;
          import java.util.Date;

          import org.joda.time.DateTime;
          import org.joda.time.Days;
          import org.joda.time.Hours;
          import org.joda.time.Minutes;
          import org.joda.time.Seconds;

          public class JodaDateDifferentExample {
              
          public static void main(String[] args) {
                  String dateStart 
          = "2013-02-19 09:29:58";
                  String dateStop 
          = "2013-02-20 11:31:48";

                  SimpleDateFormat format 
          = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                  Date d1 
          = null;
                  Date d2 
          = null;

                  
          try {
                      d1 
          = format.parse(dateStart);
                      d2 
          = format.parse(dateStop);

                      DateTime dt1 
          = new DateTime(d1);
                      DateTime dt2 
          = new DateTime(d2);

                      System.out.print(
          "兩個時間相差:");
                      System.out.print(Days.daysBetween(dt1, dt2).getDays() 
          + " 天, ");
                      System.out.print(Hours.hoursBetween(dt1, dt2).getHours() 
          % 24
                              
          + " 小時, ");
                      System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() 
          % 60
                              
          + " 分鐘, ");
                      System.out.print(Seconds.secondsBetween(dt1, dt2).getSeconds() 
          % 60
                              
          + " 秒.");

                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  }

              }
          }

          運行結果:

          兩個時間相差:1 天, 2 小時, 1 分鐘, 50 秒.

          原創文章,轉載請注明: 轉載自http://www.qiyadeng.com/

          本文鏈接地址: Java計算日期和時間差

          posted @ 2013-02-19 22:27 qiyadeng 閱讀(15150) | 評論 (2)編輯 收藏

          關于重復提交

          前段時間和朋友郵件討論過頁面重復提交的問題,郵件記錄如下。

          問題:
            頁面保證是保證的一部分。頁面機制我這邊采用的是操作結束前不能重做,服務端結束返回信息后,適當條件下(服務器忙)是允許重新操作的。

          你說的唯一值保證頁面不重復的方法,可以本頁面再次提交呢?

          解決辦法:
            哈哈,還是流程圖吧,有的時候更容易說清楚問題。應該回答了你的問題。

          關于頁面(我們叫前端吧)和后臺(服務端)在判斷中和校驗中的關系,我認為的原則應該是:
          1.如果前端和后端校驗只能選一個的話,選擇后端校驗。可以都選的話,兩者都需要。
          2.前端校驗可以檢查一些格式錯誤或是基本校驗,可以減輕服務器校驗負擔,也可以讓用戶更快知道自己錯在哪里。
          3.后臺校驗更擅長做的是邏輯校驗,數據的格式可能都正確,但是發生的關系不正確或是重復數據,只有通過后臺校驗才能校驗出來。

          原創文章,轉載請注明: 轉載自http://www.qiyadeng.com/

          本文鏈接地址: 關于重復提交

          posted @ 2013-02-06 23:30 qiyadeng 閱讀(1750) | 評論 (3)編輯 收藏

          今天看到關于一個整數表示為n個連續整數和的問題。搜索了下找到如下文章:

          表為連續正整數
          View SlideShare document or Upload your own.

          還搜索到程序的實現:http://blog.csdn.net/Solstice/archive/2006/09/13/1217700.aspx

          http://squall.cs.ntou.edu.tw/cprog/Assignments/99Fall/FindGivenSum.html

          http://blog.chinaunix.net/u2/76292/showart_1359876.html(這個是不正確的)

           

          我也簡單的實現了下:(g++編譯,主要思路是利用等差數列求和公式n=(a+a+k)*(k+2)/2列舉k,找到合適的a)

          #include <iostream>
          #include <math.h>
          using namespace std;
          
          int main(){
          
              int n;
              cout<<"input n:"<<endl;
              cin>>n;
          
              int maxk=(int)sqrt((double)n*2);
          
              int flag = 0;
          
              //cout<<"maxk="<<maxk<<endl;
          
              //for(int i=1;i<maxk+1;i++){
              for(int i=maxk+1;i>0;i--){
                   double a = n/(double)(i+1)-i/(double)2;
                  //cout<<"a="<<a<<endl;
              
                  if(a>0&&a-(int)a==0){
                      //cout<<i<<endl;
                      for(int j=0;j<i+1;j++){
                          cout<<a+j<<" ";
                      }
                      cout<<endl;
                      flag=1;
                  }
          
              }
              if(flag==0){
                  cout<<"NONE"<<endl;
              }
              return 0;
          
          }
          
          

          posted @ 2009-01-19 16:37 qiyadeng 閱讀(1922) | 評論 (3)編輯 收藏

          posted @ 2008-12-05 00:08 qiyadeng 閱讀(348) | 評論 (0)編輯 收藏

          Mc Cain Resume
          View SlideShare document or Upload your own.
          Obama Resume
          View SlideShare document or Upload your own.

            

          事實上,媒體也非常認可這兩份由專家為總統寫作的簡歷,包括ABCNews,并將他們作為介紹總統候選人的核心提要。像其他的高端工作職位一樣,只有更加有力地呈現自己作為候選人的資格,您才能成功獲得工作職位。這就像美國的總統競選一樣。

          這兩份出色的簡歷,首先是非常簡潔。人力資源經理,招聘經理或者獵頭顧問沒有時間去翻閱每個申請人的詳細簡歷。因此要保持你的簡歷在1-2頁之間,最多不超過2頁。要把重點放在你最近15年的工作經歷,對于工作經歷豐富的高端候選人,你可能還需要對以往的一些工作做出簡短的總結性說明。

          其次,確保簡歷的整體布局清晰明白。簡歷要給人一個良好的視覺吸引力。簡歷的格式要編排有序。字體大小選擇要正確,避免留下太多的空白,也要避免把一頁紙塞得太滿。整體效果上,簡歷應該突出高品位和專業化的特點。

          這兩個人的簡歷雖然沒有得到官方的認可,但是我們認為這兩份由專家寫作的簡歷不僅呈現了他們卓越的任職資格,而且突出了他們最優秀的職業成就。這也是簡歷專家建議候選者首先要在簡歷中呈現的。因為卓越的任職資格和最優秀的職業成就是簡歷的核心內容。簡歷的大部分內容應當呈現你過去或現在的工作職責和“專業經驗”標題下的職業成就。典型來講,職業經驗是以逆時序排列,從你最近的職位開始,列出公司名稱,雇傭日期,擔當的職務,也包括每一個職務你的重點工作內容和職責的簡要概述。

          最有效的簡歷,也應該包括每個工作所取得的工作成績。工作成績或者工作成就可以通過簡要的,針對性的陳述來呈現,要證明你如何增加銷售,降低費用,擴大市場份額等。

          posted @ 2008-11-30 23:33 qiyadeng 閱讀(620) | 評論 (1)編輯 收藏

          8 月 24 日晚,在鳥巢國家體育場,當站在舷梯上的運動員慢慢卷起畫軸、奧運圣火漸漸熄滅時,2008 北京奧運會,一屆被國際奧委會主席羅格譽為“真正的無與倫比”的奧運會,正式與大家告別了。
          與此同時,由 12 位特殊的運動員所組成的十二生肖代表隊,也結束了它們奧運期間在谷歌 Doodle 舞臺上的精彩表演。今天,就讓我們再次回味一下它們在過去的十七天里帶給我們的精彩吧!


          8月8日開幕式(opening)


          8月9日自行車(cycling)


          8月10日舉重(weightlifting)


          8月11日跳水(diving)


          8月12日藝術體操(rhythm)


          8月13日吊環(rings)


          8月14日籃球(basketball)


          8月15日羽毛球(badminton)


          8月16日足球(soccer)


          8月17日賽艇(rowing)


          8月18日乒乓球(pingpong)


          8月19日游泳(swimming)


          8月20日田徑(trackfield)


          8月21日跳高(highjump)


          8月22日武術(martialarts)


          8月23日棒球(baseball)


          8月24日閉幕式(closing_ceremonies)

          Google 黑板報 -- Google 中國的博客網志: 十二生肖代表隊——谷歌 Doodle 08 特輯 (結束篇)

          posted @ 2008-08-26 13:11 qiyadeng 閱讀(380) | 評論 (0)編輯 收藏

           

          Img702828_t

          posted @ 2008-08-20 12:37 qiyadeng 閱讀(418) | 評論 (2)編輯 收藏

          極光是南北極地區特有的一種大氣發光現象。極光在東西方的神話傳說中都留下了美麗的身影,現代科學的發展,使人類能夠用理性的眼光看待極光,對它作出科學的解釋。
          長期以來,極光的成因機理未能得到滿意的解釋。在相當長一段時間內,人們一直認為極光可能是由以下三種原因形成的。一種看法認為極光是地球外面燃起的大火,因為北極區臨近地球的邊緣,所以能看到這種大火。另一種看法認為,極光是紅日西沉以后,透射反照出來的輝光。還有一種看法認為,極地冰雪豐富,它們在白天吸收陽光,貯存起來,到夜晚釋放出來,便成了極光。總之,眾說紛紜,無一定論。直到20世紀60年代,將地面觀測結果與衛星和火箭探測到的資料結合起來研究,才逐步形成了極光的物理性描述。

          現在人們認識到,極光一方面與地球高空大氣和地磁場的大規模相互作用有關,另一方面又與太陽噴發出來的高速帶電粒子流有關,這種粒子流通常稱為太陽風。由此可見,形成極光必不可少的條件是大氣、磁場和太陽風,缺一不可。具備這三個條件的太陽系其他行星,如木星和水星,它們的周圍,也會產生極光,這已被實際觀察的事實所證明。

          地磁場分布在地球周圍,被太陽風包裹著,形成一個棒槌狀的膠體,它的科學名稱叫做磁層。為了更形象化,我們打這樣一個比方。可以把磁層看成一個巨大無比的電視機顯像管,它將進入高空大氣的太陽風粒子流匯聚成束,聚焦到地磁的極區,極區大氣就是顯像管的熒光屏,極光則是電視屏幕上移動的圖像。但是,這里的電視屏幕卻不是 18英寸或 24英寸,而是直徑為4000公里的極區高空大氣。通常,地面上的觀眾,在某個地方只能見到畫面的l/50。在電視顯像管中,電子束擊中電視屏幕,因為屏上涂有發光物質,會發射出光,顯示成圖像。同樣,來自空間的電子束,打入極區高空大氣層時,會激發大氣中的分子和原子,導致發光,人們便見到了極光的圖像顯示。在電視顯像管中,是一對電極和一個電磁鐵作用于電子束,產生并形成一種活動的圖像。在極光發生時,極光的顯示和運動則是由于粒子束受到磁層中電場和磁場變化的調制造成的。

          極光不僅是個光學現象,而且是個無線電現象,可以用雷達進行探測研究,它還會輻射出某些無線電波。有人還說,極光能發出各種各樣的聲音。極光不僅是科學研究的重要課題,它還直接影響到無線電通信,長電纜通信,以及長的管道和電力傳送線等許多實用工程項目。極光還可以影響到氣候,影響生物學過程。當然,極光也還有許許多多沒有解開的謎。
          極光被視為自然界中最漂亮的奇觀之一。如果我們乘著宇宙飛船,越過地球的南北極上空,從遙遠的太空向地球望去,會見到圍繞地球磁極存在一個閃閃發亮的光環,這個環就叫做極光卵。由于它們向太陽的一邊有點被壓扁,而背太陽的一邊卻稍稍被拉伸,因而呈現出卵一樣的形狀。極光卵處在連續不斷的變化之中,時明時暗,時而向赤道方向伸展,時而又向極點方向收縮。處在午夜部分的光環顯得最寬最明亮。長期觀測統計結果表明,極光最經常出現的地方是在南北磁緯度67度附近的兩個環帶狀區域內,分別稱作南極光區和北極光區。在極光區內差不多每天都會發生極光活動。在極光卵所包圍的內部區域,通常叫做極蓋區,在該區域內,極光出現的機會反而要比緯度較低的極光區來得少。在中低緯地區,尤其是近赤道區域,很少出現極光,但并不是說壓根兒觀測不到極光。1958年2月10日夜間的一次特大極光,在熱帶都能見到,而且顯示出鮮艷的紅色。這類極光往往與特大的太陽耀斑暴發和強烈的地磁暴有關。

          在寒冷的極區,人們舉目瞭望夜空,常常見到五光十色,千姿百態,各種各樣形狀的極光。毫不夸大地說,在世界上簡直找不出兩個一模一樣的極光形體來,從科學研究的角度,人們將極光按其形態特征分成五種:一是底邊整齊微微彎曲的圓弧狀的極光孤;二是有彎扭折皺的飄帶狀的極光帶;三是如云朵一般的片朵狀的極光片;四是面紗一樣均勻的帳幔狀的極光幔;五是沿磁力線方向的射線狀的極光芒。

          極光形體的亮度變化也是很大的,從剛剛能看得見的銀河星云般的亮度,一直亮到滿月時的月亮亮度。在強極光出現時,地面上物體的輪廓都能被照見,甚至會照出物體的影子來。最為動人的當然是極光運動所造成的瞬息萬變的奇妙景象。我們形容事物變得快時常說:“眼睛一眨,老母雞變鴨。”極光可真是這樣,翻手為云,覆手為雨,變化莫測,而這一切又往往發生在幾秒鐘或數分鐘之內。極光的運動變化,是自然界這個魔術大師,以天空為舞臺上演的一出光的活劇,上下縱橫成百上千公里,甚至還存在近萬公里長的極光帶。這種宏偉壯觀的自然景象,好像沾了一點仙氣似的,頗具神秘色彩。令人嘆為觀止的則是極光的色彩,早已不能用五顏六色去描繪。說到底,其本色不外乎是紅、綠、紫、藍、白、黃,可是大自然這一超級畫家用出神入化的手法,將深淺濃淡、隱顯明暗一搭配、一組合,好家伙,一下子變成了萬花筒啦。

          posted @ 2008-08-19 08:39 qiyadeng 閱讀(279) | 評論 (0)編輯 收藏

          看清楚了,這可是154公斤。

          這可是我們國家老鼠的強項

          “劉翔”

          posted @ 2008-08-06 18:08 qiyadeng 閱讀(340) | 評論 (1)編輯 收藏

           

          每個Java程序員都要處理異常,異常處理在應用程序中起著重要的作用。在Java世界中,處理異常看上去不是那么簡單,不僅僅是在異常發生的地方,優雅的報告異常。

          使用ThreadGroup處理異常

          ThreadGroup類中在這個時候大部分方法已經作廢了,但是該類還是很有用的。ThreadGroup類有一個方法uncaughtException(Thread,Throwable),意思是:當線程組中的線程因為異常而終止時,Java虛擬機調用該方法。這樣你可以考慮繼承ThreadGroup類來處理你應用中沒有捕獲的異常。

          public class AppSpecificThreadGroup extends ThreadGroup {

          public void uncaughtException(Thread, Throwable) {

          // app specific error handling here

          // ex: if fatal, release resources

          // show user dialog

          }

          }

          這樣在你的應用啟動的時候,把你的線程加入到線程組(Thread group)中。

          public class ApplicationMain {
            public static void main(String[] args) {
              Runnable r = new ApplicationStarter(args);
              ThreadGroup g = new AppSpecificThreadGroup();
              Thread t = new Thread(g, r);
              t.start();
            }
            
            private static void doStart(String[] args) {
              // start application here...
            }
            
            private static class ApplicationStarter {
              private String[] args;
              ApplicationStarter(String[] args) {
                this.args = args;
              }
              
              public void run() {
                doStart(args);
              }
            }
          }

          使用Java5的Thread.UncaughtExceptionHandler

          當認識到ThreadGroup.uncaughtException(Thread,Throwable)方法的巨大作用時,Sun團隊在Java5版本站中增強了未捕獲的異常處理的功能,引入了Thread.UncaughtExceptionHandler接口,另外這個接口引入了兩個新的”Check points”用于處理異常。Thread類有兩個屬性-uncaughtExceptionHandler和defaultUncaughtExceptionHandler,它們有相應的get/set方法。但是這兩個方法是不同的。讓我們看看處理異常的過程。

          n 使用uncaughtExceptionHandler為當前線程處理異常。

          n 如果uncaughtExceptionHandler為空(null),使用線程組(如果用戶沒有顯示設置,線程組是uncaughtExceptionHandler的默認實現)。

          n 如果線程組是默認的實現,但是不是根線程組,將把錯誤處理委派給父線程組。

          n 如果線程組是默認的實現,并且是根線程組,將使用線程(Thread)類上設置的defaultUncaughtExceptionHandler方法。

          n 如果在線程類沒有設置defaultUncaughtExceptionHandler,將調用Java5之前的ThreadGroup類中的未捕獲異常方法。

          實現Thread.UncaughtExceptionHandler接口看起來也像上面實現ThreadGroup接口。

          public class AppSpecificExceptionHandler implements Thread.UncaughtExceptionHandler {
            
           public void uncaughtException(Thread, Throwable) {
             // app specific error handling here
             // ex: if fatal, release resources
             //     show user dialog
           }
          }

          在應用程序中插入如下:

          public class ApplicationMain {
           public static void main(String[] args) {
            Thread.setDefaultUncaughtExceptionHandler(new AppSpecificExceptionHandler());
           }
          }

          Swing異常處理實現

          許多人沒有注意到現有的JOptionPanel類,該類中有許多的優美的彈出對話框的靜態方法(showOptionDialog,showConfirmDialog,showInputDialog,和showMessageDialog),這些方法接受的參數不僅僅是字符串。這些靜態方法(也包括JOptionPanel構造函數)都是接受一個Object作為參數的的。下面是一個實現該類的核心代碼:

          public class ErrorDialog {

          public ErrorDialog() {

          super();

          }

          public static void showQuickErrorDialog(JFrame parent, Exception e) {

          final JTextArea textArea = new JTextArea();

          textArea.setFont(new Font("Sans-Serif", Font.PLAIN, 10));

          textArea.setEditable(false);

          StringWriter writer = new StringWriter();

          e.printStackTrace(new PrintWriter(writer));

          textArea.setText(writer.toString());

          JScrollPane scrollPane = new JScrollPane(textArea);

          scrollPane.setPreferredSize(new Dimension(350, 150));

          JOptionPane.showMessageDialog(parent, scrollPane,

          "An Error Has Occurred", JOptionPane.ERROR_MESSAGE);

          }

          }

          在程序中的一個例圖如下:

          clip_image002

          posted @ 2008-07-29 11:18 qiyadeng 閱讀(1484) | 評論 (0)編輯 收藏

          僅列出標題
          共9頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 
          主站蜘蛛池模板: 大兴区| 新丰县| 天峨县| 怀来县| 西乌珠穆沁旗| 汕头市| 宁国市| 广安市| 台安县| 张家界市| 利辛县| 定兴县| 大城县| 遂溪县| 盖州市| 辽源市| 濮阳市| 成武县| 长沙县| 华安县| 乾安县| 庆城县| 夏邑县| 宿松县| 米泉市| 田林县| 卢龙县| 庆城县| 绥中县| 普兰县| 达拉特旗| 航空| 尼勒克县| 大悟县| 西城区| 张家港市| 喜德县| 东兰县| 九寨沟县| 安龙县| 湟中县|