0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

汽車(chē)玩家 ? 來(lái)源:IT知識(shí)課堂 ? 作者:IT知識(shí)課堂 ? 2020-05-05 23:44 ? 次閱讀

面試官: 我看你簡(jiǎn)歷上說(shuō)在你的項(xiàng)目中使用了 Redis,并使用它做了緩存,你能給我介紹一下 Redis 的五種基本數(shù)據(jù)類(lèi)型嗎?

于是說(shuō)道:emmm,Redis 中有 string字符串,hash哈希,list列表,set無(wú)序集合,zset有序集合,這五種數(shù)據(jù)類(lèi)型。

面試官:除了這五種基本數(shù)據(jù)類(lèi)型你還了解過(guò)其他 Redis 提供的額外的數(shù)據(jù)類(lèi)型嗎?你說(shuō)你用 Redis 做了緩存,比如我現(xiàn)在查詢(xún)用戶(hù)用一個(gè)本來(lái)就不會(huì)存在的 ID 去調(diào)你接口,這樣的緩存穿透如何防范呢?

沒(méi)辦法了硬著頭皮往上懟:emm, 有了解過(guò) bitMap,緩存穿透我沒(méi)接觸過(guò)。

面試官:那你有使用過(guò) bitMap 實(shí)現(xiàn)什么功能么?

面試者心里想:完了完了,這場(chǎng)涼了,都怪 FrancisQ ,回去找他算賬。

心里已經(jīng)涼涼:沒(méi)有。。。

寫(xiě)在前面的話(huà)

其實(shí) FrancisQ 只是一個(gè)沒(méi)有參加面試過(guò)的小白,在讀大三,想明年暑期實(shí)習(xí),所以在學(xué)習(xí)之余會(huì)寫(xiě)一些文章進(jìn)行分享并自我總結(jié)(不為賺錢(qián)),如果覺(jué)得 FrancisQ 寫(xiě)的還不錯(cuò)的話(huà),給我點(diǎn)個(gè)贊哦 (#^.^#),其實(shí)我只是想早日到 LV4。當(dāng)然我還有分享其他文章比如 SSM框架的原理解析和實(shí)現(xiàn) ,MySQL 等等,如果感興趣的也可以關(guān)注我。

當(dāng)然各位大佬有實(shí)習(xí)崗位的可以幫幫我哈,哈哈哈。

多余的話(huà)不多說(shuō),今天給大家?guī)?lái)的是 Redis 中的四種特殊的數(shù)據(jù)結(jié)構(gòu) bitmap,hyperLogLog,bloomFilter,GeoHash 。這四種數(shù)據(jù)結(jié)構(gòu)其實(shí)有點(diǎn)類(lèi)似于算法層面了,比如 GeoHash 其實(shí)就是一個(gè) zset,bitmap 就是 string,只是使用的方法不同導(dǎo)致了更多的功能。

BloomFilter

介紹以及場(chǎng)景使用

對(duì) BloomFilter 不熟悉的話(huà),對(duì)下面的圖片大家肯定很熟悉吧?別告訴我你只玩過(guò)王者農(nóng)藥。

BloomFilter 中文名就是布隆過(guò)濾器,作為過(guò)濾器,有沒(méi)有感覺(jué)很像 LOL 中布隆的 E技能(堅(jiān)不可摧) ?

布隆過(guò)濾器是一個(gè)叫 布隆 的人提出來(lái)的,它是通過(guò)一個(gè)大型位數(shù)組和幾個(gè)不同的hash函數(shù)來(lái)實(shí)現(xiàn)的,我們可以把布隆過(guò)濾器理解為一個(gè)不精確的set。我們都知道 set 可以去重,使用 set 可以幫我們判斷集合中是否已經(jīng)存在某些元素并且或者幫我們實(shí)現(xiàn)去重功能。

但是,set 提供精確的去重功能的同時(shí)也給我們帶來(lái)了一個(gè)更大的問(wèn)題——空間消耗。

