原创 JDK 源碼分析 -- FutureTask

  一、簡介 FutureTask 可取消的異步計算(主線程可以去做其他的)。 此類提供Future的基本實現,其中包含啓動和取消計算,查詢以查看計算是否完成以及獲取計算結果的方法。 只有在計算完成後才能獲取結果; 如果計算尚未完成,則g

原创 性能優化 ---- 如何排查線上性能問題

零. 概述 又到了一年一度某電商帝國雙十一大促備戰階段,今年我負責穩定性這塊,系統壓測找出性能瓶頸就是其中之一的工作。在壓測某個系統 A,線上集羣發現 CPU 使用率 50%,8C-16G-200G 的容器 load 達到 13 左右,嚇

原创 RocketMQ 源碼閱讀 ---- 消息存儲(普通消息)

零、關鍵詞解釋 cache 是爲了彌補高速設備和低速設備的鴻溝而引入的中間層,最終起到**加快訪問速度**的作用。 buffer 的主要目的進行流量整形,把突發的大數量較小規模的 I/O 整理成平穩的小數量較大規模的 I/O,以**減少

原创 RocketMQ 源碼閱讀 ---- Tag 過濾

零、簡介 RocketMQ 消息過濾分成 TAG過濾和 SQL Filter 過濾,SQL Filter是在服務端處理,會影響 MQ 的性能一般不建議使用,語法比較靈活,實現方式也相對複雜一些。Tags 過濾實現比較簡單,在客戶端實現。這

原创 RocketMQ 源碼閱讀 ---- 消息消費(普通消息)

RocketMQ Consumer 消費拉取的消息的方式有兩種 1.      Push方式:rocketmq 已經提供了很全面的實現,consumer 通過長輪詢拉取消息後回調 MessageListener 接口實現完成消費,應用系統

原创 性能優化 ---- 避免使用 BeanUtils copy

一、背景 在開發過程中,我們經常會遇到對象的轉換,比如外部的 DTO 對象轉換爲內部的 DO 對象,這裏面很多字段名都是相等的,要是一個一個去 get/set 很多人會覺得很煩,於是爲了方便和代碼的簡介大家不約而同地找到了 UtilsBe

原创 MySQL 寫優化 關於 innodb_flush_log_at_trx_commit 和 sync_binlog

Beta 機器測試,寫入性能較差,有 4ms+,於是與DB共同排查,確實是分庫DB寫入太慢,DB 調整了兩個參數後,RT 下降到均值 2ms。是什麼參數如此給力? 這樣調整後,32C-96G-1000G 單庫峯值 TPS = 2.6W,Q

原创 App端上交互架構設計思考

零、背景 考慮下手機App業務和底層電商商業化服務端交互要有什麼樣的設計原則和架構思考。 技術架構角度,儘量減少不必要請求交互,降低耦合 業務架構角度,業務內核聚焦,減少上游感知底層[商業化]業務   一、架構對比 左圖架構問題,端上點

原创 高效 linux 腳本 ---- 取出文件可變參數賦值到執行腳本和 AWK 實戰

將文件中每一行內容填充進要執行的腳本中 nohup cat /home/admin/XXX/logs/tradeIdList.log.2019-04-28 | xargs -i curl 'localhost:7001/compare

原创 SimpleDateFormat 線程不安全問題及解決方案

零、概述 任何線程不安全的問題,其實本質就是共用了一份數據且沒有進行加鎖同步,SimpleDateFormat 也是一樣。   一、錯誤案例 public class Test { static DateFormat df =

原创 最佳線程數實戰

對於計算密集型任務,在擁有 N 個核的 CPU 的系統上,當線程池大小爲 N+1 時,通常能實現最優的利用率,(即當計算密集型任務偶爾由於頁缺失故障或者其他原因而暫停時,這個額外的現線程也能夠確保CPU的時鐘週期不會被浪費)  對於IO密

原创 LeetCode ---- Single Number (Java/Lua 實現)

問題: Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorith

原创 LeetCode ---- Nim Game (Java/Lua 實現)

題目: You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of

原创 LeetCode ---- Fizz Buzz (Java/Lua 實現)

題目: Write a program that outputs the string representation of numbers from 1 to n. But for multiples of three it sh

原创 MySQL 如何解決深度翻頁

select * from table_a limit m,n; MySQL的 limit m,n 工作原理就是先讀取符合where條件的前面m+n條記錄,然後拋棄前m條,返回後面n條,所以m越大,偏移量越大,性能就越差。這也是大部分O