在ModernC之前,C無疑是個(gè)更容易寫出坑的語言,無論從開發(fā)效率,和易坑性,讓很多新手望而卻步。比如內(nèi)存泄露問題,就是經(jīng)常會(huì)被寫出來的坑,本文就讓我們一起來看看,這些讓現(xiàn)在或者曾經(jīng)的C程序員淚流滿面的內(nèi)存泄露場(chǎng)景吧。你是否有踩過?1.函數(shù)內(nèi)或者類成員內(nèi)存未釋放這類問題可以稱之為...
花了一下午(或一天)在試圖解決某個(gè)Bug,后來才知道解決方案很簡(jiǎn)單,當(dāng)時(shí)就是沒有想到。有個(gè)同事正好路過,看到你愁眉苦臉的,問你“怎么了呀?”“噢,是這樣的。我遇到了一個(gè)問題,點(diǎn)擊這個(gè)控件的時(shí)……”當(dāng)你正準(zhǔn)備和同事詳細(xì)解釋的時(shí)候,突然靈光一現(xiàn),你話都沒說完,就中斷了和同事的傾訴,繼...
導(dǎo)讀:對(duì)于工程經(jīng)驗(yàn)比較豐富的同學(xué),并發(fā)應(yīng)該也并不是陌生的概念了,但是每個(gè)人所理解的并發(fā)問題,卻又往往并不統(tǒng)一,本文系統(tǒng)梳理了百度C工程師在進(jìn)行并發(fā)優(yōu)化時(shí)所作的工作。一、背景簡(jiǎn)單回顧一下,一個(gè)程序的性能構(gòu)成要件大概有三個(gè),即算法復(fù)雜度、IO開銷和并發(fā)能力。由于現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)復(fù)雜...
最近在做一個(gè)項(xiàng)目,遇到一個(gè)問題,運(yùn)行于ARM上的threadx在與DSP通信采用消息隊(duì)列的方式傳遞消息(最終實(shí)現(xiàn)原理是中斷共享內(nèi)存的方式),在實(shí)際操作過程中發(fā)現(xiàn)threadx總是crash,于是經(jīng)過排查,是因?yàn)閭鬟f消息的結(jié)構(gòu)體沒有考慮字節(jié)對(duì)齊的問題。隨手整理一下C語言中字節(jié)對(duì)齊的...
socketfd長什么樣子?什么是socketfd?粗糙的來講,就是網(wǎng)絡(luò)fd,比如我們最常見的C/S客戶端服務(wù)端的編程模式,就是網(wǎng)絡(luò)通信的一種方式。撇開底層和協(xié)議細(xì)節(jié),網(wǎng)絡(luò)通信和文件讀寫從接口上有本質(zhì)區(qū)別嗎?其實(shí)沒啥區(qū)別,不就是讀過來和寫過去嘛,簡(jiǎn)稱IO。我們先看一下socket...
近期遇到一個(gè)問題,簡(jiǎn)單點(diǎn)說,主機(jī)A上顯示一條ESTABLISHED狀態(tài)的TCP連接到主機(jī)B,而主機(jī)B上卻沒有任何關(guān)于主機(jī)A的連接信息,經(jīng)查明,這是由于主機(jī)A和主機(jī)B的發(fā)送/接收緩沖區(qū)差異巨大,導(dǎo)致主機(jī)B進(jìn)程退出后,主機(jī)A暫時(shí)憋住,主機(jī)B頻繁發(fā)送零窗口探測(cè),F(xiàn)IN_WAIT1狀態(tài)超...
【導(dǎo)語】:開源的在線流程圖繪制工具。簡(jiǎn)介Wireflow是一個(gè)免費(fèi)的、開源的在線流程圖繪制工具,用于創(chuàng)建漂亮的流程圖,無需Photoshop技能。支持使用100多種自定義圖形、可進(jìn)行多人協(xié)作、權(quán)限分配、實(shí)時(shí)聊天等功能,并擁有豐富的功能組件庫。Wireflow的誕生是為了在項(xiàng)目規(guī)劃...
↓推薦關(guān)注↓前言:一直是想知道一條SQL語句是怎么被執(zhí)行的,它執(zhí)行的順序是怎樣的,然后查看總結(jié)各方資料,就有了下面這一篇博文了。本文將從MySQL總體架構(gòu)--->查詢執(zhí)行流程--->語句執(zhí)行順序來探討一下其中的知識(shí)。一、MySQL架構(gòu)總覽:架構(gòu)最好看圖,再配上必要的說明文字。下圖...
↓推薦關(guān)注↓hi,大家好,由于移動(dòng)互聯(lián)網(wǎng)不斷發(fā)展,導(dǎo)致網(wǎng)絡(luò)流量徒增,推動(dòng)著網(wǎng)絡(luò)技術(shù)不斷地發(fā)展,而CPU的運(yùn)行頻率基本停留在10年前的水平,為了迎接超高速網(wǎng)絡(luò)技術(shù)的挑戰(zhàn),軟件也需要大幅度創(chuàng)新,結(jié)合硬件技術(shù)的發(fā)展,DPDK(DataPlaneDevelopmentKit),一個(gè)以軟件...
↓推薦關(guān)注↓從Linux內(nèi)核3.15開始,您可能一直在關(guān)注內(nèi)核社區(qū)中擴(kuò)展的BerkeleyPacketFilter(eBPF)的開發(fā),或者您可能仍然將BerkeleyPacketFilter與VanJacobson在1992年所做的工作聯(lián)系起來。您可能已經(jīng)使用BPF和tcpdum...
↓推薦關(guān)注↓1.PageCache1.1PageCache是什么?為了理解PageCache,我們不妨先看一下Linux的文件I/O系統(tǒng),如下圖所示:Figure1.Linux文件I/O系統(tǒng)上圖中,紅色部分為PageCache??梢奝ageCache的本質(zhì)是由Linux內(nèi)核管理的...
↓推薦關(guān)注↓看完后不再迷茫!在校學(xué)生的編程語言和數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)還不錯(cuò),我認(rèn)為應(yīng)該在《操作系統(tǒng)》和《計(jì)算機(jī)體系結(jié)構(gòu)》這兩門課上下功夫,然后才去讀編程方面的APUE、UNP等書。下面簡(jiǎn)單談?wù)勎覍?duì)學(xué)習(xí)這兩門課的看法和建議,都是站在服務(wù)端程序員的角度,從實(shí)用主義(pragmatic)的立...
socketfd長什么樣子?什么是socketfd?粗糙的來講,就是網(wǎng)絡(luò)fd,比如我們最常見的C/S客戶端服務(wù)端的編程模式,就是網(wǎng)絡(luò)通信的一種方式。撇開底層和協(xié)議細(xì)節(jié),網(wǎng)絡(luò)通信和文件讀寫從接口上有本質(zhì)區(qū)別嗎?其實(shí)沒啥區(qū)別,不就是讀過來和寫過去嘛,簡(jiǎn)稱IO。我們先看一下socket...
↓推薦關(guān)注↓hi,大家好,內(nèi)存拷貝是比較耗時(shí)操作,零拷貝是常用優(yōu)化手段,今天分享的文章就是Linux系統(tǒng)零拷貝技術(shù),Kafka和MySQL開源組件都用到這個(gè)核心技術(shù),希望大家可以掌握。DMA與零拷貝技術(shù)注意事項(xiàng):除了DirectI/O,與磁盤相關(guān)的文件讀寫操作都有使用到pagec...
極簡(jiǎn)主義者,崇尚簡(jiǎn)潔明快的代碼風(fēng)格,這也可能是不喜歡Java全家桶的原因……當(dāng)然我說的簡(jiǎn)潔是要建立在不降低可讀性的前提下,即不影響代碼本身的表現(xiàn)力。如果為求代碼精簡(jiǎn)而讓代碼晦澀艱深同樣不可取。本文會(huì)介紹10個(gè)條款。1.善用emplaceC11開始STL容器出現(xiàn)了emplace(置...