比如這個(gè)時(shí)候我們進(jìn)行網(wǎng)頁(yè)爬蟲(chóng),需要對(duì)爬過(guò)的 url 進(jìn)行去重以避免爬到已經(jīng)爬過(guò)的網(wǎng)站,如果我們使用 set 那么也就意味著我們需要將所有爬過(guò)的 url 放入集合中,假設(shè)一個(gè) url 64字節(jié),那么一億個(gè) url 意味著我們需要占用 6GB,十億就是 60GB 左右。

請(qǐng)注意,是內(nèi)存。

比如這個(gè)時(shí)候我們要進(jìn)行垃圾郵件或者垃圾短信的過(guò)濾,我們需要從數(shù)十億個(gè)垃圾郵件列表或者垃圾電話(huà)列表中進(jìn)行判斷此時(shí)的郵件或者短信是否是垃圾的。如果我們此時(shí)使用 set 那么占用空間不用我多說(shuō)了,也是百GB級(jí)別的。

上面的面試中我提到了緩存穿透,用戶(hù)故意請(qǐng)求數(shù)據(jù)庫(kù)本來(lái)就不存在的(比如ID = -1),這個(gè)時(shí)候如果不做處理那么肯定會(huì)穿透緩存去查詢(xún)數(shù)據(jù)庫(kù),一個(gè)查詢(xún)還好,如果幾千,幾萬(wàn)個(gè)同時(shí)進(jìn)來(lái)呢?你的數(shù)據(jù)庫(kù)頂?shù)米幔磕敲创藭r(shí)我們使用 set 進(jìn)行處理,占用那么多內(nèi)存空間,你覺(jué)得值得嗎???或者說(shuō),還有沒(méi)有更好的方法了?

上面所講的三個(gè)典型場(chǎng)景,網(wǎng)站去重,垃圾郵件過(guò)濾,緩存穿透,這三個(gè)只要使用 BloomFilter 就能完美解決。

你有沒(méi)有發(fā)現(xiàn),上面三個(gè)場(chǎng)景其實(shí)對(duì)精度要求都不是很高,尤其是垃圾郵件過(guò)濾,其實(shí)偶爾收到幾個(gè)垃圾郵件也無(wú)所謂的。像緩存穿透,也正好符合了 BloomFilter 的一個(gè)特性他說(shuō)有的不一定有,他說(shuō)沒(méi)有的肯定沒(méi)有,我說(shuō)你這個(gè) ID 在數(shù)據(jù)庫(kù)不存在那就真的不存在,老子把你過(guò)濾了就是這么自信,怎么,你打我???

原理探究

聊了這么久的概念和應(yīng)用場(chǎng)景,是不是還對(duì) BloomFilter 怎么能進(jìn)行去重的還是一臉懵逼? 下面我們就聊一聊 BloomFilter 的實(shí)現(xiàn)原理。首先給大家放一張結(jié)構(gòu)圖。

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

其中 F、G、H 是幾種無(wú)偏 Hash 函數(shù),底下是一個(gè)大型的位數(shù)組,當(dāng)我們向 BloomFilter 添加數(shù)據(jù)的時(shí)候,它首先會(huì)將我們的數(shù)據(jù)(key)做幾次hash運(yùn)算(這里就是FGH),每個(gè)hash運(yùn)算都會(huì)得到一個(gè)不用的位數(shù)組索引下標(biāo),此時(shí)我們就將算出的幾個(gè)下標(biāo)的位置的值改成1就行。如果判斷元素是否存在,只要判斷所在的所有索引下標(biāo)的值都是1就行了。

其實(shí)你也發(fā)現(xiàn)了,在 BloomFilter 中會(huì)出現(xiàn)不同key所算出的下標(biāo)重復(fù)了,如上圖所示,這就是誤差的來(lái)源( 你可以配置初始大小和錯(cuò)誤率來(lái)控制誤差 )也是他說(shuō)有的不一定有,他說(shuō)沒(méi)有的肯定沒(méi)有這一特性的根本原因,因?yàn)槿绻?或者存在0那么肯定不存在,如果全是1也有可能是別的幾個(gè)key給放進(jìn)去的1。

基本使用

