侵權投訴

跳表的基本概念和實際應用

算法與數據結構 ? 2021-09-02 10:45 ? 次閱讀

跳躍鏈表及其應用是非常熱門的問題,面試時也非常常問,深入了解其中奧秘大有裨益,不吹了,直接開始!

跳躍鏈表的基本概念

初識跳表

跳躍列表是一種數據結構。它允許快速查詢一個有序連續元素的數據鏈表。跳躍列表的平均查找和插入時間復雜度都是O(log n),優于普通隊列的O(n)。

跳躍列表由威廉·普發明,發明者對跳躍列表的評價:跳躍鏈表是在很多應用中有可能替代平衡樹而作為實現方法的一種數據結構。

跳躍列表的算法有同平衡樹一樣的漸進的預期時間邊界,并且更簡單、更快速和使用更少的空間。

這種數據結構是由William Pugh(音譯為威廉·普)發明的,最早出現于他在1990年發表的論文《Skip Lists: A Probabilistic Alternative to Balanced Trees》。

我在谷歌上找到一篇作者關于跳表的論文,感興趣強烈建議下載閱讀

https://epaperpress.com/sortsearch/download/skiplist.pdf

從中我們獲取到的信息是:跳表在動態查找過程中使用了一種非嚴格的平衡機制來讓插入和刪除都更加便利和快捷,這種非嚴格平衡是基于概率的,而不是平衡樹的嚴格平衡。

說到非嚴格平衡,首先想到的是紅黑樹RbTree,它同樣采用非嚴格平衡來避免像AVL那樣調整樹的結構,這里就不展開講紅黑樹了,看來跳表也是類似的路子,但是是基于概率實現的。

動態查找的數據結構

所謂動態查找就是查找的過程中存在元素的刪除和插入,這樣就對實現查找的數據結構有一定的挑戰,因為在每次刪除和插入時都要調整數據結構,來保持秩序。

可以作為查找數據結構的包括:

線性結構:數組、鏈表

非線性結構:平衡樹

來分析一下各種數據結構在應對動態查找時的優劣吧!

數組結構

數組結構簡單內存連續,可以實現二分查找等基于下標的操作,我一直認為數組的殺手锏就是下標,連續的內存也帶來了問題。

當進行插入和刪除時就面臨著整體的調整,就像在火車站排隊買票,隊頭走一個整個隊伍向前挪一步,有加塞的后面的又整體向后挪一步,這種整體移動操作在數組結構中性能損耗很大,并且在大數據量時對連續內存要求很高,當然這個在大內存機器上可能沒有什么問題。

如圖插入6和刪除5時 數組元素的移動:

鏈表結構

鏈表結構也比較簡單,但是不要求內存連續,不連續也就沒有下標可以加速,但是鏈表在執行刪除和插入時影響的只是插入刪除點的前后元素,影響非常小。

但是每次查找元素是需要進行遍歷,就算我知道某個元素一定在大致的什么位置,也只能一步步走過去,看到這里要覺得有優化的空間,那你也蠻厲害的了,說不定早幾年跳表就是你的發明了。

如圖刪除元素5和插入元素49時的處理:

平衡樹

平衡樹也是處理動態查找問題的一把好手,樹一般是基于鏈表實現的,只不過樹的節點之間并不是鏈表簡單的線性關系,會有兄弟姐妹父親等節點,并且各個層級有數量的限制,可以看到樹其實還是蠻復雜的。

節點需要存儲的信息很多,各個指針指來指去,復雜的結構增加了調整平衡性的難度,不同情況下的左旋右旋,所以出現了紅黑樹這種工程版本的AVL,但是在實際場景中可能并不需要這些兄弟姐妹父親關系,有種殺雞宰牛刀的意味了。

紅黑樹的節點結構定義:

#define COLOR_RED 0x0#define COLOR_BLACK 0x1

typedef struct RBNode{

int key;

unsigned char color;

struct RBNode *left;

struct RBNode *right;

struct RBNode *parent;

}rb_node_t, *rb_tree_t;

另外紅黑樹調整屬性過程中插入分為3種情況,刪除分為4種情況,還是比較難以理解的,除非你穿紅上衣&黑褲子來瘋狂暗示面試官,要不然被問到的概率還不太大。

