原创 使用HtmlUnit實現自動打卡

        打卡制度由來已久,對於公司管理員工的出勤比較重要,存在也是合情合理,但對於程序員這個嚮往彈性工作的羣體,內心裏還是不太樂意,遂利用HtmlUnit寫了一個自動打卡的工具,放到公司內網,通過Crontab實現自動打卡,本意不

原创 Twemproxy源碼走讀(4):運行主流程

Twemproxy在初始化完畢、運行前準備(nc_pre_run)結束後,開始進入正式的運行過程, (1)   nc_run的整體流程 整體流程很清晰, 圖1 nc_run整體流程圖 (2)   core_start流程 core_s

原创 JDK源碼走讀(3):容器之ArrayList

本章分析List系列中的ArrayList,有些與PriorityQueue類似,比如底層同樣採取數組存儲元素,也涉及到擴容操作等;也有不同之處,比如PriorityQueue不允許存入的元素爲null,而ArrayList允許將null

原创 JDK源碼走讀(1):開篇

        概述         打算從今天開始閱讀jdk源碼,一方面更熟悉各種結構、算法和功能庫的實現機制,能更好的使用Java;另一方面,這些Java代碼都是業界大牛所編寫,經歷幾十年、各種場景的考驗,非常值得學習!本系列作爲閱讀

原创 利用GSON解析簡單Json字符串

之前一直使用fastjson來解析json串,性能高,上手快,簡單易學不錯的! 最新聽說fastjson爆出一個安全漏洞,只能尋找新的json庫替代,就找到了gson,google開發的一款解析json的庫, 平時工作中,複雜的json串

原创 JDK源碼走讀(4):容器之LinkedList

本章分析List系列中的LinkedList,真正意義上的鏈表,底層採用鏈表形式存儲數據元素。LinkedList是一個雙向鏈表,可以向前或向後兩個方向遍歷鏈表。LinkedList也可以存放null元素。 一、 類實現/繼承體系結構 爲

原创 服務開發需考慮的事項

開發一個服務不是簡單的將服務功能實現,程序能跑這麼簡單,還需要考慮到各個方面,這裏大致總結了幾點,整理如下: 邏輯正確,首先要保證程序的運行結果符合預期;方便修改,比如有些參數可能會修改,(1)這些就可以放到配置信息裏,運行時,只需要

原创 Twemproxy源碼走讀(2):數據結構

Twemproxy內部定義了若干種數據結構,如概述中所述,包括自定義的數據結構和關鍵數據結構,本章將講述兩種數據結構,爲後面的複雜的邏輯分析掃清障礙。 自定義的數據類型: nc_array.c、nc_array.h、nc_string.c

原创 JDK源碼走讀(2):容器之PriorityQueue

Java的容器分成四個系列:Set, List, Queue,Map,除Map外,其餘三個都實現了Collection接口,List和Queue實現順序存儲,Map實現了K-V對。 本章分析其中實現較爲簡單的Queue系列 一、類實現/繼

原创 Twemproxy源碼走讀(1):概述

Twemproxy(又稱nutcracker,以下簡稱NC)是Memcached和Redis協議的代理服務器(下文中簡單起見,只提及Redis,大部分情況適用於Memcached,不適用時會特別說明),並能有效減少大量連接對Redis服務

原创 Twemproxy源碼走讀(3):初始化流程

Twemproxy初始化過程比較簡單,這裏把Twemproxy初始化過程分成兩部分:(1)讀取運行選項;(2)運行前的初始化和準備; (1)   讀取運行選項              讀取各項參數的設置,比如是否後臺運行(daemoni

原创 開篇——概述

        本分類記錄了在工作過程中,遇到的、經歷的或者聽說過的問題,記錄解決問題的思考過程,當然也有尚未解決的問題,也會記錄在此,         一來有知識經驗的積累,加深印象,對自己算是個交代;         二來呢,如果有哪

原创 EINTR錯誤

慢系統調用(slow system call):此術語適用於那些可能永遠阻塞的系統調用。永遠阻塞的系統調用是指調用有可能永遠無法返回,多數網絡支持函數都屬於這一類。如:若沒有客戶連接到服務器上,那麼服務器的accept調用就沒有返回的保證