原创 DrainLoop編程技巧

介紹 最近項目裏頻繁涉及到併發編程, 由於我們的系統不需要強一致性, 我選擇使用各種併發集合來避免鎖. 項目裏還大量使用了MPSC的隊列(基於JCTools)和Disruptor. 另外還涉及到一些異步編程, 這裏使用了Reactor來簡

原创 struts2上傳與下載

上傳 在Action裏 private File abcFile; private String abcFileName;//這兩個參數是可選的private String abcContentType;//這兩個參數是可選的 然後生成s

原创 Java 高效數組複製

介紹 實踐中經常需要複製數組的一段連續內容, 比如給一個數組追加一個元素形成一個新數組. 那麼怎樣做纔是較快的呢? 測試 方法1: 自己new數組, 然後for循環複製 方法2: 使用 Arrays.copyOf, 或 System.ar

原创 線程安全的一些建議

介紹 我比較認同的線程安全的定義: "一段代碼, 被多線程訪問, 多線程之間不需要任何顯式的協同, 並且運行結果是正確的, 那麼這段代碼就是線程安全的".   線程安全的程度 Immutable: 不可變 Thread-safe: 單線程

原创 Java線程池的關閉, shutdown和shutdownNow的區別

Java線程池shutdown和shutdownNow的區別 結論 先說結論 shutdown 標記關閉 + 會執行積壓任務(因線程不足而放入queue裏的) + 不打斷正在執行的任務 + 之後不允許添加新任務 shutdownNow =

原创 byte-buddy

介紹 先佔個坑. 因工作需要, 調研了byte-buddy, 並嘗試用它實現了各種功能, 都記錄下來吧…

原创 Reactor的parallel不支持工作竊取

使用Rx系列框架也有2年多了, 真的感覺它在項目就像是萬金油, 哈哈. 項目裏經常有併發請求外部系統(然後合併結果, 這個今天先不考慮)的情況. 這裏給出一個場景: 需要調用N次外部系統, 調用無返回值, 只需要確保調用結束即可, 可以不

原创 Guava - EventBus

EventBus 介紹 EventBus是Guava包裏的一個輔助類, 用於實現消息總線模式. 生產事件的叫做Provider, 消費事件的叫做Subscriber, 他們之間通過事件類型產生關聯.   核心類介紹 EventBus 核心

原创 String.split的坑

介紹 某一天使用Spring.split方法對字符串進行拆分, 發現拆分後的數量似乎不太對勁...   String.split split方法有2個重載版本: split(String) 相當於 split(String, -1) sp

原创 go http處理post請求

怎麼就不是原創了… http.HandleFunc("/post", func(writer http.ResponseWriter, request *http.Request) { // 檢查是否POST請求

原创 Cookie的過期與刪除

介紹 Cookie的過期與刪除本質是一回事. 當服務端想讓客戶端刪除一個cookie時, 它會給客戶端頒發一個同名cookie(此時一般會將value設置成空白字符串), 只是這個cookie的存活時間已經過期(通過設置Expir

原创 JWT

介紹 本質是將一些信息編碼在字符串裏, 通過某些算法來編碼數據, 加密來保證安全, 通過加簽來防止篡改. 優點 服務端無狀態 缺點 無法撤銷, 只能過期

原创 Atomic Updater vs. Atomic Wrapper

介紹 JDK1.5之後提供了常見類型的原子包裝類, 如 AtomicInteger, AtomicLong 等. 平時使用起來也沒有問題. 但在看一些開源項目源代碼的時候, 發現他們特別喜歡用volatile field + at

原创 關於線程安全的考慮

結論 結合當前框架的線程模型 不可變對象/無狀態化 原子操作 線程本地 鎖

原创 LinearHorizontalRecyclerView

最近在學習安卓,找點應用模仿一下界面 LinearHorizontalRecyclerView只是RecyclerView + LinearLayout + Horizontal而已 想要達到的效果是這樣的先上圖: 大家先看番劇更新這