三種結構對比

從上面的對比可以看到:數組并不能很好滿足要求,鏈表在搜索過程又顯得更笨拙,平衡樹又有點復雜,到底該怎么辦?

跳表的雛形

上面的三類結構都存在一些問題,所以要進行改造,可以看到數組和平衡樹的某些特性決定了它們不容易被改造(數組內存連續性、平衡樹節點多指針和層級關系),相反鏈表最有潛力被改造優化。

在有序鏈表中插入和刪除都比較簡單,搜索時無法依靠下標只能遍歷,但是明明知道要走兩步可以到達目的地,偏偏只能一步步走,這就是痛點。

如圖演示了O(n)遍歷元素35和跳躍搜索元素35的過程:

貌似看到了曙光,那么如何實現跳躍呢?

沒錯!給鏈表加索引,讓索引告訴我們下一步該跳到哪里。

看到這里又讓我想起來那個經典的中間層理論,遇到問題,試著加個中間層試試,或許就完美解決了。

跳躍鏈表的實現原理

前面說了可以給普通鏈表加索引來解決,但是具體該怎么操作,以及其中有什么難點?一步步來分析。

在工程中對跳表索引層數和結點是否作為索引結點,是其很重要的屬性,后面就詳細講一下,現在先看一種簡單場景,說明索引帶來的便利性。

簡單的索引

選擇每隔1個結點為索引結點,并且索引為一層,雖然在工程中這種形式比較標準化,不過足以說明索引帶來的加速。

可以將鏈表中的偶數序號節點增加一層指針,讓其指向下一個偶數節點,如圖所示:

搜索過程:

加入要搜索值為55的節點,則先在上層進行搜索,由16跳到38,在38的下一跳將到達72,因此向下降一級繼續類似的搜索,則找到55。

多級索引

基于偶數節點增加索引并且只有兩層的情況下,最高層的節點數是n/2,整體來看搜索的復雜度降低為O(n/2),并不要小看這個1/2的系數,看到這里會想 增加索引層數到k,那么復雜度將指數降低為O(n/2^k)。

索引層數不是無休止增加的,取決于該層索引的節點數量,如果該層的索引的節點數量等于2了,那么再往上加層也就沒有意義了,畫個圖看一下:

這個非常好理解,如果所在層索引結點只有1個,比如4層索引的結點16,只能順著16向下遍歷,無法向后跳到4層其他結點,因此當所在層索引結點數量等于2,則到達最高索引層,這個約束在分析跳表復雜度時很重要。

索引層數和索引結點密度

跳表的復雜度和索引層數、索引結點的稀疏程度有很大關系。

索引層數我們從上面也看到了,稀疏程度相當于索引結點的數量比例,如果跳表的索引結點數量很少,那么將接近退化為普通鏈表,這種情況在數據量是較大時非常明顯,畫圖看下(藍色部分表示有很多結點):

圖中可以看到雖然有索引層,但是索引結點數量相對全部數據比例較低,這種情況下搜索35相比無索引情況優勢并不明顯。

所以跳表的效率和索引層數和索引結點的密度有密切的關系,當然索引結點太多也就等于沒有索引了。

太少的索引結點和太多的索引結點都是一樣的低效。

復雜度分析

從前面的分析可知,跳表的復雜度和索引層數m以及索引結點間隙d有直接關系,其中索引結點間隙理解為相隔幾個結點出現索引結點,體現了對應層索引結點的稀疏程度,在無索引結點時只能遍歷無法跳躍。

如何確定最高索引層數m呢?

如果一個鏈表有 n 個結點,如果每兩個結點取出一個結點建立索引,那么第一級索引的結點數是 n/2,第二級索引的結點數是n/4,以此類推第 m 級索引的結點數為 n/(2^m),前面說過最高層結點數為2,因此存在關系:

算上最底層的原始鏈表,整個跳表的高度為h=logn(底數為2),每一層需要遍歷的結點數是d,那么整個過程的復雜度為:O(d*logn)。

