go dns 解析部分實現

2021-10-23 02:18:23 字數 897 閱讀 1276

入口函式:\src\net\ipsock.go裡面的lookupipaddr

呼叫庫函式getaddrinfow

實現func:lookup_unix.go的golookupip

initconfval函式會初始化dns的配置檔案首次初始化,後續會cached 5s,然後再次從檔案中獲取

先找到dns解析的查詢規則,通過讀取/etc/nsswitch.conf裡面的配置,獲取查詢規則,使用hosts

hostlookupcgo      hostlookuporder = iota

hostlookupfilesdns // files first

hostlookupdnsfiles // dns first

hostlookupfiles // only files

hostlookupdns // only dns

nss := c.nss

srcs := nss.sources["hosts"]

// if /etc/nsswitch.conf doesn't exist or doesn't specify any

// sources for "hosts", assume go's dns will work fine.

if os.isnotexist(nss.err) || (nss.err == nil && len(srcs) == 0)

if c.goos == "linux"

return hostlookupfilesdns

}

關於nssswitch.conf的說明

ThreadLocal部分解析

threadlocal創造執行緒獨有的變數。threadlocal val new threadlocal 詳細看下實現細節 threadlocal val newthreadlocal public void set t value else public t get return setinit...

C語言部分題目解析

c語言部分題目解析1 有以下程式 include int main 答案 223 解析 全假為假,有真即真 i 1,先取i與1比較,再自增,成立且 1為2,後面不再計算2 char a 7 a0 0a0 0 則 sizeof a 7 陣列位元組數1 7 7 strlen a 2 計算有效長度,即第乙...

layout weight部分常見屬性解析

如上面xml檔案所示則顯示的布局如圖 解釋一下,它是先將wrapcontent所佔的長度分出去然後再將剩餘控制項的長度按照weight的比例1 2 2再次進行分配。若將第乙個textview的layout width設定成0dp,則如下圖顯示 此時可以發現第乙個textview的控制項不在與另外兩個...