原创 Redis設計與實現——數據結構(二)

字典 Redis 的數據庫使用字典來作爲底層實現,字典還是哈希鍵的底層實現之一: 當一個哈希鍵包含的鍵值對比較多, 又或者鍵值對中的元素都是比較長的字符串時, Redis 就會使用字典作爲哈希鍵的底層實現。 Redis 字典所使用的哈希表

原创 Redis設計與實現——數據結構(三)

跳躍表 跳躍表簡介 跳躍表(skiplist)是一種有序數據結構, 它通過在每個節點中維持多個指向其他節點的指針, 從而達到快速訪問節點的目的。 跳躍表支持平均 O(log N) 最壞 O(N) 複雜度的節點查找, 還可以通過順序性操作

原创 Golang實現正方教務系統爬蟲(二)

上次我們已經登錄進了首頁,明白了爬蟲的原理,這次我們看一下web界面是如何實現的. 項目地址 https://github.com/Nickqiaoo/go-webcrawler 程序目前的功能很簡單一共四個函數.Welcone處理登錄請

原创 Redis設計與實現——數據結構(一)

Redis一共有六種數據結構,分別是簡單動態字符串,鏈表,字典,跳躍表,整數集合,壓縮列表。 簡單動態字符串(SDS) 當Redis需要的不僅僅是一個字面量,而是一個可以被修改的字符串值時,Redis就會使用SDS來表示字符串。包含字符串

原创 Golang實現正方教務系統爬蟲(一)

大二上學期的時候用python實現過一個簡單的爬蟲,學了go以後發現go的標準庫十分強大,於是想實現一個教務系統的爬蟲,爬取學分和成績頁面,再搞一個web界面出來. 項目github地址:https://github.com/Nickqi

原创 HihoCoder第十週——已知前序中序求後序

思路 我們定義post_order(str1, str2)爲一棵前序遍歷的結果爲str1,中序遍歷的結果爲str2的二叉樹的後序遍歷的結果。 如果要求解post-order(str1, str2)的話,首先不難發現,根據‘前序遍歷’st

原创 IO複用函數select poll epoll

select #include <sys/select.h> #include <sys/time.h> int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *ex

原创 c++編譯與鏈接

c++編譯與鏈接 編譯與鏈接 編譯與鏈接的過程可以分解爲4個步驟,分別是預處理(Prepressing)、編譯(Compilation)、彙編(Assembly)和鏈接(Linking)。 1. 預處理 首先是源代碼文件hello