d表明了層間結點的稀疏程度,也就是每隔2個結點選取索引結點、或者每隔3個結點選取索引結點,每個4個結點選取索引結點。..。..

最密集的情況下d=2,借用知乎某大佬的文章的圖片:

但是索引結點密集也意味著存儲空間的增加,跳表相比較普通鏈表就是典型的用空間換時間的數據結構,這樣就達到了AVL的復雜度O(logn)。

跳表的空間存儲

以d=2的最密集情況為例,計算跳表的索引結點總數:2+4+8+.。..。.n/8+n/4+n/2=n-2

b94b930c-0b67-11ec-8fb8-12bb97331649.png

由等比數列求和公式得d=2的跳表額外空間為O(n-2)。

跳表的插入和刪除

工程中的跳表并不嚴格要求索引層結點數量遵循2:1的關系,因為這種要求將導致插入和刪除數據時的調整,成本很大。

跳表的每個插入的結點在插入時進行選擇是否作為索引結點,如果作為索引結點則隨機出層數,整個過程都是基于概率的,但是在大數據量時卻能很好地解決索引層數和結點數的權衡。

我們針對插入和刪除來看下基本的操作過程吧!

跳表元素17插入:

鏈表的插入和刪除是結合搜索過程完成的,貼一張William Pugh在論文中給出的在跳表中插入元素17的過程圖(暫時忽略結點17是否作為索引結點以及索引層數,后面會詳細說明):

跳表元素1刪除:

跳表元素的刪除與普通鏈表相比增加了索引層的判斷,如果結點是非索引結點則正常處理,如果結點是索引結點那邊需要進行索引層結點的處理。

跳躍鏈表的應用

一般討論查找問題時首先想到的是平衡樹和哈希表,但是跳表這種數據結構也非常犀利,性能和實現復雜度都可以和紅黑樹媲美,甚至某些場景由于紅黑樹,從1990年被發明目前廣泛應用于多種場景中,包括Redis、LevelDB等數據存儲引擎中,后續將詳細介紹。

跳表在Redis中的應用

ZSet結構同時包含一個字典和一個跳躍表,跳躍表按score從小到大保存所有集合元素。字典保存著從member到score的映射。這兩種結構通過指針共享相同元素的member和score,不會浪費額外內存。

typedef struct zset {

dict *dict;

zskiplist *zsl;

} zset;

ZSet中的字典和跳表布局:

ZSet中跳表的實現細節

隨機層數的實現原理

跳表是一個概率型的數據結構,元素的插入層數是隨機指定的。Willam Pugh在論文中描述了它的計算過程如下:指定節點最大層數 MaxLevel,指定概率 p, 默認層數 lvl 為1

生成一個0~1的隨機數r,若r《p,且lvl《MaxLevel ,則lvl ++

重復第 2 步,直至生成的r 》p 為止,此時的 lvl 就是要插入的層數。

論文中生成隨機層數的偽碼:

b9d793ca-0b67-11ec-8fb8-12bb97331649.png

在Redis中對跳表的實現基本上也是遵循這個思想的,只不過有微小差異,看下Redis關于跳表層數的隨機源碼src/z_set.c:

/* Returns a random level for the new skiplist node we are going to create.

* The return value of this function is between 1 and ZSKIPLIST_MAXLEVEL

* (both inclusive), with a powerlaw-alike distribution where higher

* levels are less likely to be returned. */

int zslRandomLevel(void) {

int level = 1;

while ((random()&0xFFFF) 《 (ZSKIPLIST_P * 0xFFFF))

level += 1;

return (level《ZSKIPLIST_MAXLEVEL) ? level : ZSKIPLIST_MAXLEVEL;

}

其中兩個宏的定義在redis.h中:

#define ZSKIPLIST_MAXLEVEL 32 /* Should be enough for 2^32 elements */#define ZSKIPLIST_P 0.25 /* Skiplist P = 1/4 */

可以看到while中的:

(random()&0xFFFF) 《 (ZSKIPLIST_P*0xFFFF)

第一眼看到這個公式,因為涉及位運算有些詫異,需要研究一下Antirez為什么使用位運算來這么寫?

最開始的猜測是random()返回的是浮點數[0-1],于是乎在線找了個浮點數轉二進制的工具,輸入0.5看了下結果:

