原创 文本繪製技巧

QPainter擁有繪製文本的能力 drawText(擁有多個重載形式) 常見調用方式 p.drawText(10, 10, “D.T.Software”); p.drawText(0, 0 , 100 , 30, Qt::A

原创 多線程間的同步

多線程編程的本質 併發性是多線程編程的本質 在宏觀上,所有線程並行執行 多個線程間相對獨立,互不干涉 同步:在特殊情況下,控制多線程間的相對執行順序 QThread類直接支持線程間的同步

原创 基礎圖形繪製

QPainter(Qt中的畫家):能夠繪製各種圖形,擁有繪圖所需的畫筆(QPen),畫刷(QBrush),字體(QFont) QPaintDevice(Qt中的畫布):QPainter的繪圖板,所有的QWidget類都繼承自QPa

原创 Linux內核源碼學習(1)

一,內核簡介 1,在安裝好的Linux系統中,內核的源代碼位於/usr/src/linux。 2的10次方就是1K(1024);16位CPU的地址空間是64K。 X86結構的80386是32位CPU 段描述結構僞代碼: typed

原创 登錄對話框的改進

驗證碼機制 隨機產生驗證碼 用戶識別後填寫 判斷用戶識別的正確性 隨機數 計算機無法產生真正意義上的隨機數 計算機只能模擬隨機數序列(僞隨機數) 隨機種子決定每次產生的隨機序列是否相同 qsrand(seed);設置隨機數種

原创 C(#和##操作符)

概念 #運算符用於在預處理期將宏參數轉換爲字符串 在預處理期完成,因此只在宏定義中有效 編譯器不知道#的轉換作用 用法 #define STRING(x) #x printf("%s\n",STRING(Hello Worl

原创 進程與線程

進程:程序被加載到內存中執行後得到進程 程序和進程的區別: 程序是物理存儲空間中的數據文件 進程是內存中動態的運行實體 聯繫 一個程序可能對應多個進程 一個進程可能包含多個程序 值得注意: 在當代操作系統中,資源分配的基本

原创 線程的生命期問題

C++對象有生命週期; 線程也有生命週期; QThread對象的生命週期與對應的線程生命週期是否一致?

原创 面試題(3)

軟件工程基礎 什麼是軟件工程:採用工程的概念、原理、技術和方法來開發和維護軟件 軟件是一種邏輯實體; 軟件開發和運行常常受到計算機系統的限制,對計算機系統有着不同程度的依賴性 軟件成本相當昂貴。需要投入大量的、複雜的、高強度的

原创 多線程間的互斥

臨界資源 每次只允許一個線程進行訪問(讀/寫)的資源 線程間的互斥(競爭) 多個線程在同一時刻都需要訪問臨界資源 QMutex類是一把線程鎖,保證線程間的互斥 利用線程鎖能夠保證臨界資源的安全性 小結 臨界資源每

原创 多線程與界面組件的通信

是否可以在子線程中創建界面組件? 子線程如何對界面組件進行更新? 子線程能夠更改界面組件狀態的本質是什麼? 另一種可以間接讓子線程更新界面組件的狀態的方式

原创 面試題(1)

C++的基礎數據類型分爲3種:整數型、浮點型和void型 除了指針類型與long隨操作系統字長變化而變化外,其他的都固定不變(32位和64相比) 表示整數、字符和布爾值的算術類型合稱爲整形,整形根據修飾符細分爲13種形式,它們的

原创 Qt中的多線程編程

Qt中通過QThread直接支持多線程 QThread是一個跨平臺的多線程解決方案 QThread以簡潔易用的方式實現多線程編程 Qt中的線程是以對象的形式被創建和使用 每一個線程對應着一個QThread對象 在工程開發

原创 多線程中的信號與槽

如果程序中有多個線程,槽函數在哪個線程中執行? 只要函數體中沒有訪問臨界資源的代碼,同一個函數可以被多個線程同時調用,且不會產生任何副作用 研究槽函數的具體執行線程意義:當信號的發送與對應槽函數的執行在不同線程

原创 另一種創建線程的方式

如何靈活的指定一個線程對象的線程入口函數?