chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

我們?cè)鯓幼x源碼才能更高效

數(shù)據(jù)分析與開發(fā) ? 來源:水滴與銀彈 ? 作者:Magic Kaito ? 2021-11-12 09:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

用了這么久的 Redis,也翻了很多次源碼,經(jīng)常有人問我到底怎么讀 Redis 源碼。

一提到讀源碼,很多人都會(huì)比較畏懼,認(rèn)為讀源碼是高手才會(huì)做的事情。他們可能遇到問題時(shí),會(huì)更傾向于去找別人分享的答案。但往往很多時(shí)候,自己查到的資料并不能解決所有問題,尤其是比較細(xì)節(jié)的問題。

從我的實(shí)戰(zhàn)經(jīng)驗(yàn)來看,遇到這種情況,通常就需要去源碼中尋找答案了,因?yàn)樵谠创a面前,這些細(xì)節(jié)會(huì)變得「一覽無余」。

而且我認(rèn)為,掌握讀源碼的能力,是從只懂得如何使用 Redis,到精通 Redis 實(shí)現(xiàn)原理的成長(zhǎng)之路上,必須跨越的門檻。

可是,面對(duì)龐大復(fù)雜的項(xiàng)目,我們?cè)鯓幼x源碼才能更高效呢?

這篇文章我就來和你聊一聊,我讀 Redis 源碼的經(jīng)驗(yàn),以及讀源碼的「通用思路」,希望這些心得可以幫助到你。

01 找到地圖

很多開源項(xiàng)目的源碼,代碼量一般都比較龐大,如果在讀代碼之前,我們沒有制定合理的方法,就一頭扎進(jìn)去讀代碼,勢(shì)必會(huì)把自己搞暈。

所以,我在拿到一個(gè)項(xiàng)目的代碼之后,并不會(huì)馬上著手去讀,而是會(huì)先對(duì)整個(gè)項(xiàng)目結(jié)構(gòu)進(jìn)行梳理,劃分出項(xiàng)目具體包含的模塊。這樣,我就對(duì)整個(gè)項(xiàng)目有了一個(gè)「宏觀」的了解。

讀代碼就好比去一個(gè)陌生城市旅行,這個(gè)旅途過程充滿著未知。如果在出發(fā)之前,我們手里能有一張地圖,那我們對(duì)自己的行程就可以有一個(gè)非常清晰的規(guī)劃。

我們就知道,如果想要到達(dá)目的地,需要從哪里出發(fā)、經(jīng)過哪些地方、通過什么方式才能到達(dá),有了地圖就有了行進(jìn)方向,否則很容易迷失。

因此,提前花一些時(shí)間梳理整個(gè)項(xiàng)目的「結(jié)構(gòu)和目錄」,對(duì)于后面更好地閱讀代碼是非常有必要的。

就拿 Redis 來舉例,在讀 Redis 源碼之前,我們可以先梳理出整個(gè)項(xiàng)目的功能模塊,以及每個(gè)模塊對(duì)應(yīng)的代碼文件(src 下的代碼結(jié)構(gòu)):

這樣,有了這張地圖之后,我們?cè)偃タ创a的時(shí)候,就可以有重點(diǎn)地閱讀了。

02 前置知識(shí)準(zhǔn)備

在梳理完整個(gè)項(xiàng)目結(jié)構(gòu)之后,我們就可以正式進(jìn)入閱讀環(huán)節(jié)當(dāng)中了。不過,在閱讀代碼之前,我們其實(shí)還需要預(yù)先掌握一些「前置知識(shí)」。

因?yàn)橐粋€(gè)完整的項(xiàng)目,必然綜合了各個(gè)領(lǐng)域的技術(shù)知識(shí)點(diǎn),比如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議、編程語(yǔ)言等,如果我們提前做好一些功課,在讀源碼的過程中就會(huì)輕松很多。

以下是根據(jù)我在閱讀 Redis 書籍和實(shí)戰(zhàn)過程中,提取的讀源碼必備前置知識(shí)點(diǎn),你可以參考下:

