10 漫步繁华街

尚未进行身份认证

暂无相关简介

等级
TA的排名 7k+

深入探究Qt HTTP的内部构架

一、前言当今互联网时代中,B/S(Browser/Server , 浏览器/服务器)以及C/S(Client/Server , 客户端/服务器)架构已经是绝对的主流软件架构设计方式(除了极少部分的单机软件),它们各有优缺点,这里我们不展开讨论。但是B/S以及C/S架构软件都会有Server,也就是B/S或者C/S中的S,无论是Browser还是Client都必须与Server进行数据交互、传输,...

2020-02-14 12:02:16

PC端C++软件, 开启大地址,让32位程序使用4G内存

我在以前的文章中分析过软件的内存模型(链接点击这里),从中我们可以知道,程序运行起来以后,它将有自己独立的虚拟地址空间。这个空间的大小与操作系统的位数有关。目前使用C++开发的PC端软件一般都是开发32位的。那么32位的软件,最大寻址空间也就是4GB。其中很重要的一部分是给系统内核使用的内核空间。在32位的windows操作系统中,高地址的2GB空间就是给内核使用的内核空间,用户程序空间只有2GB...

2019-12-25 18:48:59

一文让你学会PC软件升级,学不会过来打我

//创建新版本文件夹 emit changeText(QString("创建新版本文件夹...")); QString mainDir = QDir(m_OldVerPath + "/../").absolutePath(); m_NewVerPath = mainDir + "/" + m_NewVersion; result = FileOperate...

2019-12-20 14:58:50

C++ 内存模型

1. 前言对于底层开发程序来讲,程序员一定要知道程序运行在内存上的分布,这特别重要。同样,对于中级语言C++来讲,内存模型很重要!内存模型很重要!内存模型很重要! 所以今天我们来一起分析和总结一下C++程序中的内存分布情况。2. 内核空间&用户空间C++的每个程序运行起来以后,它将拥有自己独立的虚拟地址空间。这个空间的大小与操作系统的位数有关。例如在32位的系统中,程序可寻址范围是...

2019-12-13 15:28:30

C++ 内存泄露检测工具-Visual Leak Detector(VLD)

上一次我们对C++程序内存泄漏进行了总结,那么要想检查一个程序是否存在内存泄漏,面对动辄几万行的代码,想要一行一行的审查代码检查是否内存是否泄漏,显然效率很低,对于更大的项目也不太现实。所以我们需要借助一款能够自动检测内存是否泄漏(Memory Leak)的工具,就是我们今天要讲的Visual Leak Detector(VLD)一、工具描述:Visual Leak Detector是一个免...

2019-10-16 14:54:04

C++ QT内存泄漏总结

对于编程来讲,每种语言都有各自的内存管理机制,他们并不是完全相同。有的语言比如JAVA、H5等无需编程人员关心内存是怎样创建,怎么释放的,系统会对内存自动管理。但是有些语言比如C、C++等,就需要程序员手动进行内存管理,比如需要的时候进行内存申请,不用的时候需要进行手动释放。在C++中,new与delete必须配对使用(既,有一个new,有且只能有一个delete)。delete少了,可能会造成...

2019-10-15 11:13:56

html h5 快速查找手册 学习笔记

HTML 基本文档<!DOCTYPE html> <html> <head> <title>文档标题</title> </head> <body> 可见文本... </body> </html>基本标签...

2019-10-05 12:39:36

c++ 中 vector、list 、set 、map等相关容器的区别

1. vectorvector 封装了数组 ,是有序的。在内存中是一块连续的内存空间进行存储。但是不支持用户指定空间大小。系统首先分配一个非常大的内存空间进行预备存储,当超过此分配的空间时在进行整体重新分配一块内存空间存储。这就让人感觉可以不指定vector即一个连续内存大小的感觉。通常默认非配的控件能够完成大部分存储的。优点:1. 随机访问元素快,支持[]下标与at()访问。2. 节省...

2019-08-05 18:13:29

QT 带有动画的 圆形进度条 水波进度条

我们在使用其他软件的时候,经常能看到各种绚丽的进度条,其中带有水波波纹的进度条就是其中一个。对于PC端软件开发使用的QT,只是提供了process bar,样式十分单一。 所以这次我们就使用QT的paint 以及定时器来实现类似的水波进度条。先看一下最终效果图:这个是怎样实现的呢? 我们仍然是在一个QWidget上的paintEvent上重绘实现图形绘制 + QTimer 实现动画效果。首...

2019-07-29 18:18:23

QT QPainter::antialiasing QPainter::textAntialiasing 反走样、抗锯齿探究

QT中使用QPainter 进行自行绘图的时候,为了防止“锯齿”的出现,我们会经常使用抗锯齿属性,也叫反走样, 既:QPainter::Antialiasing //绘图抗锯齿QPainter::TextAntialiasing //绘制的字体抗锯齿QT 只是和很多系统的绘图API一样,提供了抗锯齿的方法,不过抗锯齿的属性默认都是关闭的,QT也不例外。为了直观的理解抗锯齿(反走样)...