因?yàn)?BloomFilter 是 Redis 的擴(kuò)展模塊,所以需要額外下載,你可以使用 Docker 進(jìn)行拉取。安裝步驟我不做詳細(xì)解釋?zhuān)憧梢缘剿膅ithub上學(xué)習(xí)怎么安裝

安裝完之后我們就可以愉快的使用啦。

bf.add key element 添加

bf.exists key element 判斷是否存在

bf.madd key element1 element2 ... 批量添加

bf.mexists key element1 element2 ... 批量判斷

命令很簡(jiǎn)單,你可以自己去嘗試。

HyperLogLog

介紹以及場(chǎng)景使用

在 Redis 中還有一個(gè)會(huì)存在誤差的數(shù)據(jù)結(jié)構(gòu) HyperLogLog。

我們首先思考一個(gè)場(chǎng)景,當(dāng)老板讓我們計(jì)算頁(yè)面的 UV 我們?cè)撛趺崔k?

如果訪(fǎng)問(wèn)量不大使用 set 進(jìn)行用戶(hù)去重完全可以,但是訪(fǎng)問(wèn)量如果有幾百萬(wàn),幾千萬(wàn),那么就會(huì)又遇到上面提到的浪費(fèi)空間的問(wèn)題。如果我們這個(gè)時(shí)候有一個(gè)能進(jìn)行去重且能進(jìn)行計(jì)數(shù)的數(shù)據(jù)結(jié)構(gòu)就好了。

這個(gè)時(shí)候 HyperLogLog 就閃亮登場(chǎng)了!它能提供不精確的去重計(jì)數(shù)方案(誤差值在 0.81% 左右),不精確就不精確哇,UV 要你多精確?0.81%我們也能接受。最重要的是 HyperLogLog 只占用12KB的內(nèi)存。

使用方法和場(chǎng)景實(shí)踐

pfadd key element 添加

pfcount key 計(jì)算

pfmerge destkey sourcekey1 sourcekey2 ... 合并

命令都是 pf 開(kāi)頭是因?yàn)檫@是一個(gè)名叫 Philippe Flajolet 的教授發(fā)明的。

可以看到就這三個(gè)基本命令,很簡(jiǎn)單很容易掌握。那我們來(lái)動(dòng)手實(shí)踐一下吧。

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

BitMap

介紹和使用場(chǎng)景

首先我們?cè)賮?lái)思考一個(gè)比較有意思的場(chǎng)景,老板想讓你統(tǒng)計(jì)一年內(nèi)多個(gè)用戶(hù)之間他們同時(shí)在線(xiàn)的天數(shù),這個(gè)時(shí)候你怎么辦?

你可能會(huì)想到使用 hash 存儲(chǔ),這太浪費(fèi)空間了,有沒(méi)有更好的辦法呢?答案是有的,Redis 中使用了 bitmap位圖。

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

我們知道,字符串中一個(gè)字符是使用8個(gè)比特來(lái)表示的(如上圖),在 Redis 中 bitmap 底層就是 string,也可以說(shuō) string 底層就是 bitmap。

如果有了這個(gè)我們是不是可以用來(lái)計(jì)算一個(gè)用戶(hù)在指定時(shí)間內(nèi)簽到的次數(shù)?也就是一個(gè)位置代表一天,0代表未簽到,1代表簽到,在上圖中,該用戶(hù)在八天內(nèi)簽到了四次。

Redis 中的 bitmap 還提供了多個(gè) bitmap 進(jìn)行與,或,異或運(yùn)算的命令,當(dāng)然還有單個(gè) bitmap 的 非 運(yùn)算。這是不是給你提供了一點(diǎn)思路對(duì)于我們一開(kāi)始的需求呢?

基本命令使用

setbit key index 0/1 設(shè)置某位的值

getbit key index 獲取某位的值

bitcount key start end 獲取指定范圍內(nèi)為1的數(shù)量

需要注意的是,這里的start 和 end是指的字符位置不是比特位置?。?!包括下面的 bitpos 也是

bitpos key bit start end 獲取第一個(gè)值為bit的從start到end字符索引范圍的位置

bitop and/or/xor/not destkey key1 key2 對(duì)多個(gè) bitmap 進(jìn)行邏輯運(yùn)算。

