原创 牛客網:判斷兩棵樹是否相同

給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同,並且節點具有相同的值,則認爲它們是相同的。 示例 1: 輸入: 1 1 / \ / \

原创 進程間通信(三)共享內存

概念: 共享內存區是最快的IPC形式。⼀一旦這樣的內存映射到共享它的進程的地址空間,這些進程間數據傳遞不再 涉及到內核,換句話說是進程不再通過執⾏行進⼊入內核的系統調⽤用來傳遞彼此的數據。 共享內存中的函數: shmget函數:

原创 進程間通信(三)消息隊列

什麼是消息隊列 1)消息隊列提供了一個進程向另外一個進程發送一塊數據的方法。 2)每個數據塊都認爲有一個類型,接收者進程接收的數據塊可以有不同的類型。 3)消息隊列也有管道一樣的不足,就是每個消息的最大長度是有上限的,每個消息

原创 Linux:多線程概念

線程的概念 1.什麼是線程? 線程是cpu進行調度的基本單位,簡單的來說,線程就是進程裏面的進程,不過線程共享了進程的虛擬地址空間,而且公用了進程的代碼段和數據段,線程是進程裏面的一個執行流(cpu調度的基本單位是線程,線程是

原创 Linux:線程安全

什麼是線程安全? 當我們多線程對臨界資源,或者全局變量靜態變量,(多線程執行流共享的資源)進行操作時,容易造成的問題。因爲在cpu足夠的情況下,多個線程的運行也可能是並行的,因此對臨界資源的訪問,就會造成爭搶操作,然而這種爭搶操作

原创 Linux——多線程概念(一)

線程的概念 1.什麼是線程? 線程是cpu進行調度的基本單位,簡單的來說,線程就是進程裏面的進程,不過線程共享了進程的虛擬地址空間,而且公用了進程的代碼段和數據段,線程是進程裏面的一個執行流(cpu調度的基本單位是線程,線程是真正

原创 (牛客)第一個只出現一次的字符(c++)

在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫). 解題思路: 1.利用C++的map形成鍵值對,每一個字符對應一個相應的鍵值對,遍歷

原创 (劍指offer)求二進制中1的個數(C++)

題目:輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 思路: 通過題目描述,我們首先對題目的要求進行分析,首先我們考慮位運算的右移,然後與1相與,但是我們要考慮到當系統給的數字爲負數時,單純的採用右移的方式,會出現錯

原创 簡單理解RAII(C++)

1.什麼是RAII? RAII即"資源獲取即初始化" 他是一種方法,定義一個類來封裝資源的分配和釋放,在類的構造函數中來實現資源的分配和初始化,在類的析構函數中實現資源的釋放和清理,是C++中一種管理資源,避免資源泄漏的方法。因爲在C

原创 leetcode:459重複的字符串(C++)

題目描述:給定一個非空的字符串,判斷它是否可以由它的一個子串重複多次構成。給定的字符串只含有小寫英文字母,並且長度不超過10000。 示例 1: 輸入: "abab" 輸出: True 解釋: 可由子字符串 "ab" 重複兩次構

原创 leetcode118楊輝三角(C++)

給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。 示例: 輸入: 5 輸出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] c

原创 leetcode:98. 驗證二叉搜索樹(C++)

給定一個二叉樹,判斷其是否是一個有效的二叉搜索樹。 假設一個二叉搜索樹具有如下特徵: 節點的左子樹只包含小於當前節點的數。 節點的右子樹只包含大於當前節點的數。 所有左子樹和右子樹自身必須也是二叉搜索樹。 示例 1: 輸入:

原创 Leetcode:395至少有K個重複字符的最長子串(C++)

找到給定字符串(由小寫字符組成)中的最長子串 T , 要求 T 中的每一字符出現次數都不少於 k 。輸出 T 的長度。 示例 1:輸入: s = "aaabb", k = 3 輸出: 3 最長子串爲 "aaa" ,其中 'a' 重

原创 利用管道實現進程間的單向通信

管道是進程間通信的最原始方式,今天我們利用管道的進程間通信,來實現簡單的進程間單向通信 首先我們需要了解命名管道的一些特性命名管道的使用與創建 然後創建一個fifo_c的文件來實現輸入數據和發送數據 /*這是一個命名管道的實現,

原创 利用消息隊列實現簡單聊天程序

本篇利用消息隊列的特性實現簡單的聊天程序,msgsnd發送數據,msgrcv接收數據來實現聊天功能,消息隊列詳情。 數據接收端msgrcv //這是一個以system V消息隊列實現的聊天程序客戶端 //// 1.創建消息隊列 //