原创 C++ deque、queue、stack 使用詳解

目錄 元素訪問 迭代器 容量 修改操作 std::erase, std::erase_if (std::deque) std::swap(std::deque) stack queue 簡介 雙端隊列 (double-ended queu

原创 C++ 動態二維數組(二維vector)

在完成一項任務時可能會需要用到動態二維數組,在C++中,可以使用二維vector創建二維數組。對二維數組的使用,其操作可分爲增刪查改。其中修改操作可以通過簡單賦值操作完成,之後便不再贅述。 創建二維數組: vector<int> vec

原创 C++ 多維map

最近複習了一下map的使用,因爲使用的都是一維的,所以使用常規操作就能滿足需求。以前看到過有人在工作環境中使用多維度的map,當時沒有嘗試實現這種需求,今天想起來了就試了下。基本的思路就是嵌套map,類似於map<string, map<

原创 C++ unordered_map (hash_map)使用詳解(含C++20新特性)

目錄 查找元素 迭代器 容量 修改操作 通接口 哈希策略 觀察器 std::swap(std::unordered_map) std::erase_if (std::unordered_map) 簡介 本篇博客介紹C++常用的無序關聯容器

原创 C++ map使用詳解(含C++20新特性)

目錄 訪問元素 迭代器 容量 修改操作 查找 std::swap(std::map) std::erase_if (std::map) 簡介 map 是一個關聯容器,它提供一對一的數據處理能力(其中第一個稱爲鍵,每個鍵只能在 map 中出

原创 C++ vector使用詳解(含C++20特性)

目錄 介紹兩個關鍵詞 元素訪問 迭代器 容量 修改操作 emplace() & emplace_back() std::erase & std::erase_if (std::vector) 簡介 C++的vector本質上是一個動態數組

原创 C++實現字符串分割函數split()

目錄 使用strtok()完成分割 使用strsep()完成分割 使用strtok_r()完成分割 實現字符串分割 前言 最近遇到了一個字符串分割的問題,在C++的標準庫裏面沒有字符分割函數split()。我想這個問題今後可能還會再遇見,

原创 騰訊2020暑期實習4.26在線筆試編程題

前言 騰訊2020暑期實習筆試在4.26號進行,總共有5道編程題,其中兩道是數據結構中的隊列和棧的考察。這裏我只截了4道題的圖,第一道題的隊列會用就行了,按照要求處理輸入和輸出。這裏我也給出一些題的代碼,雖然不是最優的,但是能解決問題。

原创 mmap內存映射詳解

目錄 mmap基礎概念 mmap內存映射原理 mmap示例代碼 mmap和常規文件操作的區別 mmap使用的細節 mmap基礎概念 mmap是一種內存映射的方法,這一功能可以用在文件的處理上,即將一個文件或者其它對象映射到進程的地址空間,

原创 Raft算法的Leader選舉和日誌複製過程

Raft 簡介 Raft是一種爲了管理複製日誌的一致性算法。它提供了和 Paxos算法相同的功能和性能,但是它的算法結構和 Paxos不同,使得Raft算法更加容易理解並且更容易構建實際的系統。爲了提升可理解性,Raft將一致性算法分解成

原创 解決Linux因非正常關機或死機重啓後進入 initramfs 問題

問題描述 昨晚一直整理資料到1.30。然後就運行代碼讓它自己跑着,結果今天發現電腦死機了。只有鼠標能用,其他按鍵和終端完全沒用。這種情況下我只能強制關機,重啓後進入initramfs。Linux對這類非正常關機或死機導致的問題應該有解決的

原创 2020騰訊後臺開發面試經驗及技術棧

前言 前一段時間參加了騰訊提前批的面試,也算是試了試水。遇到了一些問題,現在整理出來,也算是做個總結,以後不要再犯同樣的錯誤。參加這次提前批面試,主要是通過電話和視頻面試進行的。我將從崗位需求,簡歷書寫及面試內容等方面先介紹。然後羅列出面

原创 I/O多路複用:select、poll和epoll詳解

I/O多路複用 I/O複用使得程序能同時監聽多個文件描述符,這對提高程序的性能至關重要。通常,網絡程序在下列情況下需要使用I/O複用技術: 客戶端程序要同事處理多個socket。比如將討論的非阻塞connect技術。 客戶端程序要同時處

原创 通俗易懂的講解堆排序(含Gif圖)

堆的定義 堆排序是一種樹形結構選擇排序方法,其特點是:在排序過程中,將序列視爲一顆完全二叉樹的順序存儲結構,利用完全二叉樹中雙親結點和孩子結點之間的關係,在當前無序區間中選擇關鍵字最大(或最小)的元素。堆的定義如下: n個關鍵字序列L[1

原创 進程間通信:消息隊列

前言 接下討論的IPC機制,它們最初由System V版本的Unix引入。由於這些機制都出現在同一個版本中並且有着相似的編程接口,所以它們被稱爲System V IPC機制。接下來的內容包括: 信號量:用於管理對資源的訪問。 共享內存:用