原创 Jackson常用註解
屬性設置 @JsonProperty 作用:作用在屬性上,用於將JSON數據中的key與POJO對象中的key進行關聯,也可以理解爲設置屬性別名; @JsonProperty("userName") private Strin
原创 緩存 —— 緩存更新策略(1)
策略1: Read/Write Through 緩存策略 讀請求處理策略 緩存命中,直接返回緩存數據; 緩存未命中,從數據庫加載數據,更新緩存; 寫請求處理策略 先更新數據庫,然後更新緩存; 數據不一致情況 情況1:
原创 軟件項目管理(軟件工程之美總結)
軟件生命週期 項目規劃 需求方和開發方共同確定軟件開發目標,同時進行可行性研究; 經濟可行性。從成本和收益角度分析,看投入產出比。不僅要分析短期利益,還要分析長期利益,看是不是值得做。 技術可行性。從技術角度分析是否可行,
原创 緩存 —— 先數據庫還是先緩存(2)
到底是先操作數據庫還是先操作緩存,取決於哪種方案可以避免數據不一致,或者數據不一致的概率更低。下面的分析會基於Cache Aside策略展開,爲什麼基於Cache Aside策略,請查看博文“緩存更新策略”。 方案1:先緩存再
原创 訂單系統設計 --- SaaS訂單中心存儲方案
SaaS訂單中心作用 爲垂直領域的商家提供訂單管理能力,管理線上(各種互聯網平臺渠道)、線下等不同渠道的訂單; 需求分析 只是爲商家端提供訂單管理能力,其特點是訪問頻次低,查詢數據量大,需要支持靈活的訂單查詢,能夠容忍一
原创 存儲計算分離初窺
什麼是存儲計算分離? 存儲計算分離是一種分層架構思想,即將存儲能力和計算能力分開,各自服務化,通過高速網絡連接;以AWS的大護具架構爲例,底層統一採用S3存儲,存儲層上架設各種計算引擎比如HIVE、Spark等,如下圖所示:
原创 車載T-BOX
介紹 T-BOX(Telematics BOX),中文名叫做車載通信終端,相當於家庭上網的喵。對於車輛內部,T-BOX與車載CAN總線相連,可以將車輛的信息(車速、位置、油量、電量等),傳送到手機/PC端,同時接受手機端等控制
原创 定時器的幾種常用方案及原理
常見方案 單機:JDK的Timer、ScheduledThreadPoolExecutor,及Spring的@Scheduled; 分佈式:Quartz; JDK Timer 實現原理: 每個定時器實例綁定一個消費線程和任
原创 Content type 'application/json;charset=UTF-8' not supported
基礎 SpringBoot接受到http請求後,會根據content-type來判斷請求的數據格式,進而利用HttpMessageConverter將數據解析成特定的類型。對應JSON格式的數據,SpringBoot默認使用j
原创 @RequestMapping參數解析
作用 將Http請求映射到具體的方法上; 參數 path/value:請求需要匹配的URL路徑; method:請求需要匹配的方法; headers:請求頭中需要包含的字段; consumes:請求的Content-Type
原创 Linux基礎之網絡包收發流程
網絡包的接收流程 網絡數據包(Frame)到達網卡,按照FIFO順序存入網卡的接受隊列; 網卡通過DMA方式將接受隊列的數據拷貝到內核緩衝區sk_buffer; 當數據拷貝完成後,網卡通過硬件中斷(IRQ)通知CPU有新的網絡數
原创 Linux基礎之文件系統
什麼是文件系統? 文件系統是操作系統對存儲設備上文件一種管理機制,不同的管理機制形成了不同的文件系統; 文件系統劃分 按IO棧的層級來分,可以分爲VFS和具體文件系統兩層。VFS屏蔽不同的文件系統,向上提供統一的訪問接口,
原创 Linux零拷貝之sendfile/splice
sendfile/splice實現了真正意義上的零拷貝:CPU完全不需要參與數據的拷貝,應用層Java NIO爲開發人員提供了FileChannel.transferFrom()/transferTo()方法使用零拷貝。 se
原创 查看進程網絡流量工具nethogs
介紹 按照進程維度查看網絡收發流量; 安裝 yum -y install nethogs 使用 查看所有網卡流量 命令:nethogs 查看指定網卡流量 命令:nethogs eth1