常用數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表、哈希表、跳表

網(wǎng)絡(luò)協(xié)議:TCP 協(xié)議

網(wǎng)絡(luò) IO 模型:IO 多路復(fù)用、非阻塞 IO、Reactor 網(wǎng)絡(luò)模型

操作系統(tǒng):寫時(shí)復(fù)制(Copy On Write)、常見系統(tǒng)調(diào)用、磁盤 IO 機(jī)制

C 語(yǔ)言基礎(chǔ):循環(huán)、分支、結(jié)構(gòu)體、指針

當(dāng)然,在閱讀源碼的過程中,我們也可以根據(jù)實(shí)際問題再去查閱相關(guān)資料,但不管怎樣,提前熟悉這些方面的知識(shí),在真正讀代碼時(shí)就會(huì)省下不少時(shí)間。

03 從基礎(chǔ)模塊開始讀

好,有了地圖并掌握了前置知識(shí)之后,接下來我們就要進(jìn)入主題了:讀代碼。

但具體要從哪個(gè)地方開始讀起呢?我認(rèn)為要先從「最基礎(chǔ)」的模塊開始讀起。

我在前面也分析了,一個(gè)完整的項(xiàng)目會(huì)劃分很多的功能模塊,但這些模塊并不是孤立的,而很可能是有「依賴」關(guān)系的。

比如說,Redis 中的 networking.c 文件,表示處理網(wǎng)絡(luò) IO 的具體實(shí)現(xiàn)。而如果我們能在理解事件驅(qū)動(dòng)模塊 ae.c 的基礎(chǔ)上,再去閱讀網(wǎng)絡(luò) IO 模塊,效率就會(huì)更高。

那在 Redis 源碼中,哪些是最基礎(chǔ)的模塊呢?

想一下,我們?cè)谑褂?Redis 時(shí),接觸最頻繁的是哪些功能?

答案是各種數(shù)據(jù)類型。

一切操作的基礎(chǔ),其實(shí)都是基于這些最常用的數(shù)據(jù)類型來做的,比如 String、List、Hash、Set、Sorted Set等。所以,我們就可以從這些基礎(chǔ)模塊開始讀起,也就是從 t_string.c、t_list.c、t_hash.c、t_set.c、t_zset.c 代碼入手。

如果你對(duì) Redis 的數(shù)據(jù)類型有所了解,就會(huì)看到這些數(shù)據(jù)類型在實(shí)現(xiàn)時(shí),底層都對(duì)應(yīng)了不同的數(shù)據(jù)結(jié)構(gòu)。比如,String 的底層是 SDS,List 的底層是 ziplist + quicklist,Hash 底層可能是ziplist,也可能是哈希表,等等。

由此一來,我們會(huì)發(fā)現(xiàn),這些數(shù)據(jù)結(jié)構(gòu)又是更為「底層」的模塊,所以我們?cè)陂喿x數(shù)據(jù)類型模塊時(shí),就需要重點(diǎn)聚焦在這些模塊上,也就是 sds.c、ziplist.c、quicklist.c、dict.c、intset.c 文件,而且這些文件都是比較獨(dú)立的,閱讀起來就可以更加集中。

這樣,當(dāng)我們真正掌握了這些「底層數(shù)據(jù)結(jié)構(gòu)」的實(shí)現(xiàn)后,就能更好地理解基于它們實(shí)現(xiàn)的各種「數(shù)據(jù)類型」了。

這些基礎(chǔ)模塊就相當(dāng)于一座大廈的地基,地基打好了,才能做到高樓聳立。

04 找到核心主線

接著,掌握了數(shù)據(jù)結(jié)構(gòu)模塊之后,這時(shí)我們的重點(diǎn)就需要放在「核心主線」上來了。

在這個(gè)階段,我們需要找到一個(gè)明確的目標(biāo),以這個(gè)目標(biāo)為主線去讀代碼。因?yàn)樽x源碼一個(gè)很常見的需求,就是為了了解這個(gè)項(xiàng)目最「核心功能」的實(shí)現(xiàn)細(xì)節(jié),我們只有以此為目標(biāo),找到這條主線去讀代碼,才能達(dá)到最終目的。

