這段時(shí)間在維護(hù)產(chǎn)品的搜索功能,每次在管理臺(tái)看到elasticsearch這么高效的查詢效率我都很好奇他是如何做到的。 這甚至比在我本地使用MySQL通過(guò)主鍵的查詢速度還快。
想要在程序里監(jiān)控?cái)?shù)據(jù)庫(kù)的操作耗時(shí),想要在底層框架中自動(dòng)傳遞鏈路跟蹤信息,這些需求經(jīng)常會(huì)碰到,特別是在構(gòu)建基礎(chǔ)框架的時(shí)候。核心目標(biāo)只有一個(gè),那就是在底層封裝好,不用上層使用人員關(guān)心。今天跟大家聊聊常用的底層擴(kuò)展埋點(diǎn)方式是怎么處理的。
對(duì)于Java程序員來(lái)說(shuō),null是令人頭痛的東西。時(shí)常會(huì)受到空指針異常(NPE)的騷擾。連Java的發(fā)明者都承認(rèn)這是他的一項(xiàng)巨大失誤。那么,有什么辦法可以避免在代碼中寫大量的判空語(yǔ)句呢?有人說(shuō)可以使用JDK8提供的Optional來(lái)避免判空,但用起來(lái)還是有些麻煩。作者在日常工作中封裝了一個(gè)工具,可以鏈?zhǔn)秸{(diào)用對(duì)象成員而無(wú)需判空,相比原有的if null邏輯和JDK8提供的Optional更加優(yōu)雅易用。
非常實(shí)用,新手必看!
本篇通過(guò)C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的進(jìn)程5狀態(tài)模型的狀態(tài)機(jī),讓大家熟悉一下?tīng)顟B(tài)機(jī)的魅力。
當(dāng)使用參數(shù)調(diào)用宏時(shí),會(huì)將參數(shù)替換為宏主體,并與其他輸入文件一起檢查結(jié)果,以進(jìn)行更多的宏調(diào)用,可以將部分來(lái)自宏主體和部分自變量的宏調(diào)用組合在一起。
最近工作中使用C語(yǔ)言,但又苦于沒(méi)有高效的字符串實(shí)現(xiàn),字符串的拼接和裁剪都比較麻煩,而且每個(gè)字符串都需要申請(qǐng)內(nèi)存,內(nèi)存的申請(qǐng)和釋放也很容易出bug,怎么高效的實(shí)現(xiàn)一個(gè)不需要處理內(nèi)存問(wèn)題并且可以動(dòng)態(tài)擴(kuò)容進(jìn)行拼接和裁剪的string呢?
說(shuō)到指針,估計(jì)還是有很多小伙伴都還是云里霧里的,有點(diǎn)“知其然,而不知其所以然”。但不得不說(shuō),學(xué)了指針,C語(yǔ)言才能算是入門了。
當(dāng)我們談?wù)?c,c++ ,Java,Python的時(shí)候,有些語(yǔ)言不僅很難,而且對(duì)于大多數(shù)軟件開(kāi)發(fā)者來(lái)說(shuō)幾乎是無(wú)法理解的。這些語(yǔ)言被稱為深?yuàn)W的編程語(yǔ)言,英文稱為esoteric programming language,簡(jiǎn)稱esolang。 下面是五種最難理解的語(yǔ)言,我試著用這些語(yǔ)言編寫程序Hello World,貌似非常有趣的樣子。
你知道首款面向工業(yè)和物聯(lián)網(wǎng)應(yīng)用的嵌入式 eMMC 存儲(chǔ)設(shè)備嗎?2019年,西部數(shù)據(jù)(WD)推出了首款面向工業(yè)和物聯(lián)網(wǎng)應(yīng)用的嵌入式 eMMC 存儲(chǔ)設(shè)備,它就是 iNAND IX EM132 驅(qū)動(dòng)器。 其基于該公司的 64 層 BiCS3 3D TLC NAND 閃存打造,讀速高達(dá) 310 MB/s,輔以專為嵌入式、商業(yè)、工業(yè)等用途而設(shè)計(jì)的各項(xiàng)功能,提升了整體的可靠性和耐用性。
什么是嵌入式系統(tǒng)?他有什么作用?網(wǎng)絡(luò)連接一方面能夠?yàn)榍度胧较到y(tǒng)帶來(lái)巨大好處,另一方面卻可能威脅到設(shè)備及設(shè)備所構(gòu)建的物聯(lián)網(wǎng)應(yīng)用的完整性。然而,這一難題現(xiàn)在可以通過(guò)智能設(shè)計(jì)技術(shù)解決。只要使用了正確的基礎(chǔ)架構(gòu),聯(lián)網(wǎng)嵌入式和物聯(lián)網(wǎng)設(shè)備就可以利用在線服務(wù)確保長(zhǎng)期安全地保護(hù)網(wǎng)絡(luò),即使個(gè)別節(jié)點(diǎn)在某一時(shí)刻遭受攻擊。實(shí)現(xiàn)所需安全級(jí)別是一項(xiàng)極為復(fù)雜的工作,幸運(yùn)的是,市場(chǎng)上涌現(xiàn)出多種有效解決方案,如:Microsoft的Azure Sphere及其嵌入式Pluton安全子系統(tǒng),可提供一整套措施和工具來(lái)應(yīng)對(duì)不同威脅。
我們生活在一個(gè)特定的世界,幾乎每個(gè)人都在談?wù)摂?shù)據(jù)和潛在價(jià)值。繪制大量的原始數(shù)據(jù)是復(fù)雜且難以解釋的。近年來(lái),學(xué)習(xí)機(jī)器使我們能夠?qū)崿F(xiàn)在線公司迄今為止所做的大部分價(jià)值,但現(xiàn)在它們正在擴(kuò)展到物理世界。然而,對(duì)于許多人來(lái)說(shuō),傳感器數(shù)據(jù)和集成KI模型之間的路徑似乎幾乎無(wú)法逾越。
這是“玩轉(zhuǎn)嵌入式”專欄作者的自我介紹!
指針沒(méi)有指向一塊合法的內(nèi)存:定義了指針變量,但是沒(méi)有為指針?lè)峙鋬?nèi)存,即指針沒(méi)有指向一塊合法的內(nèi)存。淺顯的例子就不舉了,本文舉幾個(gè)比較隱蔽的例子。
在我們?nèi)粘>幋a中會(huì)發(fā)現(xiàn)有些功能代碼,會(huì)不斷的在不同的成員函數(shù)中用到,但是又不好將這些代碼獨(dú)立成一個(gè)成員函數(shù)。解決辦法之一就是寫一個(gè)公共的函數(shù),不過(guò)函數(shù)用到的一些變量,就可能會(huì)成為全局變量。再說(shuō)為了復(fù)用這么一段代碼,就要單立出一個(gè)函數(shù),也不是很好維護(hù)。此時(shí)就可以用到仿函數(shù)了。
軟件跟硬件之間的界限已經(jīng)越來(lái)越模糊了,那么處于這個(gè)灰色地帶的,就是固件了。
一年一度的Arm技術(shù)大會(huì)正式更名為Arm DevSummit,同時(shí)突破地域限制將在線上舉辦,盛會(huì)也從1天擴(kuò)展至 2 天,11月4-5日,數(shù)千位軟硬件工程師、開(kāi)發(fā)者即將匯聚于此 。
作為一名后端工程師,工作中你肯定和 Redis 打過(guò)交道。Redis 為什么快,這點(diǎn)想必你也知道,至少為了面試也做過(guò)準(zhǔn)備。很多人知道 Redis 快僅僅因?yàn)樗腔趦?nèi)存實(shí)現(xiàn)的,對(duì)于其它原因倒是模棱兩可。
函數(shù)宏,即包含多條語(yǔ)句的宏定義,其通常為某一被頻繁調(diào)用的功能的語(yǔ)句封裝,且不想通過(guò)函數(shù)方式封裝來(lái)降低額外的彈棧壓棧開(kāi)銷。
嵌入式行業(yè)摸爬滾打這幾年,遇見(jiàn)有規(guī)范單元測(cè)試的項(xiàng)目寥寥無(wú)幾。歸根到底,無(wú)非是公司希望快速迭代出產(chǎn)品,有問(wèn)題等客戶反饋再說(shuō)。當(dāng)然,也有人認(rèn)為是嵌入式行業(yè)都是小而美的產(chǎn)品居多,沒(méi)有到一定量級(jí)之前,玩不起單元測(cè)試這種配置。不過(guò),出于對(duì)代碼穩(wěn)定性的追求,我認(rèn)為還是應(yīng)該著手了解一下單元測(cè)試的。畢竟,這是有效提高代碼說(shuō)服力的方式之一。