原创 進程與線程的區別——源碼級別

文章目錄一、線程與進程的區別二、進程的創建1.複製進程task_struct總結2.喚醒子進程3.小總結三、線程的創建四、線程與進程源碼級別的區別 一、線程與進程的區別 前天面試的時候被問到了進程與線程的區別,本來這種面試題想來也

原创 MySQL鎖機制與MVCC

文章目錄1.MySQL服務器架構圖2.共享鎖和排他鎖3.MVCC(多版本併發控制)4.InnoDB與MyISAM5.索引的組織形式 1.MySQL服務器架構圖 其實其底層構造和普通的網絡服務器有相似之處,解析器等主要負責SQL語

原创 函數堆棧與進程調度基礎

文章目錄1.創建與使用一個靜態鏈接庫2.創建與使用一個動態鏈接庫3.init進程(/sbin/init)4.線程的三類數據4.task_struct結構體5.理解用戶態函數調用堆棧6.內核態函數棧7.進程調度策略和調度類8.完全公

原创 SQL語法(四)

1.視圖 定義:視圖是虛擬的表,本身並不包含數據,只是包含使用時動態檢索數據的查詢,只是用來查看存儲在別處的數據的一種設施 創建與查看視圖 mysql> create view prodcusters as select cu

原创 LeetCode(4)——動態規劃

動態規劃指把問題分解爲多個階段,每個階段對應一個決策。我們記錄每一個階段可達的狀態集合(去掉重複的),然後通過當前階段的狀態集合,來推導下一個階段的狀態集合,動態地往前推進。這也是動態規劃這個名字的由來。 //揹包問題C++

原创 open系統調用源碼剖析

文章目錄1.簡介2.敢問我的file結構體在何方3.總結附註 1.簡介 需要前備知識,對教程的task_struct結構體有一定的瞭解,尤其是要對其中的struct file有一定了解,明白物理內存與虛擬內存的映射關係,明白文件系

原创 LeetCode(3)——數組

文章目錄1.surrounded-regions(leetcode 130)2. longest-consecutive-sequence(leetcode 128)3.best-time-to-buy-and-sell-stoc

原创 SQL語法(二)

1.子查詢的使用 進行過濾,試着將下列三個查詢select語句組合爲1條嵌套查詢語句: select order_num from orderitems where prod_id='tnt2'; select cust_id

原创 十大排序算法簡單介紹

文章目錄1.直接插入排序2.簡單選擇排序3.冒泡排序4.希爾排序5.快速排序6.堆排序7.歸併排序8.桶排序9.計數排序10.基數排序 1.直接插入排序 算法原理: 每次在無序序列中選取首個元素,依次與有序元素進行比較,然後將其放

原创 BFS and CFS(c++)

注:基於鄰接表實現的bfs與dfs Graph 結構 #include <iostream> #include <algorithm> #include <queue> #include <vector> using namesp

原创 劍指offer(二):字符串(cpp)

上一篇 文章目錄1.替換空格2.二進制中1的個數3.正則表達式匹配4.左旋轉字符串5. 表示數值的字符串6.把字符串轉換成整數7.字符串的排列8.第一個只出現一次的字符9.翻轉單詞順序列10.整數中1出現的次數(從1到n整數中1出

原创 劍指offer(一):數組(cpp)

文章目錄1.二維數組中的查找2.數組中重複的數字3. 構建乘積數組4. 斐波那契數列5. 旋轉數組的最小數字6. 調整數組順序使奇數位於偶數前面7. 順時針打印矩陣8.數組中出現次數超過一半的數字9.最小的K個數10. 連續子數組

原创 SQL語法(一)

1.mysql 關鍵字 關鍵字 說明 示例 DISTINCT 指示mysql只返回不同的值 select distinct vend_id from products; limit 限制結果 select pr

原创 libevent源碼分析(一)

文章目錄一、從signal-test.c示例代碼開始二、由event_base_new函數引發的解析[1]對base->evsel與base->evbase的初始化剖析[2]對event_base_priority_init函數的

原创 劍指offer(三):鏈表(cpp)

上一篇 文章目錄1.從尾到頭打印鏈表2.鏈表中倒數第k個結點3.反轉鏈表4. 合併兩個排序的鏈表5.複雜鏈表的複製6. 二叉搜索樹與雙向鏈表7. 兩個鏈表的第一個公共結點8.鏈表中環的入口結點(單鏈表)9. 刪除鏈表中重複的結點1