日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

阿里校招面試,我來瞅瞅怎么回事

來源: 責編: 時間:2024-07-05 09:01:43 1185觀看
導讀Go里有哪些數據結構是并發安全的?并發安全就是程序在并發的情況下執行的結果都是正確的;Go中數據類型分為兩大類:基本數據類型:字節型、整型、布爾型、浮點型、復數型、字符串復合數據類型:數組、切片、指針、結構體、字典

Go里有哪些數據結構是并發安全的?

并發安全就是程序在并發的情況下執行的結果都是正確的;xMR28資訊網——每日最新資訊28at.com

Go中數據類型分為兩大類:xMR28資訊網——每日最新資訊28at.com

  • 基本數據類型:字節型、整型、布爾型、浮點型、復數型、字符串
  • 復合數據類型:數組、切片、指針、結構體、字典、、函數、接口

字節型、布爾型、整型、浮點型取決于操作系統指令值,在64位的指令集架構中可以由一條機器指令完 成,不存在被細分為更小的操作單位,所以這些類型的并發賦值是安全的,但是這個也跟操作系統的位 數有關,比如int64在32位操作系統中,它的高32位和低32位是分開賦值的,此時是非并發安全的。xMR28資訊網——每日最新資訊28at.com

復數類型、字符串、結構體、數組,切片,字典,通道,接口, 這些底層都是struct,不同成員的賦值 都不是一起的,所以都不是并發安全的。xMR28資訊網——每日最新資訊28at.com

Go如何實現一個單例模式?

單例模式的作用是確保無論對象被實例化多少次,全局都只有一個實例存在。根據這一特性,我們可以將其應用到全局唯一性配置、數據庫連接對象、文件訪問對象等。xMR28資訊網——每日最新資訊28at.com

餓漢式

餓漢式實現單例模式非常簡單,直接看代碼:xMR28資訊網——每日最新資訊28at.com

package singletontype singleton struct{}var instance = &singleton{}func GetSingleton() *singleton {    return instance}

singleton 包在被導入時會自動初始化 instance 實例,使用時通過調用 singleton.GetSingleton() 函數即可獲得 singleton 這個結構體的單例對象。xMR28資訊網——每日最新資訊28at.com

這種方式的單例對象是在包加載時立即被創建,所以這個方式叫作餓漢式。與之對應的另一種實現方式叫作懶漢式,懶漢式模式下實例會在第一次被使用時被創建。xMR28資訊網——每日最新資訊28at.com

需要注意的是,盡管餓漢式實現單例模式的方式簡單,但大多數情況下并不推薦。因為如果單例實例化時初始化內容過多,會造成程序加載用時較長。xMR28資訊網——每日最新資訊28at.com

懶漢式

接下來我們再來看下如何通過懶漢式實現單例模式:xMR28資訊網——每日最新資訊28at.com

package singletontype singleton struct{}var instance *singletonfunc GetSingleton() *singleton {    if instance == nil {        instance = &singleton{}    }    return instance}

相較于餓漢式的實現,懶漢式將實例化 singleton 結構體部分的代碼移到了 GetSingleton() 函數內部。這樣能夠將對象實例化的步驟延遲到 GetSingleton() 第一次被調用時。xMR28資訊網——每日最新資訊28at.com

不過通過 instance == nil 的判斷來實現單例并不十分可靠,如果有多個 goroutine 同時調用 GetSingleton() 就無法保證并發安全。xMR28資訊網——每日最新資訊28at.com

  1. sync.map的底層實現
什么是sync.Map

Go 的內建 map 是不支持并發寫操作的,原因是 map 寫操作不是并發安全的,當你嘗試多個 Goroutine 操作同一個 map,會產生報錯:fatal error: concurrent map writes。xMR28資訊網——每日最新資訊28at.com

因此官方另外引入了 sync.Map 來滿足并發編程中的應用。xMR28資訊網——每日最新資訊28at.com

