資源簡(jiǎn)介:最近在研究Rust,目前大多數(shù)項(xiàng)目都可以使用Rust開(kāi)發(fā),但是涉及到和其他語(yǔ)言交互,比如用Rust開(kāi)發(fā)一個(gè)SDK,一般還是需要導(dǎo)出C接口。那如何將Rust導(dǎo)出C接口?Rust的FFI就是專(zhuān)門(mén)做這件事的。一個(gè)正常的Rust public接口長(zhǎng)這樣:pub fn hello_world() -> i32 { 20}如果要把一個(gè)Rust函數(shù)導(dǎo)出為C接口,需要對(duì)它進(jìn)行改造:#[no_m...
資源簡(jiǎn)介:20多年持續(xù)打磨,國(guó)際經(jīng)典教材計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法?文末送書(shū)!Kurose和他的自頂向下方法就在最近,Kurose和Ross教授合著的《計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法》中文版也剛剛升級(jí)到了第8版,這是一本目前世界上使用最為廣泛的網(wǎng)絡(luò)教科書(shū),書(shū)中倡導(dǎo)的方法就是目前最為流行的自頂向下方法。下面我們就深入地談?wù)凨urose和他的自...
資源簡(jiǎn)介:作者 |?daydreamer前篇《探秘C++內(nèi)存管理(理論篇)》主要介紹了Linux C++程序內(nèi)存管理的理論基礎(chǔ),本文作為系列文章《探秘C++內(nèi)存管理》的第二篇,將會(huì)探討經(jīng)典內(nèi)存管理器ptmalloc如何管理C++程序的內(nèi)存。借助剖析ptmalloc解決問(wèn)題的著重點(diǎn)和設(shè)計(jì)實(shí)現(xiàn)成本的權(quán)衡,更具體的呈現(xiàn)c++內(nèi)存管理面臨的問(wèn)題和工程落地中的巧思。...
資源簡(jiǎn)介:今天的文章外部link比較多我特意整理了link的匯總需要的朋友可以在后臺(tái)回復(fù):“rust ”即可收到自動(dòng)回復(fù),更加方便觀看------------------------------------------------------------------最近看到一篇Google的Blog:Google官宣要把Rust引進(jìn)Chromium項(xiàng)目中。此舉是為了加快開(kāi)發(fā)速度(更少的代碼編寫(xiě),更少的設(shè)計(jì)文檔、更...
資源簡(jiǎn)介:前面介紹了模板這種編譯期動(dòng)作,關(guān)于編譯期動(dòng)作,有必要介紹下constexpr。在這之前有必要簡(jiǎn)單提一下constexpr與const的關(guān)系,兩者字面上都表達(dá)常量的意思。主要的區(qū)別是:const修飾的變量可以在運(yùn)行時(shí)才初始化,而constexpr則一定會(huì)在編譯期初始化。constexpr才是名符其實(shí)的常量,所有的constexpr都是const。而const表示的...
資源簡(jiǎn)介:眾所周知,chatGPT可以不依賴背景立即有效地回答不精確的問(wèn)題。它提供帶有工作代碼的答案。一位美國(guó)的Telegram算法交易員,以其所在的項(xiàng)目組的實(shí)際問(wèn)題進(jìn)行了測(cè)試,問(wèn)題如下:“有沒(méi)有辦法自動(dòng)序列化Protobuf消息?就像以下內(nèi)容:C++結(jié)構(gòu)體->序列化為Protobuf消息結(jié)構(gòu)體->發(fā)送到網(wǎng)絡(luò)”chatGPT回復(fù)如下:如上所示chatGPT解決...
資源簡(jiǎn)介:一、文件系統(tǒng)結(jié)構(gòu)磁盤(pán)的邏輯單元為塊,內(nèi)存和磁盤(pán)之間的I/O傳輸以塊為單位執(zhí)行。磁盤(pán)的特點(diǎn)1可以原地重寫(xiě),可以從磁盤(pán)上讀一塊兒,修改該塊,并將它寫(xiě)回到原來(lái)的位置可以直接訪問(wèn)磁盤(pán)上的任意一塊。因此,可以方便地按順序或隨機(jī)訪問(wèn)文件文件系統(tǒng)需要提供高效快捷磁盤(pán)訪問(wèn),以便輕松存儲(chǔ)、定位、提取數(shù)據(jù)。即存儲(chǔ)文件、訪問(wèn)...
資源簡(jiǎn)介:本文詳細(xì)介紹了 HTTPS 相較于 HTTP 更安全的原因,包括對(duì)稱加密、非對(duì)稱加密、完整性摘要、數(shù)字證書(shū)以及 SSL/TLS 握手等內(nèi)容,圖文并茂、理論與實(shí)戰(zhàn)結(jié)合、建議收藏!1. 不安全的 HTTP近些年來(lái),越來(lái)越多的網(wǎng)站使用 HTTPS 協(xié)議進(jìn)行數(shù)據(jù)傳輸,原因在于 HTTPS 相較于 HTTP 能夠提供更加安全的服務(wù)。很多瀏覽器對(duì)于使用 HTTP 協(xié)...
資源簡(jiǎn)介:大家應(yīng)該都知道,Boost是個(gè)準(zhǔn)標(biāo)準(zhǔn)庫(kù),一般Boost里比較先進(jìn)的模塊可能會(huì)進(jìn)下一代的C++標(biāo)準(zhǔn)。因?yàn)槲易罱陂_(kāi)發(fā)Log相關(guān)的功能,所以業(yè)余時(shí)間也在看看市面上的Log模塊是怎么設(shè)計(jì)的。關(guān)于Log,想必大多數(shù)C++開(kāi)發(fā)都在使用glog或者spdlog,最近我發(fā)現(xiàn)Boost中也有個(gè)Log模塊,于是看了看,發(fā)現(xiàn)功能好強(qiáng)大。Log模塊整體設(shè)計(jì)如圖:圖片...
資源簡(jiǎn)介:作者 |?文庫(kù)基礎(chǔ)架構(gòu)導(dǎo)讀?introduction我們做軟件開(kāi)發(fā)時(shí),或多或少的會(huì)記錄日志。由于日志不是系統(tǒng)的核心功能,常常被忽視,定位問(wèn)題的時(shí)候才想起它。本文由淺入深的探討不起眼的日志是否重要,以及分布式架構(gòu)下的日志運(yùn)維工具應(yīng)該具備哪些能力,希望感興趣的讀者能從本文獲得一些啟發(fā),有所幫助。全文8832字,預(yù)計(jì)閱讀時(shí)...
資源簡(jiǎn)介:入門(mén)和深入C/C++開(kāi)發(fā),通常都會(huì)研究一些優(yōu)質(zhì)的開(kāi)源項(xiàng)目。我整理了一些開(kāi)源項(xiàng)目,一些代碼行數(shù)不多,但是功能還比較有趣,供大家參考:ctpl:https://github.com/vit-vit/ctpl - 簡(jiǎn)易的C ++線程池,代碼行數(shù)約為500左右。cereal: https://github.com/USCiLab/cereal - 快速、小巧、方便的二進(jìn)制 JSON 序列化庫(kù),代碼行數(shù)約為...
資源簡(jiǎn)介:雖然現(xiàn)在有很多新語(yǔ)言和框架出現(xiàn),但C++作為一門(mén)老牌編程語(yǔ)言,在很多領(lǐng)域仍然有它不可替代的優(yōu)勢(shì)。判斷一門(mén)編程語(yǔ)言的趨勢(shì),它存在的時(shí)間是一個(gè)重要的參考因素。如果一個(gè)編程語(yǔ)言已經(jīng)存在了很長(zhǎng)時(shí)間,并且在很多領(lǐng)域仍然有著廣泛的應(yīng)用,那么它很可能會(huì)在未來(lái)繼續(xù)保持其地位。C++作為一門(mén)誕生于上世紀(jì)80年代的編程語(yǔ)言,已...
資源簡(jiǎn)介:最近在知識(shí)星球上線了每日一題欄目,每天提出一個(gè)計(jì)算機(jī)問(wèn)題,球友們討論,并在第二天給出答案。小伙伴們的回復(fù)還算積極。這是其中一個(gè)問(wèn)題,這里分享下:什么是RAII?RAII(Resource Acquisition Is Initialization)即資源獲取即初始化,中文翻譯意義不大… RAII在C++中非常重要。RAII的基本思想是使用類(lèi)的構(gòu)造函數(shù)來(lái)獲取...
資源簡(jiǎn)介:熟悉我的朋友大概知道我最近翻譯了一本介紹C++20特性的“小紅書(shū)”《C++20高級(jí)編程》(第五版)C++標(biāo)準(zhǔn)委員會(huì)Marc Gregoire著這個(gè)版本滿足了我對(duì)C++絕大多數(shù)的幻想。通過(guò)Modules淘汰了C++之前編寫(xiě)大程序的陳舊方式;使用Concepts幫助創(chuàng)建類(lèi)型安全的模板和實(shí)現(xiàn)靈活的模板特化;使用Ranges徹底改變了處理數(shù)據(jù)的方式。這些新功...
資源簡(jiǎn)介:C++代碼提供了足夠的靈活性,因此對(duì)于大部分工程師來(lái)說(shuō)都很難把握。本文介紹了寫(xiě)好C++代碼需要遵循的10個(gè)最佳實(shí)踐,并在最后提供了一個(gè)工具可以幫助我們分析C++代碼的健壯度。原文:10 Best practices to design and implement a C++ class1. 盡可能?chē)L試使用新的C++標(biāo)準(zhǔn)到2022年,C++已經(jīng)走過(guò)了40多個(gè)年頭。新的C++標(biāo)準(zhǔn)實(shí)際...
資源簡(jiǎn)介:一、概述在 C/C++ 中,內(nèi)存管理是一個(gè)非常棘手的問(wèn)題,我們?cè)诰帉?xiě)一個(gè)程序的時(shí)候幾乎不可避免的要遇到內(nèi)存的分配邏輯,這時(shí)候隨之而來(lái)的有這樣一些問(wèn)題:是否有足夠的內(nèi)存可供分配?分配失敗了怎么辦? 如何管理自身的內(nèi)存使用情況? 等等一系列問(wèn)題。在一個(gè)高可用的軟件中,如果我們僅僅單純的向操作系統(tǒng)去申請(qǐng)內(nèi)存,當(dāng)出現(xiàn)內(nèi)...
資源簡(jiǎn)介:前一段時(shí)間面了一些試,這里總結(jié)一下關(guān)于操作系統(tǒng)的面經(jīng),我簡(jiǎn)歷上寫(xiě)了一個(gè)操作系統(tǒng)相關(guān)的項(xiàng)目,所以面試的問(wèn)題可能與平常的八股面試題等等有一些差異,更加偏向具體細(xì)節(jié)和實(shí)現(xiàn)。這里就面試遇到的操作系統(tǒng)相關(guān)問(wèn)題以及我自己的想法整理一下,可以參考參考,有什么問(wèn)題也還請(qǐng)批評(píng)指正。這個(gè)是實(shí)際問(wèn)到我的問(wèn)題自己引申出來(lái)的...
資源簡(jiǎn)介:科普一個(gè)小知識(shí)點(diǎn):電腦硬盤(pán)為什么從C盤(pán)開(kāi)始。來(lái)源 | 程序IT圈前些天硬盤(pán)壞了,幸好不是系統(tǒng)盤(pán),不然那些軟件安裝配置會(huì)把我折騰壞,或許這也是在暗示我該換電腦了。重要的數(shù)據(jù)部分沒(méi)有遭到損壞,數(shù)據(jù)是無(wú)價(jià)的,還是要勤備份。于是換上了一張新的硬盤(pán):當(dāng)時(shí)腦袋里面就閃過(guò)一個(gè)問(wèn)題,為啥 windows 系統(tǒng)不從 A 盤(pán)開(kāi)始分區(qū)顯示...
資源簡(jiǎn)介:今年的就業(yè)形勢(shì),實(shí)在是嚴(yán)峻。社招都這樣,更別說(shuō)應(yīng)屆生。除過(guò)常見(jiàn)的互聯(lián)網(wǎng),以及今年熱門(mén)的新能源。其實(shí)如果大家不想卷,家庭條件也還可以,我建議可以考慮一波國(guó)企。雖然有一些垃圾國(guó)企,但仍然有非常多值得考慮的國(guó)企,畢竟優(yōu)質(zhì)的國(guó)企很穩(wěn)定,不會(huì)像互聯(lián)網(wǎng)一樣擔(dān)憂年紀(jì)大被裁員的情況發(fā)生,福利又好,同事間工作不會(huì)卷來(lái)...
資源簡(jiǎn)介:關(guān)于多線程,之前我就寫(xiě)過(guò)一篇文章:關(guān)于多線程,我給出13點(diǎn)建議其中有一條是:如果真的需要共享數(shù)據(jù),盡量使用通信方式,而非共享內(nèi)存方式。看到這條時(shí),可能有讀者不是特別理解,關(guān)于這一點(diǎn),我想chromium的多線程任務(wù)理念可以給大家啟發(fā)。原文鏈接是:https://chromium.googlesource.com/chromium/src/+/main/docs/threa...
資源簡(jiǎn)介:請(qǐng)你設(shè)計(jì)一個(gè)迭代器類(lèi),包括以下內(nèi)容:一個(gè)構(gòu)造函數(shù),輸入?yún)?shù)包括:一個(gè) 有序且字符唯一 的字符串 characters(該字符串只包含小寫(xiě)英文字母)和一個(gè)數(shù)字 combinationLength 。函數(shù) next() ,按 字典序 返回長(zhǎng)度為combinationLength 的下一個(gè)字母組合。函數(shù) hasNext() ,只有存在長(zhǎng)度為 combinationLength 的下一個(gè)字母組合...
資源簡(jiǎn)介:給定一個(gè)字符串?dāng)?shù)組 arr,字符串 s 是將 arr 某一子序列字符串連接所得的字符串,如果 s 中的每一個(gè)字符都只出現(xiàn)過(guò)一次,那么它就是一個(gè)可行解。請(qǐng)返回所有可行解 s 中最長(zhǎng)長(zhǎng)度。示例1輸入:arr = ["un","iq","ue"]輸出:4解釋?zhuān)核锌赡艿拇?lián)組合是 "","un","iq","ue","uniq" 和 "ique",最大長(zhǎng)度為 4。示例2輸入:arr = ...
資源簡(jiǎn)介:你要開(kāi)發(fā)一座金礦,地質(zhì)勘測(cè)學(xué)家已經(jīng)探明了這座金礦中的資源分布,并用大小為 m * n 的網(wǎng)格 grid 進(jìn)行了標(biāo)注。每個(gè)單元格中的整數(shù)就表示這一單元格中的黃金數(shù)量;如果該單元格是空的,那么就是 0。為了使收益最大化,礦工需要按以下規(guī)則來(lái)開(kāi)采黃金:· 每當(dāng)?shù)V工進(jìn)入一個(gè)單元,就會(huì)收集該單元格中的所有黃金。· 礦工每次可...
資源簡(jiǎn)介:冪集。編寫(xiě)一種方法,返回某集合的所有子集。集合中不包含重復(fù)的元素。說(shuō)明:解集不能包含重復(fù)的子集。示例輸入:nums = [1,2,3]輸出:[ ?[3], ?[1], ?[2], ?[1,2,3], ?[1,3], ?[2,3], ?[1,2], ?[]]分析從題意可以看出是使用回溯思想,由于要求集合中不包含重復(fù)的元素,所以可以先把輸入集合中重復(fù)的元素去掉并且排...
資源簡(jiǎn)介:我們定義「順次數(shù)」為:每一位上的數(shù)字都比前一位上的數(shù)字大 1 的整數(shù)。請(qǐng)你返回由 [low, high] 范圍內(nèi)所有順次數(shù)組成的 有序 列表(從小到大排序)。示例1輸出:low = 100, high = 300輸出:[123,234]示例2輸出:low = 1000, high = 13000輸出:[1234,2345,3456,4567,5678,6789,12345]提示10 <= low <= high <= 10^9分析既...
資源簡(jiǎn)介:題目:無(wú)重復(fù)字符串的排列組合無(wú)重復(fù)字符串的排列組合。編寫(xiě)一種方法,計(jì)算某字符串的所有排列組合,字符串每個(gè)字符均不相同。示例1 輸入:S = "qwe" 輸出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]示例2 輸入:S = "ab" 輸出:["ab", "ba"]提示:字符都是英文字母。字符串長(zhǎng)度在[1, 9]之間。分析經(jīng)典的回溯問(wèn)題,題目要...
資源簡(jiǎn)介:題目:有重復(fù)字符串的排列組合有重復(fù)字符串的排列組合。編寫(xiě)一種方法,計(jì)算某字符串的所有排列組合。示例1: 輸入:S = "qqe" 輸出:["eqq","qeq","qqe"]示例2: 輸入:S = "ab" 輸出:["ab", "ba"]提示:字符都是英文字母。字符串長(zhǎng)度在[1, 9]之間。分析和昨天那道”無(wú)重復(fù)字符串的排列組合”類(lèi)似,區(qū)別在于這道題的輸入字...
資源簡(jiǎn)介:N皇后設(shè)計(jì)一種算法,打印 N 皇后在 N × N 棋盤(pán)上的各種擺法,其中每個(gè)皇后都不同行、不同列,也不在對(duì)角線上。這里的“對(duì)角線”指的是所有的對(duì)角線,不只是平分整個(gè)棋盤(pán)的那兩條對(duì)角線。示例: 輸入:4 輸出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解釋: 4 皇后問(wèn)題存在如下兩個(gè)不同的解法。[ [...
資源簡(jiǎn)介:編寫(xiě)一個(gè)程序,通過(guò)已填充的空格來(lái)解決數(shù)獨(dú)問(wèn)題。一個(gè)數(shù)獨(dú)的解法需遵循如下規(guī)則:數(shù)字 1-9 在每一行只能出現(xiàn)一次。 數(shù)字 1-9 在每一列只能出現(xiàn)一次。 數(shù)字 1-9 在每一個(gè)以粗實(shí)線分隔的 3x3 宮內(nèi)只能出現(xiàn)一次。 空白格用 '.' 表示。一個(gè)數(shù)獨(dú)。答案被標(biāo)成紅色。Note:給定的數(shù)獨(dú)序列只包含數(shù)字 1-9 和字符 '.' 。你可以假設(shè)給...
資源簡(jiǎn)介:題目980:不同路徑III在二維網(wǎng)格 grid 上,有 4 種類(lèi)型的方格1 表示起始方格。且只有一個(gè)起始方格。2 表示結(jié)束方格,且只有一個(gè)結(jié)束方格。0 表示我們可以走過(guò)的空方格。-1 表示我們無(wú)法跨越的障礙。返回在四個(gè)方向(上、下、左、右)上行走時(shí),從起始方格到結(jié)束方格的不同路徑的數(shù)目,每一個(gè)無(wú)障礙方格都要通過(guò)一次。示例1...