原创 libuv源碼剖析(三): 事件循環loop

Introduction libuv中的 loop 是 libuv 最爲核心的事件隊列. 在熟悉了 libuv 的高效事件隊列 queue, 和基本數據結構 handle 之後, 就需要來了解一下 loop 的實現. 下面通過一個uv

原创 libuv源碼剖析(一): 高效隊列 Queue

Introduction libuv中的高效隊列是用c語言, 只使用宏定義封裝而成, 據說linux內核都是這個風格的, 因爲我沒有讀過linux內核源碼, 所以一開始理解這一段代碼還是有些困難的. libuv中使用的是雙向循環隊列, 實

原创 libuv源碼剖析(二): 句柄handle

Introduction handle 句柄就類似於事件, 需要被註冊到 loop 中. 在 libuv 中, 事件的基本類型都已經給出了定義, 共同”繼承”了 uv_handle_s, 這裏所說的繼承, 是c語言通過 -_ 來曲線救國

原创 libuv學習(五) : Processes

Introduction 對於基於事件(event-based)的程序來說, 有個限制是沒辦法很好地利用多核,提高CPU使用率. 即使能夠使用多線程編程來分發 handle, 但是每個 loop 還是隻有一個線程. 這時候, 使用多進程就

原创 Leecode: 658, 535, 32

658. Find K Closest Elements 題目描述 Given a sorted array, two integers k and x, find the k closest elements to x in the

原创 Leecode: 352, 449, 714

352. Data Stream as Disjoint Intervals 題目 Given a data stream input of non-negative integers a1, a2, …, an, …, summariz

原创 數論 Primer

幾個重要的數論模型: 歐幾里得定理(輾轉相除法) int gcd(int a, int b){ return b==0?a:gcd(b, a%b); } 擴展歐幾里得(求ax+by = gcd(a,b)的特解) void e_g

原创 libuv學習(三) : Networking

Introduction 把 libuv 核心原理弄懂之後(異步機制, 事件驅動, loop, handle), Network 部分其實也沒什麼難的了, libuv 相當於在 network 部分首先簡化了一下系統的接口, 然後再加上了

原创 libuv學習(一) : Basics of Libuv

Introduction libuv強制異步,事件驅動編程.它的核心功能是提供一個事件隊列和回調機制基於IO提醒和其他活動. libuv 提供核心的功能包括 timers, non-blocking networking support,

原创 破解滑動驗證碼(selenium, opencv)

概述 由於本人近期參加一個遊戲比賽,然後有個拉票的環節,票高者得人氣獎。又比較懶不想到處拉票麻煩別人。就想自己嘗試着破解驗證碼然後來達到刷票的目的。 這個也純屬娛樂,最後發現是不可行的。 最終目標:實現自動點擊紅星,並且拖動完成驗證 自

原创 同步IO,異步IO,阻塞IO,非阻塞IO

概念說明 用戶空間與內核空間 進程切換 進程的阻塞 文件描述符fd 緩存 I/O IO模式 阻塞 I/O(blocking IO) 非阻塞 I/O(nonblocking IO) IO 多路複用 異步 I/O(asynchrono

原创 libuv學習(二) : FileSystem

Introduction 簡單的文件系統讀寫是通過 uv_fs_* 函數 uv_fs_t 結構體實現的. libuv FileSystem Operation 和 Socket Operation 操作不一樣, socket 操作使用的

原创 libuv學習(四) : Threads

Introduction 當下主要有兩種流行的線程庫: Windows Threads 和 Posix 實現. libuv的thread API類似於 pthread 庫. libuv 允許你通過開啓線程並且在結束時收集結果來模擬異步操作

原创 k8s 權威教程第一章demo(Bug)

Bug 1 問題描述 做Tomcat的例子,結果get pods一直顯示沒有資源? 應用配置代碼: apiVersion : v1 kind : ReplicationController metadata : name :

原创 kubernetes 創建 Pod 失敗 (Bug)

Bug 1 問題描述 standard_init_linux.go:178: exec user process caused “exec format error” 解決方法 在 entry_point.sh 文件中的頭部加上 #!/b