對(duì)于bitmap還有一個(gè)好玩的指令就是 bitfield ,這里我不做過(guò)多介紹,感興趣的同學(xué)自己可以了解一下。

動(dòng)手實(shí)踐

我們首先來(lái)實(shí)現(xiàn)一下統(tǒng)計(jì)用戶(hù)簽到次數(shù)的功能。

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

還記得我們一開(kāi)始的問(wèn)題嗎?統(tǒng)計(jì)一年內(nèi)多個(gè)用戶(hù)之間他們同時(shí)在線(xiàn)的天數(shù),我們有了 bitmap 還怕什么。

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

GeoHash

介紹和場(chǎng)景運(yùn)用

GeoHash 常用來(lái)計(jì)算附近的人,附近的商店。

試想一下如果我們使用 關(guān)系數(shù)據(jù)庫(kù) 來(lái)存儲(chǔ)某個(gè)元素的地址 (id,經(jīng)度,緯度) 。這個(gè)時(shí)候我們?cè)撊绾斡?jì)算附近的人?難道我們要遍歷所有元素位置并做距離計(jì)算?這顯然不可能。

當(dāng)然你可以使用劃分區(qū)域并使用 SQL 語(yǔ)句圈出區(qū)域,然后建立雙向復(fù)合索引來(lái)提升性能,但是數(shù)據(jù)庫(kù)的并發(fā)能力畢竟有限,我們能不能使用 Redis 來(lái)做呢?

答案是可以的,Redis 中使用了 GeoHash 提供了很好的解決方案。具體原理是將地球看成一個(gè)平面,并把二維坐標(biāo)映射成一維(精度損失的原因)。如果對(duì)其中的算法感興趣你可以自己額外去了解,篇幅有限不做過(guò)多說(shuō)明。

基本命令和使用實(shí)戰(zhàn)

geoadd key longitude latitude element(后面可配置多個(gè)三元組) 添加元素

geodist key element1 element2 unit 計(jì)算兩個(gè)元素的距離

geopos key element [element] 獲取元素的位置

geohash key element 獲取元素hash

georadiusbymember key element distanceValue unit count countValue ASC/DESC [withdist] [withhash] [withcoord] 獲取元素附近的元素 可附加后面選項(xiàng)[距離][hash][坐標(biāo)]

georadius key longitude latitude distanceValue unit count countValue ASC/DESC [withdist] [withhash] [withcoord] 和上面一樣只是元素改成了指定坐標(biāo)值

淺析Redis的5種基本數(shù)據(jù)類(lèi)型

總結(jié)

這篇文章中我想大家介紹了 Redis 另外的四種特殊數(shù)據(jù)結(jié)構(gòu),他們分別是 BloomFilter,HyperLogLog,BitMap還有GeoHash。并且我還想你們介紹了如何使用他們,他們的運(yùn)用場(chǎng)景有哪些,希望對(duì)你們有幫助。