sync.Map 的實現原理可概括為:xMR28資訊網——每日最新資訊28at.com

  • 通過 read 和 dirty 兩個字段將讀寫分離,讀的數據存在只讀字段 read 上,將最新寫入的數據則存在 dirty 字段上
  • 讀取時會先查詢 read,不存在再查詢 dirty,寫入時則只寫入 dirty
  • 讀取 read 并不需要加鎖,而讀或寫 dirty 都需要加鎖
  • 另外有 misses 字段來統計 read 被穿透的次數(被穿透指需要讀 dirty 的情況),超過一定次數則將 dirty 數據同步到 read 上
  • 對于刪除數據則直接通過標記來延遲刪除
數據結構
type Map struct {    // 加鎖作用,保護 dirty 字段    mu Mutex    // 只讀的數據,實際數據類型為 readOnly    read atomic.Value    // 最新寫入的數據    dirty map[interface{}]*entry    // 計數器,每次需要讀 dirty 則 +1    misses int}

其中 readOnly 的數據結構為:xMR28資訊網——每日最新資訊28at.com

type readOnly struct {    // 內建 map    m  map[interface{}]*entry    // 表示 dirty 里存在 read 里沒有的 key,通過該字段決定是否加鎖讀 dirty    amended bool}

entry 數據結構則用于存儲值的指針:xMR28資訊網——每日最新資訊28at.com

type entry struct {    p unsafe.Pointer  // 等同于 *interface{}}

屬性 p 有三種狀態:xMR28資訊網——每日最新資訊28at.com

  • p == nil: 鍵值已經被刪除,且 m.dirty == nil
  • p == expunged: 鍵值已經被刪除,但 m.dirty!=nil 且 m.dirty 不存在該鍵值(expunged 實際是空接口指針)
  • 除以上情況,則鍵值對存在,存在于 m.read.m 中,如果 m.dirty!=nil 則也存在于 m.dirty

Map 常用的有以下方法:xMR28資訊網——每日最新資訊28at.com

  • Load:讀取指定 key 返回 value
  • Store:存儲(增或改)key-value
  • Delete:刪除指定 key

channel在什么情況下會panic?

  • 關閉為nil的channel
  • 關閉一個已經關閉的通道
  • 向一個已經關閉的通道寫數據
  • 關閉通道導致發送阻塞的協程panic

redis有哪些數據結構,分別常用于哪些場合?

redis的基本數據結構有: 1、String(字符串);2、Hash(哈希);3、List(列表);4、Set(集合);5、zset(有序集合)。xMR28資訊網——每日最新資訊28at.com

String(字符串)

String 類型是 Redis 中最基本、最常用的數據類型,甚至被很多用戶當成 Redis 少數的數據類型去使用。String 類型在 Redis 中是二進制安全(binary safe)的,這意味著 String 值關心二進制的字符串,不關心具體格式,你可以用它存儲 json 格式或 JPEG 圖片格式的字符串。xMR28資訊網——每日最新資訊28at.com

應用:xMR28資訊網——每日最新資訊28at.com

  • 存儲一些配置數據:在前后分離式開發中,有些數據雖然存儲在數據庫,但是更改特別少。比如有個全國地區表。當前端發起請求后,后臺如果每次都從關系型數據庫讀取,會影響網站整體性能。我們可以在名列前茅次訪問的時候,將所有地區信息存儲到redis字符串中,再次請求,直接從數據庫中讀取地區的json字符串,返回給前端。
  • 緩存對象:將對象轉為json存儲,比如商品信息,用戶信息。
  • 數據統計:redis整型可以用來記錄網站訪問量,某個文件的下載量,簽到人數、視頻訪問量等等。(自增自減)
  • 時間內限制請求次數:比如已登錄用戶請求短信驗證碼,驗證碼在5分鐘內有效的場景。當用戶首次請求了短信接口,將用戶id存儲到redis 已經發送短信的字符串中,并且設置過期時間為5分鐘。當該用戶再次請求短信接口,發現已經存在該用戶發送短信記錄,則不再發送短信。
  • 訂單號(全局少數):有時候你需要去生成一個全局少數值的時候可以通過redis生成。關鍵命令:incrby(原子自增)。
  • 分布式session:當我們用nginx做負載均衡的時候,如果我們每個從服務器上都各自存儲自己的session,那么當切換了服務器后,session信息會由于不共享而會丟失,我們不得不考慮第三應用來存儲session。
Hash(哈希)

Hash的數據結構我們可以簡單理解為java中的 Map,這種結構就特別適合存儲對象,上面的String的類型確實也可以存儲對象,但每次修改對象中的某一個屬性,都要拿出整個json字符串在修改這個屬性,之后在重新插入,而hash的接口特點讓我們可以只修改該對象的某一個屬性。xMR28資訊網——每日最新資訊28at.com

hash數據類型在存儲上述類型的數據時具有比 String 類型更靈活、更快的優勢,具體的說,使用 String 類型存儲,必然需要轉換和解析 json 格式的字符串,即便不需要轉換,在內存開銷方面,還是 hash 占優勢。xMR28資訊網——每日最新資訊28at.com

應用:xMR28資訊網——每日最新資訊28at.com

  • Redisson分布式鎖:Redisson在實現分布式鎖的時候,內部的用的數據就是hash而不是String。因為Redisson為了實現可重入加鎖機制。所以在hash中存入了當前線程ID。
  • 購物車列表:以用戶id為key,商品id為field,商品數量為value,恰好構成了購物車的3個要素。
  • 緩存對象:hash類型的 (key, field, value) 的結構與對象的(對象id, 屬性, 值)的結構相似,也可以用來存儲對象。
List(列表)

List類型是按照插入順序排序的字符串鏈表,一個列表非常多可以存儲2^32-1個元素。我們可以簡單理解為就相當于java中的LinkesdList。和數據結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵并不存在,Redis將為該鍵創建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那么該鍵也將會被從數據庫中刪除。xMR28資訊網——每日最新資訊28at.com

應用:xMR28資訊網——每日最新資訊28at.com

  • 消息隊列:lpop和rpush(或者反過來,lpush和rpop)能實現隊列的功能。
Set(集合)

Redis 中的 set和Java中的HashSet 有些類似,它內部的鍵值對是無序的、少數的。它的內部實現相當于一個特殊的字典,字典中所有的value都是一個值 NULL。當集合中最后一個元素被移除之后,數據結構被自動刪除,內存被回收。xMR28資訊網——每日最新資訊28at.com

應用:xMR28資訊網——每日最新資訊28at.com

  • 抽獎活動:存儲某活動中中獎的用戶ID ,因為有去重功能,可以保證同一個用戶不會中獎兩次。
zset(有序集合)

Sorted-Sets中的每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來為集合中的成員進行從小到大的排序。成員是少數的,但是分數(score)卻是可以重復的。xMR28資訊網——每日最新資訊28at.com

應用: 作為有序的,不可重復的列表,可以做一些排行榜相關的場景:xMR28資訊網——每日最新資訊28at.com

  • 排行榜(商品銷量,視頻評分,用戶游戲分數)
  • 新聞熱搜

說下緩存擊穿,緩存穿透,緩存雪崩有什么區別?

緩存擊穿

大量緩存數據在同一時間過期(失效)或者 Redis 故障宕機時,如果此時有大量的用戶請求,都無法在 Redis 中處理,于是全部請求都直接訪問數據庫,從而導致數據庫的壓力驟增,嚴重的會造成數據庫宕機,從而形成一系列連鎖反應,造成整個系統崩潰,這就是緩存雪崩xMR28資訊網——每日最新資訊28at.com

緩存擊穿

我們的業務通常會有幾個數據會被頻繁地訪問,比如秒殺活動,這類被頻地訪問的數據被稱為熱點數據。xMR28資訊網——每日最新資訊28at.com

如果緩存中的某個熱點數據過期了,此時大量的請求訪問了該熱點數據,就無法從緩存中讀取,直接訪問數據庫,數據庫很容易就被高并發的請求沖垮,這就是緩存擊穿xMR28資訊網——每日最新資訊28at.com

緩存穿透

當發生緩存雪崩或擊穿時,數據庫中還是保存了應用要訪問的數據,一旦緩存恢復相對應的數據,就可以減輕數據庫的壓力,而緩存穿透就不一樣了。xMR28資訊網——每日最新資訊28at.com

當用戶訪問的數據,既不在緩存中,也不在數據庫中,導致請求在訪問緩存時,發現緩存缺失,再去訪問數據庫時,發現數據庫中也沒有要訪問的數據,沒辦法構建緩存數據,來服務后續的請求。那么當有大量這樣的請求到來時,數據庫的壓力驟增,這就是緩存穿透的問題。xMR28資訊網——每日最新資訊28at.com

主鍵索引和唯一索引的區別

  • 主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。
  • 主鍵創建后一定包含一個唯一性索引,唯一性索引并不一定就是主鍵。
  • 唯一性索引列允許空值,而主鍵列不允許為空值。
  • 主鍵可以被其他表引用為外鍵,而唯一索引不能。
  • 一個表最多只能創建一個主鍵,但可以創建多個唯一索引。
  • 主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。
  • 在RBO模式下,主鍵的執行計劃優先級要高于唯一索引。兩者可以提高查詢的速度。

約束主要有:主鍵約束、外鍵約束、非空約束、檢査約束(bentwen and ,大于、小于、等于、不等于)、唯一約束。xMR28資訊網——每日最新資訊28at.com

索引為什么使用B+樹,而不使用跳表?

B+樹是多叉樹結構,每個結點都是一個16k的數據頁,能存放較多索引信息,所以扇出很高。三層左右就可以存儲2kw左右的數據(知道結論就行,想知道原因可以看之前的文章)。也就是說查詢一次數據,如果這些數據頁都在磁盤里,那么最多需要查詢三次磁盤IO。xMR28資訊網——每日最新資訊28at.com

跳表是鏈表結構,一條數據一個結點,如果最底層要存放2kw數據,且每次查詢都要能達到二分查找的效果,2kw大概在2的24次方左右,所以,跳表大概高度在24層左右。最壞情況下,這24層數據會分散在不同的數據頁里,也即是查一次數據會經歷24次磁盤IO。xMR28資訊網——每日最新資訊28at.com

因此存放同樣量級的數據,B+樹的高度比跳表的要少,如果放在mysql數據庫上來說,就是磁盤IO次數更少,因此B+樹查詢更快。xMR28資訊網——每日最新資訊28at.com

而針對寫操作,B+樹需要拆分合并索引數據頁,跳表則獨立插入,并根據隨機函數確定層數,沒有旋轉和維持平衡的開銷,因此跳表的寫入性能會比B+樹要好。xMR28資訊網——每日最新資訊28at.com

計算機網絡的多層模型簡要介紹

  • 應用層(Application):為用戶的應用程序提供網絡服務
  • 表示層(Presentation):將信息表示為一定形式和格式的數據流
  • 會話層(Session):負責通信主機之間會話的建立、管理和拆除,協調通信雙方的會話
  • 傳輸層(Transport):負責通信主機間端到端的連接
  • 網絡層(Network):負責將分組從源機送到目的機,包括尋址和最優路徑選擇等
  • 數據鏈路層(Data Link):提供可靠的幀傳遞,實現差錯控制、流控等等
  • 物理層(Physical):提供透明的比特流(01流)傳遞

http2.0相比與http1.1的優化

HTTP2.0(Hypenext TransferProtocol version2)是超文本傳輸協議的第二版,HTTP2.0相比于HTTP1x,大幅度的提升了web性能,同時向下兼容HTTP1.X協議版 本。xMR28資訊網——每日最新資訊28at.com

主要核心優勢有xMR28資訊網——每日最新資訊28at.com

1、采用二進制格式傳輸數據,而非htp1.1文本格式,二進制格式在協議的解析和優化擴展上帶來了跟多的優勢和可能xMR28資訊網——每日最新資訊28at.com

2、對消息頭采用Hpack進行壓縮傳輸,能夠節省消息頭占用的網絡流量,htp1.1每次請求,都會攜帶大量冗余的頭信息,浪費了很多寬帶資源,xMR28資訊網——每日最新資訊28at.com

3、異步連接多路復用xMR28資訊網——每日最新資訊28at.com

4、Server Push,服務器端能夠更快的把資源推送到客戶端。xMR28資訊網——每日最新資訊28at.com

5、保持與HTTP 1.1語義的向后兼容性也是該版本的一個關鍵xMR28資訊網——每日最新資訊28at.com

本文轉載自微信公眾號「王中陽Go」,作者「王中陽Go」,可以通過以下二維碼關注。xMR28資訊網——每日最新資訊28at.com

xMR28資訊網——每日最新資訊28at.com

轉載本文請聯系「王中陽Go」公眾號。xMR28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-98859-0.html阿里校招面試,我來瞅瞅怎么回事

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 三星電子業績大好,2024 上半年員工 TAI 獎金飆升

下一篇: 你有多久沒在 JS 中使用 class 了?

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品手机在线| 欧美国产日韩xxxxx| 一区二区欧美日韩视频| 亚洲视频福利| 小处雏高清一区二区三区| 久久精品一区二区三区不卡牛牛| 久久综合久久美利坚合众国| 欧美精品一卡| 国产精品视频男人的天堂| 一区在线播放| 亚洲神马久久| 久久久精品2019中文字幕神马| 欧美国产激情| 国产精品女人毛片| 一区一区视频| 中日韩视频在线观看| 久久激情视频免费观看| 欧美二区不卡| 国产欧美日韩视频在线观看| 亚洲激情欧美激情| 亚洲欧美日韩国产中文| 蜜桃精品久久久久久久免费影院| 欧美日韩三级电影在线| 韩日精品视频| 亚洲图中文字幕| 男人天堂欧美日韩| 国产精品女人网站| 亚洲欧洲日本mm| 欧美一区二区三区四区视频| 欧美国产日韩精品免费观看| 国产日韩欧美不卡| 99re热精品| 久久九九99| 欧美四级在线观看| 亚洲国产精品电影在线观看| 亚洲欧美精品| 欧美屁股在线| 在线国产日韩| 性欧美video另类hd性玩具| 欧美精品麻豆| 激情综合在线| 亚洲中字黄色| 欧美另类专区| 尤物99国产成人精品视频| 亚洲在线视频一区| 欧美精品一区二区三区在线看午夜 | 国产欧美在线视频| 亚洲美女精品成人在线视频| 久久福利影视| 国产精品免费视频观看| 亚洲精品免费一二三区| 久久久久久高潮国产精品视| 国产精品久久网站| 日韩一区二区久久| 免费在线观看日韩欧美| 国产视频亚洲| 亚洲女同精品视频| 欧美日韩美女| 亚洲国产日韩在线| 另类欧美日韩国产在线| 国产精品专区第二| 亚洲一二三区精品| 欧美日韩大片| 亚洲精品日韩综合观看成人91| 久久美女性网| 国产一区二区三区高清在线观看 | 欧美有码在线观看视频| 欧美午夜片在线免费观看| 亚洲精品久久久久久下一站| 久久综合网hezyo| 激情视频一区二区| 久久久91精品国产| 国产香蕉久久精品综合网| 亚洲欧洲99久久| 国产精品免费观看在线| 亚洲丝袜av一区| 欧美偷拍一区二区| 一级日韩一区在线观看| 欧美乱妇高清无乱码| 亚洲六月丁香色婷婷综合久久| 免费在线成人av| 亚洲国产成人精品视频| 女人香蕉久久**毛片精品| 136国产福利精品导航网址| 久久躁日日躁aaaaxxxx| 雨宫琴音一区二区在线| 久久一区二区三区av| 影音先锋中文字幕一区| 免费在线观看精品| 亚洲国产成人久久综合| 欧美成人精品| 91久久精品一区| 欧美精品午夜视频| 99视频精品| 国产精品成人在线观看| 亚洲一区二区少妇| 国产酒店精品激情| 久久国产精品一区二区三区四区| 韩国av一区| 久久久久**毛片大全| 在线成人性视频| 欧美精品在线观看91| 亚洲神马久久| 国产一区二区三区精品久久久| 久久久久久亚洲精品中文字幕 | 夜夜嗨av一区二区三区中文字幕| 欧美日韩亚洲综合| 亚洲欧美视频在线观看| 国产一区二区精品久久| 亚洲一区二区三区影院| 国产欧美一区二区三区另类精品| 久久成人这里只有精品| 亚洲第一网站| 欧美日韩在线高清| 小处雏高清一区二区三区| 好吊色欧美一区二区三区视频| 欧美成人精品一区二区三区| 一区二区三区毛片| 国产亚洲精品综合一区91| 裸体素人女欧美日韩| 日韩一级成人av| 国产精品一区一区| 老司机成人在线视频| 99视频精品| 国产日韩在线看| 欧美激情精品久久久久久免费印度| 中文高清一区| 黄色一区二区在线| 欧美日韩一区在线观看视频| 欧美在线观看网址综合| 亚洲精品国产系列| 国产精品一二三| 免费观看日韩av| 亚洲中无吗在线| 亚洲黄色三级| 国产精品日韩久久久| 免费国产一区二区| 亚洲影视综合| 亚洲国产清纯| 国产九色精品成人porny| 欧美寡妇偷汉性猛交| 欧美一二三区在线观看| 亚洲剧情一区二区| 国产午夜精品全部视频在线播放 | 国产精品萝li| 蜜臀99久久精品久久久久久软件 | 嫩草成人www欧美| 亚洲欧美国产高清| 亚洲欧洲偷拍精品| 国产亚洲欧美一区在线观看| 欧美日韩高清在线| 久久人人97超碰国产公开结果| 一区二区三区**美女毛片| 激情另类综合| 国产乱码精品一区二区三区av| 欧美激情bt| 久久一区二区三区av| 欧美一区二区三区免费视| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲国产岛国毛片在线| 国产精品自在线| 欧美日韩精品一二三区| 欧美成人资源| 久久免费视频这里只有精品| 亚洲欧美www| 一本色道久久综合亚洲精品按摩| 欲香欲色天天天综合和网| 国产精品爽黄69| 欧美日韩视频在线一区二区观看视频 | **欧美日韩vr在线| 国产一区二区三区在线观看精品 | 亚洲激情网站免费观看| 国产综合视频在线观看| 国产精品av免费在线观看| 欧美激情一区在线| 六十路精品视频| 久久精品一二三区| 午夜一级在线看亚洲| 亚洲丝袜av一区| 一区二区三区偷拍| 日韩视频专区| 亚洲精品黄色| 亚洲欧洲日产国码二区| 在线免费观看日本欧美| 韩国精品一区二区三区| 国产欧美精品在线播放| 国产精品日韩欧美一区二区三区| 欧美日韩一区二区三区在线看| 麻豆视频一区二区| 久久这里有精品15一区二区三区| 久久久久成人精品免费播放动漫| 欧美一区二区三区视频在线观看 | 久久久久久婷| 久久久久国产精品厨房| 久久久九九九九| 久久久国际精品| 久久久久国产成人精品亚洲午夜| 久久大香伊蕉在人线观看热2| 午夜亚洲福利| 久久激情五月婷婷| 久久男女视频| 欧美成年人视频网站| 欧美国产日本韩| 欧美激情在线播放|