自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Monkey_lwx的博客

记录生活,嘻嘻

  • 博客(28)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 VS下更新Qt语言家ts文件没反应

今天重新安装一次VS后发现Qt预言家ts文件更新后是没反应的,修改后的内容没有一处生成出来,需要将该ts文件属性修改,选择Qt Translation File,如下图所示即可:

2021-03-11 20:11:32 3225 1

原创 Git学习使用

慢慢学习Git,探索Git上各路大神的佳作,good goodstudy,day day up。。。。Git初学1、Git下载安装配置2、Git架构浅谈3、Git分支合并和解决冲突

2021-03-07 22:38:31 189

原创 Git分支合并和解决冲突

目录一、合并指令二、快速合并三、三方合并四、解决冲突分支合并,应该可以说无论是做什么项目都会涉及得到,即便是个人在负责整个项目也是需要用到的。Git分支合并有两种:快速合并和三方合并。通过上一节Git架构浅谈所说的分支可以理解为是一条时间节点的时间线,分支的指针始终指向最后一个时间节点(提交点),那么分支合并时,分支的各自指针又是怎么指向的呢?一、合并指令无论是快速合并还是三方合并,都是一样的指令:git merge xxxx(分支名)二、快速合并假设目前有两条分支:分支

2021-03-07 22:22:58 1273 3

原创 Git架构浅谈

Git整体架构大致可分为本地仓库和远程仓库两个,本地仓库的资源文件通过指令推送至远程仓库进行管理,本地仓库同样可以通过相应指令从远程仓库下载下来进行编辑等。目录一、本地仓库1、创建本地Git仓库:git init2、提交本地仓库二、远程仓库1、Git远程仓库服务器2、创建远程仓库3、本地仓库内容推送远程仓库一、本地仓库本地仓库也可以理解为本地工作区,可以参考以下图进行分析理解,本地工作区可以分为工作区和Git仓库,同时Git仓库有两个模块:Git缓存区Stage和G.

2021-03-07 19:53:25 416

原创 Git下载安装配置

目录1、Git介绍2、下载和安装3、Git初始化配置1、Git介绍(1)Git是有Linus Torvalds(Linux之父)为了更好管理Linux内核开发而开发的开放性源码的版本控制软件,可以有效、高速地处理从很小到非常大的项目版本管理;(2)无论是个人开发还是多人团队开发,都会利用到Git进行版本管理,从而利于开发进度的控制,同时还利于多人协同控制开发。2、下载和安装这是Git官网的下载链接https://git-scm.com/download,官网下载可能会很慢,也

2021-03-07 14:01:00 146

原创 Qt+VS编译出现常量有换行符的错误

在出现问题的h头文件或者cpp文件添加以下代码即可:#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif

2021-02-26 16:26:01 350

原创 结构体数组和结构体指针遍历

