這里,我將在平時(shí)工作過程中總結(jié)的內(nèi)存溢出的情況,以代碼案例的形式直觀的分享給大家,希望能夠?yàn)樾』锇閭儙韺?shí)質(zhì)性的幫助。
多線程并發(fā)執(zhí)行時(shí)有很多同學(xué)捋不清楚調(diào)度的隨機(jī)性會(huì)導(dǎo)致哪些問題,要知道如果訪問臨界資源不加鎖會(huì)導(dǎo)致一些突發(fā)情況發(fā)生甚至死鎖。
前一段時(shí)間,小灰發(fā)布了上下兩篇關(guān)于股票買賣的算法題講解,激發(fā)了很多小伙伴的興趣。 這一次,小灰把這兩篇漫畫整合在一起,并且修改了其中的一些細(xì)節(jié)錯(cuò)誤。
叮。。。。。美團(tuán)來電。這次不是外賣而是電話面試。所報(bào)崗位為后端/服務(wù)端開發(fā),但是從我的復(fù)盤來看,這和 Java 后端開發(fā)的內(nèi)容差不多,除了部分的語言特性外,還是四大件基礎(chǔ)知識(shí)為重,下面我們來看看都問了啥,小心下次面你的時(shí)候就有這些問題哦~
函數(shù)宏,即包含多條語句的宏定義,其通常為某一被頻繁調(diào)用的功能的語句封裝,且不想通過函數(shù)方式封裝來降低額外的彈棧壓棧開銷。
大家都知道okhttp是一款由square公司開源的java版本http客戶端工具。實(shí)際上,square公司還開源了基于okhttp進(jìn)一步封裝的retrofit工具,用來支持通過接口的方式發(fā)起http請(qǐng)求。如果還在直接使用RestTemplate或者okhttp,或者基于它們封裝的HttpUtils,那么可以嘗試使用Retrofit。
函數(shù)宏,即包含多條語句的宏定義,其通常為某一被頻繁調(diào)用的功能的語句封裝,且不想通過函數(shù)方式封裝來降低額外的彈棧壓棧開銷。
宏的使用,大家經(jīng)常會(huì)用,但是一般只是簡(jiǎn)單定義一個(gè)符號(hào)常量,類似于 #define WHEEL_SCALE_MM?0.53f、 #define LOG_I(tag, text_fmt, ...) log_i(tag, text_fmt, ##__VA_ARGS__)? ,但是除此之外還有宏還有個(gè)##粘貼作用,可以配合#define這個(gè)常量表達(dá)式,可以做成一個(gè)宏定義指針函數(shù)列表,繼而查詢執(zhí)行函數(shù)。話不多說,我們開始今天的分享,首先還是會(huì)進(jìn)行一下常規(guī)的描述,再分享"##"粘貼的妙用。
在Linux下的開發(fā)中,printf打印調(diào)試信息默認(rèn)輸出到標(biāo)準(zhǔn)輸出 stdout (即屏幕/終端)中。我們也可以使用輸出重定向技術(shù)輸出到指定文件中,輸出重定向即是把原本要輸出到屏幕的信息寫入到指定文件中。
之前從應(yīng)用的角度給大家分享過Bootloader相關(guān)的文章,今天從底層原理來給大家描述ARM處理器如何編寫B(tài)ootloader。
在我們?nèi)粘>幋a中會(huì)發(fā)現(xiàn)有些功能代碼,會(huì)不斷的在不同的成員函數(shù)中用到,但是又不好將這些代碼獨(dú)立成一個(gè)成員函數(shù)。解決辦法之一就是寫一個(gè)公共的函數(shù),不過函數(shù)用到的一些變量,就可能會(huì)成為全局變量。再說為了復(fù)用這么一段代碼,就要單立出一個(gè)函數(shù),也不是很好維護(hù)。此時(shí)就可以用到仿函數(shù)了。
小林寫這么多篇圖解文章,你們猜我收到的最多的讀者問題是什么?沒錯(cuò),就是問我是使用什么畫圖工具,看來對(duì)這一點(diǎn)大家都相當(dāng)好奇,那干脆不如寫一篇介紹下我是怎么畫圖的。
上篇分享了事件驅(qū)動(dòng)型的菜單框架,也實(shí)現(xiàn)了一個(gè)基本的小項(xiàng)目。但是怎么看怎么都覺得界面不爽,單純顯示文字的方式實(shí)在是太單調(diào)了,如果想要顯示顏色豐富的圖片,MCU資源受限又很難直接在程序中直接定義圖片大數(shù)組。于是,這次選擇在SD卡中放圖片,通過Fatfs去讀取SD卡中的圖片來進(jìn)行顯示……
程序代碼是主觀性很強(qiáng)的東西,同樣的一個(gè)功能,每一個(gè)程序員所寫出來的代碼都不一樣,所以那句名言“一千個(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ì)面臨這樣的問題:“我不會(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ā)的過程當(dāng)中,對(duì)于已有的代碼,想將相關(guān)類繪制成UML類圖,雖然現(xiàn)在有很多UML類圖的優(yōu)秀軟件,其實(shí)看到這里我就想IDEA中有沒有像PlantUML一樣的自動(dòng)生成的插件,本著懷疑的態(tài)度百度了一下,果然IDEA還是很強(qiáng)大的,這個(gè)插件都是自帶的,接下稍微講述如何利用IDEA生成UML類圖的教程。
大多數(shù)時(shí)候我都是寫一些業(yè)務(wù)代碼,可能一堆 CRUD 就能解決問題,但這樣的工作對(duì)技術(shù)人的提升并不多,如何讓自己從業(yè)務(wù)中解脫出來找到寫代碼的樂趣呢,我做過一些嘗試,使用設(shè)計(jì)模式改善自己的業(yè)務(wù)代碼就是其中的一種。
很多初學(xué)者都不知道這個(gè)“do{...} while(0U)”作用和意義,甚至覺得這樣寫的代碼復(fù)雜且沒意義。相信使用過STM32Cube HAL庫的朋友都知道,源碼里面有許多do{...} while(0U)的宏定義語句。今天講的主要知識(shí)點(diǎn)是:HAL庫中do{...} while(0U)作用和意義。