那么在讀 Redis 源碼時(shí),什么才是它的核心主線呢?這里我分享一個(gè)非常好用的技巧,就是根據(jù)「Redis 究竟是怎么處理客戶端發(fā)來的命令的?」 為主線來梳理。

舉個(gè)例子,當(dāng)我們?cè)趫?zhí)行 SET testkey testval EX 60 這樣一條命令時(shí),就需要搞清楚 Redis 是怎么執(zhí)行這條命令的。

也就是要明確,Redis 從收到客戶端請(qǐng)求,到把數(shù)據(jù)存到 Redis 中、設(shè)置過期時(shí)間,最后把響應(yīng)結(jié)果返回給客戶端,整個(gè)過程的每一個(gè)環(huán)節(jié),到底是如何處理的。

有了這條主線,我們就有了非常明確的目標(biāo),而且沿著這條主線去讀代碼,我們還可以很清晰地把多個(gè)模塊「串聯(lián)」起來。比如從前面的例子中,我們會(huì)看到一條命令的執(zhí)行,主要包含了這樣幾個(gè)階段。

Redis Server 初始化:加載配置、監(jiān)聽端口、注冊(cè)連接建立事件、啟動(dòng)事件循環(huán)(server.c、anet.c)。

接收、解析客戶端請(qǐng)求:初始化 client、注冊(cè)讀事件、讀客戶端 socket(networking.c)。

處理具體的命令:找到對(duì)應(yīng)的命令函數(shù)、執(zhí)行命令(server.c、t_string.c、t_list.c、t_hash.c、t_set.c、t_zset.c)。

返回響應(yīng)給客戶端:寫客戶端緩沖區(qū)、注冊(cè)寫事件、寫客戶端 socket(networking.c)。

沿著這條主線去讀代碼,我們就可以掌握一條命令的執(zhí)行全過程。

而且,由于這條主線的代碼邏輯,已經(jīng)覆蓋了「所有命令」的執(zhí)行流程,我們下次再去讀其它命令時(shí),比如 SADD,就只需要關(guān)注「處理命令」部分的邏輯即可,其它邏輯有 80% 都是相同的。

05 先整體后細(xì)節(jié)

當(dāng)然,在閱讀主線代碼的過程中,肯定也會(huì)遇到過于「復(fù)雜」的函數(shù),第一次在讀這種函數(shù)時(shí),很容易就會(huì)「陷進(jìn)去」,導(dǎo)致整個(gè)主線代碼的閱讀,無法繼續(xù)推進(jìn)下去。

遇到這種情況其實(shí)是很正常的,可這時(shí)我們應(yīng)該怎么辦呢?

這里我的做法是,前期讀到這種邏輯時(shí),不要馬上陷入到細(xì)節(jié)中去,而是要先「抓整體」。

具體來說,對(duì)于復(fù)雜的函數(shù)邏輯,我們剛開始并不需要知道它的每一個(gè)細(xì)節(jié)是如何實(shí)現(xiàn)的,而是只需知道這個(gè)函數(shù)「大致」做了幾件事情即可。

舉個(gè)例子,在執(zhí)行 HSET 命令時(shí),有一段代碼很復(fù)雜,其中包括了很多分支判斷,一次很難讀懂:

960dd93a-427c-11ec-b939-dac502259ad0.png

那么,我在讀這段代碼時(shí),就可以先簡(jiǎn)化邏輯,把握整體思路:

96b2cf9e-427c-11ec-b939-dac502259ad0.png

之后,再了解每個(gè)分支大致做了哪些事情:

974ab2dc-427c-11ec-b939-dac502259ad0.png

這樣做的好處,一是不會(huì)被復(fù)雜的細(xì)節(jié)邏輯搞暈,打擊自己的自信心,二是可以有效避免閱讀的連貫性被打斷,從而能持續(xù)推進(jìn)我們把整個(gè)主線邏輯讀完。

