欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Java工程師淺談java技術的8大優(yōu)勢(程序員必看,精心整理,免分數)

      時間:2019-05-13 01:39:32下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《Java工程師淺談java技術的8大優(yōu)勢(程序員必看,精心整理,免分數)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Java工程師淺談java技術的8大優(yōu)勢(程序員必看,精心整理,免分數)》。

      第一篇:Java工程師淺談java技術的8大優(yōu)勢(程序員必看,精心整理,免分數)

      Java工程師淺談java技術的8大優(yōu)勢

      java工程師淺談java技術的8大優(yōu)勢,與Java本身相比,Java API更是可貴的免費財富。想使用Socket操作網絡?API中有;想連接到SQL數據庫?API中有;想給應用程序一個漂亮的用戶界面?API中有。

      1.免費!

      Sun(雖然現(xiàn)在已被甲骨文收購但我還是喜歡說Sun)免費提供用來開發(fā)Java應用程序的一切,你不必付任何的版稅?;蛟S你會將信將疑:資本家搞共產了?實際上,Sun在Java上的收益確實不大,遠遠比不過壟斷Java應用服務器技術的IBM和BEA公司,似乎有替別人做嫁衣之嫌。對此,Sun董事長、總裁兼首席執(zhí)行官Scott McNealy是這樣解釋的:“Sun并沒有用Java賺錢,這就像使用英語不用上稅一樣,Sun并不通過Java本身來盈利,而是把Java應用到了業(yè)務中?!痹瓉硎欠砰L線釣大魚!

      與Java本身相比,Java API更是可貴的免費財富。想使用Socket操作網絡?API中有;想連接到SQL數據庫?API中有;想給應用程序一個漂亮的用戶界面?API中有;想要處理數字圖形、播放音樂、解析字符串或者創(chuàng)建數字簽名?API中全都有。

      最后,Java發(fā)展了那么多年,優(yōu)秀的Java教程、技術網站數不勝數。Bruce Eckel大師的名作Java編程思想(Thinking in java)更是不可不讀的佳作,許多狂熱愛好者甚至把它當做圣經一樣一頁一頁仔細揣摩。你可到作者的主頁http://免費下載此書的電子版。機械工業(yè)出版社也有引進臺灣技術作家候捷的中譯本,可惜不是免費。

      或許你會問,有了那么多優(yōu)秀的教程,還要你這個Java咖啡館干什么呢?嗯哼,雖然那些教程和技術文章是如此優(yōu)秀,但并不適合初學者。Java咖啡館目的就在于幫助你打好Java技術的基礎,掌握Java技術的主要脈絡,幫助你邁出進入Java世界的第一步!

      2.跨平臺

      “一次編寫,隨處運行”,Java系統(tǒng)可以運行在不同的操作系統(tǒng)和硬件上。隨著Linux的持續(xù)增長以及Mac OSX完全支持Java技術,跨平臺的特性變得越來越有分量。

      由于Java跨平臺,Java API自然也是平臺統(tǒng)一的。對程序員而言,沒有比統(tǒng)一的API函數能夠讓他們更欣慰的了——已經有了圓形的輪子,何必再從頭發(fā)明輪子呢?我們拿Java API與C++的類庫相比便可以知道它的可貴之處。有Windows編程經驗的C++程序員肯定經歷過被MFC(Microsoft Foundation Classes,微軟基類庫)折磨的日子,學習曲線陡峭,沒有若干個月根本無法開始生產,一段時間不接觸遺忘率又高。據說,即使在微軟公司內部,除了 MFC開發(fā)小組,誰都不樂意用它。即便你熟悉了MFC,能夠順利開發(fā)Windows應用程序,如果你要編寫一個Linux應用程序,MFC又派不上用場了,你必須學習Linux下C++開發(fā)的一套庫函數。還有UNIX、FreeBSD、Mac OS??你學得過來嗎?反觀Java API,操作系統(tǒng),你愛誰是誰,只要編寫一次便可隨處運行!

      3.在學術界獲得了強有力的支持

      由于免費、跨平臺、Java語言本身技術先進,在高校中,Java 已經成為許多學科研究、課程和計算的首選語言,用Java做上機作業(yè),一般都是鼓勵的。據我所知,北大、清華許多院系的研究生入學考試都可以用Java語言答題。實際上,用Java來完成這些工作,大多數情況下要比用C或其他語言簡潔得多,你可以把注意力集中在算法等核心部分,從而獲得更高分數。

      掌握Java技術的學生一般有更多的工作機會課余兼職,拿到更高報酬,不但減輕家里的負擔,更可以讓自己早日進入社會鍛煉。所以,如果你還在求學,學習Java,一定沒錯的。

      4.簡單

      與C++等語言相比較,語法上Java是簡單的。

      謝天謝地,Java提供了垃圾回收機制。以往C++的開發(fā)中,最容易出錯誤的地方便是內存管理,申請的內存用完以后必須釋放,否則可使用的內存資源越來越少,直至耗盡系統(tǒng)資源而造成死機。而Java系統(tǒng)中,你可以任意申請內存,Java系統(tǒng)會在適當的時候自動釋放無用的內存資源。這個神奇的機制叫做“垃圾回收”,節(jié)約了許多調試錯誤的時間。

      在Java中,要寫出低劣的代碼也不是一件容易的事情。一方面,垃圾回收機制堵住了內存泄漏的可能性,另一方面就是異常捕捉機制,它強迫你做最壞的打算。編寫程序時,難免會遇到一些意外,比如文件無法打開、網絡讀取失敗等特殊情況。在C++等語言中是依靠返回值來判斷的,如果一句句地檢查返回值,那實在是太麻煩了。從而,程序員習慣性地忽略返回值的檢查,并安慰自己一切都會好起來的。這便埋下了隱患。在Java中,Java的方法可以拋異常,而你必須應答異常,即使你不想進行任何操作。比如編寫打開文件的代碼,你不得不響應異常以防意外發(fā)生,否則程序根本不能夠通過編譯。未雨綢繆,使得 Java系統(tǒng)更穩(wěn)健。

      5.企業(yè)應用的成熟平臺

      這是Java技術目前最活躍的兩大領域之一。我們在前面Java技術介紹中已經提到了不少,這里僅關注跟我們切身相關的優(yōu)勢。

      Java技術的企業(yè)應用旨在提升企業(yè)競爭力,所以Java技術受到了企業(yè)的欣賞,市場份額是同類技術中最大的。同時,Java開放標準,所以供應商眾多。市面上有許多的應用服務器、工具與構件可以選擇,從高端的BEA WebLogic、IBM WebSphere等商業(yè)軟件,到Tomcat、JBoss等開源的免費工具,一應俱全。作為Java技術的初學者,不需要任何花費就能夠進行Java企業(yè)應用的自我培訓,以后若參與Java的商業(yè)項目開發(fā),便可以無縫地把軟件移植到高端的商業(yè)平臺上去。反觀.Net,想免費自學,不盜版是不可能的啦。

      最后談談Java和Web服務。Web服務是軟件互操作歷史上的里程碑,是技術發(fā)展的重要方向,是你絕不能不了解的技術。Sun公司是Java 語言的發(fā)明者,而作為一個開放的跨平臺的技術體系,Java在Web服務的開發(fā)方面起著非常重要的作用。Sun被接納為促進Web服務交互組織WS-I的董事成員后,作為活躍的參與者和業(yè)界的領導者,對Web服務互操作性的促進,有著相當重要的意義,也為Java技術的含金量加上了關鍵的砝碼。

      6.無線應用

      這是Java技術目前最活躍的另一個領域,旨在提供更多、更方便的個性化服務的Java手機應用。未來幾年內,勢必將出現(xiàn)移動通訊運營商和移動設備應用軟件的巨大商機和激烈競爭,并且該趨勢很可能與電子政務、電子商務等其他發(fā)展相互影響。Java在手機市場的專有性和Java本身的開放性和標準性,使得越來越多的企業(yè)加入了Java陣營。

      中國也不例外。2003年James Gosling博士首次來到中國,其中重要的一項工作便是與中國聯(lián)通結盟。

      黃糖故事

      Java之父——James Gosling博士

      James Gosling博士以“Java技術之父”聞名于世。他是Java技術的創(chuàng)始人,作為Sun研究院院士,親手設計了Java語言,完成了Java技術的原始編譯器和虛擬機。在他的帶領下,Java現(xiàn)已成為互聯(lián)網的標準編程模式以及分布式企業(yè)級應用的事實標準,其跨平臺的技術優(yōu)勢為網絡計算帶來了劃時代的變革。目前,Gosling博士積極致力于軟件開發(fā)工具的研究,以使軟件開發(fā)工具的功能更強大,更容易為開發(fā)人員所使用,確保應用、服務開發(fā)的迅速完成。

      實際上,手機游戲開發(fā)也是一項不錯的職業(yè)與機遇,成功的例子已經不在少數哦。

      7.開放的Java社團——Java Community Process,JCP

      JCP是一個讓Java出名的功臣。JCP創(chuàng)造了一個開放型論壇,讓同好在此交換意見,探索、定義新的平臺,群策群力。Java歡迎競爭,因為只有這樣才能最大限度地提高領域內的技術,這點與對手微軟.Net技術大相徑庭。在Java的舞臺上有很多演員,任何人都可以參與到JCP的過程中去,幫助Sun決定Java的發(fā)展和未來,同時也挑戰(zhàn)自己的影響力。從而,你可以發(fā)現(xiàn)Java世界中新的名詞層出不窮,遠遠走在規(guī)范之前。而在微軟.Net技術的舞臺上,你只能看到一個演員,那就是微軟自己。還有現(xiàn)在的Java技術交流論壇,J道等等。。都是很不錯錯的開放社區(qū)。

      8.開源組織或者非盈利機構的支持

      開源組織是無政府主義的夢想——沒有政體,沒有所屬權,言論與行動自由,僅僅依靠渴望共享與交流的信仰及無私奉獻來維系。Java世界中,開源組織與非盈利機構發(fā)揮到了極致,許多出色的工具都出自它們之手。比如JUnit、Cactus、Tomcat、Struts、JBoss、Eclipse、ANT、Xerces、Hibernate、Axis、AspectJ等等,許多工具還會出現(xiàn)在我們的咖啡館中,扮演重要的角色。

      Java世界中,便宜無好貨絕對不成立,這些工具擁有足以和商業(yè)軟件媲美的質量,很多商業(yè)IDE還集成了這些工具。對Java程序員而言,生活不單單會變得輕松,更重要的,你能夠看到希望,有為大家貢獻自己力量的機會!

      第二篇:JAVA時間格式化處理-JAVA程序員JAVA工程師面試必看

      -JAVA程序員JAVA工程師面試必看

      JAVA時間格式化處理 日期格式化

      import java.util.Date;import java.text.SimpleDateFormat;class dayTime { public static void main(String args[]){ Date nowTime=new Date();System.out.println(nowTime);SimpleDateFormat time=new SimpleDateFormat(“yyyy MM dd HH mm ss”);System.out.println(time.format(nowTime));} }

      2007-05-17 09:54 轉載地址

      http://tb.blog.csdn.net/TrackBack.aspx?PostId=3809041、通過MessageFormat轉化

      String dateTime = MessageFormat.format(“{0,date,yyyy-MM-dd-HH-mm:ss:ms}” , new Object[] { new java.sql.Date(System.currentTimeMillis())});說明: yyyy-MM-dd-HH-mm:ss:ms 年yyyy 月MM 日dd 時(大寫為24進制,小寫為12進制)分mm 秒ss 微妙ms

      2、修改數據庫時用

      queryDataSet.setDate(“dateField”, new java.sql.Date(new java.util.Date().getTime()));queryDataSet.setDate(“dateField”, new java.sql.Date.valueOf(“2005-05-03”));

      3、通過SimpleDateFormat 轉化

      SimpleDateFormat dateFm = new SimpleDateFormat(“yyyy-MM-dd”);//格式化當前系統(tǒng)日期 String dateTime = dateFm.format(new java.util.Date());

      4、具體討論

      Java 語言的Calendar(日歷),Date(日期), 和DateFormat(日期格式)組成了Java標準的一個基本但是非常重要的部分.日期是商業(yè)邏輯計算一個關鍵的部分.所有的開發(fā)者都應該能夠計算未來的日期, 定制日期的顯示格式, 并將文本數據解析成日期對象.我們寫了兩篇文章, 這是第一篇, 我們將大概的學習日期, 日期格式, 日期的解析和日期的計算.我們將討論下面的類:

      1、具體類(和抽象類相對)java.util.Date

      2、抽象類java.text.DateFormat 和它的一個具體子類,java.text.SimpleDateFormat

      3、抽象類java.util.Calendar 和它的一個具體子類,java.util.GregorianCalendar

      具體類可以被實例化, 但是抽象類卻不能.你首先必須實現(xiàn)抽象類的一個具體子類.Date 類從Java 開發(fā)包(JDK)1.0 就開始進化, 當時它只包含了幾個取得或者設置一個日期數據的各個部分的方法, 比如說月, 日, 和年.這些方法現(xiàn)在遭到了批評并且已經被轉移到了Calendar類里去了, 我們將在本文中進一步討論它.這種改進旨在更好的處理日期數據的國際化格式.就象在JDK 1.1中一樣, Date 類實際上只是一個包裹類, 它包含的是一個長整型數據, 表示的是從GMT(格林尼治標準時間)1970年, 1 月 1日00:00:00這一刻之前或者是之后經歷的毫秒數.一、創(chuàng)建一個日期對象

      讓我們看一個使用系統(tǒng)的當前日期和時間創(chuàng)建一個日期對象并返回一個長整數的簡單例子.這個時間通常被稱為Java 虛擬機(JVM)主機環(huán)境的系統(tǒng)時間.//-----------------------import java.util.Date;

      public class DateExample1 { public static void main(String[] args){ // Get the system date/time Date date = new Date();

      System.out.println(date.getTime());} } //-----------------------

      在星期六, 2001年9月29日, 下午大約是6:50的樣子, 上面的例子在系統(tǒng)輸出設備上顯示的結果是 1001803809710.在這個例子中,值得注意的是我們使用了Date 構造函數創(chuàng)建一個日期對象, 這個構造函數沒有接受任何參數.而這個構造函數在內部使用了System.currentTimeMillis()方法來從系統(tǒng)獲取日期.那么, 現(xiàn)在我們已經知道了如何獲取從1970年1月1日開始經歷的毫秒數了.我們如何才能以一種用戶明白的格式來顯示這個日期呢? 在這里類java.text.SimpleDateFormat 和它的抽象基類 java.text.DateFormat 就派得上用場了.二、日期數據的定制格式 假如我們希望定制日期數據的格式, 比方星期六-9月-29日-2001年.下面的例子展示了如何完成這個工作:

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

      public class DateExample2 {

      public static void main(String[] args){

      SimpleDateFormat bartDateFormat = new SimpleDateFormat(“EEEE-MMMM-dd-yyyy”);

      Date date = new Date();

      System.out.println(bartDateFormat.format(date));} } //-----------------------

      只要通過向SimpleDateFormat 的構造函數傳遞格式字符串“EEE-MMMM-dd-yyyy”, 我們就能夠指明自己想要的格式.你應該可以看見, 格式字符串中的ASCII 字符告訴格式化函數下面顯示日期數據的哪一個部分.EEEE是星期, MMMM是月, dd是日, yyyy是年.字符的個數決定了日期是如何格式化的.傳遞“EE-MM-dd-yy”會顯示 Sat-09-29-01.請察看Sun 公司的Web 站點獲取日期格式化選項的完整的指示.三、將文本數據解析成日期對象

      假設我們有一個文本字符串包含了一個格式化了的日期對象, 而我們希望解析這個字符串并從文本日期數據創(chuàng)建一個日期對象.我們將再次以格式化字符串“MM-dd-yyyy” 調用SimpleDateFormat類, 但是這一次, 我們使用格式化解析而不是生成一個文本日期數據.我們的例子, 顯示在下面, 將解析文本字符串“9-29-2001”并創(chuàng)建一個值為001736000000 的日期對象.//-----------------------import java.text.SimpleDateFormat;import java.util.Date;

      public class DateExample3 {

      public static void main(String[] args){ // Create a date formatter that can parse dates of // the form MM-dd-yyyy.SimpleDateFormat bartDateFormat = new SimpleDateFormat(“MM-dd-yyyy”);

      // Create a string containing a text date to be parsed.String dateStringToParse = “9-29-2001”;

      try { // Parse the text version of the date.// We have to perform the parse method in a // try-catch construct in case dateStringToParse // does not contain a date in the format we are expecting.Date date = bartDateFormat.parse(dateStringToParse);

      // Now send the parsed date as a long value // to the system output.System.out.println(date.getTime());} catch(Exception ex){ System.out.println(ex.getMessage());} } } //-----------------------

      四、使用標準的日期格式化過程

      既然我們已經可以生成和解析定制的日期格式了, 讓我們來看一看如何使用內建的格式化過程.方法 DateFormat.getDateTimeInstance()讓我們得以用幾種不同的方法獲得標準的日期格式化過程.在下面的例子中, 我們獲取了四個內建的日期格式化過程.它們包括一個短的, 中等的, 長的, 和完整的日期格式.//-----------------------import java.text.DateFormat;import java.util.Date;

      public class DateExample4 {

      public static void main(String[] args){ Date date = new Date();

      DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);

      DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);

      DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);

      DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);

      System.out.println(shortDateFormat.format(date));System.out.println(mediumDateFormat.format(date));System.out.println(longDateFormat.format(date));System.out.println(fullDateFormat.format(date));} } //-----------------------

      注意我們在對 getDateTimeInstance的每次調用中都傳遞了兩個值.第一個參數是日期風格, 而第二個參數是時間風格.它們都是基本數據類型int(整型).考慮到可讀性, 我們使用了DateFormat 類提供的常量: SHORT, MEDIUM, LONG, 和 FULL.要知道獲取時間和日期格式化過程的更多的方法和選項, 請看Sun 公司Web 站點上的解釋.運行我們的例子程序的時候, 它將向標準輸出設備輸出下面的內容: 9/29/01 8:44 PM Sep 29, 2001 8:44:45 PM September 29, 2001 8:44:45 PM EDT Saturday, September 29, 2001 8:44:45 PM EDT

      五、Calendar 類

      我們現(xiàn)在已經能夠格式化并創(chuàng)建一個日期對象了, 但是我們如何才能設置和獲取日期數據的特定部分呢, 比如說小時, 日, 或者分鐘? 我們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類.就如我們前面提到的那樣, Calendar 類中的方法替代了Date 類中被人唾罵的方法.假設你想要設置, 獲取, 和操縱一個日期對象的各個部分, 比方一個月的一天或者是一個星期的一天.為了演示這個過程, 我們將使用具體的子類 java.util.GregorianCalendar.考慮下面的例子, 它計算得到下面的第十個星期五是13號.//-----------------------import java.util.GregorianCalendar;import java.util.Date;import java.text.DateFormat;

      public class DateExample5 {

      public static void main(String[] args){ DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);

      // Create our Gregorian Calendar.GregorianCalendar cal = new GregorianCalendar();

      // Set the date and time of our calendar // to the system&s date and time cal.setTime(new Date());

      System.out.println(“System Date: ” + dateFormat.format(cal.getTime()));

      // Set the day of week to FRIDAY cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);System.out.println(“After Setting Day of Week to Friday: ” + dateFormat.format(cal.getTime()));

      int friday13Counter = 0;

      while(friday13Counter <= 10){

      // Go to the next Friday by adding 7 days.cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

      // If the day of month is 13 we have // another Friday the 13th.if(cal.get(GregorianCalendar.DAY_OF_MONTH)== 13){ friday13Counter++;System.out.println(dateFormat.format(cal.getTime()));} } } } //-----------------------

      在這個例子中我們作了有趣的函數調用: cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);和: cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

      set 方法能夠讓我們通過簡單的設置星期中的哪一天這個域來將我們的時間調整為星期五.注意到這里我們使用了常量 DAY_OF_WEEK 和 FRIDAY來增強代碼的可讀性.add 方法讓我們能夠在日期上加上數值.潤年的所有復雜的計算都由這個方法自動處理.我們這個例子的輸出結果是: System Date: Saturday, September 29, 2001 當我們將它設置成星期五以后就成了: Friday, September 28, 2001 Friday, September 13, 2002 Friday, December 13, 2002 Friday, June 13, 2003 Friday, February 13, 2004 Friday, August 13, 2004 Friday, May 13, 2005 Friday, January 13, 2006 Friday, October 13, 2006 Friday, April 13, 2007 Friday, July 13, 2007 Friday, June 13, 2008

      六、時間掌握在你的手里

      有了這些Date 和Calendar 類的例子, 你應該能夠使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 創(chuàng)建許多方法了.5、具體討論2 這里只討論java中對日期的幾個簡單類: 1.java.util.Date 2.java.text.DateFormat(Abstract),java.text.SimpleDateFormat 3.java.util.Calendar(Abstract),java.util。GregorianCalendar 首先看一下Date類,Date中只提供了幾個獲得本地時間的方法,具體用法見下: import java.util.Date; public class DateFormatTest { public DateFormatTest(){ }

      public static void main(String[] args){ Date dt=new Date();

      String localeString=dt.toLocaleString(); String gmtString=dt.toGMTString(); System.out.println(localeString); System.out.println(gmtString); System.out.println(dt.getTime());

      System.out.println(System.currentTimeMillis()); } } 輸出結果為: 2004-12-31 9:34:04 31 Dec 2004 01:34:04 GMT 1104456844281 1104456844500 從結果中可以看到,dt.getTime()與System.currentTimeMillis()這兩個方法得到的時間是相同的。因為Date的構造函數中調用了System.currentTimeMillis()方法來從系統(tǒng)獲得當前時間。其結果實際上是從1970年1月1日開始到當前所經歷的毫秒數。以下的例子展示的是一個簡單的格式化日期的代碼: import java.text.*; import java.util.Locale; import java.util.Date; public class DateFormatTest { public DateFormatTest(){ }

      public static void main(String[] args){ DateFormat df=DateFormat.getDateInstance();

      SimpleDateFormat defaultSDF=new SimpleDateFormat(); SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”); System.out.println(new Date());

      System.out.println(df.format(new Date())); System.out.println(defaultSDF.format(new Date())); System.out.println(sdf.format(new Date())); }}

      輸出結果是:

      Fri Dec 31 09:48:19 CST 2004 2004-12-31 04-12-31 上午9:48 2004-12-31

      SimpleDateFormat的構造函數中String中字符的含義列如下表: Letter Date or Time Component Presentation Examples G Era designator Text AD y Year Year 1996; 96 M Month in year Month July; Jul; 07 w Week in year Number 27 W Week in month Number 2 D Day in year Number 189 d Day in month Number 10 F Day of week in month Number 2 E Day in week Text Tuesday; Tue a Am/pm marker Text PM H Hour in day(0-23)Number 0 k Hour in day(1-24)Number 24 K Hour in am/pm(0-11)Number 0 h Hour in am/pm(1-12)Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978 z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zon 上面展示的例子是將Date格式化成我們想要的格式,通常還會遇到需要將有些已經格式好的String再解析成Date的問題。在下面的文章中將會講到。import java.text.*;import java.util.Locale;import java.util.Date;public class DateFormatTest { public DateFormatTest(){ } public static void main(String[] args){ String dateToparse=“30-12-2004”;

      SimpleDateFormat sdf=new SimpleDateFormat(“dd-MM-yyyy”)Date dt=new Date()try{ dt=sdf.parse(dateToparse)System.out.print(dt)}catch(Exception e){ e.printStackTrace();}}}-JAVA程序員JAVA工程師面試必看

      第三篇:java工程師技術集

      Java 工程師

      --高慧超

      1.web技術:html、div、css、javascript、ajax、js框架(jquery,dwr、ext、prototype、dojo、等)、flax、mvc模式、xml

      2.java技術:java基礎(jvm、多線程、分布式、等)、jsp、servlet、java框架(struts、hibernate、spring、ibatis、ejb、jpa、等)、工作流(osworkflow、Jbpm、shark)、搜索引擎(Lucene)、報表等開源組件

      3.數據庫: sqlserver、mysql、orccle、db

      24.工具:開發(fā)工具(eclipse、netbeans、等)、版本控制(cvs、svn)、uml建模(Rose、Jude、PowerDesigner、Visio等)、構建工具(ant、maven)、測試工具(junit、等)

      5.系統(tǒng)服務:系統(tǒng)(Linux、Uinux)、服務器(Tomcat、Jboss、Weblogic、等)

      6行業(yè)熟悉:電信、金融、電力、電子商務、門口網、等

      7.應用程度:精通、熟悉、了解、開發(fā)、測試、等

      8職業(yè)素質:工作經驗、善于溝通、團隊合作、學習能力、邏輯能力、興趣愛好、工作

      踏實、組織實施、善于思考、創(chuàng)新能力、解決問題、敬業(yè)主動、寬容易處、有責任心、承受壓力、自我激勵、刻苦鉆研、性格開朗

      9.職業(yè)崗位:CIO/CTO系統(tǒng)架構師CEO/VP 學生 技術總監(jiān)分析師財務主管 技

      術愛好者 技術經理 數據庫開發(fā)工程師 產品主管/業(yè)務主管 媒體人員

      項目經理 數據庫管理員生產管理/質量管理 公關/會展人員IT顧問

      軟件工程師銷售/市場 行業(yè)協(xié)會工作者硬件工程師咨詢/培訓 軟件

      測試行政/人力資源硬件測試客戶服務 網站運營管理采購 系統(tǒng)

      管理員基建網絡管理員庫管/物流 互聯(lián)網軟件開發(fā)工程師 網絡

      工程師網絡與信息安全工程師程序員/開發(fā)者 技術支持

      第四篇:Java之reference-JAVA程序員JAVA工程師面試必看

      -JAVA程序員JAVA工程師面試必看

      Reference

      Java世界泰山北斗級大作《Thinking In Java》切入Java就提出“Everything is Object”。在Java這個充滿Object的世界中,reference是一切謎題的根源,所有的故事都是從這里開始的。

      Reference是什么?

      如果你和我一樣在進入Java世界之前曾經浪跡于C/C++世界,就一定不會對指針陌生。談到指針,往日種種不堪回首的經歷一下子涌上心頭,這里不是抱怨的地方,讓我們暫時忘記指針的痛苦,回憶一下最初接觸指針的甜蜜吧!還記得你看過的教科書中,如何講解指針嗎?留在我印象中的一種說法是,指針就是地址,如同門牌號碼一樣,有了地址,你可以輕而易舉找到一個人家,而不必費盡心力的大海撈針。

      C++登上歷史舞臺,reference也隨之而來,容我問個小問題,指針和reference區(qū)別何在?我的答案來自于在C++世界享譽盛名的《More Effective C++》。

      1.2.3.4.沒有null reference。reference必須有初值。使用reference要比使用指針效率高。因為reference不需要測試其有效性。指針可以重新賦值,而reference總是指向它最初獲得的對象

      設計選擇:

      當你指向你需要指向的某個東西,而且絕不會改指向其它東西,或是當你實作一個運算符而其語法需要無法有指針達成,你就應該選擇reference。其它任何時候,請采用指針。

      這和Java有什么關系?

      初學Java,鑒于reference的名稱,我毫不猶豫的將它和C++中的reference等同起來。不過,我錯了。在Java中,reference可以隨心所欲的賦值置空,對比一下上面列出的差異,就不難發(fā)現(xiàn),Java的reference如果要與C/C++對應,它不過是一個穿著reference外衣的指針而已。

      于是,所有關于C中關于指針的理解方式,可以照搬到Java中,簡而言之,reference就是一個地址。我們可以把它想象成一個把手,抓住它,就抓住了我們想要操縱的數據。如同掌握C的關鍵在于掌握指針,探索Java的鑰匙就是reference。

      一段小程序

      我知道,太多的文字總是令人犯困,那就來段代碼吧!

      public class ReferenceTricks {

      public static void main(String[] args){

      ReferenceTricks r = new ReferenceTricks();

      // reset integer

      r.i = 0;

      System.out.println(“Before changeInteger:” + r.i);

      changeInteger(r);

      System.out.println(“After changeInteger:” + r.i);

      // just for format

      System.out.println();

      // reset integer

      r.i = 0;

      System.out.println(“Before changeReference:” + r.i);

      changeReference(r);

      System.out.println(“After changeReference:” + r.i);

      }

      private static void changeReference(ReferenceTricks r){

      r = new ReferenceTricks();

      r.i = 5;

      System.out.println(“In changeReference: ” + r.i);

      }

      private static void changeInteger(ReferenceTricks r){

      r.i = 5;

      System.out.println(“In changeInteger:” + r.i);

      }

      public int i;

      }

      對不起,我知道,把一個字段設成public是一種不好的編碼習慣,這里只是為了說明問題。

      如果你有興趣自己運行一下這個程序,我等你!

      OK,你已經運行過了嗎?結果如何?是否如你預期?下面是我在自己的機器上運行的結果:

      Before changeInteger:0

      In changeInteger:5

      After changeInteger:5

      Before changeReference:0

      In changeReference: 5

      After changeReference:0

      這里,我們關注的是兩個change——changeReference和changeInteger。從輸出的內容中,我們可以看出,兩個方法在調用前和調用中完全一樣,差異出現(xiàn)在調用后的結果。

      糊涂的講解

      先讓我們來分析一下changeInteger的行為。

      前面說過了,Java中的reference就是一個地址,它指向了一個內存空間,這個空間存放著一個對象的相關信息。這里我們暫時不去關心這個內存具體如何排布,只要知道,通過地址,我們可以找到r這個對象的i字段,然后我們給它賦成5。既然這個字段的內容得到了修改,從函數中返回之后,它自然就是改動后的結果了,所以調用之后,r對象的i字段依然是5。下圖展示了changeInteger調用前后內存變化。

      Reference +--------+Reference +--------+

      ---------->| i = 0|---------->| i = 5|

      |--------||--------|

      | Memory || Memory |

      ||||

      ||||

      +--------++--------+

      調用changeInteger之前調用changeInteger之后

      讓我們把目光轉向changeReference。

      從代碼上,我們可以看出,同changeInteger之間的差別僅僅在于多了這么一句。

      r = new ReferenceTricks();

      這條語句的作用是分配一塊新的內存,然后將r指向它。

      執(zhí)行完這條語句,r就不再是原來的r,但它依然是一個ReferenceTricks的對象,所以我們依然可以對這個r的i字段賦值。到此為止,一切都是那么自然。

      Reference +--------++--------+

      ---------->| i = 0|| i = 0|

      |--------||--------|

      | Memory || Memory |

      ||Reference |--------|

      ||---------->| i = 5|

      +--------++--------+

      調用changeReference之前調用changeReference之后

      順著這個思路繼續(xù)下去的話,執(zhí)行完changeReference,輸出的r的i字段,那么應該是應該是新內存中的i,所以應該是5。至于那塊被我們拋棄的內存,Java的GC功能自然會替我們善后的。

      事與愿違。

      實際的結果我們已經看到了,輸出的是0。

      肯定哪個地方錯了,究竟是哪個地方呢?

      參數傳遞的秘密

      知道方法參數如何傳遞嗎?

      記得剛開始學編程那會兒,老師教導,所謂參數,有形式參數和實際參數之分,參數列表中寫的那些東西都叫形式參數,在實際調用的時候,它們會被實際參數所替代。

      編譯程序不可能知道每次調用的實際參數都是什么,于是寫編譯器的高手就出個辦法,讓實際參數按照一定順序放到一個大家都可以找得到的地方,以此作為方法調用的一種約定。所謂“沒有規(guī)矩,不成方圓”,有了這個規(guī)矩,大家協(xié)作起來就容易多了。這個公共數據區(qū),現(xiàn)在編譯器的選擇通常是“?!?,而所謂的順序就是形式參數聲明的順序。

      顯然,程序運行的過程中,作為實際參數的變量可能遍布于內存的各個位置,而并不一定要老老實實的呆在棧里。為了守“規(guī)矩”,程序只好將變量復制一份到棧中,也就是通常所說的將參數壓入棧中。

      打起精神,謎底就要揭曉了。

      我剛才說什么來著?將變量復制一份到棧中,沒錯,“復制”!

      這就是所謂的值傳遞。

      C語言的曠世經典《The C Programming Language》開篇的第一章中,談到實際參數時說,“在C中,所有函數的實際參數都是傳?值?的”。

      馬上會有人站出來,“錯了,還有傳地址,比如以指針傳遞就是傳地址”。

      不錯,傳指針就是傳地址。在把指針視為地址的時候,是否考慮過這樣一個問題,它也是一個變量。前面的討論中說過了,參數傳遞必須要把參數壓入棧中,作為地址的指針也不例外。所以,必須把這個指針也復制一份。函數中對于指針操作實際上是對于這個指針副本的操作。

      Java的reference等于C的指針。所以,在Java的方法調用中,reference也要復制一份壓入堆棧。在方法中對reference的操作就是對這個reference副本的操作。

      謎底揭曉

      好,讓我們回到最初的問題上。

      在changeReference中對于reference的賦值實際上是對這個reference的副本進行賦值,而對于reference的本尊沒有產生絲毫的影響。

      回到調用點,本尊醒來,它并不知道自己睡去的這段時間內發(fā)生過什么,所以只好當作什么都沒發(fā)生過一般。就這樣,副本消失了,在方法中對它的修改也就煙消云散了。

      也許你會問出這樣的問題,“聽了你的解釋,我反而對changeInteger感到迷惑了,既然是對于副本的操作,為什么changeInteger可以運作正常?”

      呵呵,很有趣的大腦短路現(xiàn)象。

      好,那我就用前面的說法解釋一下changeInteger的運作。

      所謂復制,其結果必然是副本完全等同于本尊。reference復制的結果必然是兩個reference指向同一塊內存空間。

      雖然在方法中對于副本的操作并不會影響到本尊,但對內存空間的修改確實實實在在的。

      回到調用點,雖然本尊依然不知道曾經發(fā)生過的一切,但它按照原來的方式訪問內存的時候,取到的確是經過方法修改之后的內容。

      于是方法可以把自己的影響擴展到方法之外。

      多說幾句

      這個問題起源于我對C/C++中同樣問題的思考。同C/C++相比,在changeReference中對reference賦值可能并不會造成什么很嚴重的后果,而在C/C++中,這么做卻會造成臭名昭著的“內存泄漏”,根本的原因在于Java擁有了可愛的GC功能。即便這樣,我仍不推薦使用這種的手法,畢竟GC已經很忙了,我們怎么好意思再麻煩人家。

      在C/C++中,這個問題還可以繼續(xù)引申。既然在函數中對于指針直接賦值行不通,那么如何在函數中修改指針呢?答案很簡單,指針的指針,也就是把原來的指針看作一個普通的數據,把一個指向它的指針傳到函數中就可以了。

      同樣的問題到了Java中就沒有那么美妙的解決方案了,因為Java中可沒有reference的reference這樣的語法??赡艿淖兺ň褪菍eference進行封裝成類。至于值不值,公道自在人心。

      ?

      ?

      ? ?

      ? ? 評論 09:50瀏覽(171)評論(1)分類:收藏相關推薦

      2008-06-27

      public class ReferenceTricks {

      public static void main(String[] args){

      ReferenceTricks r = new ReferenceTricks();

      // reset integer

      r.i = 0;

      System.out.println(“Before changeInteger:” + r.i);

      changeInteger(r);

      System.out.println(“After changeInteger:” + r.i);

      // just for format

      System.out.println();

      // reset integer

      r.i = 0;

      System.out.println(“Before changeReference:” + r.i);

      changeReference(r);

      System.out.println(“After changeReference:” + r.i);

      }

      private static void changeReference(ReferenceTricks r){

      r = new ReferenceTricks();

      r.i = 5;

      System.out.println(“In changeReference: ” + r.i);

      }

      private static void changeInteger(ReferenceTricks r){

      r.i = 5;

      System.out.println(“In changeInteger:” + r.i);

      }

      public

      舉的例子不太相符,用來理解java傳 參機制倒是不錯的例子

      -JAVA程序員JAVA工程師面試必看

      第五篇:華為公司招聘java程序員面試題-JAVA程序員JAVA工程師面試必看

      -JAVA程序員JAVA工程師面試必看

      第一部分:選擇題

      QUESTION NO: 1

      1、public class Test {

      public static void changeStr(String str){

      str=“welcome”;

      }

      public static void main(String[] args){

      String str=“1234”;

      changeStr(str);

      System.out.println(str);

      1234

      }

      }

      Please write the output result :

      QUESTION NO:2

      1.public class Test {

      2.static boolean foo(char c){

      3.System.out.print(c);

      4.return true;

      5.}

      6.public static void main(String[] argv){

      7.int i =0;

      8.for(foo('A');foo('B')&&(i<2);foo('C')){

      9.i++;

      10.foo('D');

      12.}

      13.}

      14.}

      What is the result?

      A.ABDCBDCB

      B.ABCDABCD

      C.Compilation fails.D.An exception is thrown at runtime.QUESTION NO: 3

      1.class A {

      2.protected int method1(int a, int b){ return 0;}

      3.}

      Which two are valid in a class that extends class A?(Choose two)

      A.public int method1(int a, int b){ return 0;}

      B.private int method1(int a, int b){ return 0;}

      C.private int method1(int a, long b){ return 0;}

      D.public short method1(int a, int b){ return 0;}

      E.static protected int method1(int a, int b){ return 0;}

      QUESTION NO: 4

      1.public class Outer{

      2.public void someOuterMethod(){

      3.// Line 3

      4.}

      5.public class Inner{}

      6.public static void main(String[]argv){

      7.Outer o = new Outer();

      8.// Line 8

      9.}

      10.}

      Which instantiates an instance of Inner?

      A.new Inner();// At line 3

      B.new Inner();// At line 8

      C.new o.Inner();// At line 8

      D.new Outer.Inner();// At line 8//new Outer().new Inner()

      QUESTION NO: 5

      Which method is used by a servlet to place its session ID in a URL that is written to the servlet’s response output stream?

      A.The encodeURL method of the HttpServletRequest interface.B.The encodeURL method of the HttpServletResponse interface.C.The rewriteURL method of the HttpServletRequest interface.D.The rewriteURL method of the HttpServletResponse interface.QUESTION NO: 6

      Which two are equivalent?(Choose two)

      A.B.C.D.E.F.G.QUESTION NO: 7

      Which of the following statements regarding the lifecycle of a session bean are correct?

      1.java.lang.IllegalStateException is thrown if SessionContext.getEJBObject()is invoked when a stateful session bean instance is passivated.2.SessionContext.getRollbackOnly()does not throw an exception when a session bean with bean-managed transaction demarcation is activated.3.An exception is not thrown when SessionContext.getUserTransaction()is called in the afterBegin method of a bean with container-managed transactions.4.JNDI access to java:comp/env is permitted in all the SessionSynchronization methods of a stateful session bean with container-managed transaction demarcation.5.Accessing resource managers in the SessionSynchronization.afterBegin method of a stateful session bean with bean-managed transaction does not throw an exception.第二部分:概念題

      1.描述Struts體系結構?對應各個部分的開發(fā)工作主要包括哪些?

      3.JSP有哪些內置對象和動作?它們的作用分別是什么?

      4、SQL問答題

      SELECT * FROM TABLE

      SELECT * FROM TABLE

      WHERE NAME LIKE '%%' AND ADDR LIKE '%%'

      AND(1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'

      OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%')的檢索結果為何不同?

      5、SQL問答題

      表結構:

      1、表名:g_cardapply

      字段(字段名/類型/長度):

      g_applyno varchar 8;//申請單號(關鍵字)

      g_applydate bigint 8;//申請日期

      g_state varchar 2;//申請狀態(tài)

      2、表名:g_cardapplydetail

      字段(字段名/類型/長度):

      g_applyno varchar 8;//申請單號(關鍵字)

      g_name varchar 30;//申請人姓名

      g_idcard varchar 18;//申請人身份證號

      g_state varchar 2;//申請狀態(tài)

      其中,兩個表的關聯(lián)字段為申請單號。

      題目:

      1、查詢身份證號碼為***的申請日期

      2、查詢同一個身份證號碼有兩條以上記錄的身份證號碼及記錄個數

      3、將身份證號碼為***的記錄在兩個表中的申請狀態(tài)均改為07

      4、刪除g_cardapplydetail表中所有姓李的記錄

      用友公司Java面試題

      1.Hashtable和HashMap有什么區(qū)別?

      a.Hashtable是繼承自陳舊的Dictionary類的,HashMap繼承自AbstractMap類同時是Java 1.2引進的Map接口的一個實現(xiàn)。

      b.也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用采取任何特殊的行為就可以在一個

      多線程的應用程序中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態(tài)的synchronizedMap()方法,它創(chuàng)建一個線程安全的Map對象,并把它作為一個封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的HashMap。

      這么做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應用程序中),而且同步增加了很多處理費用。

      c.第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value。

      HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value。

      這就是說,如果在表中沒有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個空的值,那么get()將返回null。

      如果有必要,用containKey()方法來區(qū)別這兩種情況。

      d.HashMap去掉了Hashtable的contains方法,保留了containsValue和containsKey方法

      e.Hashtable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數

      2.你怎么理解MVC模式?

      MVC是SUN早期提出的model2開發(fā)模式,強制的把視圖控制和模型層分開

      不僅實現(xiàn)了功能模塊和顯示模塊的分離,同時它還提高了應用系統(tǒng)的可維護性、可擴展性、可移植性和組件的可復用性

      3.SQLServer中左聯(lián)接查詢用left join,Oracle中用什么?

      左連接:select(nvl(a.c,0)-nvl(b.c,0))from a,b where a.id(+)=b.id

      右連接:select(nvl(a.c,0)-nvl(b.c,0))from a,b where a.id=b.id(+)

      自連接:select(nvl(a.c,0)-nvl(b.c,0))from a,b where a.id(+)=b.id(+)

      說明:加號寫在左就是左連接,寫在右就是右連接,看加號的方法來定

      4.SQLServer中的數據庫,在Oracle中對應的是什么?

      表空間

      5.如果SQLServer中有兩個數據庫,那么讓你把這兩個數據庫對應到Oracle中,你應該怎么做?

      在Oracle中建一個用戶,對應兩個表空間

      6.有兩個頁面a.jsp和b.jsp,要從a.jsp傳值到b.jsp有幾種方法?分別是什么?

      a:最常用的方法是用form中的text,,然后在b.jsp頁面中這樣獲取

      String username=request.getParameter(“username”);

      b:直接在Url地址欄里面輸入第一個頁面的地址,在后加問號,然后把要傳的參數及值寫在后面,如有多個用&隔開,然后在下一頁面用

      request.getParameter(“

      在b.jsp

      ”)

      取,例

      :http://localhost:8080/a.jsp?username=admin&password=111

      中可用這樣獲取:String

      username=request.getParameter(“username”);String username=request.getParameter(“password”);

      c:在form中放hidden,如:,獲取方法同上

      說明:傳值的方法有很多種,以上是最常用最簡單的幾種方式,當然,如果傳的值有中文的話,需另做處理

      6.有三個頁面,a.jsp,b.jsp和c.jsp,流程是:a.jsp->b.jsp->c.jsp,其中a.jsp中提交的數據要在c.jsp中訪問,用最簡單的方法

      怎么做?注意不能放在session里

      用隱藏表單域,即在b.jsp頁面中用N個hidden把上一頁面提交過來的信息保存下來,然后和當前一起提交,再到c.jsp里面獲取

      說明:盡量不要用session和少用session 7.jsp和servlet有什么區(qū)別?

      a:servlet是在java代碼里面放html,jsp是在html里面放java代碼(最后運行的時候服務器會把JSP解析成servlet)

      b:servlet是一個java類,有自己的映射,而jsp不是

      說明:區(qū)別太多,請參考http://00000000.net.cn/200606/200606097/97681.htm 8.映射是什么?你怎么理解映射?

      映射即別名,通過別名可以訪問

      9.Hibernate中:不看數據庫,不看XML文件,不看查詢語句,怎么樣能知道表結構?

      看表結構對應的類文件,比如UserInfo表對應的UserInfo.java文件

      10.SQLServer支持集群嗎?

      支持,但是是屬于熱備份類型,不能做負載平衡。不過符合你的條件。

      首先系統(tǒng)做集群,數據庫文件放到磁盤陣列里,雙機或多機共同訪問磁盤陣列,就可以了

      IIS可以做集群后負載平衡。

      11.為什么要用MVC?我從JSP頁面直接訪問數據庫不是更簡單嗎,為什么非要先提交到控制再做處理?

      MVC各施其職,互不干涉

      在MVC模式中,三個層各施其職,所以如果一旦哪一層的需求發(fā)生了變化,就只需要更改相應的層中的代碼而不會影響到其它層中的代碼。

      有利于開發(fā)中的分工

      在MVC模式中,由于按層把系統(tǒng)開,那么就能更好的實現(xiàn)開發(fā)中的分工。網頁設計人員可以進行開發(fā)視圖層中的JSP,對業(yè)務熟悉的開發(fā)人員可開發(fā)業(yè)務層,而其它開發(fā)人員可開發(fā)控制層。

      有利于組件的重用

      分層后更有利于組件的重用。如控制層可獨立成一個能用的組件,視圖層也可做成通用的操作界面

      說明:這個好處就太多了!!

      12.在struts中,假設有一個對數據庫中一張表的增刪改查的操作,你是寫一個action還是寫多個action?為什么?

      寫一個action,讓這個action繼承自DispatchAction,然后在struts-config.xml中給這個action映射加一參數,parameter=“method”

      這個在提交到這個action中時,會根據傳來的參數中method的值來執(zhí)行相應的action的方法,比如,http://localhost:8080/login.do?method=doLogin

      這個提交到action的時會自動找方法名叫doLogin的方法,參數返回值原來一樣ActionForward 13.struts中的actionform有什么好處?

      struts的actionform其實不好,里面有一堆屬性,雖然可以自動填充,但是你會發(fā)現(xiàn),在很多情況下(比如你用到Hibernate)

      你還要需要自動寫一個數據庫表的映射類,通常是domain.UserInfo.java,這樣就和strutsform中的屬性重復,所以他很多余,struts1.1版本,保留了actionform,struts1.2中已經有了新的LazyValidatorForm,但仍然保留了原有的actionform,而在struts 2.0中已經把actionform去掉了

      下面是解決方法

      a: 把actionform換成DynaActionForm,和原來不同的是在dynaActionForm可以domain.UserInfo.java的一個實例做為他的一個屬性

      這樣你就不需要在里面寫一堆的get,set方法,只是在頁面上綁定稍有不同

      b: 把actionform換成org.apache.struts.validator.LazyValidatorForm,這樣你完全不用寫你的actionform這個類,直接在xml里面做

      相應配置,當然也可以加上驗證框架

      警告:這個問題是陷阱,實際上struts的actionform很不好,非常麻煩,用久了你會發(fā)現(xiàn)他其實是多余的,所以這個問題你應該說他的壞處,和怎么把actonform去掉,請參考http://tqyq.blog.hexun.com/2911285_d.html 14.用過Hibernate嗎,用它有什么好處?

      Hibernate的最大的好處就是簡化數據庫的操作,允許你的代碼以對象模式來訪問數據庫內容,比如通常我們找一個User的資料需要select出所需要的資料,而通過hibnate我們可以把這個User的資料作為一個對象來看待

      ,通過User.getName()或者User.getId()等操作來獲得,這樣就完全統(tǒng)一了上層JAVA或者C#等OO語言中對于數據庫的非OO操作的不和諧了.另外對于復雜的表和表之間的關聯(lián)我們也不用去使用復雜的Select等SQL來操作,而使用對象可以方便獲得,比如多對多關系某用戶屬于的部門的名稱,雖然底層數據庫使用了3個表的主鍵關聯(lián)操作,但是我們可以通過User.getDep().getName()來簡單的獲得,這個就是持久化對象的好處了

      說明:好處太多,只能在用的過程中慢慢體會

      只能說一個字:爽

      15.通常所說的web應用程序分3層,即MVC,如果我想分四層,應該怎么分?

      加一個Hibernate數據持久層

      -JAVA程序員JAVA工程師面試必看

      下載Java工程師淺談java技術的8大優(yōu)勢(程序員必看,精心整理,免分數)word格式文檔
      下載Java工程師淺談java技術的8大優(yōu)勢(程序員必看,精心整理,免分數).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯(lián)網用戶自發(fā)貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯(lián)系你,一經查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