原创 【數據庫】索引
(一)索引 1.1 概念 索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含着對數據表裏所有記錄的引用指針。更通俗的說,數據庫索引好比是一本書前面的目錄,能加快數據庫的查詢速度。在沒有索引
原创 【C\C++】C和C++的內存管理
(一)內存分佈 1.1 C BSS段: 用來存放程序中未初始化的全局變量和未初始化的靜態變量。 數據段:用來存放程序中已初始化的全局變量和已經初始化的靜態變量。 代碼段:用來存放程序執行代碼。在代碼段中,也有可能包含一些只讀的
原创 【C++】實現atoi函數
注:請勿轉載; (一)函數介紹 atoi() 函數會掃描參數 str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號纔開始做轉換,而再遇到非數字或字
原创 【LeetCode】表現良好的時間段
題目描述: 給你一份工作時間表 hours,上面記錄着某一位員工每天的工作小時數。 我們認爲當員工一天中的工作小時數大於 8 小時的時候,那麼這一天就是「勞累的一天」。 所謂「表現良好的時間段」,意味在這段時
原创 【數據庫】存儲引擎
(一)概念 MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用
原创 【算法】BFS算法練習
(一)問題描述: 給定一個字符串以及多個子串,對於在字符串中出現的子串可以多次移除,求多次移除後能夠得到的最短字符串長度。 輸入: 第一行爲一個字符串,第二行爲多個子串,字符串長度大於0 輸出: 多次移除後能夠得到的最短字符串長
原创 【算法】二叉樹的創建與遍歷
【未完待續中】 (一)二叉樹結構的定義 typedef struct BiNode { char data; struct BiNode* lchild; struct BiNode* rchild; }BiNode, *PN
原创 【linux】粘包的產生和解決
(一)預備知識 tcp是以流動的方式傳輸數據,沒有邊界的一段數據。像打開自來水管一樣,連成一片,沒有邊界。傳輸的最小單位爲一個報文段(segment)。tcp Header中有個Options標識位,常見的標識爲mss(Ma
原创 【算法】二路歸併遞歸與非遞歸思想
(一)公共函數 1.1 頭文件: #include <iostream> #include <vector> #include <stack> #include <queue> #include <iterator> #inclu
原创 【linux】死鎖的概念和解決辦法
(一)死鎖的概念 可以理解成多個併發進程因爭奪非共享的系統資源而產生相互等待的現象。存在兩個或者多個線程互相持有對方所需要的資源,導致這些線程處於等待狀態,無法前往執行。當線程在佔有資源和釋放資源期間,其他線程將不能搶佔該資
原创 【數據結構】八大排序複雜度分析、使用條件分析
(一)複雜度分析 1.1 冒泡排序 冒泡排序不管序列是怎樣,都是要比較n(n-1)/2 次的,最好、最壞、平均時間複雜度都爲O(n²),需要一個臨時變量用來交換數組內數據位置,所以空間複雜度爲O(1)。有很多人說冒
原创 【linux】進程地址空間
(一)進程空間分佈圖: 一個linux進程的虛擬地址空間分佈如下圖所示,分爲用戶空間和內核空間,對於一個32位操作系統來說,4GB的空間分成兩部分,低地址的0~3G給用戶空間,高地址的3G~4G給內核空間
原创 【算法】尋找公共字符串
(一)只求兩個字符串的公共長度 1.1 思路描述 假設求字符串X = “ABCBDAB”,長度記爲xlen; Y = “BDCABA”,長度記爲ylen; 那麼先申請一個二維數組row = xlen,col = ylen
原创 【技術篇】查看linux系統負載情況
什麼是系統平均負載? 系統平均負載是指在特定時間間隔內運行隊列中的平均進程數。 如果每個CPU內核的當前活動進程數不大於3的話,那麼系統的性能是良好的。如果每個CPU內核的任務數大於5,那麼這臺機器的性能有嚴重問題。 1可以被
原创 【linux操作系統】進程和線程
(一)進程 1.1 進程的概念 是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計