原创 Go的基本數據類型

整數 與其他程序設計語言一樣,Go的整型也分爲有符號整型和無符號整型兩類。有符號整型有int、int8、int16、int32、int64;無符號整型有uint、uint8、uint16、uint32、uint64、uintptr。上述整

原创 MySQL數據類型

MySQL提供了多種數據類型,主要包括數值類型、字符串類型、日期和時間類型等。不同版本的MySQL支持的數據類型及其命名方式可能會稍有不同。我們可以通過查詢幫助文件來獲得具體信息,以5.7.19爲例: 我們還可以進一步查詢某一種具體類型

原创 MySQL基礎——SQL語句

DDL語句 DDL(Data Definition Language)語句即數據定義語句,這些語句用來定義數據段、數據庫、表、列、索引等數據庫對象。常用的語句關鍵字主要有create、drop、alter等。 創建數據庫 CREATE

原创 主存內容更新算法

更新主存內容 主存和緩存之間信息交換的關鍵是更新主存內容,一般有兩種更新算法:寫回法(Write Back)和寫直達法(Write Through)。 寫回法是指在CPU執行寫操作命中Cache時,信息只寫入Cache,僅當需要被替換時,

原创 《劍指offer》題解

1.賦值運算符函數 CMyString& CMyString::operator=(const CMyString &str) { if (this != &str) { CMyString strTem

原创 Linux進程間通信總結

  目錄 信號 管道 命名管道 System V IPC 組成 標識符 ftok函數 結構定義 特點 消息隊列 信號量 共享內存 套接字 Linux下的進程間通信(Interprocess Communication,IPC)方式基本上是

原创 進程間通信之Linux管道編程

管道簡述 管道(pipe)是Unix/Linux中最常見的進程間通信方式之一,它在兩個進程之間實現一個數據流通的通道,數據以一種數據流的方式在進程間流動。在系統中,管道相當於文件系統上的一個文件,用於緩存所要傳輸的數據。在某些特性上又不同

原创 進程間通信之Linux共享內存編程

共享內存 共享內存(Shared Memory)是指多個進程共享一段指定的內存空間進行數據交互,三種System V IPC機制(另外兩種是信號量和消息隊列)中共享內存是速度最快的一種。 共享內存機制是最快的一種進程間通信(Interpr

原创 進程間通信之Linux命名管道編程

命名管道 管道(匿名管道)的使用侷限性大,這與管道的實現機制有關。而命名管道(Named Pipe)不僅可在同一臺計算機的任意不同進程之間通信,而且還可以在跨越一個網絡的不同計算機的不同進程之間,支持可靠的、單向或雙向的數據通信。 命名管

原创 進程間通信之Linux信號量編程

信號量 信號量(Semaphore)是一種用於實現計算機資源共享的IPC機制之一,其本質是一個計數器。信號量是在多進程環境下實現資源互斥訪問或共享資源訪問的方法,可以用來保證兩個或多個關鍵代碼段不被併發調用。在進入一個關鍵代碼段之前,進程

原创 進程間通信之Linux消息隊列編程

消息隊列 消息隊列是一種以鏈表爲結構組織的數據,存放在Linux內核中,是由各進程通過消息隊列標識符來引用的一種數據傳送方式。每個消息隊列都有一個隊列頭,利用結構struct msg_queue來描述。隊列頭中包含了該消息隊列的基本信息,

原创 字符串匹配算法

目錄 Brute-Force算法 Knuth-Morris-Pratt算法 確定有限狀態自動機 部分匹配表 Boyer-Moore算法 Rabin-Karp算法 總結 網絡信息中充滿大量的字符串,對信息的搜尋至關重要,因此子字符串查找(即

原创 Bellman-Ford算法及其優化

與Dijkstra算法一樣,我們定義一幅加權有向圖的結構如下: //帶權有向圖 struct EdgeWeightedDigraph { size_t V; //頂點數 size_t E; //邊數 map<int, forwar

原创 計數排序

在所有基於比較的排序算法中,最快的算法其時間複雜度爲O(NlogN),事實上可以證明,這已經是基於比較的排序算法的時間複雜度下界了。但有一種實現簡單的非比較排序算法可以突破基於比較的排序算法這一時間下界——計數排序(Counting So

原创 Dijkstra算法

Dijkstra算法是求解帶權有向圖中兩點之間最短路徑的經典算法,它採用貪心策略,維護一個向量dis用來表示從起點到其餘頂點的路徑“長度”。其主要原理如下: 1.定義一個向量dis[],下標表示頂點,即dis[v]的值表示爲從起點到v點的