所以,這里的重點(diǎn)就是:先把復(fù)雜代碼的主邏輯搞清楚,知道涉及的每個(gè)方法完成了什么事,心里要先搭建一個(gè)簡(jiǎn)單的「框架」,等有了框架之后,我們?cè)偃ソo框架填充「細(xì)節(jié)」。

這樣通過「先整體后細(xì)節(jié)」的方式,我們就可以不再畏懼代碼中的復(fù)雜邏輯。

06 先主線后支線

不過,在閱讀主線代碼的過程中,我們肯定還會(huì)遇到各種「支線」邏輯,比如數(shù)據(jù)過期、替換淘汰、持久化、主從復(fù)制等。

其實(shí),在閱讀主線邏輯的時(shí)候,我們并不需要去重點(diǎn)關(guān)注這些支線,而當(dāng)整個(gè)主線邏輯「清晰」起來之后,我們?cè)偃プx這些支線模塊,就會(huì)容易很多了。

這時(shí),我們就可以從這些支線中,選取下一個(gè)「目標(biāo)」,帶著這個(gè)目標(biāo)去閱讀,比如說:

過期策略是怎么實(shí)現(xiàn)的?(expire.c、lazyfree.c)

淘汰策略是如何實(shí)現(xiàn)的?(evict.c)

持久化 RDB、AOF 是怎么做的?(rdb.c、aof.c)

主從復(fù)制是怎么做的?(replication.c)

哨兵如何完成故障自動(dòng)切換?(sentinel.c)

分片邏輯如何實(shí)現(xiàn)?(cluster.c)

。..

有了新的支線目標(biāo)后,我們依舊可以采用前面提到的「先整體后細(xì)節(jié)」的思路閱讀相關(guān)模塊,這樣下來,整個(gè)項(xiàng)目的每個(gè)模塊,就可以被「逐一擊破」了。

07 查漏補(bǔ)缺

最后,我們還需要「查漏補(bǔ)缺」。

按照前面提到的方法,基本就可以把整個(gè)項(xiàng)目的主要模塊讀得七七八八了,這時(shí)我們基本已經(jīng)對(duì)整個(gè)項(xiàng)目有了整體的「把控」。

不過,當(dāng)我們?cè)诠ぷ髦杏龅絾栴}時(shí),很有可能會(huì)發(fā)現(xiàn),在當(dāng)時(shí)讀代碼的過程中,有很多并不在意的「細(xì)節(jié)」被忽略了。

所以這時(shí),我們就可以再帶著「具體問題」出發(fā),聚焦這個(gè)問題相關(guān)的模塊,再一次去讀源碼。這樣一來,我們就可以填補(bǔ)當(dāng)時(shí)閱讀源碼的「空白區(qū)」。

舉個(gè)例子,當(dāng)我們?cè)陂喿x String 底層數(shù)據(jù)結(jié)構(gòu) SDS(簡(jiǎn)單動(dòng)態(tài)字符串)的實(shí)現(xiàn)時(shí),我們會(huì)看到當(dāng) SDS 需要追加新內(nèi)容時(shí)會(huì)進(jìn)行擴(kuò)容,而我們之前閱讀這塊代碼時(shí),很有可能只是了解到有這樣的邏輯存在,但并沒有在意擴(kuò)容的相關(guān)細(xì)節(jié)(一次擴(kuò)容多大)。

所以,當(dāng)我們?cè)诠ぷ髦杏龅竭@個(gè)細(xì)節(jié)問題后,就可以把目光聚焦在 SDS 的擴(kuò)容邏輯上(sds.c 的sdsMakeRoomFor函數(shù)),而此時(shí)我們會(huì)發(fā)現(xiàn),當(dāng)需要申請(qǐng)的新內(nèi)存小于 1MB 時(shí),Redis 就會(huì)翻倍申請(qǐng)內(nèi)存,否則按 1MB 申請(qǐng)新內(nèi)存。

采用這個(gè)方法進(jìn)行查漏補(bǔ)缺,我們就可以對(duì)整個(gè)項(xiàng)目了解得更深入、更全面,真正把項(xiàng)目「吃透」。