2019-07-24 14:22:23

QT 实现 带有动画效果的 switch button 开关按钮动

平时使用手机软件的时候,经常看到带有动画效果的开关按钮 switch button,效果非常炫。但是使用QT自带的控件并没有实现类似的switch button。如果想要使用,只能我们自己进行自己封装。先看一下效果图:怎么实现呢? 我们这次使用 QWidget 的 paintEvent 来绘制这种效果。 下面分步骤解析一下:我们先分解一下。这个效果。分为3部分,背景(圆角矩形) + 滑动...

2019-06-21 20:20:41

C++ QT PC端 防止程序重复启动的几种方式

在做客户端的过程中,我们通常会希望程序实例只运行一次,也就是只希望同时启动一个程序。所以今天就总结一下几种防止程序重复启动的方式:1.使用QT中的QLockFile:QLockFile 使用文件提供在不同的进程间的锁。锁文件可以放置多个进程同时访问同一资源。例如磁盘上的配置文件、套接字、端口、共享内存区域等。使用的时候trylock()对资源进行上锁。当程序运行的时候,上锁成功后,会自动...

2019-06-01 12:06:00

QT 顶级窗口为QWidget 设置顶级窗口背景无效

今天同事遇到一个问题,就是一个很简单的demo。使用Designer创建了一个顶层窗口QWidget,然后右键设置样式表,将背景设置为红色。这时候看起来一切正常,但是运行起来的时候,背景居然没有更改,也就是设置的CSS样式表并没有生效。先看一下问题:1.创建一个叫Form的QWidget窗口。2.右键设置样式表#Form{ background:red;}这时候看起来...

2019-05-22 11:20:30

C++ 11 bind function

今天开始逐一学习c++11的新用法,从std::function 与 std::bind函数开始。std::function 是一个template, 在一对<>中指定类型。 std::function<int(int, int)> 表明定义的是一个有两个int类型的参数,并且返回一个int类返回值的函数对象,这个返回的可调用对象可以理解为函数指针。具体用法 std...

2019-04-06 20:14:36

QT 多线程 线程池 QRunnalbe QThreadPool

一、背景 QT中线程很早就出现了,多线程的使用目的是为了减轻主线程压力,不至于主线程界面卡顿,提高用户体验。但是线程的创建与销毁需要与系统交互,会产生很大的开销。若需要频繁的创建线程就建议使用线程池,有线程池维护一定数量的线程,当需要进行多线程的运算时,将运算函数传递给线程池即可。线程池会根据可用线程进行任务安排。线程池有什么作用呢?一个作用就是限制系统中执行线程的数量。...

2019-03-19 17:22:22

QT C++ 获取文件的crc32

//获取文件的crc32码QString calcFileCRC(QString fileName){ QString strCRC = ""; quint32 crc = 0;; QFile file(fileName); bool result = file.open(QFile::ReadOnly); if(result) { w...

2019-03-12 10:09:44

QT windows 应用程序 exe 设置详细信息 解决中文乱码问题

上一篇博客,我们已经了解了使用NSIS进行打包软件,对于生成的安装包的详细信息进行设置。详情见这里windows下使用QT开发,编译生成的exe或者dll,点击右键-属性-详细信息 中都是空的,那么怎么设置生成的文件的详细信息呢?1.新创建一个.rc文件,随意命名,例如叫app.rc 并编辑#include "winver.h"IDI_ICON1 IC...

2019-02-19 10:35:56

NSIS 设置安装包exe属性中的详细信息

我们在使用NSIS创建安装包的时候,生成的安装包setup.exe 其 “右键-属性-详细信息” 中的信息是空的,比如:解决问题一:给安装包添加详细信息那么我们怎么设置完成这些信息呢?在.nsi脚本中添加VIProductVersion "${PRODUCT_VERSION}" ;版本号,格式为 X.X.X.X (若使用则本条必须)VIAddVersionKey "Produ...

2019-02-19 09:54:13

QT windows 桌面应用程序增量升级一种方案

讨论升级方案之前,我们先聊一聊增量升级怎么实现,我暂时认为有两种实现方式:1.使用大小版本的实现方式增量包的定义:每次升级,将所有相对于前一个版本更改的文件压缩成一个zip包,即为升级包。  比如当前版本:4.0.0.0。  我们更改了c++的一些功能,只改变了assist.exe.新版本为:4.0.0.1.  那么V4.0.0.1 对比V4.0.0.0的增量就是 assist.exe 一...

2019-02-02 11:23:28

QT 错误 Unexpected CDB Exit The CDB process terminated

有时候,我们使用QT开发,在使用Debug模式进行调试,会出现 "Unexpected CDB Exit"  "The CDB process terminated."的错误这个问题,感到莫名其妙,我们尝试重新qmake, 重新构建, 删除所有缓存等等,但都不起什么作用。通过查询资料,我们知道,原来可能是因为缺失依赖库 xxx.dll那么我们怎么确定到底缺失了那个dll呢? 我们需...

2019-01-30 10:16:19

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。