原创 qt 彈窗

純粹做個記錄 QMessageBox msgBox; msgBox.setWindowTitle(QString::fromUtf8("提示")); msgBox.setText(QString::fromUt

原创 設計模式(二十三) 建造者模式 C++

意圖:將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。 主要解決:主要解決在軟件系統中,有時候面臨着"一個複雜對象"的創建工作,其通常由各個部分的子對象用一定的算法構成;由於需求的變化,這個複雜對象的各個部分經常面臨

原创 C11 鎖

1.mutex   頭文件是<mutex>,mutex是用來保證線程同步的,防止不同的線程同時操作同一個共享數據。 但是使用mutex是不安全的,當一個線程在解鎖之前異常退出了,那麼其它被阻塞的線程就無法繼續下去。 用法:lock() u

原创 C++ 簡單工廠(靜態工廠方法)

定義:定義一個工廠類,他可以根據參數的不同返回不同類的實例 在簡單工廠模式中用於被創建實例的方法通常爲靜態(static)方法,因此簡單工廠模式又被成爲靜態工廠方法(Static Factory Method) 需要什麼,只需要傳入一個正

原创 設計模式(十)中介者模式C++

中介者模式 中介者模式(Mediator Pattern)是用來降低多個對象和類之間的通信複雜性。這種模式提供了一箇中介類,該類通常處理不同類之間的通信,並支持鬆耦合,使代碼易於維護。中介者模式屬於行爲型模式。 介紹 意圖:用一箇中介對象

原创 C++跨平臺定時器

自己簡單封裝了下 #include<iostream> using namespace std; #ifdef WIN32 // win #include <synchapi.h> #define SAFE_SLEEP(x) Sle

原创 智能指針shared_ptr

一、 原理 :RAII 資源獲取即初始化技術 原理:接受一個申請好的內存地址,構造一個保存在棧上的智能指針對象,當程序退出棧的作用域範圍後,由於棧上的變量自動被銷燬,智能指針內部保存的內存也就被釋放掉了(除非將智能指針保存起來)。 爲什麼

原创 C++ socket通信:阻塞IO(入門級)

我所記錄的是Windows下的Sosket阻塞通信方式 阻塞IO注意兩個點: 1、#include <winsock2.h>一定要在#include <windows.h>之前,否則會報錯。 2、客戶端和服務器緩存區大小需要保持一致才能夠

原创 設計模式(九)備忘錄模式 C++

備忘錄模式 備忘錄模式(Memento Pattern)保存一個對象的某個狀態,以便在適當的時候恢復對象。備忘錄模式屬於行爲型模式。 介紹 意圖:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。 主要解決:所謂

原创 設計模式(十三)外觀模式 C++

介紹 “用一句話說明就是分層設計,爲複雜的模塊套個殼~“” 意圖:爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。 主要解決:降低訪問複雜系統的內部子系統時的複雜度,簡化客戶端與之的

原创 設計模式(十二)狀態模式 C++

狀態模式:狀態模式允許一個對象在其內部狀態改變的時候改變行爲。 在狀態模式(State Pattern)中,類的行爲是基於它的狀態改變的。這種類型的設計模式屬於行爲型模式。 設計的時候把狀態對象和目標對象分離。目標對象執行行爲的時候,把

原创 設計模式(二十二)觀察者模式 C++

當對象間存在一對多關係時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。觀察者模式屬於行爲型模式。 觀察者模式所做的內容就是解耦 應用場景之一就是數據中心和多個業務單元的分離