可以看到0.5的32bit轉換16進制結果為0x3f000000,如果與0xFFFF做與運算結果還是0,不符合預期。

我印象中C語言的math庫好像并沒有直接random函數,所以就去Redis源碼中找找看,于是下載了3.2版本代碼,也并沒有找到random()的實現,不過找到了其他幾個地方的應用:

random()在dict.c中的使用:

b9ee0a56-0b67-11ec-8fb8-12bb97331649.png

random()在cluster.c中的使用:

b9fa51f8-0b67-11ec-8fb8-12bb97331649.png

看到這里的取模運算,后知后覺地發現原以為random()是個[0-1]的浮點數,但是現在看來是uint32才對,這樣Antirez的式子就好理解了。

ZSKIPLIST_P*0xFFFF

由于ZSKIPLIST_P=0.25,所以相當于0xFFFF右移2位變為0x3FFF,假設random()比較均勻,在進行0xFFFF高16位清零之后,低16位取值就落在0x0000-0xFFFF之間,這樣while為真的概率只有1/4,更一般地說為真的概率為1/ZSKIPLIST_P。

對于隨機層數的實現并不統一,重要的是隨機數的生成,在LevelDB中對跳表層數的生成代碼是這樣的:

template 《typename Key, typename Value》

int SkipList《Key, Value》::randomLevel() {

static const unsigned int kBranching = 4;

int height = 1;

while (height 《 kMaxLevel && ((::Next(rnd_) % kBranching) == 0)) {

height++;

}

assert(height 》 0);

assert(height 《= kMaxLevel);

return height;

}

uint32_t Next( uint32_t& seed) {

seed = seed & 0x7fffffffu;

if (seed == 0 || seed == 2147483647L) {

seed = 1;

}

static const uint32_t M = 2147483647L;

static const uint64_t A = 16807;

uint64_t product = seed * A;

seed = static_cast《uint32_t》((product 》》 31) + (product & M));

if (seed 》 M) {

seed -= M;

}

return seed;

}

可以看到leveldb使用隨機數與kBranching取模,如果值為0就增加一層,這樣雖然沒有使用浮點數,但是也實現了概率平衡。

跳表結點的平均層數

我們很容易看出,產生越高的節點層數出現概率越低,無論如何層數總是滿足冪次定律越大的數出現的概率越小。

如果某件事的發生頻率和它的某個屬性成冪關系,那么這個頻率就可以稱之為符合冪次定律。

冪次定律的表現是少數幾個事件的發生頻率占了整個發生頻率的大部分, 而其余的大多數事件只占整個發生頻率的一個小部分。

冪次定律應用到跳表的隨機層數來說就是大部分的節點層數都是黃色部分,只有少數是綠色部分,并且概率很低。

定量的分析如下:

節點層數至少為1,大于1的節點層數滿足一個概率分布。

節點層數恰好等于1的概率為p^0(1-p)

節點層數恰好等于2的概率為p^1(1-p)

節點層數恰好等于3的概率為p^2(1-p)

節點層數恰好等于4的概率為p^3(1-p)

依次遞推節點層數恰好等于K的概率為p^(k-1)(1-p)

因此如果我們要求節點的平均層數,那么也就轉換成了求概率分布的期望問題了,靈魂畫手的我再次上線:

表中P為概率,V為對應取值,給出了所有取值和概率的可能,因此就可以求這個概率分布的期望了。

方括號里面的式子其實就是高一年級學的等比數列,常用技巧錯位相減求和,從中可以看到結點層數的期望值與1-p成反比。

對于Redis而言,當p=0.25時結點層數的期望是1.33。

在Redis源碼中有詳盡的關于插入和刪除調整跳表的過程,本文就不再展開了,代碼并不算難懂,都是純C寫的沒有那么多炫技的特效,放心大膽讀起來。

小結

本文主要講述了跳表的基本概念和簡單原理、以及索引結點層級、時間和空間復雜度等相關部分,并沒有涉及概率平衡以及工程實現部分,并且以Redis中底層的數據結構zset作為典型應用來展開,進一步看到跳躍鏈表的實際應用。

