原创 epoll機制代碼覈對

epoll工作機理        epoll_wait檢查epoll句柄中的rdllist不爲空退出循環        遍歷所有的epitem,把各種ready的fd收集起來返回 誰來影響rdllist不爲空,一般的說法是文件的fd的狀態

原创 內核中的機制的困惑

處理器總處於以下狀態中的一種 1、內核態,運行於進程上下文,內核代表進程運行於內核空間;     迴旋鎖是解決多個CPU可重入問題   2、內核態,運行於中斷上下文,內核代表硬件運行於內核空間;     迴旋鎖是解決多個CPU可重入問題

原创 網卡驅動中的疑惑

網卡發送和接收緩衝區是實際有空間,還是一個數字而已?     這個只是一個邏輯值,並不實際分配內存     這是網卡的級別的限制,超過了閥值,數據就不收發了   網卡的發送和接收緩衝區是所有連接共享?     是的,也有連接級別的發送和接

原创 linux socket收包錯誤碼

1、ENOTCONN ---當前狀態爲TCP_LISTEN 2、flags爲帶外數據tcp_recv_urg    ENOTCONN ---當前狀態爲TCP_CLOSE    EINVAL   ---TCP_URG_READ    EFA

原创 tcp_ip網絡中的名詞語義

選擇重傳與分片的概念    選擇重傳不是指分片中的某個部分丟了,選擇某個分片   選擇重傳的粒度不是分片而是滑動窗口中的單元 TCP協議中的seq表示的是字節數還是包序號?    seq其實就是連接的字節數 TCP中發送數據後,基本

原创 linux 發數據包的錯誤碼

1、EBADF---找不到對應的文件對象 2、連接並未建立,等待直到進入TCPF_ESTABLISHED或者TCPF_CLOSE_WAIT    1

原创 信號機制一窺

 if (signal_pending(current))   {      ret = -ERESTARTSYS;      return ret

原创 go遇到的問題

     一、類型轉換             a = 100.0  //c/c++使用100.0f,100.0u,go用float32(100.0),uint(0)可以達到效果             fmt.Printf("%f\n"

原创 go的protobuf環境搭建

    1、下載protobuf本身的安裝包           執行autogen.sh過程中如果遇到不能訪問外網的情況下,進入autogen.sh中註釋掉這些行           安裝protobuf的依賴的資源autoconf,a

原创 文件系統中數據讀取的詳細過程

一直在困惑文件系統sys_read、bio、io調度、硬中斷、軟中斷、io完成通知之間的過程是怎麼樣的,通過代碼的跟蹤大致明白過程了 內核態的系統調用與bio的交界處的函數mpage_bio_submit(fs/mpage.c) bio與

原创 go的html模板替換

  1、模版注入函數     t.Funcs()   2、字符串作爲模版     Template.Must   3、模版的Map或者Struct替換       t := template.New(

原创 文件系統中的io請求的傳遞

塊設備的io請求類型在不同層次有不同的表示      page cache=>buffer head=>bio=>request IO請求在內核的傳遞過程中,並未發生實際的拷貝,而是引用部分數據 在request對象中還是有bio對象

原创 go的反射機制和interface

      interface與其他語言的對比       1、interface{}作爲形式參數使用              類似c/c++中的void*,萬能的指針       2、本身的含義類似java中的interface  

原创 redis日常學習

     1、查看redis的內存等資源使用情況            登陸進去之後,使用info查看      2、清空redis            登陸進去之後,使用flushall清空      3、查看redis中的記錄數  

原创 Qdisc數據發送

Qdisc中的實現方式大致如下 struct Qdisc { int (*enqueue)(struct sk_buff *skb, struct Qdisc *dev); struct sk_buff * (*dequeue