仙人掌世界
learn - innovate - share
May 10, 2012
Finagle 概述
Finagle
是基於JVM的網路框架/堆疊,開發者能在之上使用Java,Scala或任何基於JVM程式語言來開發非同步運算的RPC Client/Server,其專案是 Twitter 總結了實務上遇到的問題,所設計的分散式系統方案,並在2011的7月開放源始碼,目前功能如下表
Protocols
HTTP
Streaming HTTP (Comet)
Thrift
Memcached/Kestrel
More to come!
Server Support
Backpressure (to defend against abusive clients)
Service Registration (e.g., via Zookeeper)
Native OpenSSL bindings
Client Support
Connection Pooling
Load Balancing
Failure Detection
Failover/Retry
Distributed Tracing (a la
Dapper
)
Service Discovery (e.g., via
Zookeeper
)
Rich Statistics
Native OpenSSL bindings
Sharding
Apr 7, 2012
ScalaSTM 試用
STM(
software transactional memory
)是種
concurrency control
機制,相對於用 locking 進行同步化,更安全與簡單,以下使用帳戶轉帳的例子實作比較locking與STM
帳號轉帳案例
多組帳號同時以隨機金額進行轉帳,轉帳過程要保證沒有 race condition 與避免 deadlock
Mar 18, 2012
Random / Math.random() / ThreadLocalRandom
java.util.Random
java.util.Random 亂數演算法會依賴 seed 數值產生亂數,並在產生亂數後重新產生 seed,
在 Multi-thread 下為了保證在各Thread取到不同的亂數, java.util.Random 在實作上使用 optimistic locking 來同步更換 seed ,問題是若所有Thread都使用同個Random物件產生亂數,在大量競爭下會造成不斷的loop計算,進而產生效能問題
Feb 17, 2012
TOTP authentication demo 開發工具與佈署環境(Heroku)
延續前篇
使用 TOTP 與 Google Authenticator 實作 Two-Factor authentication
,此篇說明使用到的工具與相關心得
Application
Back-end
Java
slf4j
Apache commons-codec
Spring framework 3.1
嘗試了些新版的功能
1. Java-based configuration 覺得一般使用沒比 XML schema-based 好用,做框架設計的時候會比較實用,動態組裝、設定樣版、模組化,不知道還能怎麼運用
2.
Environment API
在啟動時依系統參數來區分"開發"或"佈署環境"的Profile,用於載入不同的 bean definition,若沒指定啟動參數則為 default 的 profile
e.g. JAVA_OPTS => -Dspring.profiles.active=heroku
Zxing
Google 的 QRCode library,在這用來產生 QRCode image 傳遞 secret key
Jedis
Redis Client 端的 Java Library
AspectJ
在這用來做 redis 的連線控制,避免階層操作下佔用多組連線
TOTP Algorithm
基於
RFC6238:TOTP: Time-Based One-Time Password Algorithm
附錄程式並做了些簡化
Front-end
Spring MVC
試用 Servlet 3.0 免宣告 web.xml 的功能,但從 Tomcat 搬到 Jetty 遇到些問題,在 Jetty 的根目錄(/) 會被 DefaultServlet 覆蓋, 導不到 spring mvc的DispatcherServlet,不想多加 Filter 只好換回 web.xml
Jackson Json
JQuery
Bootstap
Twitter 開發的前端工具庫
Jan 22, 2012
[Java Performance]Chapter 3:JVM Overview
這篇談JVM的概觀與各元件用途與描述HotSpot VM在各元件上的優化技術
HotSpot VM High Level Architecture
JVM 有三個主要元件:
VM Runtime
JIT Compiler
Memory manager
Jan 2, 2012
使用 TOTP 與 Google Authenticator 實作 Two-Factor authentication
在食衣住行育樂都需要的網路的時候,現代人擁有許多網路帳號,但能記憶的帳號密碼通常只有少數組合,當遇到密碼外洩(e.g.
資料庫外洩
、病毒側錄密碼),相對的也影響了使用共同帳密的網路服務,對今日資安事件逐漸從惡作劇變往金融犯罪的趨勢,帳號有操作功能,個資,身份(實名化),對盜竊者來說帳號密碼可以產生許多價值。
帳號盜用除了個人影響外,間接牽連的還有親友與網路服務提供者,對網路服務提供者而言,帳號盜用是會提高營運成本與降低使用者信賴度的麻煩事,因此面對使用者規模與服務品質,強化帳號安全逐漸成為不可忽視的事情,Google 於去年底開始提供
2-step verification
做多層次的帳號驗證,別於以往硬體 OTP 的方式,透過 Smartphone 使用軟體(i.e
Google Authenticator
) 來規模化佈署。
目前得知使用類似軟體驗證機制的服務提供者有
Google Account
Amazon AWS Account
Battle.net
Dropbox
在 Server 端的實作驗證流程不難,未來可能會變成一種常見的帳號驗證方法。
以下參考
國外部落格文章
與
Google Authenticator Android原始碼
實作
Two-Factor authentication
驗證流程,並釋出伺服器端
原始碼
。
‹
›
Home
View web version