<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統計

    最新評論

    #

    常見Map 及 ArrayList 是否有序總結

    說明:此處的排序 是指:

    1: 往集合中插入元素的順序與遍歷元素的順序的關系;

    2: 往對象中插入元素否會根據元素的大小排序

     

    ?
    public class MapSortTest {
     
        public static void main(String[] args) {
             
            System.out.println("放入順序為:a:aaa c:ccc b:bbb d:ddd ");
            System.out.println("HashMap 排序測試");
            Map map = new HashMap(); 
            map.put("a", "aaa");  
            map.put("c", "ccc");
            map.put("b", "bbb"); 
            map.put("d", "ddd"); 
            Iterator iterator = map.keySet().iterator(); 
            while (iterator.hasNext()) { 
                Object key = iterator.next(); 
                System.out.println("key:"+key+"         value:" + map.get(key)); 
            } 
            System.out.println("HashMap 進出無次序 ; key大小無次序 ");
            System.out.println("***********************************************************");
             
             
            System.out.println("Hashtable 排序測試");       
            Hashtable tab = new Hashtable(); 
            tab.put("a", "aaa"); 
            tab.put("c", "ccc");
            tab.put("b", "bbb");  
            tab.put("d", "ddd"); 
            Iterator iterator_1 = tab.keySet().iterator(); 
            while (iterator_1.hasNext()) { 
                Object key = iterator_1.next(); 
                System.out.println("key :"+key+"             value:"+ tab.get(key)); 
            } 
            System.out.println("Hashtable 進出無次序 ; key大小無次序 ");
            System.out.println("***********************************************************");
             
            System.out.println("TreeMap 排序測試");             
            TreeMap tmp = new TreeMap(); 
            tmp.put("a", "aaa"); 
            tmp.put("c", "ccc"); 
            tmp.put("b", "bbb"); 
            tmp.put("d", "ddd"); 
            Iterator iterator_2 = tmp.keySet().iterator(); 
            while (iterator_2.hasNext()) { 
                Object key = iterator_2.next(); 
                System.out.println("key:"+key+"          value:" + tmp.get(key)); 
            } 
            System.out.println("TreeMap 進出無次序 ; key大小從小到大 ");
            System.out.println("***********************************************************");
             
            System.out.println("LinkedHashMap 排序測試");               
            LinkedHashMap linkedHashMap = new LinkedHashMap(); 
            linkedHashMap.put("a", "aaa"); 
            linkedHashMap.put("c", "ccc"); 
            linkedHashMap.put("b", "bbb"); 
            linkedHashMap.put("d", "ddd"); 
            Iterator iterator2 = linkedHashMap.keySet().iterator(); 
            while (iterator2.hasNext()) { 
                Object key = iterator2.next(); 
                System.out.println("key:"+key+"          value:" + linkedHashMap.get(key)); 
            }       
            System.out.println("LinkedHashMap 先進先出; key大小無次序 ");
            System.out.println();
             
            System.out.println("ArrayList 排序測試");
            System.out.println("放入順序為:aaa ccc bbb ddd");
            ArrayList arrayList=new ArrayList(); 
            arrayList.add("aaa"); 
            arrayList.add("ccc"); 
            arrayList.add("bbb"); 
            arrayList.add("ddd"); 
            System.out.println("ArrayList 先進先出;值大小無次序 ");
    //      Collections.sort(arrayList); 
            for(int i=0;i<arrayList.size();i++){ 
                System.out.println(arrayList.get(i)); 
            } 
            System.out.println("***********************************************************");
        }
     
    }

     

    運行結果:

    ?
    放入順序為:a:aaa c:ccc b:bbb d:ddd 
    HashMap 排序測試
    key:d         value:ddd
    key:b         value:bbb
    key:c         value:ccc
    key:a         value:aaa
    HashMap 進出無次序 ; key大小無次序 
    ***********************************************************
    Hashtable 排序測試
    key :b             value:bbb
    key :a             value:aaa
    key :d             value:ddd
    key :c             value:ccc
    Hashtable 進出無次序 ; key大小無次序 
    ***********************************************************
    TreeMap 排序測試
    key:a          value:aaa
    key:b          value:bbb
    key:c          value:ccc
    key:d          value:ddd
    TreeMap 進出無次序 ; key大小從小到大 
    ***********************************************************
    LinkedHashMap 排序測試
    key:a          value:aaa
    key:c          value:ccc
    key:b          value:bbb
    key:d          value:ddd
    LinkedHashMap 先進先出; key大小無次序 
     
    ArrayList 排序測試
    放入順序為:aaa ccc bbb ddd
    LinkedHashMap 先進先出;值大小無次序 
    aaa
    ccc
    bbb
    ddd
    ***********************************************************

    posted @ 2013-06-09 21:20 奮斗成就男人 閱讀(2471) | 評論 (0)編輯 收藏

    Apache Java項目全介紹

    Apache Java項目全介紹最近接觸Jakarta-Common-BeanUtils這個東東比較 多,于是對Apache Jakarta Project產生了興趣,上他們的官方網站上看了下感覺有用的東西好多,眼花繚亂的,又沒有中文網站,又上各大論壇搜了下,也沒有發現一個集中該項目的資料,于是決定自己整理翻譯一下,有助于各位網友更好的了解該項目。如果有什么描述不對不全面的地方,希望各位提出來給大家分享。

    Jakarta項目是ASF(The Apache Software Foundation)的一部分。ASF是一個非贏利組織,她鼓勵基于開放的軟件許可下進行合作、注重實效的開發,并提供各個領域的高質量軟件,她涉及到 Http服務器,編譯工具,類庫,開發架構,服務器端Java技術,J2EE容器,數據庫工具,日志工具,XML解析等等諸多領域。ASF提供的java 項目有一部分在Jakarta中,還有一些成為獨立的諸如Tomcat的項目,Jakarta項目則提供了多種多樣開源的java解決通用方案。

    先介紹一下ASF中和Jakarta項目并列的java項目: 
    Ant ——java構建工具,使用一個配置文件就可以完成java的項目的,編譯、打包、測試、運行、部署、生成文檔等諸多工作。 
    Avalon ——是一個包括核心框架、工具、組件和容器的面向組件編程(AOP)的完整開發平臺。使用關鍵設計模式,如反向控制模式(IoC)和分離考慮模(SoC)。 Avalon提供各種基本組件和缺省的應用程序模塊,幫助你快速的建立你自己的應用程序解決方案。 
    Excalibur ——集多個開源項目(Avalon Framework、LogKit和Cornerstone)于一身的輕量級可嵌入式反向控制容器。 
    Gump ——是Apache組織自己也使用的一個持續集成工具,全面支持Ant和Maven,當有新的改動提交到版本控制系統,它可以檢查出潛在的沖突,并及時通知項目組的所有成員并自動生成改動的詳細報告。 
    James ——是一套用java開發的郵件、新聞組、消息服務器,提供了比較完善的配置方案,尤其是關于郵件內容存儲和用戶信息存儲。 支持 SMTP, POP3 , NNTP , IMAP 。 
    Logging ——可靠,快速的日志工具。 
    Lucene ——Java開發的高性能,全方位的文本搜索引擎。替文件的每一個字作索引,索引讓搜尋的效率比傳統的逐字比較大大提高, Lucen提供一組解讀,過 濾,分析文件,編排和使用索引的API,它的強大之處除了高效和簡單外,是最重要的是使使用者可以隨時應自已需要自訂其功能。 
    Maven ——是一個潛在的基于java的apache ant的構建工具的替代者。提供了更強大的功能和易用性。 
    Portals ——提供了功能全面的、具有商業價值的企業門戶。門戶概念:門戶對企業內的各種資源如信息管理系統進行整合并通過單一接口對外提供服務,雇員、合伙人及 顧客可以通過任何裝置在任何地點通過門戶入口享受到企業提供的服務,分析家們預計,門戶將成為下一代的桌面環境。 
    Struts ——一個實現MVC model2的web應用程序開發框架。通過一個配置文件可以很好的對各種組件進行裝配,結構清晰,應用的最廣泛的額web開發框架。
    Tapestry——類似 Struts,也是一個基于servlet的應用程序框架,支持MVC,出現的較晚,不如Struts普及,主要利用javabean和xml技術進行開發, 
    Tomcat ——Serlvet容器,同時具有傳統的Web服務器的功能,如:處理Html頁面。能夠處理動靜態網頁。 
    Watchdog ——用來檢查一個servlet或jsp容器在相應規范上的執行情況的兼容性。但是該項目已經靜止了,只支持Servlet2.3、JSP1.2,相應的Serlvet容器如Tomcat也只支持Tomcat4.x。  
    下面介紹下Jakarta的各個子項目:

    Alexandria——已經不再開發 
    BCEL ——The Byte Code Engineering Library (formerly known as JavaClass) 字節碼引擎類庫,它讓用戶方便的分析,創建,操作java的class文件成為可能。 它可以讓您深入 JVM 匯編語言進行類操作的細節。 
    BSF ——bean腳本框架 在java應用內對腳本語言提供了支持,通過腳本語言可以訪問java的對象和方法。 
    Cactus ——一個基于JUnit框架的簡單測試框架,用來單元測試服務端Java代碼。 Cactus單元測試服務端內容包括servlet,EJB, tag librarie, filter等 
    Commons ——提供很多日常開發中使用率很高的功能解決方案,已被很多著名的開源項目采用。具體的項目列表后面會有。 
    ECS ——使用Java語言和面向對象方法創建標記語言文檔(HTML,XML)的開源項目。 
    HiveMind ——是一個服務和配置的微型內核, 一套通過簡單的java對象和接口創建復雜應用的框架。 
    HttpComponents ——提供了java.net包所不能提供的更多強大的、方便的http協議處理功能。 
    JCS ——一個分布式的緩存系統,用來提高應用程序的性能,并且提供很多強大的額外功能。 
    JMeter ——純java開發的一套桌面應用程序。用來進行功能測試和性能測試。它可以用來測試靜止資料庫或者活動資料庫中的服務器的運行情況,可以用來模擬對服 務器或者網絡系統加以重負荷以測試它的抵抗,或者用來分析不同負荷類型下的所有運行情況。它也提供了一個可替換的界面用來定制數據顯示,測試同步及測試 的創建和執行。 
    ORO ——一套文本處理工具,能提供perl5.0兼容的正則表達式、 AWK-like正則表達式, glob 表達式。還提供替換,分割,文件名過慮等功能。 
    POI ——一套用來創建,讀寫基于OLE 2組件文檔格式的文件。使用Java來讀寫MS Excel ,Word文件。 
    Regexp ——一套純java的正則表達式相關的包。 
    Slide ——主要模塊是一個可以做為內容管理框架底層的內容倉庫.它可以把內容信息存取到專門的,異質的,分布式的數據庫中.Slide還增加了security, locking, versioning等特性. 
    Taglibs ——一套在開發web應用時十分有用的,jsp 通用 tag包。 
    Turbine ——類似 Struts,也是一個基于servlet的應用程序框架,支持MVC。提供了大量可重用的組件。此框架包中包含了大量組件,但是這些組件是離散的。 
    Velocity ——是一個基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用于web開發時,界面設計人員可以和java程序開發人員同步開發一個遵 循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。 Velocity將 java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利, 同時也為我們在JSP和PHP之外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以被 當作一個獨立工具來產生源代碼和報告,或者作為其他系統的集成組件使用。Velocity也可以為Turbine web開發架構提供模板服務(template service)。 Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發。 
    Apache java項目全介紹2

    下面介紹一下Jakarta下的Commons:一個csdn網友描述得很貼切,Commons就好比一個java百寶箱。
    commons分為3部分Commons Proper、Commons Sandbox和Commons Dormant。
    Commons Proper:提供了設計良好可重用的java組件,并都經過了廣泛、嚴格的測試。
    Commons Sandbox:處于實驗、測試階段的組件。
    Commons Dormant:處于停滯狀態,從Sandbox退出的,不活躍的組件,謹慎使用。

    Commons Proper組件:

    Attributes—— 支持源代碼級的元數據。 
    BeanUtils——提供對 Java 反射和自省API的包裝,處理javabean的工具。 
    Betwixt——將JavaBeans與XML相互轉換。 
    Chain——對Chain of Responsibility(責任鏈)設計模式的實現。使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。 
    CLI——處理命令行的命令的解析。 
    Codec——包含一些通用的編碼解碼算法。包括一些語音編碼器, Hex, Base64, 以及URL encoder。 
    Collections——擴展和增加標準的 Java Collection框架。 
    Configuration——操作各種格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 數據源 /System properties /Applet parameters / Servlet parameters 
    Daemon——創建類似unix守護線程的java代碼,可以安全地執行一些后臺操作,線程不被某個應用程序控制,而是由操作系統控制類似windows的service,可以設置一個服務依賴于另一個服務,一個服務關閉前必須先執行另一個服務。 
    DBCP——一個數據庫連接池 
    DbUtils——一個JDBC的工具類,比如可以將ResultSets生成javabean。 
    Digester——基于規則的XML文檔解析,主要用于XML到Java對象的映射. 
    Discovery——提供工具來定位資源 (包括類) ,通過使用各種模式來映射服務/引用名稱和資源名稱。 
    EL——JSP 2.0引入的表達式 
    Email——處理e-mail 
    FileUpload——web應用中的文件上傳組件 
    HttpClient——使用HTTP協議的客戶端開發框架 
    IO——幫助進行IO功能開發 
    Jelly ——Jelly能夠把XML轉換成可執行代碼,所以Jelly是一個基于XML與Java的腳本和處理引擎。 Jelly借鑒了JSP定指標簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優點。Jelly可以用在命令行,Ant或者Servlet之中。 
    Jexl——Jexl是一個表達式語言,通過借鑒來自于Velocity的經驗擴展了JSTL定義的表達式語言。 
    JXPath——使用XPath語法操作javabean的工具。 
    Lang——提供對java.lang包的擴展。 
    Launcher——跨平臺的java程序的啟動 
    Logging ——提供的是一個日志(Log)接口(interface),同時兼顧輕量級和不依賴于具體的日志實現工具。它提供給中間件/日志工具開發者一個簡單的日志操作抽象,允許程序開發人員使用不同的具體日志實現工具。用戶被假定已熟悉某種日志實現工具的更高級別的細節。JCL提供的接口,對其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進行了簡單的包裝,此接口更接近于Log4J和LogKit的實現. 
    Math——Math 是一個輕量的,自包含的數學和統計組件,解決了許多非常通用但沒有及時出現在Java標準語言中的實踐問題. 
    Modeler—— 支持兼容JMX規范的MBeans開發。 
    Net——集合了網絡工具和協議工具的實現 
    Pool——Commons-Pool 提供了通用對象池接口,一個用于創建模塊化對象池的工具包,以及通常的對象池實現。 
    Primitives——對java原始類型的支持。 
    SCXML——處理SCXML 
    Transaction——事務處理,實現了多層次鎖、事務集合、事務文件的訪問。 
    Validator——提供了一個簡單的,可擴展的框架來在一個XML文件中定義校驗器 (校驗方法)和校驗規則。支持校驗規則的和錯誤消息的國際化。 
    VFS——訪問各種文件系統,可以是本地文件、HTTP服務器上的文件、zip中的文件。 
    Commons Sandbox組件:

    Compress——處理壓縮文件如tar, zip 和 bzip2 格式。 
    CSV——處理CSV文件 
    Exec——安全地處理外部進程 
    Finder——實現類似UNIX find命令的功能 
    I18n——處理軟件的I18n功能 
    Id——生成id號功能 
    Javaflow——捕捉程序運行狀態 
    JCI——java編譯接口 
    OpenPGP——處理加密方法OpenPGP. 
    Pipeline——處理類似工作隊列的管道工具 
    Proxy——生成動態代理 

    posted @ 2013-05-29 23:16 奮斗成就男人 閱讀(209) | 評論 (0)編輯 收藏

    讓HTML中的文本框中的文字垂直居中 .

    當你自己定義了 Text 的 height 屬性時,在 Text 中輸入的文字都不是垂直居中的,不過你可以添加CSS來控制它,讓輸入的文字垂直居中,使網頁更完美。

    <html>
    <head>
    <style type="text/css">
        #text {
            height:20px;
            vertical-align:middle;
            line-height:20px;  /*line-height must be equal to height*/    
        }
    </style>
    </head>
    <body>
        <table>
            <input type="text" id="text">
        </table>
    </body>
    </html>

    加入 verticla-align、line-height 兩個屬性后,文本框中的文字就在文本框中垂直居中了,要注意的是 line-height 必須要等于 height 。


    posted @ 2013-05-14 19:25 奮斗成就男人 閱讀(6906) | 評論 (3)編輯 收藏

    利用BeanUtils在對象間復制屬性

    commons-beanutils是jakarta commons子項目中的一個軟件包,其主要目的是利用反射機制對JavaBean的屬性進行處理。我們知道,一個JavaBean通常包含了大量的屬性,很多情況下,對JavaBean的處理導致大量get/set代碼堆積,增加了代碼長度和閱讀代碼的難度(什么,你的薪水按代碼行數計算?那千萬別讓老板看到此帖哦)

    BeanUtils是這個包里比較常用的一個工具類,這里只介紹它的copyProperties()方法。該方法定義如下:

    public static void copyProperties(java.lang.Object dest,java.lang.Object orig)
      
    throws java.lang.IllegalAccessException,
             java.lang.reflect.InvocationTargetException

    如果你有兩個具有很多相同屬性的JavaBean,一個很常見的情況就是Struts里的PO對象(持久對象)和對應的ActionForm,例如Teacher和TeacherForm。我們一般會在Action里從ActionForm構造一個PO對象,傳統的方式是使用類似下面的語句對屬性逐個賦值: 
    //得到TeacherForm
    TeacherForm teacherForm=(TeacherForm)form;
    //構造Teacher對象
    Teacher teacher=new Teacher();
    //賦值
    teacher.setName(teacherForm.getName());
    teacher.setAge(teacherForm.getAge());
    teacher.setGender(teacherForm.getGender());
    teacher.setMajor(teacherForm.getMajor());
    teacher.setDepartment(teacherForm.getDepartment());

    //持久化Teacher對象到數據庫
    HibernateDAO=;
    HibernateDAO.save(teacher);
    而使用BeanUtils后,代碼就大大改觀了,如下所示: 
    //得到TeacherForm
    TeacherForm teacherForm=(TeacherForm)form;
    //構造Teacher對象
    Teacher teacher=new Teacher();
    //賦值
    BeanUtils.copyProperties(teacher,teacherForm);
    //持久化Teacher對象到數據庫
    HibernateDAO=;
    HibernateDAO.save(teacher);
    如果Teacher和TeacherForm間存在名稱不相同的屬性,則BeanUtils不對這些屬性進行處理,需要程序員手動處理。例如Teacher包含modifyDate(該屬性記錄最后修改日期,不需要用戶在界面中輸入)屬性而TeacherForm無此屬性,那么在上面代碼的copyProperties()后還要加上一句: 
    teacher.setModifyDate(new Date());
    怎么樣,很方便吧!除BeanUtils外還有一個名為PropertyUtils的工具類,它也提供copyProperties()方法,作用與BeanUtils的同名方法十分相似,主要的區別在于后者提供類型轉換功能,即發現兩個JavaBean的同名屬性為不同類型時,在支持的數據類型范圍內進行轉換,而前者不支持這個功能,但是速度會更快一些。BeanUtils支持的轉換類型如下:
    • java.lang.BigDecimal
    • java.lang.BigInteger
    • boolean and java.lang.Boolean
    • byte and java.lang.Byte
    • char and java.lang.Character
    • java.lang.Class
    • double and java.lang.Double
    • float and java.lang.Float
    • int and java.lang.Integer
    • long and java.lang.Long
    • short and java.lang.Short
    • java.lang.String
    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp

    這里要注意一點,java.util.Date是不被支持的,而它的子類java.sql.Date是被支持的。因此如果對象包含時間類型的屬性,且希望被轉換的時候,一定要使用java.sql.Date類型。否則在轉換時會提示argument mistype異常。

    本文地址:http://www.cnblogs.com/bjzhanghao/archive/2004/07/30/28607.html

     

    posted @ 2013-05-07 01:19 奮斗成就男人 閱讀(156) | 評論 (0)編輯 收藏

    Java 12小時和24小時制時間format

    12小時制: dff = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    24小時制: dff = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    posted @ 2013-04-15 14:56 奮斗成就男人 閱讀(575) | 評論 (0)編輯 收藏

    String、data、Calendar、Timestamp 之間的轉換


    String、data、Calendar、Timestamp 之間的轉換 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    1.Calendar 轉化 String 
    //獲取當前時間的具體情況,如年,月,日,week,date,分,秒等 
            Calendar calendat = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String dateStr = sdf.format(calendar.getTime());

    2.String 轉化Calendar
    String str="2010-5-27";
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
    Date date =sdf.parse(str);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);

    3.Date 轉化String
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
    String dateStr=sdf.format(new Date());

    4.String 轉化Date
    String str="2010-5-27";
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
    Date birthday = sdf.parse(str);

    5.Date 轉化Calendar
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new java.util.Date());

    6.Calendar轉化Date
    Calendar calendar = Calendar.getInstance();
    java.util.Date date =calendar.getTime();

    7.Date 轉成 String
    System.out.println(sdf.format(new Date())); 
    8.String 轉成 Timestamp
    Timestamp ts = Timestamp.valueOf("2011-1-14 08:11:00");

    9.Timestamp 轉成 String
    sdf.format(ts);

    Timestamp和Date多數用法是一樣的。
    10.Date 轉 TimeStamp
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String time = df.format(new Date());
    Timestamp ts = Timestamp.valueOf(time);

    11.日期比較大小
    String ti="2010-11-25 20:11:00";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date time=sdf.parse(ti);
    String ti2="2011-11-26 20:11:00";
    Date time2=sdf.parse(ti2);
    int c=ti2.compareTo(ti);
    if(c>0){
        System.out.println(ti+"大");
    }else if(c==0){
        System.out.println("一樣大");
    }else{
        System.out.println(ti2+"大");
    }

    12.Date/ Timestamp 轉成 Calendar 
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);
    calendar.add(Calendar.YEAR, 2);   //日期加2年
    System.out.println(calendar.getTime());
    calendar.add(Calendar.DATE, -30);     //日期加30天
    System.out.println(calendar.getTime());
    calendar.add(Calendar.MONTH, 3);  //日期加3個月
    System.out.println(calendar.getTime());
    Date date=new Date();
    DateFormat df=DateFormat.getDayeInstance();
    ps.setString(4,df.format(date))
    Date date = new Date(); 
    SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    String times = from.format(date);
    public class Test1 {
    public static void main(String[] args) {
      long   m=System.currentTimeMillis();
      System.out.println(new Date(m) );
    }

    posted @ 2013-04-15 14:38 奮斗成就男人 閱讀(281) | 評論 (0)編輯 收藏

    Linux面試題大全

         摘要: 一.填空題: 1. 在Linux系統中,以 文件 方式訪問設備 。 2. Linux內核引導時,從文件 /etc/fstab 中讀取要加載的文件系統。 3. Linux文件系統中每個文件用 i節點 來標識。 4. 全部磁盤塊由四個部分組成,分別為引導塊 、專用塊 、 i節點表塊 和數據存儲塊。 5. 鏈接分為: 硬鏈接 和 符號鏈接 。 ...  閱讀全文

    posted @ 2013-04-01 00:57 奮斗成就男人 閱讀(522) | 評論 (0)編輯 收藏

    從1.5k到18k, 一個程序員的5年成長之路 .

    昨天收到了心儀企業的口頭offer, 回首當初什么都不會開始學編程, 到現在恰好五年. 整天在社區晃悠, 看了不少的總結, 在這個時間點, 我也寫一份自己的總結吧.

    我一直在社區分享, 所以, 這篇總結也是本著一種分享的態度, 希望相比我還年輕的同學們, 可以從中找到一些讓自己成長更快的文字.


    先介紹下背景:
    1. 2008年3月開始學習編程, 目前2013年3月;
    2. 2009年6月計算機專業本科畢業;
    3. 大學期間, 基本穩拿班級倒數第一, 高考英語49分, 大學英語除了補考沒及格過.


    接著, 是一份總結:
    1. 5年間60%以上的時間, 每天凌晨2-4點睡覺;
    2. 為學習編程花費的總時間超過6000小時;
    3. 手寫了超過50萬行代碼;
    4. 記錄了超過100萬字學習筆記;
    5. 錄制了兩份視頻教程;
    6. 翻譯了小型技術文檔5份以上, 5個php擴展的官方文檔, jqueryui官方文檔一份, 書籍<php擴展和嵌入式>
    7. 供職過4家公司;
    8. 獲得兩次優秀員工;


    下面是這幾年的流水, 本人沒有過硬的文采, 只是以流水的方式記錄, 希望可以激勵到別人, 僅此而已:

    2008年03月 -- 2008年10月, 一個偶然的機會, 看到了北京尚學堂的java視頻教程, 以此為起點, 我開始了自己的編程學習之路. 5月份汶川地震, 我在甘肅, 學校給通宵電, 在這段時間, 我就基本很少去學校上課了, 每天晚上學習到凌晨5-6點, 接著睡到10-11點, 每天兩袋1.3元的方便面, 其余所有的時間都用來學習. 這段時間, 我學會了基本的程序設計, 更重要的是, 視頻中, 馬士兵老是給我灌輸了影響我后來最重要的兩個觀念: 1) 不要怕英文, 出錯信息, 文檔, 都是學習英文的機會; 2) 不要怕出錯, 出錯就是學習的機會. 在后來的5年中, 我一直堅持, 我是從基本每個英文單詞都要查翻譯軟件, 到現在能翻譯一些東西的. 同樣, 我在碰到問題的時候, 都是自己跟蹤源代碼去解決. 這兩個觀念直接決定了我今天可以進入自己心儀的企業.


    2008年10月 -- 2009年1月, 這段時間, 宿舍搬到了校本部, 沒有通宵電了. 學校一位老師找我們幫他做項目, 他為我們提供了他的宿舍, 很爛, 但我依然搬進去了, 就為了通宵電, 我住進了這個陰森森的宿舍, 恐懼纏繞著我, 但我依舊堅持. 白天幫老師做項目, 晚上繼續自己的學習. 同樣, 我也很感謝這位老師, 雖然他只給了我們很少的報酬, 但是, 我知道, 我得到的遠遠不是這些報酬可以比擬的. 這里這種很容易滿足的心里也是很重要的, 我奉勸各位職場新人, 剛開始不要期望什么, 放低身段, 去做自己的積累就好了. (想起從社區里看到的一句話: 現在的你, 憑什么翹著二郎腿, 你應該放下你的腿, 身體前傾, 時刻保持戰斗姿態)


    2009年02月, 一個小插曲, 我獨自一人來到北京, 開始了第一次真正意義的獨立, 我來找工作. 我開始在網上投了10多份簡歷, 沒有回信. 接著我就急了, 直接從網上找招聘的公司, 查地圖, 直接去公司面試, 一般都還是會給面試機會的. 最好的成績是一家表示能給到3000左右, 但后來也沒信了. 這段時間, 我有兩個收獲: 1) 我打印了一整本的<Java數據結構與算法>, 20天的時間, 把基礎的數據結構與算法讀了一遍; 2) 在一個完全陌生的城市, 我獨自一人, 查招聘信息, 查地圖, 找公司, 厚顏無恥的霸王面, 這一切都是對我處世能力的極大提升.


    2009年03月 -- 2009年06月, 回到學校, 仍然沒有工作. 我繼續在老師的小黑屋, 實現了所有我找工作時學習的數據結構與算法. 接著, 就進入了畢業季, 每天都泡在酒精中, 渾渾噩噩. 這段時間, 老婆把工作簽到了山東淄博, 我也聯系了一家淄博的公司, 準備畢業后去面試. 這段時間, 和高中的畢業季一樣, 是值得懷念的, 放松, 愜意.


    2009年06月 -- 2010年03月, 我來到了淄博, 找到了之前聯系的公司, 面試沒有通過. 淄博是一個小城市, 做軟件開發的沒有幾家, 還好, 山東人好, 雖然沒有面試通過, 但我依然可以借宿在公司宿舍找工作, 就這樣, 我放下了所有的尊嚴, 在別人的宿舍借住, 15天后, 我找到了我的第一家公司. 公司有30人左右, 做國家電網的項目, 老板人很好, 我還得到了一臺筆記本電腦, 并且可以帶回家. 我每天加班到9點, 然后回家繼續學習大凌晨2點左右. 公司的工作相對輕松, 當然, 工資也很少, 只有1.5k. 老婆每周末都過來, 我們雖然沒有錢, 經常要靠吃方便面度日, 但我們很幸福. 這段時間, 我學習了python, javascript, 翻譯了jqueryui的文檔, 錄制了一套python的視頻教程, 錄制了一份fullcalendar的視頻教程, 我的生活非常的充實, 當然, 我還有另一個收獲: 我學會了吃苦. 冬天, 我住的小屋窗戶基本起不到保暖作用, 買個小電暖也起不了多少作用, 屋里水龍頭都已經結冰, 我很長時間每天需要吃兩包方便面, 但我依然堅持學習, 因為我知道有一天我將不再這樣.


    2010年03月 -- 2011年03月, 從后來很多次建議來看, 不得不說老婆很有眼光. 她建議我去北京找工作, 我請了3天假, 再一次來到了北京, 不同于上一次, 我現在有大半年經驗, 我翻譯過文檔, 錄制過視頻教程, 有一定資本了. 然而, 事情并不是那么順利, 當時期望的用友并沒有通過, 在用友面試完后, 我就覺得自己一無是處. 無奈, 只能退而求其次, 來到一家剛創業的游戲公司. 跟這家公司談完薪水后, 我先給媽媽打了電話, 5.5k, 已經到了媽媽不能相信的地步. 就這樣, 我正式的踏入了北京的土地. 一年中, 我更多的是為公司付出, 自己以javascript研發進入, 后來頁面制作也的我搞, php后來我也要做, 服務器我還要搞, 不得不說, 非常鍛煉人. 還是前面的態度, 我覺得這種鍛煉就是我最大的收獲, 從這里開始, 我正式的轉向php開發.到2011年3月的時候, 已經覺得公司很不行了, 又碰巧老婆懷孕, 不得不考慮結婚的事情, 因此, 我就辭職, 回家結婚.


    2011年04月 -- 2012年03月, 婚后的生活很好, 我又找到了一份工作, 這家公司相對比較大, 2000+的規模. 不過有一些體制內的特質, 我進入的薪資是6k, 全年能拿到18薪以上, 公司的福利待遇都很完善, 工作也相對輕松, 我的領導人也很好, 技術也很好, 就這樣, 在這家公司, 我又開始了自己的學習之路. 我繼續每天凌晨2-3點睡覺, 完成了這幾年最重要的積累: unix環境高級編程, unix網絡編程, php內核和擴展, shell/awk/sed等等最基礎的東西. 同樣, 在大公司中, 我也學會了更多的團隊協作, 同事關系方面的東西. 2012年03月, 公司一位副總跳槽, 就這樣, 我們小組集體來到了下一家公司.


    2012年03月 -- 2013年03月, 新的公司, 項目還沒有上線, 已有的東西問題諸多, 我們被委以重任, 6.1日上線. 舊的團隊存在諸多問題, 士氣不振, 技術水平不足. 我們在6.1之前完成了很重要的幾件事: 1) 提升團隊士氣; 2) 整理舊的框架不好的東西; 3) 修改大量的bug; 4) 規范工作流程; 5) 規劃未來的技術框架. 雖然后來看做的東西一般, 但在這么短的時間完成這一切, 我覺得實在難得. 雖然我一直自我感覺對自己更多的提升是自己業余時間的學習, 但不可否認, 在這家公司的一年中, 我在團隊建設, 團隊管理, 團隊協作方面也有了質的變化. 在這家公司, 我的薪資得到了很大的提升, 達到了18K, 這是我從來都沒有想過的事情. 所以, 我想給諸位職場新人說, 你不要一開始就想要這要那, 只要你做的夠好, 終有一天, 你會發現你得到的遠比失去的要多.
    后面這兩家公司中, 我覺得更重要的是我學會了一種處世方式, 首先學會聽別人說話, 然后自己做感悟, 做提升.


    流水的結束, 就是在昨天, 我收到了自己心儀公司的口頭offer, 并且也已經給現在的公司提出了離職. 和leader聊了一會兒, 大家都還挺開心.


    在前5年中, 我用的網名是selfimpr, 是self-improvement簡寫而來, 含義是: 自強不息. 5年中, 我從所有可能激勵我的地方去激勵自己, 讓自己可以一直堅持走到今天. 這幾天, 我在考慮, 用一個詞總結我的前5年. 我想, 這個詞就是"積累".
    這也正是我想給這個行業的后來者說的, "積累", 并且要是不計回報的積累, 因為你一旦太過計較回報, 你的心就很難平靜, 往往就會半途而廢.
    此外, 還有一點要說的是, 比我基礎更差的同學估計也很難找了, 所以, 能不能學有所成, 關鍵不在你是否有基礎, 而在于你付出了多少.


    接下來, 我已經更換了自己的網名goosman, 是從swan goose演化而來, 我不知道"鴻鵠"用英語怎么說, 就用了這個單詞, 希望我可以像書中所說, 利用自己前5年的積累, 一展鴻鵠之志.  

    posted @ 2013-03-09 01:28 奮斗成就男人 閱讀(196) | 評論 (0)編輯 收藏

    javamail發送郵件

    今天學習了一下JavaMail,javamail發送郵件確實是一個比較麻煩的問題。為了以后使用方便,自己寫了段代碼,打成jar包,以方便以后使用。呵呵 

    以下三段代碼是我的全部代碼,朋友們如果想用,直接復制即可。jar包因為我不知道怎么傳到javaeye上,所以朋友們回去自己打吧。 
    我的代碼有三個類: 
    第一個類:MailSenderInfo.java  
    package com.util.mail;
    /** 
    * 發送郵件需要使用的基本信息 
    */ 
    import java.util.Properties; 
    public class MailSenderInfo { 
    // 發送郵件的服務器的IP和端口 
    private String mailServerHost; 
    private String mailServerPort = "25"; 
    // 郵件發送者的地址 
    private String fromAddress; 
    // 郵件接收者的地址 
    private String toAddress; 
    // 登陸郵件發送服務器的用戶名和密碼 
    private String userName; 
    private String password; 
    // 是否需要身份驗證 
    private boolean validate = false; 
    // 郵件主題 
    private String subject; 
    // 郵件的文本內容 
    private String content; 
    // 郵件附件的文件名 
    private String[] attachFileNames;
    /** 
     * 獲得郵件會話屬性 
     */ 
    public Properties getProperties(){ 
     Properties p = new Properties(); 
     p.put("mail.smtp.host", this.mailServerHost); 
     p.put("mail.smtp.port", this.mailServerPort); 
     p.put("mail.smtp.auth", validate ? "true" : "false"); 
     return p; 
    public String getMailServerHost() { 
     return mailServerHost; 
    public void setMailServerHost(String mailServerHost) { 
     this.mailServerHost = mailServerHost; 
    }
    public String getMailServerPort() { 
     return mailServerPort; 
    }
    public void setMailServerPort(String mailServerPort) { 
     this.mailServerPort = mailServerPort; 
    }
    public boolean isValidate() { 
     return validate; 
    }
    public void setValidate(boolean validate) { 
     this.validate = validate; 
    }
    public String[] getAttachFileNames() { 
     return attachFileNames; 
    }
    public void setAttachFileNames(String[] fileNames) { 
     this.attachFileNames = fileNames; 
    }
    public String getFromAddress() { 
     return fromAddress; 
    public void setFromAddress(String fromAddress) { 
     this.fromAddress = fromAddress; 
    }
    public String getPassword() { 
     return password; 
    }
    public void setPassword(String password) { 
     this.password = password; 
    }
    public String getToAddress() { 
     return toAddress; 
    public void setToAddress(String toAddress) { 
     this.toAddress = toAddress; 
    public String getUserName() { 
     return userName; 
    }
    public void setUserName(String userName) { 
     this.userName = userName; 
    }
    public String getSubject() { 
     return subject; 
    }
    public void setSubject(String subject) { 
     this.subject = subject; 
    }
    public String getContent() { 
     return content; 
    }
    public void setContent(String textContent) { 
     this.content = textContent; 

    第二個類:SimpleMailSender.java  
    package com.util.mail;

    import java.util.Date; 
    import java.util.Properties;
    import javax.mail.Address; 
    import javax.mail.BodyPart; 
    import javax.mail.Message; 
    import javax.mail.MessagingException; 
    import javax.mail.Multipart; 
    import javax.mail.Session; 
    import javax.mail.Transport; 
    import javax.mail.internet.InternetAddress; 
    import javax.mail.internet.MimeBodyPart; 
    import javax.mail.internet.MimeMessage; 
    import javax.mail.internet.MimeMultipart; 

    /** 
    * 簡單郵件(不帶附件的郵件)發送器 
    */ 
    public class SimpleMailSender  { 
    /** 
      * 以文本格式發送郵件 
      * 
    @param mailInfo 待發送的郵件的信息 
      
    */ 
        public boolean sendTextMail(MailSenderInfo mailInfo) { 
          // 判斷是否需要身份認證 
          MyAuthenticator authenticator = null
          Properties pro = mailInfo.getProperties();
          if (mailInfo.isValidate()) { 
          // 如果需要身份認證,則創建一個密碼驗證器 
            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
          }
          // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session 
          Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
          try { 
          // 根據session創建一個郵件消息 
          Message mailMessage = new MimeMessage(sendMailSession); 
          // 創建郵件發送者地址 
          Address from = new InternetAddress(mailInfo.getFromAddress()); 
          // 設置郵件消息的發送者 
          mailMessage.setFrom(from); 
          // 創建郵件的接收者地址,并設置到郵件消息中 
          Address to = new InternetAddress(mailInfo.getToAddress()); 
          mailMessage.setRecipient(Message.RecipientType.TO,to); 
          // 設置郵件消息的主題 
          mailMessage.setSubject(mailInfo.getSubject()); 
          // 設置郵件消息發送的時間 
          mailMessage.setSentDate(new Date()); 
          // 設置郵件消息的主要內容 
          String mailContent = mailInfo.getContent(); 
          mailMessage.setText(mailContent); 
          // 發送郵件 
          Transport.send(mailMessage);
          return true
          } catch (MessagingException ex) { 
              ex.printStackTrace(); 
          } 
          return false
        } 
        
        /** 
          * 以HTML格式發送郵件 
          * 
    @param mailInfo 待發送的郵件信息 
          
    */ 
        public static boolean sendHtmlMail(MailSenderInfo mailInfo){ 
          // 判斷是否需要身份認證 
          MyAuthenticator authenticator = null;
          Properties pro = mailInfo.getProperties();
          //如果需要身份認證,則創建一個密碼驗證器  
          if (mailInfo.isValidate()) { 
            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
          } 
          // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session 
          Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
          try { 
          // 根據session創建一個郵件消息 
          Message mailMessage = new MimeMessage(sendMailSession); 
          // 創建郵件發送者地址 
          Address from = new InternetAddress(mailInfo.getFromAddress()); 
          // 設置郵件消息的發送者 
          mailMessage.setFrom(from); 
          // 創建郵件的接收者地址,并設置到郵件消息中 
          Address to = new InternetAddress(mailInfo.getToAddress()); 
          // Message.RecipientType.TO屬性表示接收者的類型為TO 
          mailMessage.setRecipient(Message.RecipientType.TO,to); 
          // 設置郵件消息的主題 
          mailMessage.setSubject(mailInfo.getSubject()); 
          // 設置郵件消息發送的時間 
          mailMessage.setSentDate(new Date()); 
          // MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象 
          Multipart mainPart = new MimeMultipart(); 
          // 創建一個包含HTML內容的MimeBodyPart 
          BodyPart html = new MimeBodyPart(); 
          // 設置HTML內容 
          html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); 
          mainPart.addBodyPart(html); 
          // 將MiniMultipart對象設置為郵件內容 
          mailMessage.setContent(mainPart); 
          // 發送郵件 
          Transport.send(mailMessage); 
          return true
          } catch (MessagingException ex) { 
              ex.printStackTrace(); 
          } 
          return false
        } 

    第三個類:MyAuthenticator.java  
    package com.util.mail;

    import javax.mail.*;
      
    public class MyAuthenticator extends Authenticator{
        String userName=null;
        String password=null;
         
        public MyAuthenticator(){
        }
        public MyAuthenticator(String username, String password) { 
            this.userName = username; 
            this.password = password; 
        } 
        protected PasswordAuthentication getPasswordAuthentication(){
            return new PasswordAuthentication(userName, password);
        }
    }

     下面給出使用上面三個類的代碼: 
    public static void main(String[] args){
             //這個類主要是設置郵件
          MailSenderInfo mailInfo = new MailSenderInfo(); 
          mailInfo.setMailServerHost("smtp.163.com"); 
          mailInfo.setMailServerPort("25"); 
          mailInfo.setValidate(true); 
          mailInfo.setUserName("han2000lei@163.com"); 
          mailInfo.setPassword("**********");//您的郵箱密碼 
          mailInfo.setFromAddress("han2000lei@163.com"); 
          mailInfo.setToAddress("han2000lei@163.com"); 
          mailInfo.setSubject("設置郵箱標題"); 
          mailInfo.setContent("設置郵箱內容"); 
             //這個類主要來發送郵件
          SimpleMailSender sms = new SimpleMailSender();
              sms.sendTextMail(mailInfo);//發送文體格式 
              sms.sendHtmlMail(mailInfo);//發送html格式
        }

    最后,給出朋友們幾個注意的地方: 
    1、使用此代碼你可以完成你的javamail的郵件發送功能。三個類缺一不可。 
    2、這三個類我打包是用的com.util.mail包,如果不喜歡,你可以自己改,但三個類文件必須在同一個包中 
    3、不要使用你剛剛注冊過的郵箱在程序中發郵件,如果你的163郵箱是剛注冊不久,那你就不要使用“smtp.163.com”。因為你發不出去。剛注冊的郵箱是不會給你這種權限的,也就是你不能通過驗證。要使用你經常用的郵箱,而且時間比較長的。 
    4、另一個問題就是mailInfo.setMailServerHost("smtp.163.com");mailInfo.setFromAddress("han2000lei@163.com");這兩句話。即如果你使用163smtp服務器,那么發送郵件地址就必須用163的郵箱,如果不的話,是不會發送成功的。  

    posted @ 2013-03-09 01:00 奮斗成就男人 閱讀(359) | 評論 (0)編輯 收藏

    JAVA郵件發送的簡單實現

         摘要: JAVA MAIL是利用現有的郵件賬戶發送郵件的工具,比如說,我在網易注冊一個郵箱賬戶,通過JAVA Mail的操控,我可以不親自登錄網易郵箱,讓程序自動的使用網易郵箱發送郵件。這一機制被廣泛的用在注冊激活和垃圾郵件的發送等方面。JavaMail可以到http://www.oracle.com/technetwork/java/javamail/index-138643.html進行下載,并將ma...  閱讀全文

    posted @ 2013-03-09 00:29 奮斗成就男人 閱讀(329) | 評論 (0)編輯 收藏

    僅列出標題
    共23頁: First 上一頁 8 9 10 11 12 13 14 15 16 下一頁 Last 
    主站蜘蛛池模板: 久久免费视频精品| 亚洲国产人成中文幕一级二级| 中文字幕亚洲男人的天堂网络| 国产精品公开免费视频| 国产一级a毛一级a看免费人娇| 亚洲激情电影在线| 国产极品粉嫩泬免费观看 | 亚洲国产成人99精品激情在线| 四虎影视精品永久免费网站| 国产精品综合专区中文字幕免费播放| 精品亚洲麻豆1区2区3区| 永久免费毛片手机版在线看| 国产成人精品一区二区三区免费| 亚洲中文字幕一二三四区| 狠狠亚洲婷婷综合色香五月排名| 黄色片在线免费观看 | 久别的草原电视剧免费观看| 亚洲AV无码AV男人的天堂不卡| 亚洲国产精品成人精品无码区| 国内自产少妇自拍区免费| 永久免费A∨片在线观看| WWW亚洲色大成网络.COM| 亚洲激情校园春色| 国产亚洲精品a在线观看app| 国产免费爽爽视频免费可以看| 黄色网址免费观看| 免费在线观看一级片| 在线观看免费亚洲| 亚洲一区中文字幕在线观看| 亚洲国产精品一区二区第一页| 国产精品视_精品国产免费| 9420免费高清在线视频| 天堂亚洲免费视频| 亚洲人成欧美中文字幕| 亚洲春黄在线观看| 国产亚洲综合网曝门系列| 亚洲av高清在线观看一区二区| 全免费a级毛片免费**视频| 美女被免费喷白浆视频| 一个人免费日韩不卡视频| 成年女人A毛片免费视频|