原创 排序3——堆排序,歸併排序,快速排序

繼續講排序的方法 堆排序: void heapify(int *a, int i, int len) { int left = 2 * i + 1; int right = 2 * i + 2; int

原创 文件系統編程——標準I/O庫

printf函數向標準輸出寫入多個字符,所寫入的字符被放在一個用戶態的緩衝區中,直到碰到一個換行符,系統才調用write函數將緩衝區中的數據寫入標準輸出,也就是說,在換行符之前寫入的字符並不會立即出現在控制檯屏幕上。 系統調用要

原创 進程控制1——關於進程控制的一些基礎知識

進程是一個具有一定獨立功能的程序的一次運行活動 程序是放到磁盤的可執行文件,進程是指程序執行的實例。 進程執行的狀態: 每個進程都有一個ID(ID是一個正整數),唯一標識了系統中的這個進程。 每個進程都有一個創建它的進

原创 二叉樹1——創建與插入節點

二叉樹在圖論中是這樣定義的:二叉樹是一個連通的無環圖,並且每一個頂點的度不大於3。有根二叉樹還要滿足根結點的度不大於2。有了根結點之後,每個頂點定義了唯一的父結點,和最多2個子結點。然而,沒有足夠的信息來區分左結點和右結點。如果不

原创 JavaScript中的深拷貝與淺拷貝

js中的內存分爲棧內存與堆內存 棧內存的六種數據類型:String Number Boolean undefined null Symbol 棧內存會開闢出一個新的空間存放數據,因此當a的值發生變化時,b的值不會改 let a =

原创 繼承的訪問控制

1、單個類的訪問控制 單個類的訪問控制我們都是知道的,而且在之前的課程中也講過了: public 修飾的成員變量 方法 在類的內部 類的外部都能使用。 protected: 修飾的成員變量方法,在類的內部使用 ,在繼承的子類中可用

原创 小項目——基於嵌入式 web 服務器的測控系統

在 Linux 下,移植一個 boa 服務器,編寫相應 cgi,在網頁上動態刷新串口數據(使用虛擬串口),使用到串口編程,數據庫編程及簡單前端知識。 該測控系統測量數據通過虛擬串口傳遞(由於條件限制未使用傳感器),目前只有測的功能,未來

原创 類模板中的static關鍵字

從類模板實例化的每個模板類有自己的類模板數據成員,該模板類的所有對象共享一個static數據成員 和非模板類的static數據成員一樣,模板類的static數據成員也應該在文件範圍定義和初始化 每個模板類有自己的類模板的static數

原创 括號運算符重載

圓括號運算符()也可以重載,重載之後對象就可以使用圓括號運算符了。 括號運算符只能被重載爲類的非靜態成員函數,不能重載爲友元函數和普通函數。 載括號運算符函數的參數個數沒有限制,甚至沒有參數都可以。 重載格式 類型 類 ::

原创 構造函數拓展

1、默認構造函數 如果類中沒有定義任何構造函數,編譯器會自動生成一個無參構造函數,沒有做任何事情, 如果寫了構造函數,編譯器將不再提供默認的無參構造函數,如果還還想進行無參構造,需要顯示定義無參構造函數 如果沒有定義拷貝構造函數,編譯

原创 小項目——通訊錄2.0

上一個版本的通訊錄是使用鏈表操作數據,最後寫入文件中存儲,最後實現的信息管理,在瞭解過一段設計模式後,產生了一個想法,就是使用一個單例模式,對數據庫進行操作,實現信息管理。 (這個版本是在Windows平臺下使用vs編寫,用的數據庫是M

原创 c語言到c++過渡2

本文接上文所講,對c語言到c++間的過渡做一個歸納 1、函數參數問題 首先是函數的參數問題,c語言中函數可以沒有返回參數類型,函數參數可以沒有數據類型,沒有參數的函數可以接收任意個參數,這樣是不太好的,而在c++中,沒有參數的函數就被看

原创 小項目:即時通訊系統

這個簡單的通訊系統使用 C 語言完成編寫,採用 C/S 架構,在 Linux 平臺下,運用到 TCP/IP 協議,多線程編程的技術,使用幾個簡單 API 對 sqlite3 數據庫進行操作,能實現註冊,登錄,羣聊,私聊等幾種功能。 下面是

原创 多線程編程2——線程同步

信號量 信號量通常有兩種:二進制信號量和計數信號量。二進制信號量只有0和1兩種取值,計數信號量有更大的取值範圍。 信號量一般用來保護一段代碼,使其每次只能被一個執行線程運行,要完成這個工作,可以使用二進制信號量。 有

原创 c到c++的過渡

c++對c的加強 1、命名空間 一箇中大型軟件往往由多名程序員共同開發,會使用大量的變量和函數,不可避免地會出現變量或函數的命名衝突。當所有人的代碼都測試通過,沒有問題時,將它們結合到一起就有可能會出現命名衝突。 爲了解決合作開發時的