3 Giser_D

尚未进行身份认证

https://github.com/huifeng-kooboo

等级
TA的排名 5k+

C++ 11互斥锁的应用(针对于多线程的情况)

C++ 11 线程锁:一、mutex使用方法:1.mutex的lock和unlock(最基本的操作)mutex g_mutex;g_mutex.lock();cout << "test" << endl;g_mutex.unlock();2.try_lock_for:尝试上锁,如果前面已经上锁了 则返回false,否则返回true用法:vo...

2020-02-21 15:11:05

Windows下打开Url 代码封装 C++

bool OpenUrl(std::wstring& url_, OPEN_BROWSER_TYPE browser_type = OPEN_BY_DEFALUT_BROWSER ){ // 如果使用IE打开的话 if (browser_type == OPEN_BY_IE) { HINSTANCE hRet = ::ShellExecuteW(NULL, L"open", L...

2020-02-20 14:03:02

内存对齐的作用

1.为了更好的跨平台,原因:某些硬件只能从特定的内存地址中读取特定类型的数据,然而每个数据的所占的字节数不同,需要统一对齐,那样才会比较方便读取,所以为啥C++比较好跨平台的原因也就是这样。2.加快CPU访问性能,加快的原因是假如一个int或者double类型的数据占4字节的情况下,然后她的起始字节数假设是从1开始,cpu读取的话,就得先1-4 4-8 然后提出1.5-8 再把2-5的字节数放进...

2020-02-20 11:10:18

WindowsAPI-------获取系统的相关信息

头文件#include "stdafx.h"using namespace std;struct WindowVersion{ DWORD marjorVer; //大版本号 DWORD minorVer; // 小版本号 DWORD buildNumber; //构建版本号};class SystemInfo{public: SystemInfo(); ~Syste...

2020-02-19 11:55:23

C++ 手动实现简单的智能指针类

何为智能指针,即不需要用户再自动手动New和Delete掉,由内部类进行new和delete,这样可以防止用户忘记释放掉指针而造成的内存泄漏。这里简单的实现unique_ptr智能指针的方式。头文件// 自制智能指针类头文件template<typename T>class SmartPointer{public: SmartPointer(T* ptr_); ~S...

2020-02-18 16:07:05

内联函数和宏定义的相关区别

内联函数和宏定义的区别相同点 : 主要是为了避免被调用时的开销,是通过编译器来进行实现,而宏定义是通过预处理器进行替换,宏定义不检查函数参数,返回值等东西,只是展开,而相对来说,内联函数会进行检查参数类型,所以会更安全。其中内联函数代码不能太多,不然的话编译器会将其认为是普通函数进行执行。内联函数可以在类里面进行定义,这点宏定义是完全做不到的,即可以访问类的成员等东西...

2020-02-15 21:45:44

C++ 深拷贝和浅拷贝

深拷贝和浅拷贝:听名词很抽象,本质上,就是值传递和引用传递的区别值传递:指的是传递对象,简单的来说,就是复制一个新的给你, 引用传递,指的就是把这个东西给你用,你用了,我这边也会改变,在内存当中的表现,就是深拷贝和浅拷贝的区别。浅拷贝,指的是 内存地址给你用,然后并不会创建一个新的内存,而深拷贝,则会创建一块新的内存。接下来是代码实例:深拷贝和浅拷贝实例代码:// CopyDem...

2020-02-11 16:42:41

QT实现完整TIM登录框界面样式

先上实现TIM登录框效果图此图为实现的TIM效果图:此图为TIM实际登录框样式可以看出,上述实现的 还是基本上实现完整,还有一点小的细节没实现好。接下来是实现的过程的讲解首先创建一个QMainWindow 项目这边只要一路往下按就创建成功,然后双击Form里面的ui文件,进入QTDesigner界面然后后面 就是添加按钮等控件,按钮控件可以通过直接拖动的形式添加简单的...

2020-01-18 20:34:42

C++ Socket通信类的封装(还有点小bug)

首先是需要引用的头文件#define WIN32_LEAN_AND_MEAN // 排除极少使用的链接#include <stdio.h>#include <tchar.h>#include <Windows.h>#include <iostream>#include <string>#include <Winso...

2020-01-15 15:41:36

C++ 判断进程是否退出 代码封装

enum PROCESS_RESULT{ PROCESS_NORMAL_END, //正常退出 PROCESS_ABNORMAL_END, //异常退出 PROCESS_UNKNOWN_END, //未知错误};//监听某个进程是否结束PROCESS_RESULT ListenSingleProcessFinish(HANDLE hHandle){ std::cout <&...

2020-01-14 17:39:08

CreateDirectory和SHCreateDirectoryExW区别

CreateDirectory和SHCreateDirectoryExW区别:CreateDirectory适用于创建单级目录,因为假如有多个文件夹的情况,其中一级文件目录未创建 ,而就不能继续创建,而SHCreateDirectoryExW就不存在这个问题,都可以创建多级目录。。// DirDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"...

2020-01-14 15:02:57

Qt程序缺少dll解决方案

在第一次生成exe文件时,例如最简单的helloworld程序,会发现打开exe时,显示如下错误:这种很简单的解决方案 就是添加对应的库,添加方法如下:1.打开环境变量2.选择path:添加对应的编译器的bin目录,作用是为了exe运行时能够找到该dll,很多软件其实使用原理就是环境变量和注册表中能够在全局中找到,编译器目录 一般都是在qt安装目录下,以本机为例,其余机器不考虑。。...

2020-01-12 22:48:28

C++管道通信类封装

简单的介绍一下,管道通信类 指的是 IPC通信中的一种,即两个不同的进程之间的通信现在实现一下管道通信类,方便以后调用使用头文件(引用相关的库)// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include "targetver.h"#include <stdio.h&g...

2020-01-11 14:24:23

C++共享内存类封装

头文件#include <stdio.h>#include <tchar.h>#include <iostream>#include <Windows.h>#include <string>#include <vector>类声明文件#include "stdafx.h"//共享内存类的封装enum...

2020-01-10 21:14:39

C++类占字节数讲解

空类的情况示例代码:class B{};int _tmain(int argc, _TCHAR* argv[]){ cout << sizeof(B) << endl; //占8个字节 system("pause"); return 0;}申明了一个空类B,并在main函数中输出B类的占据字节数输出结果:可以很明显的看出,B类占了1个...

2020-01-09 20:38:32

C++设计模式解析之单例模式解析

单例模式定义该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。在C++中,我个人的理解是,不需要自己new类指针,这样一方面也方便程序员自己管理内存,另一方面可以节省系统指针,减少占用内存资源。单例模式的实现要求简单的来说,就是一个类要有唯一的单例,而且这个单例类能够被其他对象所调用,不能用,那就没意义了嘛 。...

2020-01-08 17:16:42

C++设计模式详解之适配者模式解析

C++ 适配器模式解析适配器模式概念将一个类的接口,转换成客户端期望的另一个接口。适配器让原先接口不兼容的类可以合作无间。适配器实例最简单的示例就是常规3.5mm耳机插入苹果7以上的手机,需要转接头的需求。很明显来说,转接头需要能继承于3.5mm耳机,正面又得是苹果耳机的头,这就涉及到继承问题,即转接头首先得继承于正常耳机,后面插入的方式得是苹果耳机方式。用适配器模式来表达就很...

2020-01-08 17:14:06

C++设计模式详解之外观模式解析

C++ 外观模式外观模式定义外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。个人理解:外观模式,实际就是添加一层封装 比较简单外观模式实例比较简单,所以就直接上代码头文件:#include "stdafx.h"//走路class Walk{ public: void action();};//公交class...

2020-01-08 17:12:24

C++设计模式详解之模板模式解析

C++ 模板方法模式解析模板方法模式定义模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现模板方法模式实例以考试为例,考数学和考语文的过程几乎都是一样的,就是准备考试,背书,写试卷,不同点在于 写试卷,一个是写语文试卷,一个是写数学试卷,那么就可以把写试卷的过程 用不同子类实现头文件://模板方法模式实例//常规准备考试class PreSubject{p...

2020-01-08 17:09:26

C++设计模式详解之装饰者模式解析

装饰者模式的概念装饰者模式指的是动态的将责任附加到对象上,想要扩展其功能,装饰者提供有别于继承的另一种选择。(参考《Head First 设计模式》)个人理解:装饰者就是一种类包类 就是在构造函数里面,添加类作为参数。装饰者模式原则封装变化多用组合,少用继承针对接口编程,不针对实质编程为交互对象的松耦合设计而努力对扩展开放,对修改关闭装饰者模式实例例如男生和女生可以被认为...

2020-01-08 17:05:03

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。