原创 TCP三次握手-backlog隊列問題

TCP三次握手-backlog隊列問題.md概述之前有同事做壓力測試時,發現無論如何都無法突破128併發的問題,經排查發現該服務器ACCEPT QUEUE隊列都爲128,限制了網絡的併發。TCP三次握手Linux內核協議棧爲一個TC

原创 數據庫學習(三)

四、聚集索引、非聚集索引 聚集索引:類似字典的拼音目錄 數據本身就是按照聚集索引的順序存儲的,應該建在需要頻繁修改的列上,因爲聚集索引的每次改動都以爲這表中數據的物理數據的一次重新排序 聚集索引適合建立在大數據量但是小數目不同值

原创 數據庫學習(四)

六、基本的數據庫性能分析方式:explain+慢SQL分析 使用EXPLAIN關鍵字可以模擬優化器執行SQL查詢語句,從而知道MySQL是 如何處理你的SQL語句的。分析你的查詢語句或是表結構的性能瓶頸。 使用方式:Explain+S

原创 數據庫相關知識學習(一)

學習內容: 1、數據庫4個隔離級別 2、數據庫事務4個特性:ACID 3、nnodb、myisam區別 4、聚集索引、非聚集索引 5、B樹(B-Tree)、B+樹(B+Tree) 6、基本的數據庫性能分析方式:explain、慢查詢日

原创 數據庫相關知識學習(二)

二、數據庫事務4個特性:ACID 1.原子性(Atomicity): 事務開始後的所有操作,要麼全部做完,要麼全部不做,不可以停滯在中間環節。事務執行過程中若出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。事務是一個不可分

原创 c++異常

先來個面試題:設計一個算法實現1+2+…+n不能使用+、-運算符 且時間複雜度爲o(n) 解決方案: #define _CRT_SECURE_NO_WARNINGS 0; #include<iostream> #include<stdli

原创 Huffman文件壓縮小項目

一、基礎知識鋪墊: 本質: 1、Hffman樹: Huffman樹,又稱爲最優二叉樹,是加權路徑長度最短的二叉樹。 2、採用算法: 貪心算法 應用: 3、分類: 4、本文主要實現一下無損壓縮: 無損?壓縮?(思考清楚) Huffm

原创 linux開發工具

本篇博客主要解決以下幾個問題: 1. vim自行查找資料, 自行配置插件. 2. 自行查找資料, 調研除了vim, 還有哪些常用的牛逼的編輯器, 並能夠橫向對比編輯器之間的區別和優缺點. 3. 自行查找資料, 調研除了gcc,

原创 網絡基礎(一)

一、複習: 1、進程處理信號必須在合適的時候,即從內核態切換到用戶態。 2、對信號的處理方式:3種 1)缺省;2)忽略;3)自定。 3、信號產生——-信號被判定———-信號在合適的時候被處理——–信號的處理過程——–信號有哪些處理方式。

原创 進程間通信

同步和互斥  互斥:由於各個進程需要共享資源,而共享資源具有排他性。各個進程競爭使用這些資源,進程的這種關係稱之爲互斥。  這種一次只能被一個進程使用的資源稱之爲臨界資源 訪問臨界資源的代碼段稱之爲臨界區。  同步:多個進程相互配合

原创 IO多路轉接select、poll、epoll模型

I/o多路轉接之select: 一、select: 1、特點:負責等 2、可以等待多個fd(read負責讀取) 系統提供select函數來實現多路複用輸入/輸出模型 輸入:用戶想告訴操作系統哪個是你應該關心的讀事件 輸出:操作系統

原创 線程

一、線程的基本概念 1、線程是在進程內部運行的一個執行分支 2、線程的創建成本比較小,刪除進程成本也比較小,只需要創建一個PCB,指向那塊內存地址空間就行。 3、線程是在進程內部運行,本質上是在同一塊地址空間上運行。 怎麼理解一個進

原创 Linux進程概念

一、認識馮諾依曼系統: 常見的計算機,如筆記本。我們不常見的計算機,如服務器,大部分都遵守馮諾依曼體系。 截至目前,我們所認識的計算機,都是有一個個的硬件組成 輸入單元:鍵盤,鼠標,掃描儀,寫板等 中央處理器:含運算器和控制器

原创 linux進程替換(下)

一、替換原理: 用fork創建子進程後執行的是和父進程相同的程序,子進程往往要調用一種exec函數以執行另一個程序。當進程調用一種exec函數時,該進程的用戶空間代碼和數據完全被新程序替換,從新程序的啓動例程開始執行。調用exec並不創建

原创 模板類--Vector

首先鋪墊一些擴展性知識: 1、模板不支持分離編譯,why? 分離編譯不會模板實例化 2、怎樣解決? 1)顯示實例化,最好指定模板類型(因爲有的模板必須指定類型)。 2)最好的方式是把聲明和定義放一個頭文件裏(類裏面定義太大了)。 四大成