命令模式 命令模式是一種行為設(shè)計(jì)模式,它將請(qǐng)求封裝成一個(gè)對(duì)象,從而使我們可以將不同的請(qǐng)求、隊(duì)列或日志請(qǐng)求等參數(shù)化,同時(shí)支持可撤銷的操作。該模式的核心思想是將請(qǐng)求發(fā)送者和接收者...
命令模式 命令模式是一種行為設(shè)計(jì)模式,它將請(qǐng)求封裝成一個(gè)對(duì)象,從而使我們可以將不同的請(qǐng)求、隊(duì)列或日志請(qǐng)求等參數(shù)化,同時(shí)支持可撤銷的操作。該模式的核心思想是將請(qǐng)求發(fā)送者和接收者...
責(zé)任鏈模式 責(zé)任鏈模式是一種行為型設(shè)計(jì)模式,它將請(qǐng)求和處理請(qǐng)求的對(duì)象解耦,形成一個(gè)請(qǐng)求處理鏈。在該模式中,多個(gè)對(duì)象依次處理同一個(gè)請(qǐng)求,直到找到一個(gè)能夠處理該請(qǐng)求的對(duì)象為止。 ...
代理模式 代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它的主要作用是為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。代理對(duì)象與被代理對(duì)象實(shí)現(xiàn)了相同的接口,客戶端通過(guò)代理對(duì)象訪問(wèn)被代理對(duì)象,代...
外觀模式 外觀模式(Facade Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,它提供了一個(gè)統(tǒng)一的接口,用來(lái)訪問(wèn)子系統(tǒng)中的一群接口。外觀模式定義了一個(gè)高層接口,使得客戶端可以更加方便...
對(duì)象樹與組合模式的關(guān)系 Qt 的對(duì)象樹機(jī)制是組合模式的一種實(shí)現(xiàn),它使用了組合模式的思想來(lái)管理對(duì)象的父子關(guān)系。在 Qt 中,每個(gè)對(duì)象都可以有一個(gè)父對(duì)象,也可以有多個(gè)子對(duì)象。當(dāng)一...
橋接模式 橋接模式(Bridge Pattern)是一種用于將抽象部分和實(shí)現(xiàn)部分分離的設(shè)計(jì)模式。它通過(guò)將實(shí)現(xiàn)部分抽象化,使得抽象部分和實(shí)現(xiàn)部分可以獨(dú)立地變化,從而實(shí)現(xiàn)系統(tǒng)的松...
Qt源碼的設(shè)計(jì)優(yōu)秀程度,相信使用過(guò)Qt的程序員都會(huì)有所感受。若深入源碼去體會(huì),則感受更深。廢話不多說(shuō),先說(shuō)目的。筆者希望通過(guò)解析Qt框架中使用到的設(shè)計(jì)模式和面向?qū)ο笤O(shè)計(jì)原則,...
背景 CMake是一個(gè)跨平臺(tái)的構(gòu)建系統(tǒng),它能自動(dòng)生成各種平臺(tái)和編譯器的構(gòu)建文件,這對(duì)于C++開(kāi)發(fā)人員來(lái)說(shuō)是必須掌握使用的工具。CMake的特點(diǎn)包括: 跨平臺(tái)構(gòu)建:CMake支...
關(guān)鍵概念 下面會(huì)說(shuō)到虛函數(shù)相關(guān)的一些重要細(xì)節(jié)。了解這些概念對(duì)于理解C++中的虛函數(shù)調(diào)用和動(dòng)態(tài)類型檢查非常重要。雖然這些細(xì)節(jié)在匯編層面不一定直接可見(jiàn),但它們確實(shí)影響了編譯器如何...
前言 上一篇文章中,我們了解到了x86-32 MASM的關(guān)鍵寄存器,常用的匯編指令,以及給出簡(jiǎn)單的C++程序編譯后的匯編代碼,并對(duì)照源C++代碼進(jìn)行了逐行解析。本文想要討論的...
前言 這個(gè)標(biāo)題起的有點(diǎn)糾結(jié),感覺(jué)不太好起。實(shí)際上本文想要討論的場(chǎng)景,是一個(gè)比較經(jīng)典的Windows C++商業(yè)應(yīng)用軟件的開(kāi)發(fā)需求:我們希望能夠在程序發(fā)生異常并崩潰時(shí),能夠彈出...
除了想入門瀏覽器內(nèi)核開(kāi)發(fā)的讀者之外,這篇文章對(duì)于CEF(Chromium Embedded Framework)開(kāi)發(fā)者也有一定的參考意義。CEF是一個(gè)將Chromium瀏覽器...
前言 C++程序員始終是要面對(duì)匯編的,不管是為了分析崩潰轉(zhuǎn)儲(chǔ)文件,做必要的性能優(yōu)化,理解計(jì)算機(jī)運(yùn)行過(guò)程,或者是通過(guò)匯編的角度理解C++,學(xué)習(xí)匯編語(yǔ)言都是必要的,此處不進(jìn)行贅述...
如果是C++程序員,應(yīng)該對(duì)懸掛指針這種pain in the ass十分熟悉了。為了避免懸掛指針問(wèn)題,一般有兩種解決思路: 在delete指針時(shí),必須將指針置空。后續(xù)使用時(shí),...
簡(jiǎn)介 Chromium和CEF在其內(nèi)部JavaScript(JS)實(shí)現(xiàn)中使用V8 JavaScript引擎。瀏覽器中的每個(gè)幀(frame)都有其自己的JS上下文(contex...
該文章大量文案使用ChatGPT生成 Windows系統(tǒng)下,什么是環(huán)境變量?進(jìn)程的環(huán)境變量和系統(tǒng)的環(huán)境變量有什么關(guān)系?在Windows系統(tǒng)下,環(huán)境變量是一種包含在操作系統(tǒng)環(huán)境...
博主:Qt的信號(hào)槽機(jī)制的底層實(shí)現(xiàn)是怎樣的?信號(hào)槽機(jī)制和觀察者模式有什么關(guān)系? ChatGPT老師答復(fù):Qt 的信號(hào)槽機(jī)制是一種事件驅(qū)動(dòng)機(jī)制,它主要通過(guò)建立函數(shù)指針來(lái)實(shí)現(xiàn)。在 ...
API使用部分的介紹在末尾,文章前面會(huì)有比較長(zhǎng)的基礎(chǔ)簡(jiǎn)介,視自己的技術(shù)水平可看可不看,豐儉由人~ HTTP協(xié)議與TCP/IP協(xié)議族的關(guān)系 當(dāng)我們談到TCP/IP時(shí),會(huì)有兩個(gè)含...
前置知識(shí) 本文假定讀者已經(jīng)大概知道什么是靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù),并且有一定的使用經(jīng)驗(yàn);編寫過(guò)簡(jiǎn)單的dll和lib模塊,并用于開(kāi)發(fā)可執(zhí)行文件中。前置知識(shí)部分會(huì)介紹.lib和.dll文件...
掌握性能優(yōu)化技巧,在平時(shí)養(yǎng)成編寫性能良好程序的習(xí)慣,遠(yuǎn)比你想象中重要 ”程序員浪費(fèi)了太多的時(shí)間去思考和擔(dān)憂程序中那些非關(guān)鍵部分的速度,而且考慮到調(diào)試和維護(hù),這些為優(yōu)化而進(jìn)行的...