JDK8 與模式
- Fluent ecorator
- In out in out shake it all about
- The lonely override
- monad
- functional reactive
Fluent Decorator
High order function : 輸入函式 輸出函式
Lamda : code as data
ThreadLocal
使用 withInitial
Monad Patterns
Optional
flatMap
Functional Reactive
很有趣的東西
Java 常見問題排查方法
類衝突問題
OOM Out of Memory
工具
- jstack
- btrace
- jmap
- google perftools
CPU 利用率問題
應用沒響應問題
分布式環境下應用交互超時問題
Java 進程異常退出問題
EventBus and Reactive Programming on Android
痛點
- Android AsyncTask
- Loader
- Thread
- Callback 海
類似的東西
- event-driven programming
- obsever pattern
- pub/sub pattern
- dataflow programming
library
- Otto from Square
- EventBus from greenrobot
Sticky Events
老舊 Web 上雲端
ActiveCache
無法維護的 WEB 專案的尊稱
Crash 蹺蹺板
guava CacheLoader
Cached Refresh Schedule
Simplify Multi-Tenant Queries in ORM Frameworks
- Separate Database 多資料庫
- Separate Schema 多表
- Discriminator Column 藉由欄位區分
ORM framework
JPA Hibernate EclipseLink
阿里 JVM 之路
性能優化
- Intrinsic
- CHIH - Off-Heap
- JFR 分析內部事件進行優化
JAVA 方法
- Pure Java
- JIT
- Intrinsic
- JNI
- 開銷大,效率低
Intrinsic 主要是將一些程式碼直接使用 CPU 指令執行
GCIH
- Garbage Collector Invisable Heap
- 讓 JVM 進程共享 GCIH 的資料
- 限制 只能唯讀 如果是可寫會有問題
Java Flight Recorder
種類
- gc 相關
- 線程同步相關
- JIT 相關
- 類加載
- VMOperation
在 OpenJDK 已有比較粗糙的實現
如何實現
故障排查
- 增加可配置參數 新增一些統計數據
- 與外部工具結合
回饋社區
- Bug Fix
- 阿里客製化的部分
Apache Kafka: A high-throughput distributed messaging system
介紹 Kafka 的特色
Kafka 為何快
Sequential vs Random
In-Process Cache vs Page Cache
Application Copy vs Zero Copying
Constant Time
apace-storm vs spark streaming
一些參考文章
The Log: What every software engineer should know about real-time data’s unifying abstraction
OpenJDK vs. Dalvik/ART virtual machine
從 Maxine VM 理解高效能 Java 虛擬機器運作原理
Self VM Strongtalk vm hotspot vm cldc-hi
說明了 JVM 的歷史
重點在最佳化
Runtime overhead Interpreter
Dalvik VM in a nutshell
Dalvik is Register-based
Optimizing Dispatch
dexopt
Dalvik vs. ART
透過 ActiveMQ 在 Raspberry Pi 上的物聯網應用
介紹一些物聯網的協定 1. AMQP 2. MQTT 3. XMPP 4. STOMP