2016/11/2起 (即將開班!把握機會)J2EE與物聯網開發實務研習班!
不管是傳統的電商的交易呈現系統,到現在物聯網的資料收集與呈現與控制手持裝置(iOS/Android)與推播,都需要從前端的web/web services到後台一系列的步驟,而Java自從.com開始便累積了許多framework能讓工程師用工程的角度來完成專案的建置,本課程將以講師的經驗說明各個框架的實務。
這個課程非常著重實作,雖然每個例子都具體而微的說明,但需要學員有Java程式開發的經驗與Web/物聯網開發經驗。
本課程的教材將以學員在Java學習中對於專案開發最需要的generic與collection的實作開始,說明執行緒與相關元件的應用,進而進入J2EE的框架,說明servlet/jsp與session的基本。
同時,資料存取絕對是不可或缺的一環,從簡單JDBC到ORM的Hibernate/JDO/JPA說明如何完成物件到關聯式資料庫的實作。JPA的實作,在Oracle也有官方對應的課程(Java EE6之利用JPA技術開發資料庫應用程式)
近期的Enterprise應用程式,spring絕對是非常令人注意的,因此在完成基礎後,會以Spring的bean開發來貫穿這些框架。除了開發部署也是一件工程,因此本課程將會說明如何使用Spring Boot來開發並且進行快速部署,藉著gradle的組態,能夠讓專案無痛的升級,無痛的解決套件相依。
Spring Boot不止能夠讓系統易於模組化,更能支援REST的開發架構,因此物聯網資料的收進,手機資料的遞送與資料呈現都可以由Spring Boot進行框架的設置。同時在這個豐富的Spring框架中對於訊息的傳送與接收也有一致的行為,藉由AMQP可以讓簡單的POJO bean實作出listener,引發出事件趨動的程式設計樣式。
然而,前端的開發近期流行的是single page application, 是一種藉著javascript達成AJAX的資料呈現,因此在presentation tier會導入GWT (Google web toolkit),它是一套由Java推動前端開發的框架,可以藉著callback完成從server 到client的AJAX,如google inbox, (http://www.gwtproject.org/examples.html)即是用這個框架完成,同時也會說明另一套基於GWT但是更美觀的UI Vaadin(vaadin.com)。
網址:https://college.itri.org.tw/edm/D1/010/11/edm.html
orm 例子 在 91 敏捷開發之路 Facebook 的最佳解答
[推薦文章]Top 10 Performance Mistakes/十大性能方面的错误
英文原文傳送門:https://www.infoq.com/articles/top-10-performance-mistakes
簡體中文傳送門:http://www.infoq.com/cn/articles/top-10-performance-mistakes
摘要:
10. Not Upgrading.
9. Duplicated Work.
8. Data Dependent Loads.
7. Too Much Allocation.
6. Going Parallel
5. Not Understanding TCP.
4. Synchronous Communications
3. Text Encoding.
2. API Design
1. Logging
--
Performance tuning 第一要務:找到 bottleneck
找 bottleneck 第一要務:資訊充足、避免黑箱。但如果為了資訊充足插了一堆 log, 你又中了第一個最常見的 performance 問題:Logging。
--
挑幾個來提我的經驗:
10. 不升級:有很多人用很舊的 OS 版本、DBMS 版本、framework 版本,本質上就是老牛拖慢車,車殼改造地再流線來降低風阻,引擎沒升級就是慢。
9. 不必要的重複的工作:這邊講的例子是不恰當地使用ORM。以 Entity Framework 當例子,請參考之前整理的討論串:https://www.facebook.com/91agile/posts/571836689657620
8. 使用錯誤的資料結構:不是只要放到 memory 就沒有存取效能的問題,各種資料結構在面對不同的存取操作時,Big O還是要參考一下,選擇最恰當的資料結構才會事半功倍。
7. GC 在回收 large object heap 時,是需要比較多時間的。(.NET 中 large object 指大於 85,000 bytes 的物件)
6. 濫用 Parallel: 只有1間廁所,有10個人在排隊,你排一隊搞不好還比排 10 隊來得快上不少。(通常廁所就是你的DB)
4. 同步處理的問題:同步就要等,非同步就要解決一致性問題、通知問題。在通訊上,請考慮是否使用 NIO 框架,如 Netty: http://mp.weixin.qq.com/s…
3. 序列化/反序列化:有時為了讓人看懂,就會使用序列化的技巧。但不必要用、濫用就會很吃CPU。
1. Logging:Log 一定要分類分級,而且一定要統一設定就可以進行各類各級的開關。在應付大量 request/transaction 時,能省掉的開銷都要省掉。
#performance