總結(jié)

好了,以上就是我在閱讀 Redis 源碼時(shí)的經(jīng)驗(yàn)心得,總結(jié)一下這 7 個(gè)步驟。

1、找到地圖:拿到項(xiàng)目代碼后,提前梳理整個(gè)項(xiàng)目結(jié)構(gòu),知曉整個(gè)項(xiàng)目的模塊劃分,以及對(duì)應(yīng)的代碼文件。

2、前置知識(shí)準(zhǔn)備:提前掌握項(xiàng)目中用到的前置知識(shí),比如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)原理、網(wǎng)絡(luò)協(xié)議、網(wǎng)絡(luò) IO 模型、編程語(yǔ)言語(yǔ)法等等。

3、從基礎(chǔ)模塊開始讀:從最底層的基礎(chǔ)模塊開始入手,先掌握了這些模塊,之后基于它們構(gòu)建的模塊讀起來會(huì)更加高效。

4、找到核心主線:找到整個(gè)項(xiàng)目中最核心的主線邏輯,以此為目標(biāo),了解各模塊為了完成這個(gè)功能,是如何協(xié)作和組織的。

5、先整體后細(xì)節(jié):對(duì)于復(fù)雜函數(shù),不要上來就陷入細(xì)節(jié),前期閱讀只需了解這個(gè)函數(shù)大致做了什么事情,建立框架,等搭建起框架之后,再去填充細(xì)節(jié)。

6、先主線后支線:整個(gè)主線邏輯清晰之后,再去延伸閱讀支線邏輯,因?yàn)橹Ь€邏輯肯定是服務(wù)主線邏輯的,讀完主線后再去讀這些支線,也會(huì)變得更簡(jiǎn)單。

7、查漏補(bǔ)缺:在工作中遇到具體問題,帶著這些實(shí)際的問題出發(fā)再次去讀源碼,進(jìn)行查漏補(bǔ)缺,填補(bǔ)之前讀源碼時(shí)沒有注意到的地方。

后記

你可以看到,這篇文章介紹的閱讀源碼的方法,其實(shí)并不局限于讀 Redis 代碼。

這 7 個(gè)步驟,可以算是一個(gè)的「通用思路」,我也經(jīng)常用這個(gè)思路來讀其它項(xiàng)目的源碼,非常有用,你也可以試試。

另外,我認(rèn)為很多人讀源碼覺得難,一是因?yàn)樾睦砩献哉J(rèn)為自己讀不懂,不敢邁步這一步,二是因?yàn)檎也坏胶侠淼姆椒ǎ谧x源碼時(shí)屢次受挫,最終知難而退。

我在讀源碼時(shí)也經(jīng)歷過這些,這里再分享一下我的經(jīng)驗(yàn)。

1、永遠(yuǎn)不要給自己設(shè)限:想想看,曾經(jīng)以為很多自己做不到的事,在有壓力的情況下,是不是慢慢都做到了,而且發(fā)現(xiàn)做得還挺好?學(xué)習(xí)技術(shù)也是一樣,技術(shù)是死的,東西就那么多,一遍不行來兩遍,總有一次能搞懂,所以心態(tài)上一定不要先「否定」自己,凡事先邁一小步進(jìn)去試試看,好的開始就是成功的一半。

2、找到對(duì)的學(xué)習(xí)方法:正所謂「學(xué)會(huì)學(xué)習(xí),再學(xué)習(xí)」,科學(xué)高效的方法,能幫你事半功倍,這篇文章分享的方法論,就是屬于學(xué)習(xí)方法的范疇,你可以結(jié)合自己的實(shí)際情況試試看。

希望我的這些經(jīng)驗(yàn)和心得,對(duì)你有所啟發(fā)。

如果你也有自己的閱讀源碼的實(shí)踐經(jīng)驗(yàn)和方法,歡迎在留言區(qū)分享出來,我們一起交流,共同進(jìn)步~

責(zé)任編輯:haq

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

    關(guān)注

    8

    文章

    671

    瀏覽量

    30345
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    387

    瀏覽量

    11450

