原创 網絡:網絡基礎1

網絡發展 (1)獨立模式:計算機之間相互獨立,在早期是用軟盤將數據從一個主機拷貝到另一個主機; (2)網絡互聯:多臺計算機連接在一起,完成數據共享;(將所有主句用網線連在一起,實現通信,共享數據由服務器集中管理) 如圖: (3)

原创 軟件測試1---概念

爲什麼要做軟件測試? 這個問題的回答比較廣泛,首先我們要明白測試是做什麼的?要做哪種測試?怎麼看待測試?這個都是根據個人所理解或者所長來決定的,沒有標準答案; 比如從 (1)思維模式:測試要具有逆向思維,發散性思維; (2)興趣

原创 C++進階:C++類型轉換

在C語言中,轉換的可視性比較差,所有的轉換形式都是以一種相同形式書寫,難以跟蹤錯誤的轉換 轉換使用場景: (1)對對象(變量)進行初始化; (2)對對象(變量)進行賦值; (3)傳參; (4)返回值接收; static_cast

原创 C++進階:STL之樹形結構的關聯式容器4(底層結構:紅黑樹)

紅黑樹的概念 紅黑樹,是一種二叉搜索樹,但在每個結點上增加一個存儲位表示結點的顏色,可以是Red或Black。 通過對任何一條從根到葉子的路徑上各個結點着色方式的限制,紅黑樹確保沒有一條路徑會比其他路徑長出2倍,(例如給出一個滿

原创 Linux:線程池

基礎概念 概念 一種線程使用模式,線程過多會帶來調度開銷,影響緩存局部性和整體性能,而線程池維護着多個線程,等待着監督管理者分配可併發執行的任務,避免了在處理短時間任務時創建和銷燬線程的代價,他能保證對內核的充分利用,還能防止過

原创 mysql---表的設計

三大範式 範式就是表設計的準則,目的是讓表的設計更加合理 第一範式 第一範式表示表中的每個字段,都是不可分割的,如圖: 可以看出address字段是可以分割的,可以分割爲: 這種情況就不滿足第一範式; 第二範式 第二範式就是

原创 Linux:線程同步(條件變量、生產者消費者模型,POSIX信號量)

條件變量 基本概念 我們之前說過,當線程互斥訪問某個變量,可能會產生飢餓問題(例如一個自習室一次只能有一個人進入,當A這個人進入自習室之後,其他人就不能進入,這叫做互斥,但是比如A這個人突然不想佔用自習室了,加鎖然後出來,然後又

原创 Linux:讀者寫者問題

讀者寫者問題也滿足321原則,讀者與讀者之間是共享關係,寫者和寫者之間是互斥關係(不可能同時多個寫者寫,只有一個寫者能夠佔用緩衝區),讀者和寫者之間是互斥和同步的關係(寫者在寫時,讀者不能讀,讀者在讀時,寫者也不能寫,即互斥關係

原创 網絡:網絡基礎3(重點)之數據鏈路層

數據鏈路層負責進行相鄰設備之間的數據幀識別以及傳輸 以太網 “以太網”不是一種具體的網絡,而是一種技術標準 以太網幀格式 如圖: 源地址和目的地址指的是網卡的硬件地址(也叫MAC地址),長度是48位,是在網卡出廠時固化的;幀協

原创 網絡:網絡基礎2(重點)之傳輸層

傳輸層負責不同主機上進程間的數據傳輸,因爲傳輸層的協議中包含主要信息就是端口,典型協議就是TCP/UDP協議 端口號 端口號範圍劃分:0-1023:HTTP、FTP、SSH等應用層協議,我們無法綁定,HTTP協議端口號不能修改。

原创 網絡:網絡編程套接字

基礎概念 源IP地址和目的IP地址: 在IP數據包頭部中,有兩個IP地址,分別是源IP地址(數據報源主機的IP)和目的IP地址(數據報目的主機的IP);還存在一個協議字段告訴應該交給上層的哪一個協議 源IP地址就是讓對端主機知道數

原创 網絡:網絡基礎2(重點)之應用層

我們程序員所寫的解決我們實際問題滿足日常需求的網絡程序都是在應用層,應用層是應用的,傳輸層是進行傳輸的,並不負責應用。 網絡版計算器 我們需要實現一個服務器版的加法器,我們需要客戶端把要計算的兩個加數發過去,然後由服務器進行計算,

原创 mysql:數據庫約束、聚合查詢、分組查詢學習

數據庫約束 非空約束(NOT NULL) 非空約束就是指定某列不能存儲NULL,例如我們創建一個學生表,指定id不能爲NULL,如圖: desc student可以看到id字段不爲NULL,如圖: 唯一約束(UNIQUE)

原创 軟件測試:測試階段分類

測試金字塔和業務測試分析 第一層:UI界面層,包含功能驗證測試、兼容性與用戶測試,兼容性測試主要是對硬件環境(設備)和軟件環境(系統)進行測試,用戶測試例如驗收測試; 第二層:業務邏輯層,包含客戶端模擬測試(例如A爲註冊模塊

原创 Linux:線程互斥

進程線程互斥相關概念 臨界資源:多線程執行流共享的資源叫做臨界資源 臨界區:每個線程內部,訪問臨界資源的代碼,叫做臨界區 互斥:任何時刻,互斥保證有且只有一個執行流進入臨界區,訪問臨界資源,通常對臨界資源起保護作用。 原子性:不會