在Linux下的開發(fā)中,printf打印調(diào)試信息默認(rèn)輸出到標(biāo)準(zhǔn)輸出 stdout (即屏幕/終端)中。我們也可以使用輸出重定向技術(shù)輸出到指定文件中,輸出重定向即是把原本要輸出到屏幕的信息寫入到指定文件中。
之前從應(yīng)用的角度給大家分享過(guò)Bootloader相關(guān)的文章,今天從底層原理來(lái)給大家描述ARM處理器如何編寫B(tài)ootloader。
在我們?nèi)粘>幋a中會(huì)發(fā)現(xiàn)有些功能代碼,會(huì)不斷的在不同的成員函數(shù)中用到,但是又不好將這些代碼獨(dú)立成一個(gè)成員函數(shù)。解決辦法之一就是寫一個(gè)公共的函數(shù),不過(guò)函數(shù)用到的一些變量,就可能會(huì)成為全局變量。再說(shuō)為了復(fù)用這么一段代碼,就要單立出一個(gè)函數(shù),也不是很好維護(hù)。此時(shí)就可以用到仿函數(shù)了。
小林寫這么多篇圖解文章,你們猜我收到的最多的讀者問(wèn)題是什么?沒(méi)錯(cuò),就是問(wèn)我是使用什么畫圖工具,看來(lái)對(duì)這一點(diǎn)大家都相當(dāng)好奇,那干脆不如寫一篇介紹下我是怎么畫圖的。
上篇分享了事件驅(qū)動(dòng)型的菜單框架,也實(shí)現(xiàn)了一個(gè)基本的小項(xiàng)目。但是怎么看怎么都覺得界面不爽,單純顯示文字的方式實(shí)在是太單調(diào)了,如果想要顯示顏色豐富的圖片,MCU資源受限又很難直接在程序中直接定義圖片大數(shù)組。于是,這次選擇在SD卡中放圖片,通過(guò)Fatfs去讀取SD卡中的圖片來(lái)進(jìn)行顯示……
程序代碼是主觀性很強(qiáng)的東西,同樣的一個(gè)功能,每一個(gè)程序員所寫出來(lái)的代碼都不一樣,所以那句名言“一千個(gè)讀者就有一千個(gè)哈姆雷特”在代碼上同樣使用。同時(shí),代碼又是只可意會(huì)卻很難言傳的東西。硬件原理,看的多了即使外行人也能指點(diǎn)一下,但是代碼只有編寫的人才清楚。這也使得很多人認(rèn)為代碼很神秘。
很多的小伙伴經(jīng)常會(huì)有這樣的困惑,我看了很多技術(shù)的學(xué)習(xí)文檔、書籍、甚至視頻,我想動(dòng)手實(shí)踐,于是我打開了GitHub,想找個(gè)開源項(xiàng)目,進(jìn)行學(xué)習(xí),獲取項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn)。這個(gè)時(shí)候很多小伙伴就會(huì)面臨這樣的問(wèn)題:“我不會(huì)搜啊,我該怎么找呀?”,最終只能放棄。相信看完這篇文章,你就可以學(xué)會(huì)如何精準(zhǔn)地在GitHub搜索項(xiàng)目。
前幾天我在世偉兄的開源群上分享了這個(gè)框架,有群友希望我用這個(gè)框架寫一個(gè)小項(xiàng)目,于是我就突發(fā)奇思妙想,在1-2天內(nèi)設(shè)計(jì)規(guī)劃了這個(gè)一個(gè)課題:基于小熊派簡(jiǎn)易氣體探測(cè)儀。
本文向讀者介紹了如何避免內(nèi)存泄漏的方法和原則,在細(xì)節(jié)和大體方向上均給出一些可行性方案。讀者可以嘗試文中提出的方法,改進(jìn)自己的代碼,大大減少內(nèi)存泄漏的可能性。
最近在開發(fā)的過(guò)程當(dāng)中,對(duì)于已有的代碼,想將相關(guān)類繪制成UML類圖,雖然現(xiàn)在有很多UML類圖的優(yōu)秀軟件,其實(shí)看到這里我就想IDEA中有沒(méi)有像PlantUML一樣的自動(dòng)生成的插件,本著懷疑的態(tài)度百度了一下,果然IDEA還是很強(qiáng)大的,這個(gè)插件都是自帶的,接下稍微講述如何利用IDEA生成UML類圖的教程。
大多數(shù)時(shí)候我都是寫一些業(yè)務(wù)代碼,可能一堆 CRUD 就能解決問(wèn)題,但這樣的工作對(duì)技術(shù)人的提升并不多,如何讓自己從業(yè)務(wù)中解脫出來(lái)找到寫代碼的樂(lè)趣呢,我做過(guò)一些嘗試,使用設(shè)計(jì)模式改善自己的業(yè)務(wù)代碼就是其中的一種。
很多初學(xué)者都不知道這個(gè)“do{...} while(0U)”作用和意義,甚至覺得這樣寫的代碼復(fù)雜且沒(méi)意義。相信使用過(guò)STM32Cube HAL庫(kù)的朋友都知道,源碼里面有許多do{...} while(0U)的宏定義語(yǔ)句。今天講的主要知識(shí)點(diǎn)是:HAL庫(kù)中do{...} while(0U)作用和意義。
重構(gòu)不止是代碼整理,它提供了一種高效且受控的代碼整理技術(shù)。
在GitHub發(fā)布項(xiàng)目之前,你可以用免費(fèi)的官方代碼掃描程序來(lái)檢查Bug了。編程很難,難就難在常有Bug而不自知。
重構(gòu)不止是代碼整理,它提供了一種高效且受控的代碼整理技術(shù)。
當(dāng)我們接收到一些數(shù)據(jù)需要對(duì)其進(jìn)行處理時(shí),由于它們來(lái)自于不同的渠道(如:騰訊,頭條),不同渠道所需的處理方式不同,下面我們寫一個(gè)簡(jiǎn)單Demo來(lái)實(shí)現(xiàn)該的場(chǎng)景。
我們平時(shí)編寫的代碼最后都會(huì)交給CPU來(lái)執(zhí)行,如何能巧妙利用CPU寫出性能比較高的代碼呢?看完這篇文章您可能會(huì)有所收獲。
很多書籍都會(huì)把“”goto“”當(dāng)成反面教材使用,認(rèn)為如果使用不當(dāng),將會(huì)造成很多意想不到的問(wèn)題。但goto作為C語(yǔ)言的一部分,存在即合理,goto有它的缺點(diǎn),也有它的優(yōu)點(diǎn)。
疫情原因回不去學(xué)校,作為一個(gè)馬上畢業(yè),即將入職騰訊的大四生,分享一下自己的學(xué)習(xí)歷程吧。
相信很多人在遇到面試中都遇到過(guò)被問(wèn)到過(guò)JavaScript繼承模式的問(wèn)題,都能手寫出幾種繼承模式的代碼例子,但為什么面試官卻對(duì)你的回答不是很滿意或者壓根就沒(méi)聽懂,個(gè)人覺得應(yīng)該是缺少自己的一個(gè)答題的思路。