Java開發—乘風破浪

來源:互聯網
上載者:User

標籤:style   end   result   simple   jms   代碼   shc   項目開發   前端架構   

最近需要上線很多新的JAVA項目,然而很多JAVA的相關庫都不太熟悉,項目實現起來遇到了不小阻力,熬了好幾天夜。現在手頭的工作基本完成了,因此打算好好來歸納下java的相關工具庫,將來需要藉助你們,好好的在JAVA的汪洋下,乘風破浪。(希望成為電影中如小馬一樣程式員J)

乘風破浪會有時,直掛雲帆濟蒼海—李白

首先通過一張思維導圖,來熟悉常用的java基礎工具包,掌握好工具是對一個優秀工程師的基本要求哦!J

圖中標紅星表示必須精通的內容,黃星為需要熟練掌握的內容,其他為補充內容,本文主要會介紹下基礎庫、架構庫和log庫的內容。

 

  • Apache Commons Lang

雖然現在推薦使用Guava替代Commons,但同時使用這兩個深入人心的基礎庫也是棒棒噠,下面通過一個表格來熟悉最常用的使用。

功能

樣本

字串空判斷

StringUtils.isEmpty(null), StringUtils.isBlank(" ")

字串trim

StringUtils.trim(" abc "), StringUtils.strip("  abc", "xyz")

字串分割

String[] r01 = StringUtils.split("  abc dd")

String[] r02 = StringUtils.split("abc,dd", ",")

StringUtils.splitPreserveAllTokens(str4, ",")

數組元素拼接  

StringUtils.join(array, ",")

隨機數

RandomStringUtils.randomAscii(10)

數組操作

ArrayUtils.clone(arr)

ArrayUtils.isEmpty(arr)

ArrayUtils.toObject(array10)

日期

DateUtils.parseDate("2010/01/01 11:22:33", new String[]{"yyyy-MM-dd HH:mm:ss"})

基本反射工具

BeanUtils.getProperty(bean, "name")

SampleBean newBean = (SampleBean) BeanUtils.cloneBean(bean);

BeanUtils.describe(bean); //獲得註解

BeanUtils.populate(bean, map);//填充資料

String[] array = BeanUtils.getArrayProperty(bean, "array");//擷取數組     

String value = BeanUtils.getNestedProperty(bean, "nestedBean.nestedProperty")

BeanUtils.setProperty(bean8, "url", "http://www.google.com/"); 

DateConverter converter = new DateConverter();

converter.setPattern("yyyy/MM/dd HH:mm:ss");

ConvertUtils.register(converter, Date.class);

ConvertUtils.register(converter, String.class);

BeanUtils.setProperty(bean9, "date", "2010/12/19 23:40:00");

實現equals等方法

public boolean equals(Object obj) { 

 return EqualsBuilder.reflectionEquals(this, obj);  }

InvokeMethod

Main main = new Main();

Child child = new Child(); 

MethodUtils.invokeMethod(main, "pass", child); // OK 

MethodUtils.invokeExactMethod(child, "pass‘, child); 

lang.time.*

FastDateFormat相對於SimpleDateFormat是安全執行緒的

Tip:

關於安全執行緒,常用的方法有:每次都加上new;加上synchronize;使用thread-local,線上程重用時,減少了new的次數;使用object-pool,共用多個對象。

  • Guava

功能

樣本

複寫常用Object方法

Objects.equal(null, null)

Objects.hashCode(person)

Objects.toStringHelper(Person.class)

ComparisonChain.start().compare(name, other.name).result();

Throwables

Throwable getRootCause(Throwable)

List<Throwable> getCausalChain(Throwable)

String getStackTraceAsString(Throwable)

Immutable不可變集合

很好的防禦編程(defensive programming)的技術實踐

ImmutableList<String> imlist=ImmutableList.copyOf(list);

常見集合Colletion,List,Set,SortedSet,Map,SortedMap都有其對應類型

其他

Strings. Range, EventBus, Caches, null值的管理(java的一個痛點)

Guava官方教程的中文翻譯:http://ifeve.com/google-guava/

  • Joda-time

這部分是後來補上的,在.NET中時間日期使用非常簡單方便,但java中居然是個痛點!!!一些基礎的時間日期操作常常被Date,TimeStamp,Calendar等類型搞的相對複雜。可以這麼說,掌握了guava,joda-time,最好還有jdk8(生產暫時未普及),基本上代碼效率基本上可以回到寫c#的水平上。最基礎的一個例子,擷取某一日期當月第一天的日期部分:DateTime curMonth1 = DateTime.now().dayOfMonth().withMinimumValue().withTimeAtStartOfDay();

官網文檔:http://www.joda.org/joda-time/userguide.html

 

  • Spring系列(詳情可見Spring系列學習)

其是2003年興起的一個輕量級java開發架構項目,經過多年發展,已經成為java項目的(事實上)標準化組件,包括很多子項目和相關項目,可以說是非常的棒,大幅簡化程式員工作,且穩定高效。(樸實來說,它非常適合現在互連網情境,不需要大而全的超級應用,而是需要不斷的迭代快速上線應景的項目,後台通過SOA提供有效服務。對於個人來說,現在項目除開H5等前端內容,核心就是3扳斧,Web提供使用者入口,SOA服務提供核心服務,Job完成各類髒活累活,其他的主要起到輔助作用)

核心功能:Spring-Core,核心就是完成Bean的建立(DI)和管理,比我們自己管理的更加系統合理,且編碼美觀,思路清晰。

協助工具功能:Spring-Aop切面功能,Tx事務功能,RMI遠程服務功能,JmsTemplate訊息功能等,JDBC資料庫連接等功能(整合MyBatis)。

Web支援:SpringMvc,市場份額第一,不解釋。

最近兩年火熱無比的:Spring boot,以rapid applicaition development為宗旨,簡化項目開發,但背後和過去的java開發無本質區別。

  • 前端架構選型:

angular+bootstrap+jQuery,後台java,基本適用大部分中小項目。針對大型項目,可以參見博主葉小釵大神的淺談Hybrid技術系列文章。

  • 日誌

Java非常重視介面與實現的分離,利用介面定義標準,如果說.NET(只有微軟一家的實現,曾經的輝煌,也造成了現在業務的萎縮)這是可選項的話,java就是就是必選項。比如spring的aop就只支援使用在介面上,而SLF4J就是一個日誌介面標準,無論是log4j2,logback,提供的都是其實現,對開發透明,非常方便的進行外掛程式式管理。

 

本文所有demo內容請詳見:Github中javaDemo項目。

最後,推薦一個知乎問題和一篇贊贊的博文(中文翻譯)

目前流行的前端架構有哪些?(完成java學習後,就開始全面的前端學習,基本達到一個互連網工程師的水平再考慮下一步的plan)

2017 年你應該學習的程式設計語言、架構和工具

Java開發—乘風破浪

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.