原创 Leetcode---41

給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。    示例 1:輸入: [1,2,0] 輸出: 3 示例 2:輸入: [3,4,-1,1] 輸出: 2 示例 3:輸入: [7,8,9,11,12] 輸出: 1 說明:  你的算

原创 智能指針 --- 循環引用問題、解決辦法

上一篇介紹了四種智能指針,四種智能指針的特點及使用方法 看段代碼: class B; class A { public: A(){ cout << "A()" << endl; } A(int i):a(i){ cou

原创 繼承多態 一

繼承有三種繼承方式,public繼承、protected繼承、private繼承     基類成員的訪問權限在派生類裏必須是 <= 繼承方式的 繼承方式 基類的public成員 基類的protected成員 基類的private成員 pu

原创 c++類對象的生存週期 二

構造了一個Test的類 代碼如下: // // Created by yanpan on 2019/4/21. // #if 1 #include <iostream> using namespace std; class Test

原创 mysql的隔離級別

堅持 有四種隔離級別,每個隔離級別都有對應問題,如 髒讀、不可重複讀、幻讀 由低到高依次爲Read uncommitted 讀未提交 、Read committed 讀已提交、Repeatable read 重複讀、Serializabl

原创 mysql的存儲引擎以及索引

mysql的主要索引innodb和misam innodb: 根據存儲引擎的不同索引的實現也不同,基於B+樹數據結構實現的索引比較多,也有hash索引,根據不同的場景應用不同。 接下來描述下innodb存儲引擎,innodb的主鍵索引是在

原创 leetcode---hash

插入hash表之後,要查找這個key是否存在於hash表中,應該用find函數,然後去和容器的end()進行比較   1.https://leetcode-cn.com/problems/two-sum/ class Solution

原创 進程、線程

什麼是進程? 進程是資源分配的基本單位 有自己獨立的虛擬地址空間,在系統上運行的東西,都可以稱爲進程, 佔用系統的資源 如cpu、物理內存。 什麼是程序? 程序是進程指令的集合,可以啓用一個進程或者多個進程,佔用磁盤空間,不佔用系統資源。

原创 回朔算法

回朔算法的思想很簡單,每一步都是嘗試,如果正確進行下一步,如果不正確則回退,回退到上一步或者原點。 爲了優化時間,不必要的搜索要進行剪枝操作 常見的深度優先搜索就是回朔法的思想,來幾道經典的回朔法。 1.https://leetcode-

原创 動態規劃 -- 動態遞推1

53. 最大子序和 .        給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例:輸入: [-2,1,-3,4,-1,2,1,-5,4],    輸出: 6     解釋:

原创 string類的實現

string類的實現  構造函數、拷貝構造函數、賦值函數、析構函數的實現 #if 1 #include <iostream> using namespace std; class MyString { public: MySt

原创 動態規劃 -- 動態遞推一

第一步. 找出dp狀態的定義 第二步. 找到dp遞推方程 Leetcode120. 三角形的最小路徑和    動態規劃 時間複雜度 O(m*k)   空間複雜度 O(m*k) 一種較爲好理解的解法,定義一個二維的數組 dp, 狀態 存放在

原创 GDB調試多線程程序

gdb調試多線程: gdb調試多線程程序的常用命令 info  threads,顯示當前可調式的所有線程,  gdb調試工具會爲可調式的所有線程分配一個ID,通過ID可以來操作線程。 thread ID, 選擇要調試的目標線程 set s

原创 迭代器失效問題

在序列容器裏,刪除了當前的iterator 導致後邊所有元素的迭代器都會失效   增加一個元素也會導致後邊的元素進行移動        因爲vector、deque是序列容器,使用連續分配的內存,刪除當前元素,後邊的所有元素都會向前移動一

原创 GDB調試多進程程序

gdb調試多進程: 1.使用子進程的pid來調試子進程 attach + 進程pid        將該進程附加到gdb調試器中      6673是子進程的pid,6672是父進程pid 2.使用調試器選項 follow-fork-m