在工作过程中会遇到结构体,可能会忘记如何遍历结构体数组,这是一个简单的例子:void structArrayPtr(){ // 定义一个结构体数组 struct Student studentArray[2] = { {"William", 18}, {"Mark", 20} }; // 如何遍历结构体数组 for( int i=0; i<2; i++ ) { cout << "nam

2020-12-11 21:44:19 3806 1

原创 STL容器之set用法

一、set容器概念set是一种关联式容器,底层是通过平衡二叉树(红黑树)实现的,插入、删除和查询效率都非常高,所有元素插入容器中,会被默认以升序的形式进行排序,而且不允许插入已经存在且相同的数据元素。此外还有一个multiset容器,它的底层实现原理也是平衡二叉树,但是它允许重复的元素出现。二、set构造和基本函数接口(1)set<T> set_test:默认构造,即无参构造;(2)set<T> set_test( const set<T>& s.

2020-09-13 00:01:07 745

原创 STL容器之list链表使用

目录一、list的概念理解二、构造函数三、元素插入和删除四、数据存取五、大小操作六、反转和排序一、list的概念理解list链表是将数据元素进行链式存储,在物理单元上是非连续的结构,与vector动态数组不同,数组是一片连续的内存空间,list链表是由一系列节点组成,而节点是由一个存储数据元素的数据域和一个存储上一个节点地址以及下一个节点地址的指针域组成,数据元素的逻辑顺序是通过链表的每一节点的元素指针链接实现的,在STL中的list链表是一个双向循环的链表。1、链表

2020-09-12 11:46:18 889

原创 STL容器之stack与queue用法

目录一、栈的概念二、栈的构造与常用接口三、队列的概念四、队列的构造与常用接口一、栈的概念栈的存储规则是先进后出(FILO),可以同vector、deque一样可以存储任意一种数据类型的数据元素,它只有一个出口,而且它只能访问栈顶的元素,不允许遍历操作,需要获取栈里的元素,则需要一个个将栈顶的元素移出。二、栈的构造与常用接口1、构造函数(1)无参构造:原型stack<T> stk,stack采用模板类实现,stack的对象默认构造形式;(2)拷贝构造:原

2020-09-10 22:13:12 174

原创 STL容器之deque用法

一、什么是deque1、deque概念deque是双端数组,同时支持头部和尾部进行插入删除元素的操作,支持容器的遍历操作,支持迭代器的随机访问。2、deque与vector的区别1、vector虽说也可以利用insert()函数在头部插入数据,但效率会很低,因为插入时,需要把之后所有的元素往后挪位置,而且元素数量越大,效率会越低;2、deque相对于vector而言,在头部插入就相当轻松,速度比vector快很多;3、vector访问元素的速度比deque快,这与内部的实现有关系

2020-09-09 21:47:47 631

原创 STL容器之vector用法

一、vector概念vector是一个单端动态数组的顺序容器,支持存放任意类型的数据。1、数据元素必须按照严格的线性顺序进行排序,可以通过元素在vector中的位置访问相应的元素。这一点与常用的原生数组一样,通过下标vec[i]进行访问,此外还提供vec.at(i)接口进行访问等;2、vector提供在末尾处快速插入和删除元素的接口,还可以动态的去扩展vector的容量大小,这一点与原生数组不同。二、常用迭代器遍历vector对日常开发迭代器遍历容器,有分为只读迭代器vector<

2020-09-09 13:52:39 303

原创 C++多态概念和意义

目录一、什么叫重写二、面向对象期望的重写​1、示例分析2、所期望的重写三、多态的概念和意义1、多态的概念2、C++如何支持多态概念3、多态内部运行剖析4、多态的意义5、修改示例代码四、静态联编和动态联编五、小结一、什么叫重写1、子类中可以重定义父类中已经存在的成员函数;2、这种重定义发生在继承中,叫做函数重写;3、函数重写是同名覆盖的一种特殊情况。二、面向对象期望的重写先来验证个小示例:#include <QCoreAp

2020-09-04 10:12:31 4271

原创 Qt多线程创建之moveToThread

目录一、继承QThread方式缺点二、QThread的改进三、新创建线程方式--信号槽四、小结五、完整代码一、继承QThread方式缺点早期Qt软件版本只能提供继承QThread的方式创建新线程,这是跟面向对象程序设计的早期有关,当时习惯于工程中用继承的方式去扩展系统的功能,那这样创建的线程有什么意义吗?1、通过QThread继承实现的线程是没有任何意义的;2、QThread的线程子类仅仅只有受保护的run()函数接口是不同的,其他接口完全是相同的;3、QThread

2020-09-03 14:18:58 1352

原创 Qt多线程之死锁

目录一、造成死锁的原因现象分析二、死锁的概念和发生条件三、死锁的避免四、避免死锁的示例代码一、造成死锁的原因一般性原则,每个临界资源都需要一个线程锁来进行保护,假设有多个线程锁该怎么设计程序呢?先来看以下的一个示例(代码很简单就不加注释了):#include <QCoreApplication>#include <QThread>#include <QMutex>#include <QDebug>int g_i_cu

2020-09-03 10:50:00 3855 2

原创 Qt多线程互斥

一、多线程与临界资源的依赖除了上一节所说的,多线程在代码执行的时序上会有依赖,那么其他地方是否还有所依赖呢?答案是有的,也就是与临界资源的问题,所谓临界资源是指每次只允许一个线程进行访问(读或写)资源。假设两个线程都要访问一个全局变量的临界资源,两个线程谁都不让谁,进行对资源的抢占,发生了竞争,致使读写数据会出现错误,严重的可能还会导致程序运行崩溃,出错的现象谁也说不准,比如以下代码的示例:#include <QCoreApplication>#include <QThre

2020-09-03 09:41:28 1174

原创 Qt多线程同步

一、多线程的本质并发性是多线程编程的本质。何为并发性?指在同一计算机中,存在多个计算任务,这些计算任务具有同时执行的特性,这样能提高系统性能,程序响应速度更快。1、在宏观上,所有线程并行执行;2、多个线程相互独立,互不干涉,那事实真是这样吗?二、常规问题解决方案在平常的问题解决方案中,往往都是将同一个问题分解成若干个任务去解决,这些任务在执行解决上,又可以分为串行执行和并发执行,两者在效率上是很大不同,并发性效率可能是串行的几倍。下面以0+1+2+3+ ... + 1000求和为例,可以

2020-09-02 15:09:03 741

原创 Qt创建线程之继承QThread方式

目录一、QThread说明二、QThread的主要成员函数三、继承QThread线程创建四、窥探terminate()后的现象五、如何优雅的退出线程一、QThread说明QThread是Qt的一个跨平台解决多线程方案,简单易学,可以让初学者很快上手。QThread是Qt里封装好的一个类,那么既然是类,那么继承QThread的线程就必须以对象的形式被创建和使用,每一个线程都应该对应一个对象。二、QThread的主要成员函数1、void QThread::run()函数:线程

2020-09-02 11:33:15 1507

原创 谈谈程序、进程和线程的关系

一、什么是程序程序是计算机系统中存储的数据文件,大可分为两种:(1)源代码程序--描述程序的行为和功能,属于文本文件;(2)可执行程序--该文件是由源代码程序通过编译器编译得到的二进制文件,可以直接加载并运行。二、什么是进程1、广义角度:程序关于某个数据集合的一次运行活动;2、狭义角度:程序被加载到内存中并执行而得到的运行实体。三、程序和进程的关系1、程序和进程的区别(1)程序是计算机硬盘中的静态文件,存储在内存中的一段由二进制表示的文件;(2)进程是内存中动态的

2020-09-02 09:27:41 1675 1

原创 C++单例模式

在很多时候,我们整个项目工程当中,某个类的对象是有且仅有一个,生命周期是整个项目程序,如果是这种情况下,我们还去创建多个不同的类,可能会造成意想不到的bug,可能这类bug还挺隐蔽。那么在C++中如何创建有且仅有唯一的单个对象呢?其实很简单,只要做到三步即可。一、单例模式的创建1、将类的构造函数的访问权限设置为private私有的;2、设置一个静态全局的类对象instance;3、当需要访问这个类时,就只需要对instance进行判断是否为nullptr:(1)当instance为nul

2020-08-17 08:45:00 244

原创 C++泛型编程之类模板浅谈

一、前言在学习C/C++的时候,常见的数组类、链表类、堆栈类和队列类等,主要思想就是类模板这种泛型编程的思想。类模板主要是用于存储和组织数据元素,C++中将模板的思想应用于类,使得类的实现不需要去关注数据元素的具体数据类型,只需要关注如何去实现具体的功能。先来看一下在Qt中一个已经封装好的QQueue队列模板:template <class T>class QQueue : public QList<T>{public: // compiler-generat

2020-08-15 16:24:30 175

原创 当C++多态遇到默认参数

注:要想程序能正常发生多态行为,基类和派生类都不应该使用默认参数。偶然间遇到一个问题,基类的虚函数带有默认参数,当派生类继承基类,重写该虚函数时也带有一个一模一样的默认参数,在实现函数多态的时候,奇怪的发现派生类使用该参数却依旧是基类的虚函数默认参数。class Base {public: virtual void monkey(int y = 1) { cout << "111" << endl; cout << "y: " << y

2020-08-05 08:43:10 702

原创 C++泛型编程之函数模板浅谈

目录为什么要用函数模板1、宏定义的优缺点2、函数的优缺点3、函数模板1、函数模板有两个关键字template和typename2、函数模板定义多个不同数据类型3、函数模板的调用4、函数模板实现排序等算法5、函数模板优点与总结6、完整的示例代码为什么要用函数模板为什么要使用函数模板?顾名思义就是一个通用模板,可以直接套入使用。在以往C语言的编程中,我们可能会利用宏定义去实现这模板技术,在C++基础编程中可能就是用函数去实现了,可能在很多时候类型不同,...

2020-08-03 10:33:14 403

原创 构造/析构函数与虚函数的联系

一、构造/析构函数能不能作为虚函数1、构造函数不能作为虚函数虚函数表指针正确的初始化是发生在构造函数执行结束之后,所以构造函数是不能作为虚函数的,假设你不小心用virtual去修饰构造函数,编译器会直接报错。class Base{public: virtual Base() { std::cout << "Base()" << std::endl; }};2、析构函数可以作为虚函数(建议在用virtual修

2020-08-01 17:15:52 288 1

原创 Linux+Qt不正常断电导致文件内容和数据库不能成功存储

记录昨天遇到的一个问题,在linux下保存文件内容突然间断电,导致文件内容没有及时同步到硬盘的问题,以及在修改数据库修改成功的同时,断电没能成功存储到数据库表格中。解决办法:1、文件的处理利用fsync函数同步内存中所有已修改的文件数据到储存设备,fsync可用于数据库这样的应用程序,这种应用程序需要确保将修改过的块立即写到磁盘上。2、数据库处理同样可以适用于数据库,在数据库操作完成后,调用fsync()函数或者sync()函数,sync函数只是将所有修改过的块缓冲区排入写队列,然后就返

2020-05-14 09:39:48 1262

原创 运行程序缺少MSVCP120.dll文件

在运行某些程序时,提示缺少MSVCP120.dll文件,起初还以为是之前在程序打包的过程中缺少的动态库,可实际发现是换了电脑后,电脑缺少VS的一些运行库。解决方案:只需要百度搜索下载Visual C++ Redistributable Packages for Visual Studio安装即可,在安装2018版本时出现莫名的问题,最后下载了2013版本的成功安装。...

2020-03-09 10:57:30 578

原创 在Qt项目中添加pri文件

在Qt项目框架里,很多人都喜欢用pri文件来管理项目。那么今天就来讲讲这个pri文件。目录前言创建pri文件的步骤一、创建Qt项目二、创建pri空文件三、调试前言一般我们创建Qt项目工程的时候,都是直接把所有的项目,头文件和资源文件等全放入pro中,这样一来小的项目(只有少数几个文件)那种,你可能就会觉得没有什么,但是在一些中大型的开发项目当中,可能会有十几个,甚至...

2020-01-18 11:24:53 10745 9

原创 用Qt5.13.0(MinGW7.3.0 64-bit)进行make操作遇到的问题

今天用用Qt5.13.0(MinGW7.3.0 64-bit)进行make操作然后遇到‘make’不是内部或外部命令的提示,主要原因是make命令错误:1、MinGW,make操作应该是mingw32-make;2、MSVC,make操作应该是nmake。记录下。。。。。...

2019-12-30 10:15:54 658

QXMLTest.7z

QXMLTest.7z

2021-03-28

Git-2.30.1-64.7z

Git-2.30.1-64.7z

2021-03-07

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

TA关注的人

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