需要注意的是跳躍鏈表的原理、應用、實現細節也是面試的熱點問題,值得大家花費時間來研究掌握。

責任編輯:haq

原文標題:20 張圖擊潰,跳表!

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
分享:

評論

相關推薦

如何選擇異常檢測算法

異常檢測(也稱為離群點檢測)是檢測異常實例的任務,異常實例與常規實例非常不同。這些實例稱為異常或離群....
的頭像 Imagination Tech 發表于 10-25 09:15 ? 138次 閱讀

什么是雙向數據綁定?

什么是雙向數據綁定? 什么是Object.definePropety? ...
發表于 10-25 07:21 ? 0次 閱讀

華為開發者大會2021智能硬件開發—正確的數據分級分類

2021年10月22日~24日,華為將在中國松山湖舉行2021華為開發者大會,聚焦鴻蒙系統、智能家居....
的頭像 汽車玩家 發表于 10-23 15:21 ? 143次 閱讀
華為開發者大會2021智能硬件開發—正確的數據分級分類

華為開發者HarmonyOS零基礎入門:UI組件設計開發實踐

華為開發者HarmonyOS零基礎入門:UI組件設計開發實踐之圖庫應用介紹,應用數據加載顯示模型圖片....
的頭像 lhl545545 發表于 10-23 10:58 ? 177次 閱讀
華為開發者HarmonyOS零基礎入門:UI組件設計開發實踐

華為開發者HarmonyOS零基礎入門:系統能力調用示例

華為開發者HarmonyOS零基礎入門:系統能力調用示例,修改組件屬性頁面加載參數接收數據連接,優化....
的頭像 lhl545545 發表于 10-23 10:44 ? 195次 閱讀
華為開發者HarmonyOS零基礎入門:系統能力調用示例

分布式鎖三個屬性和兩大類

“分布式鎖”這個問題快被說爛了,奈何筆者實在沒有找到一個滿意的答案,故記錄自己尋找答案、總結的過程。....
的頭像 數據分析與開發 發表于 10-22 17:30 ? 270次 閱讀

埋點實踐過程中遇到的一些問題

埋點本身現在已經有太多的集成解決方案,神策、諸葛IO、GIO,但是在實踐的過程中仍然還是會碰都很多問....
的頭像 數據分析與開發 發表于 10-22 16:33 ? 226次 閱讀

支持數據轉發和基于FPGA的圖像處理卸載的圖像采集卡

單輸入至四輸入的CoaXPress 2.0圖像采集卡,支持數據轉發和基于FPGA的圖像處理卸載 用于....
的頭像 廣州虹科電子科技有限公司 發表于 10-22 10:38 ? 675次 閱讀
支持數據轉發和基于FPGA的圖像處理卸載的圖像采集卡

思邁特軟件Smartbi:數據看板搭建的常見錯誤分析

但在實際工作中,由于拉新、留存、轉化分別由市場、產品、運營三個部門負責,用戶增長數據分隔在三個部門的....
發表于 10-22 10:37 ? 35次 閱讀

北明軟件參加華為開發者大會2021

據消息,北明軟件參加華為開發者大會2021,北明軟件將通過“軟件定義世界,數據驅動未來”愿景,全方位....
的頭像 lhl545545 發表于 10-22 09:31 ? 282次 閱讀

NVIDIA為輕量級地圖和精確感知提供高性能計算

NVIDIA DRIVE Orin為輕量級地圖和精確感知提供高性能計算。 自動駕駛卡車需要減輕繪制地....
的頭像 NVIDIA英偉達企業解決方案 發表于 10-22 09:26 ? 169次 閱讀

怎樣去提取基于視頻流的興趣HOG特征呢

怎樣去提取基于視頻流的興趣HOG特征呢?其具體原理是什么?...
發表于 10-22 06:01 ? 0次 閱讀

淺析數據分析之指標設計