非常感謝你能看到這里,如果喜歡或者對(duì)你有幫助別忘了點(diǎn)贊哦。你也可以關(guān)注我,我會(huì)經(jīng)常做些學(xué)習(xí)分享給大家。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3025

    瀏覽量

    74060
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    376

    瀏覽量

    10878
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Redis緩存與Memcached的比較

    關(guān)鍵特性和差異: 1. 數(shù)據(jù)存儲(chǔ) Redis: Redis是一個(gè)開(kāi)源的鍵值存儲(chǔ),支持多種數(shù)據(jù)結(jié)構(gòu),如字符串、列表、集合、有序集合、散列、位圖、超日志和地理空間索引。 它支持持久化,可以
    的頭像 發(fā)表于 12-18 09:33 ?148次閱讀

    如何使用自然語(yǔ)言處理分析文本數(shù)據(jù)

    使用自然語(yǔ)言處理(NLP)分析文本數(shù)據(jù)是一個(gè)復(fù)雜但系統(tǒng)的過(guò)程,涉及多個(gè)步驟和技術(shù)。以下是一個(gè)基本的流程,幫助你理解如何使用NLP來(lái)分析文本數(shù)據(jù): 1. 數(shù)據(jù)收集 收集文本數(shù)據(jù) :從各種
    的頭像 發(fā)表于 12-05 15:27 ?282次閱讀

    西門(mén)子博途新數(shù)據(jù)類(lèi)型之:SINT(8位整數(shù))

    數(shù)據(jù)類(lèi)型 SINT (Short INT) 的操作數(shù)長(zhǎng)度為 8 位,由以下兩部分組成:一部分是符號(hào),另一部分是數(shù)值。位 0 到 6 的信號(hào)狀態(tài)表示數(shù)值。位 7 的信號(hào)狀態(tài)表示符號(hào)。符號(hào)可以是“0”(正信號(hào)狀態(tài)),或“1”(負(fù)信號(hào)狀態(tài))。
    的頭像 發(fā)表于 11-09 09:52 ?920次閱讀
    西門(mén)子博途新<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>之:SINT(8位整數(shù))

    AIC23采集到的數(shù)據(jù)是應(yīng)該用什么數(shù)據(jù)類(lèi)型來(lái)接收?int還是unsigned int?

    AIC23采集到的數(shù)據(jù)是應(yīng)該用什么數(shù)據(jù)類(lèi)型來(lái)接收,int還是unsigned int? 這個(gè)采集到的數(shù)字是什么含義呢?代表的是聲音信號(hào)的幅值? while(!MCBSP_rrdy(hMcbsp
    發(fā)表于 10-18 06:56

    labview數(shù)據(jù)類(lèi)型的取值范圍是多少

    LabVIEW的數(shù)據(jù)類(lèi)型豐富多樣,涵蓋了整數(shù)、小數(shù)(浮點(diǎn)數(shù))、復(fù)數(shù)等多種類(lèi)型,每種類(lèi)型都有其特定的取值范圍。以下是對(duì)LabVIEW中常見(jiàn)數(shù)據(jù)類(lèi)型取值范圍的說(shuō)明: 整數(shù)
    的頭像 發(fā)表于 09-04 17:33 ?1088次閱讀

    常見(jiàn)的遙感數(shù)據(jù)類(lèi)型有哪些

    遙感技術(shù)是一通過(guò)遙感器在遠(yuǎn)離目標(biāo)的位置獲取目標(biāo)地物的電磁波信息,并進(jìn)行分析的技術(shù)。遙感數(shù)據(jù)類(lèi)型繁多,涵蓋了從可見(jiàn)光到紅外、微波等多個(gè)波段,以及不同的數(shù)據(jù)格式和分辨率。 光學(xué)遙感數(shù)據(jù)
    的頭像 發(fā)表于 09-04 14:30 ?1615次閱讀

    恒訊科技分析:云數(shù)據(jù)庫(kù)rds和redis區(qū)別是什么如何選擇?

    數(shù)據(jù)庫(kù)RDS(Relational Database Service)和Redis是兩不同類(lèi)型數(shù)據(jù)庫(kù)服務(wù),它們有各自的特點(diǎn)和適用場(chǎng)景:
    的頭像 發(fā)表于 08-19 15:31 ?399次閱讀

    技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基本數(shù)據(jù)類(lèi)型和變量

    在C語(yǔ)言中,數(shù)據(jù)類(lèi)型和變量是編程的基礎(chǔ),也是理解更復(fù)雜概念的關(guān)鍵。數(shù)據(jù)類(lèi)型決定了變量的內(nèi)存分配、存儲(chǔ)范圍和操作方式,而變量則是存儲(chǔ)數(shù)據(jù)的容器。本篇文章將從基本數(shù)據(jù)類(lèi)型和變量?jī)蓚€(gè)方面,帶
    的頭像 發(fā)表于 07-26 17:53 ?2135次閱讀
    技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基<b class='flag-5'>本數(shù)據(jù)類(lèi)型</b>和變量

    快速掌握C語(yǔ)言關(guān)鍵字

    C語(yǔ)言中的32個(gè)關(guān)鍵字你知道多少個(gè)呢?根據(jù)關(guān)鍵字的作用分為四類(lèi):數(shù)據(jù)類(lèi)型關(guān)鍵字、控制語(yǔ)句關(guān)鍵字、存儲(chǔ)類(lèi)型關(guān)鍵字和其它關(guān)鍵字。1.1基本數(shù)據(jù)類(lèi)型int:用于聲明整數(shù)類(lèi)型的變量。char:
    的頭像 發(fā)表于 07-06 08:04 ?352次閱讀
    快速掌握C語(yǔ)言關(guān)鍵字

    ESP32-S3是否支持修改控制端點(diǎn)數(shù)據(jù)類(lèi)型

    ESP32-S3是否支持修改控制端點(diǎn)數(shù)據(jù)類(lèi)型(如標(biāo)準(zhǔn)類(lèi)型,自定義類(lèi)型); 我需要在控制傳輸數(shù)據(jù)階段的DATA0包改為我的USB設(shè)備規(guī)定的8個(gè)字節(jié)的數(shù)
    發(fā)表于 06-07 06:00

    GeminiDB 新特性:讓 Redis 廣告頻控愛(ài)不釋手的 exHASH

    exHash 類(lèi)型是一支持 Field 過(guò)期的新型數(shù)據(jù)類(lèi)型,它在原先的 Hash 類(lèi)型基礎(chǔ)上進(jìn)行了擴(kuò)展:在支持 Hash 類(lèi)型的通用功能以
    的頭像 發(fā)表于 04-08 18:26 ?1043次閱讀
    GeminiDB 新特性:讓 <b class='flag-5'>Redis</b> 廣告頻控愛(ài)不釋手的 exHASH

    Redis開(kāi)源版與Redis企業(yè)版,怎么選用?

    點(diǎn)擊“藍(lán)字”關(guān)注我們數(shù)以千計(jì)的企業(yè)和數(shù)以百萬(wàn)計(jì)的開(kāi)發(fā)人員Redis開(kāi)源版來(lái)構(gòu)建應(yīng)用程序。但隨著用戶(hù)數(shù)量、數(shù)據(jù)量和地區(qū)性的增加,成本、可擴(kuò)展性、運(yùn)營(yíng)和可用性等問(wèn)題也隨之而來(lái)。Redis企業(yè)版
    的頭像 發(fā)表于 04-04 08:04 ?1073次閱讀
    <b class='flag-5'>Redis</b>開(kāi)源版與<b class='flag-5'>Redis</b>企業(yè)版,怎么選用?

    C語(yǔ)言結(jié)構(gòu)體史上最詳細(xì)的講解【軟件干貨】

    的基本屬性,但是當(dāng)我們想表達(dá)一個(gè)事物的全部或部分屬性時(shí),這時(shí)候再用單一的基本數(shù)據(jù)類(lèi)型明顯就無(wú)法滿(mǎn)足需求了,這時(shí)候C提供了一自定義數(shù)據(jù)類(lèi)型,他可以封裝多個(gè)基本數(shù)據(jù)類(lèi)型,這種
    的頭像 發(fā)表于 03-28 17:52 ?766次閱讀

    鴻蒙TypeScript開(kāi)發(fā)入門(mén)學(xué)習(xí)第3天:【TS基礎(chǔ)類(lèi)型

    任意值是 TypeScript 針對(duì)編程時(shí)類(lèi)型不明確的變量使用的一種數(shù)據(jù)類(lèi)型,它常用于以下三情況。
    的頭像 發(fā)表于 03-28 15:02 ?546次閱讀
    鴻蒙TypeScript開(kāi)發(fā)入門(mén)學(xué)習(xí)第3天:【TS基礎(chǔ)<b class='flag-5'>類(lèi)型</b>】

    C語(yǔ)言數(shù)據(jù)類(lèi)型有哪些

    在 C 語(yǔ)言中,數(shù)據(jù)類(lèi)型指的是用于聲明不同類(lèi)型的變量或函數(shù)的一個(gè)廣泛的系統(tǒng)。變量的類(lèi)型決定了變量存儲(chǔ)占用的空間,以及如何解釋存儲(chǔ)的位模式。
    發(fā)表于 03-20 10:56 ?484次閱讀
    C語(yǔ)言<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>有哪些