日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

淘宝面试常见问题的答案来了,你看了吗?(一面及答案)

發(fā)布時(shí)間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 淘宝面试常见问题的答案来了,你看了吗?(一面及答案) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、redis sds優(yōu)缺點(diǎn)、擴(kuò)容收縮、擴(kuò)容因子

SDS (簡(jiǎn)單動(dòng)態(tài)字符串)是什么

其實(shí),SDS 是 Redis 中實(shí)現(xiàn)的一種數(shù)據(jù)結(jié)構(gòu),主要用來存儲(chǔ)字符串。

1、那 SDS 與 C 字符串相比有什么優(yōu)勢(shì)呢?

1.1、常數(shù)復(fù)雜度獲取字符串長(zhǎng)度

常規(guī) C 字符串并不記錄自身的長(zhǎng)度信息,所以為了獲取一個(gè) C 字符串的長(zhǎng)度,程序必須遍歷整個(gè)字符串,對(duì)遇到的每個(gè)字符進(jìn)行計(jì)數(shù),直到遇到代表字符串結(jié)尾的空字符為止,這個(gè)操作的復(fù)雜度為 O(N)。

而 SDS 使用結(jié)構(gòu)體實(shí)現(xiàn),結(jié)構(gòu)體中的 len 屬性直接記錄了該 SDS 結(jié)構(gòu)體中 buf 數(shù)組中已使用的長(zhǎng)度,因此獲取字符串長(zhǎng)度時(shí),只需要獲取 len 屬性的值,這個(gè)操作的復(fù)雜度為 O(1)。SDS 結(jié)構(gòu)體的實(shí)現(xiàn)確保了獲取字符串長(zhǎng)度的工作不會(huì)成為 Redis 的性能瓶頸。

1.2、杜絕緩沖區(qū)溢出

因?yàn)椋珻 字符串不記錄自身的長(zhǎng)度,所以當(dāng)進(jìn)行字符串復(fù)制的時(shí)候,如果分配內(nèi)存不夠,就有可能產(chǎn)生緩沖區(qū)溢出。

而在 Redis 中,當(dāng) SDS API 需要對(duì) SDS 進(jìn)行修改時(shí),API 會(huì)先檢查 SDS 的空間是否滿足修改所需的要求,如果不滿足的話,API 會(huì)自動(dòng)將 SDS 的空間擴(kuò)展至執(zhí)行修改所需的大小,然后才執(zhí)行實(shí)際的修改操作。所以,使用 SDS 既不需要手動(dòng)修改 SDS 的空間大小,也不會(huì)出現(xiàn)前面所說的緩沖區(qū)溢出問題。

Redis 中 strcat 的實(shí)現(xiàn)代碼:

sds sdscat(sds s, const char *t) {r

總結(jié)

以上是生活随笔為你收集整理的淘宝面试常见问题的答案来了,你看了吗?(一面及答案)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。