自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 c++智能指针之auto_ptr

1.简介​ auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分给两个拥有者。​ 当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥有的动态内存自动释放。即使发生异常,通过异常的栈展开过程也能将动态内存释放。2. 初始化auto_ptr对象的方法?构造函数1] 将已存在的指向动态内存的普通指针作为参数来构造int* p = new int(33);auto_ptr&lt

2020-11-20 15:56:20 177

原创 观察者模式

观察者模式是一个应用非常广的模式之一,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是通知的发布者,它发出通知时并不需要知道谁是它的观察者。比如发布者(电子杂志),订阅者有张三、张四、张五,这几个人就是观察者。发布者不关心有几个观察者,有更新时只管通知他们。观察者收到更新通知,更新自己的状态。观察者的一个实例 Model/Vie

2020-12-25 18:09:51 76

原创 工厂模式

◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题 n 多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如 new ×××;的代码。这里带来两个问题:客户程序员必须知道实际子类的名称(当系统复杂后,命名将是一个很不好处理的问题,为了处理可能的名字冲突,有的命名可能并不是具有很好的可读性和可记忆性,就姑且不论不同程序

2020-12-25 18:08:33 102

原创 单例模式

什么是单例模式?单例模式指在整个系统生命周期里,保证一个类只能产生一个实例,确保该类的唯一性。单例模式分类单例模式可以分为懒汉式和饿汉式,两者之间的区别在于创建实例的时间不同:懒汉式:指系统运行中,实例并不存在,只有当需要使用该实例时,才会去创建并使用实例。(这种方式要考虑线程安全)饿汉式:指系统一运行,就初始化创建实例,当需要时,直接调用即可。(本身就线程安全,没有多线程的问题)单例类特点构造函数和析构函数为private类型,目的禁止外部构造和析构拷贝构造和赋值构造函数为private类

2020-12-25 17:51:41 99

原创 简谈三次握手协议

1)TCP 三次握手过程第一次第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包

2020-12-25 17:06:27 206

原创 c++的五大存储区

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局/静态存储

2020-12-25 16:42:39 386

原创 new/delete和malloc/free的区别

new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。1.参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。2.返回类型new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。3.分配失败new内

2020-12-22 16:32:10 59

原创 c++智能指针之weak_ptr

介绍weak_ptr这个指针天生一副“小弟”的模样,也是在C++11的时候引入的标准库,它的出现完全是为了弥补它老大shared_ptr天生有缺陷的问题,其实相比于上一代的智能指针auto_ptr来说,新进老大shared_ptr可以说近乎完美,但是通过引用计数实现的它,虽然解决了指针独占的问题,但也引来了引用成环的问题,这种问题靠它自己是没办法解决的,所以在C++11的时候将shared_ptr和weak_ptr一起引入了标准库,用来解决循环引用的问题。weak_ptr本身也是一个模板类,但是不能直接

2020-11-25 16:28:12 240

原创 关于Qt的信号和槽函数执行问题探究

关于Qt的信号和槽函数执行问题探究疑问:假设一个函数里面创建了多个线程,线程里面做的任务可能很简单,很快就执行完成,线程的finished()信号和另外一个槽函数绑定。问题就是创建线程的那个函数执行完成之前会调用和finished绑定的那个槽函数吗?直接上代码验证:classA.h#pragma once#include <QObject>#include <QThread>#include <QVector>#include <QMutex&gt

2020-11-25 15:46:45 477

原创 如何使用vs2015 编译sentry native 0.4.4版本

Sentry介绍sentry是一个实时事件日志记录和聚合平台。它专门用于监视错误和提取执行适当的事后操作所需的所有信息, 而无需使用标准用户反馈循环的任何麻烦。Sentry 是一个日志平台,分为客户端和服务端,客户端(目前客户端有Python, PHP,C#, Ruby等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web节目方便查看。Sentry由python编写,源码开放,性能卓越,易于扩展,目前著名的用户有Disqus, Path, moz

2020-11-25 14:32:35 645 1

原创 c++智能指针之shared_ptr

1.简介​ shared_ptr实现共享式拥有概念。多个智能指针可以指向相同对象,该对象和其相关资源会在“最后一个引用被销毁”时候释放。从名字share就可以看出了资源可以被多个指针共享,它使用计数机制来表明资源被几个指针共享。可以通过成员函数use_count()来查看资源的所有者个数。除了可以通过new来构造,还可以通过传入auto_ptr, unique_ptr,weak_ptr来构造。当我们调用release()时,当前指针会释放资源所有权,计数减一。当计数等于0时,资源会被释放。​ sha

2020-11-23 20:56:43 710

原创 c++智能指针之unique_ptr

1.简介​ unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。​ (替换auto_ptr)unique_ptr实现独占式拥有或严格拥有概念,保证同一时间内只有一个智能指针可以指向该对象。它对于避免资源泄露(例如“以new创建对象后因为发生异常而忘记调用delete”)特别有用。2. 初始化unique_ptr对象的

2020-11-23 20:11:02 625

原创 Qt-bug 使用opengl在默写电脑上面莫名其妙的闪退

Qt-bug 使用opengl在默写电脑上面莫名其妙的闪退崩溃堆栈信息001cb930 101d0674 2b0b8ba8 1d015140 2b0b8ba8 ig75icd32+0x1d0d77001cb9ec 101d14c5 2b0b8ba8 00000000 26624840 ig75icd32+0x1d0674001cba1c 1011900b 2b0b8ba8 26624840...

2019-10-12 11:42:22 583

原创 遇到的问题

一个水平布局的背景颜色不继承父类的背景颜色

2018-12-25 18:43:10 85

原创 为什么Qt设置一个ui文件的界面类的样式会不生效?

今天在开发的工程中,遇到一个问题,生成了一个ui文件,然后在这个ui文件里面,直接设置这个类的样式,但是在实际的过程中,没有生效?感到很意外。为什么没有生效呢?思考:1.和语句的执行顺序有关?2.语法错误?...

2018-12-25 11:32:25 847

原创 Qt的pro文件转化为vs的工程文件

引言使用QtCreator创建的工程,工程文件是pro文件,但是在实际开发中,可能需要用到VS进行调试(VS在代码编辑以及调试方面都要优于QtCreator)或者个人喜好VS进行开发。可以使用以下的方法实现Pro文件转化为Vs的工程文件,并进行调试。步骤1.首先配置Qt和VS的环境变量2.然后进入到工程目录,执行以下命令qmake -tp vc xxx.pro3.运行结束后,打开工程...

2018-12-21 17:04:27 2758

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除