數據指標,并不是數據分析和業務同學的專屬模塊。日常會用到數據指標的,還包括開發(比如機器資源利用率,....
的頭像 數據分析與開發 發表于 10-21 14:27 ? 199次 閱讀

數據分析如何中看又中用?送你一套方案大大提升工作效率

相信大多數永洪BI的用戶都和我有著同一個苦惱,報告做得越來越復雜后,要找到某個組件變難了。只能點擊到....
發表于 10-21 10:16 ? 92次 閱讀
數據分析如何中看又中用?送你一套方案大大提升工作效率

GPIB儀器控制設備使用GPIB接口將儀器集成到系統中

NI 致力于為半導體、電子、交通運輸、航空航天與國防、學術等諸多領域的客戶提供服務,主要產品包括數據....
的頭像 易絡盟電子 發表于 10-20 17:28 ? 340次 閱讀

曙光政務數據中臺系統江蘇工信廳重點首版產品公示

近日,江蘇省工業和信息化廳發布了“2021年江蘇省重點領域首版次軟件產品征集擬推廣首版次軟件產品名單....
的頭像 中科曙光 發表于 10-20 16:36 ? 372次 閱讀

簡述ElasticSearch的實現

1.近實時搜索 1.1 實時與近實時 實時搜索(Real-time Search)很好理解,對于一個....
的頭像 馬哥Linux運維 發表于 10-20 14:45 ? 281次 閱讀

探究超大Transformer語言模型的分布式訓練框架

NVIDIA Megatron 是一個基于 PyTorch 的框架,用于訓練基于 Transform....
的頭像 NVIDIA英偉達企業解決方案 發表于 10-20 09:25 ? 360次 閱讀

一種通過配方功能實現簡單高效控制的方法解析

1 前言 物聯網的應用大多基于對各種數據的采集和控制,而一般的工程項目中產生的數據數量都很龐大,若是....
的頭像 廣州虹科電子科技有限公司 發表于 10-20 09:13 ? 412次 閱讀
一種通過配方功能實現簡單高效控制的方法解析

氣體傳感器BME688常見問題

在使用傳感器的過程中,你是否有很多問號 ——在采樣時需要強制空氣進入BME688嗎? ——由于數據是....
的頭像 Bosch Sensortec 發表于 10-19 17:36 ? 359次 閱讀
氣體傳感器BME688常見問題

紫光集團重整最新消息:已確認千億債權規模

天眼查數據顯示,紫光集團公司已經于近日正式開始重整,并已確定債權規模1081.81億元。并且在未來集....
的頭像 lhl545545 發表于 10-19 14:47 ? 665次 閱讀

華為劉康:出面向5.5G目標網絡架構 以電信云原生為基礎

[阿聯酋,迪拜,2021年10月13日] 今日,第六屆5G核心網峰會(5G Core Summit ....
的頭像 華為云核心網 發表于 10-19 14:41 ? 318次 閱讀

人工智能如何影響工業物聯網

■ 或許這就是為什么在沒有IIoT提供關鍵幫助的情況下,企業很難在工業4.0帶來的大規模數字轉型中能....
的頭像 貿澤電子 發表于 10-19 10:31 ? 1386次 閱讀

雷諾汽車使用深度學習網絡估計 NOx 排放量

雷諾汽車構建并訓練了一個長短期記憶 (LSTM) 網絡,該網絡預測 NOx 水平的準確率達到了 85....
的頭像 MATLAB 發表于 10-19 10:12 ? 262次 閱讀

技術和架構選擇比以往更重要

在后疫情時代當企業開始嘗試復興和以全新的面貌示人,有一點變得顯而易見:技術和架構選擇比以往更重要。 ....
的頭像 英特爾FPGA 發表于 10-19 09:56 ? 227次 閱讀

教你怎樣去搜索淘寶API app店

教你怎樣去搜索淘寶API app店?
發表于 10-19 09:01 ? 0次 閱讀

我國特高壓交直流混聯大電網正式運行

近年來,我國逐步形成特高壓交直流混聯大電網。可滿足大容量直流和大規模新能源接入后提高電網仿真精度和效....
的頭像 lhl545545 發表于 10-18 17:34 ? 1022次 閱讀

數據清洗的步驟是什么

數據清洗是指重復。多余的數據篩選和清除,完整地補充丟失的數據,糾正或刪除錯誤的數據,最后整理成我們可....
發表于 10-18 17:05 ? 40次 閱讀

多功能移動環境監測儀的概述及特點

多功能移動環境監測儀介紹FT-BQX10 【風途】山東風途物聯網科技有限公司氣象站系列有FT-BQX....
發表于 10-18 16:57 ? 68次 閱讀

數據中臺建設的價值和意義

讓數據用起來,產生業務價值是數據中臺建設的第一優先級。至于這個用起來的過程是否是自動化的,是否有大數....
發表于 10-18 16:52 ? 53次 閱讀

微信回應崩了 微信或將推出深度清理新功能

 今天上午微信大部分用戶反映稱微信圖片打不開、已經無法收發圖片、文件,目前微信官方已經對此做出回復稱....
的頭像 lhl545545 發表于 10-18 16:45 ? 560次 閱讀

用在解析云端數據的源碼是怎樣的

用在解析云端數據的源碼是怎樣的?如何去實現這種源碼呢? ...
發表于 10-18 09:00 ? 0次 閱讀

華為創新性地推出“5G新通話”解決方案

在北京國家會議中心舉行的2021年中國國際信息通信展覽會上,由中國通信企業協會發起的“ICT中國(2....
的頭像 華為云核心網 發表于 10-15 17:27 ? 522次 閱讀

華為發布SD-WAN逐包負載分擔方案 提升帶寬利用率

華為SD-WAN逐包負載分擔方案,提升帶寬利用率至90%,讓您的廣域網絡更加高效。
的頭像 華為產品資料 發表于 10-15 16:44 ? 400次 閱讀

教大家如何減小微量水分策略的結果中的誤差

微量水分測定儀采用卡爾——菲休庫侖法,對不同物質進行微量水分測定,是一種可靠的方法,微量水分測定儀成....
發表于 10-15 16:39 ? 32次 閱讀

詳解工業液體密度測試步驟

業液體通常需要進行液體密度的測試來加以控制品質。行業內的測試儀就是搏仕的液體密度測試儀了。下面將演示....
發表于 10-15 16:27 ? 28次 閱讀

音頻電路原理(雙音頻解碼電子電路/TDA2822雙聲道功放電路/音頻放大處理電路)

雙音多頻信號解碼電路是目前在按鍵電話(固定電話、移動電話)、程控交換機及無線通信設備中廣泛應用的集成....
發表于 10-15 16:08 ? 1274次 閱讀
音頻電路原理(雙音頻解碼電子電路/TDA2822雙聲道功放電路/音頻放大處理電路)

淺析壓敏(熱敏)陶瓷粉末水分測試實驗報告

廈門搏仕檢測設備有限公司 ?www.lboshi.cn 18959266236 陶瓷粉末水分含量介紹....
發表于 10-15 15:57 ? 33次 閱讀

探究塑料顆粒密度測試儀實驗報告

密度計品牌:搏仕 型號:BOS-300系列 測試品:塑料顆粒 塑料種類紛多,密度值各不相同,如PP料....
發表于 10-15 15:47 ? 29次 閱讀

塑料水分測定儀測試經驗總結

廈門搏仕檢測設備有限公司 ?www.lboshi.cn 18959266236 塑料水分測定儀針對不....
發表于 10-15 15:38 ? 21次 閱讀

剖析汽車塑料零配件水分測試儀實驗

水分儀品牌:搏仕 ????型號:BOS-180A系列 ????測試品:汽車塑料片 塑料的含水量是影響....
發表于 10-15 15:23 ? 18次 閱讀

四維圖新構建現實世界三維還原的能力賦能智能網聯應用

實時構建現實世界三維還原,將物理世界數字化,是四維圖新近20年來一直努力的方向,通過對物理世界的人、....
的頭像 四維圖新NavInfo 發表于 10-15 14:40 ? 1331次 閱讀

完整關注跨模態轉換器網絡

舞蹈是幾乎所有文化中的一種通用語言,也是如今許多人在當代媒體平臺上表達自己的一種方式。跳舞的能力(組....
的頭像 TensorFlow 發表于 10-15 10:25 ? 214次 閱讀

MySQL緩沖區設計介紹

1. Buffer 與 cache 的區別? Bbuffer 與 Cache 非常類似,因為它們都用....
的頭像 數據分析與開發 發表于 10-15 09:50 ? 181次 閱讀

pandasgui安裝與簡單使用

pandasgui安裝與簡單使用 根據作者的介紹,pandasgui是用于分析 Pandas Dat....
的頭像 數據分析與開發 發表于 10-15 09:46 ? 194次 閱讀

交換模式與路由模式有哪些異同點

交換模式是什么?路由模式又是什么? 交換模式與路由模式有哪些異同點? ...
發表于 10-15 09:35 ? 0次 閱讀

采集與分析用戶行為數據的意義

本文屬于用戶行為數據領域入門級別文章,適合對用戶行為數據略知一二但是對這個主題非常感興趣的同學。 1....
的頭像 數據分析與開發 發表于 10-15 09:32 ? 261次 閱讀

JD-BQX7 七參數便攜式氣象站功能有哪些

七參數便攜式氣象站功能有哪些?在清涼谷旅游風景區的監測使用,滿足風景區氣象監測服務的需求,使得清涼谷....
發表于 10-14 16:29 ? 48次 閱讀

智慧電梯的運用能解決行業哪些需求

電梯作為與百姓生活最為密切相關的特種設備,直接關系人民群眾生命和財產安全,關系經濟發展大局和社會和諧....
發表于 10-14 16:28 ? 36次 閱讀

IBM利用AI 驅動幫助氣候和數據科學家分析海量環境數據集

IBM (紐交所證券代碼:IBM) 發布了一套環境智能應用軟件,利用 AI 幫助企業做好準備并應對可....
的頭像 IBM中國 發表于 10-14 16:01 ? 988次 閱讀

食品檢測設備有哪些,其用途是什么

食品檢測設備【恒美】有哪些,隨著國家經濟的大幅提高以及居民消費水平的普遍提高,休閑食品的食品種類與數....
發表于 10-14 10:43 ? 32次 閱讀

食品檢測儀的工作原理及使用方法

食品檢測儀【恒美 HM-G1200】的操作原理及方法。食品檢測儀【恒美 HM-G1200】因其體積小....
發表于 10-14 10:29 ? 43次 閱讀

TableSQL API和Pyhton上相關的性能優化

一、簡介 1.14 新版本原本規劃有 35 個比較重要的新特性以及優化工作,目前已經有 26 個工作....
的頭像 數據分析與開發 發表于 10-13 17:25 ? 199次 閱讀

膠水固含量測試注意事項

廈門搏仕檢測設備有限公司 ?www.lboshi.cn 18959266236 1、無論是高粘性膠水....
發表于 10-13 16:16 ? 47次 閱讀

神經網絡復雜性的基本下界

最近,人們對深度神經網絡產生了極大的興趣,因為它們在計算機視覺等領域取得了突破性的成果。 盡管如此,....
的頭像 人工智能與大數據技術 發表于 10-13 15:40 ? 250次 閱讀
神經網絡復雜性的基本下界

ARM架構的數據類型定義是什么

ARM架構的數據類型定義是什么? 局部變量和全局變量是什么意思? ...
發表于 10-09 06:32 ? 0次 閱讀

常量和變量有哪些區別

引用和拷貝有什么區別? 常量和變量有哪些區別? ...
發表于 10-08 08:42 ? 0次 閱讀

VS2017是如何實現串口發送及接收數據的

VS2017是如何實現串口發送及接收數據的?有哪些操作步驟? ...
發表于 09-30 07:04 ? 0次 閱讀

怎樣使用代碼來訪問PLC數據

如何配置網絡參數?怎樣使用代碼來訪問PLC數據? 如何使用gitHub開源的組件技術來讀寫西門子plc數據? ...
發表于 09-29 07:42 ? 0次 閱讀

怎樣使用gitHub開源的組件技術來讀寫三菱的plc數據

如何配置網絡參數?怎樣使用代碼來訪問PLC數據? 怎樣使用gitHub開源的組件技術來讀寫三菱的plc數據? ...
發表于 09-29 06:03 ? 0次 閱讀
免费无限看黄app_蜜柚app官网下载入口_成版人黄瓜app