原文標(biāo)題:讀懂 Redis 源碼,我總結(jié)了這 7 點(diǎn)心得

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    WICED IDE 6.6.1.1怎樣才能連接到自定義硬件?

    設(shè)備? 我們怎樣才能指示 WICED-IDE 使用我們的 4 通道 UART2USB 轉(zhuǎn)換器提供的 “普通” VCOM COM 端口之一? 有人能給我一些關(guān)于如何連接我們的定制硬
    發(fā)表于 07-09 07:01

    固定式工業(yè)碼器重塑自動(dòng)化生產(chǎn):精準(zhǔn)、高效、無憂

    在工業(yè)4.0與智能制造浪潮的推動(dòng)下,固定式工業(yè)碼器正以前所未有的技術(shù)革新重塑自動(dòng)化生產(chǎn)格局。作為生產(chǎn)線的“智慧之眼”,它憑借精準(zhǔn)識(shí)別、高效運(yùn)作與穩(wěn)定無憂的三大核心優(yōu)勢(shì),成為現(xiàn)代工業(yè)提質(zhì)增效的“隱形
    的頭像 發(fā)表于 04-02 14:28 ?277次閱讀
    固定式工業(yè)<b class='flag-5'>讀</b>碼器重塑自動(dòng)化生產(chǎn):精準(zhǔn)、<b class='flag-5'>高效</b>、無憂

    批量識(shí)別二維碼!工業(yè)碼器如何顛覆傳統(tǒng)生產(chǎn)線?

    ,為制造業(yè)帶來了前所未有的革新。本文將深入探討工業(yè)碼器的工作原理、類型及其在生產(chǎn)線上的應(yīng)用,揭示其如何顛覆傳統(tǒng)生產(chǎn)線,引領(lǐng)制造業(yè)邁向更高效、更智能的未來。一、工
    的頭像 發(fā)表于 03-12 15:43 ?426次閱讀
    批量識(shí)別二維碼!工業(yè)<b class='flag-5'>讀</b>碼器如何顛覆傳統(tǒng)生產(chǎn)線?

    怎樣才能更好享受到8K視頻帶來的優(yōu)勢(shì)

    觀看4K現(xiàn)在已經(jīng)非常普遍了,隨著對(duì)音視頻要求的不斷提高,各大設(shè)備也在著力發(fā)展8K視頻。本期我們將從觀看8K的工具入手,來聊聊怎樣才能更好享受到8K視頻帶來的優(yōu)勢(shì)。
    的頭像 發(fā)表于 02-21 09:30 ?819次閱讀

    固定式碼器一般多少錢才能夠買到質(zhì)量好的?

    在探討固定式碼器價(jià)格與質(zhì)量的關(guān)系時(shí),我們首先需要明確的是,固定式碼器作為自動(dòng)化識(shí)別領(lǐng)域的重要設(shè)備,其價(jià)格受多種因素影響,包括但不限于品牌、型號(hào)、功能、性能以及市場(chǎng)供需狀況等。因此,要買到質(zhì)量好
    的頭像 發(fā)表于 02-14 13:51 ?447次閱讀
    固定式<b class='flag-5'>讀</b>碼器一般多少錢<b class='flag-5'>才能</b>夠買到質(zhì)量好的?

    如何才從ADS1118中回命令寄存器中的值呢?

    參照ADS1118的說明書,我使用CC2530的串口1的SPI方式向ADS1118連接寫入4個(gè)字節(jié)的命令,我想問一下我如何才從ADS1118中回命令寄存器中的值呢。意思就是在我寫入命令字之后,我應(yīng)該怎樣操作才能讀回這些值,我
    發(fā)表于 02-10 07:19

    解碼TW6501:ONFI 5.0協(xié)議如何令存儲(chǔ)通訊更高效

    解碼TW6501:ONFI 5.0協(xié)議如何令存儲(chǔ)通訊更高效
    的頭像 發(fā)表于 01-21 14:51 ?491次閱讀
    解碼TW6501:ONFI 5.0協(xié)議如何令存儲(chǔ)通訊<b class='flag-5'>更高效</b>

    TVP7002怎樣才能將分辨率正確的回?

    Lines Per frame staus 0x37-0x38,為0x00,0x20 Clocks Per Line status 0x39-0x3a,為0x92,0x00, 改變不同分辨率如720p60、1080p60,寄存器讀數(shù)不變! 請(qǐng)問怎樣才能將分辨率正確的
    發(fā)表于 01-10 06:25

    固定式工業(yè)條碼碼器助您高效生產(chǎn),減少人工錯(cuò)誤!

    變革。高效生產(chǎn)的驅(qū)動(dòng)力:固定式工業(yè)條碼碼器以其快速、準(zhǔn)確的讀取能力,顯著提升了生產(chǎn)線的作業(yè)效率。無論是在流水線上的自動(dòng)分揀、物料追蹤,還是在倉(cāng)儲(chǔ)管理中的庫(kù)存盤點(diǎn)、
    的頭像 發(fā)表于 01-08 16:18 ?374次閱讀
    固定式工業(yè)條碼<b class='flag-5'>讀</b>碼器助您<b class='flag-5'>高效</b>生產(chǎn),減少人工錯(cuò)誤!

    源碼開放 智能監(jiān)測(cè)電源管理教程寶典!

    源碼開放,今天我們學(xué)習(xí)的是電源管理系統(tǒng)的核心功能模塊,手把手教你如何通過不同的技術(shù)手段實(shí)現(xiàn)有效的電源管理。
    的頭像 發(fā)表于 12-11 09:26 ?648次閱讀
    <b class='flag-5'>源碼</b>開放  智能監(jiān)測(cè)電源管理教程寶典!

    在TLV320AIC3254中怎樣頻率值和幅度值?

    TLV320AIC3254中怎樣頻率值和 幅度值,是在那個(gè)寄存器去?如果它有這個(gè)功能,我就不用對(duì)音頻做FFT了,謝謝。
    發(fā)表于 11-07 06:15

    二維碼識(shí)設(shè)備有哪些類型

    隨著二維碼應(yīng)用的日益普及,各類二維碼識(shí)設(shè)備也應(yīng)運(yùn)而生。這些設(shè)備不僅極大地方便了我們的日常生活,也為企業(yè)提供了更加高效便捷的服務(wù)。那么,你知道二維碼識(shí)設(shè)備都有哪些類型嗎?讓
    的頭像 發(fā)表于 11-05 16:10 ?938次閱讀
    二維碼識(shí)<b class='flag-5'>讀</b>設(shè)備有哪些類型

    通過簡(jiǎn)單的電阻電容組合怎樣才能把25K方波變成正弦?

    通過簡(jiǎn)單的電阻電容組合怎樣才能把25K方波變成正弦呢。加了濾波電路后方波的上升沿變緩了,可是下降沿基本沒有變化。怎樣才能把下降沿也變緩呢
    發(fā)表于 10-22 06:02

    智能升級(jí),樓宇自控系統(tǒng)讓辦公更高效

    智能升級(jí),樓宇自控系統(tǒng)讓辦公更高效 在快節(jié)奏的現(xiàn)代都市生活中,辦公效率成為了企業(yè)競(jìng)爭(zhēng)力的關(guān)鍵因素之一。隨著科技的飛速發(fā)展,樓宇自控系統(tǒng)作為智能建筑的核心技術(shù),正逐步滲透到我們的辦公環(huán)境中,以其獨(dú)特
    的頭像 發(fā)表于 09-19 14:12 ?529次閱讀

    GaN如何實(shí)現(xiàn)更高效、更緊湊的電源

    電子發(fā)燒友網(wǎng)站提供《GaN如何實(shí)現(xiàn)更高效、更緊湊的電源.pdf》資料免費(fèi)下載
    發(fā)表于 09-12 10:00 ?0次下載
    GaN如何實(shí)現(xiàn)<b class='flag-5'>更高效</b>、更緊湊的電源