自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux:pipe小案例

一、题目:用管道实现父子进程间通信,实现 ls | wc -l 命令(统计当前目录文件数量), 假定一方ls,另一方 wc -l。二、分析①因为ls命令的结果是输出到系统的标准输出端,而wc命令是从标准输入端接收的,因此,想要在程序里面完成这两个命令,则需要把标准输出端绑定到管道的写端,标准输入端绑定到管道的读端。②根据管道的行为特性, 如果管道中无任何东西且写端口并未关闭,会一直阻塞等待写端写入东西。因此如果由父进程进行ls命令,会导致父进程先结束从而导致“孤儿进程”的情况出现。三、完整代码#

2021-08-21 10:48:52 255

原创 vscode支持多个CPP文件编译的解决方法

一、打开lasks.json文件二、将args下的 ${file}改成 ${workspaceFolder}\*.cpp如图所示:

2021-08-10 21:13:27 1355

原创 C++:STL常用算法归纳(更新中)

C++中有关算法的头文件都包含在:algorithm 里面1 count统计范围 [first, last) 中满足特定判别标准的元素数。计数等于 value 的元素。1.1 用法传入first、end迭代器以及要统计的value值,返回统计的数量int c = count(v.begin(), v.end(), value);如果value是自定义类型的对象时,则需要重载==操作符,因为count底 层判断时,使用 == 符号,而当要统计自定义类型数据时,需要在设计class时需要重载

2021-08-09 01:05:10 199

原创 C++:vector自定义类型使用resize()函数注意点

问题在练习STL的容器以及算法时,使用vector容器装自定义的Person类,在使用resize()函数时,编译器并没有发生报错,但是运行的时候却运行不了。解释cppreference.com上面对resize()的描述:resize方法用于重设容器的大小以容纳count个元素。若当前大小大于 count ,则减小容器为其首 count 个元素。若当前大小小于 count :2.1. 在尾部附额外的默认插入的元素2.2. 在尾部附额外的 value 的副本这个规则对于内置的数据类型来说

2021-08-07 21:56:08 1778

原创 C++:return by reference返回值细节

inline my_num&fun(my_num* ths, const my_num& num){.... return *ths; }可以看到,接收到my_num类型的指针 ths,在最后返回的是 *ths(这里表示的是一个对象,ths是一个指针),那么,return的是一个对象,一个value,而函数要求的返回值的return by reference的形式,这样编写的函数,一眼看下去,会觉得编译并会不会通过。但实际上,这种写法是完全没有问题的。在侯捷老师的课上有提到过,

2021-07-08 17:28:09 847

原创 Java:&逻辑与和&&短路与,|逻辑或和||短路或

代码片段1boolean b1 = false;int i1 = 10;if( b1 & ( i1++ > 1) ){ System.out.println("yesssssss " + i1);} else { System.out.println("Noooooooo " + i1);}boolean b2 = false;int i2 = 10;if( b2 && ( i2++ > 1) ){ System.out.println("yess

2021-05-27 00:00:23 440

原创 java:变量运算规则的两个特殊情况

一、编码情况一long test1 = 1234;long test2 = 1234L;long test3 = 123456789789;long test4 = 123456789789L;在java里,定义long类型的变量是需要添加“l”或者“L”的。但是在编译时,为什么test1能够通过编译并且输出正确的结果,而test3编译会报错呢?原因是,在java里使用整数时,都会默认为int型,在long test1 = 1234这个语句中,是首先将int型的1234转变为long型的1234

2021-05-26 00:20:24 130

原创 QT:在QLineEdit左端或右端添加图标

方法使用action的方法添加图标 //一、新建action QAction* userAction = new QAction(ui->nameEdit); QAction* passwordAction = new QAction(ui->numEdit); //二、给action添加icon userAction->setIcon(QIcon(":/password.png")); passwordAction->setIcon

2021-05-16 15:48:47 4284 1

原创 MySQL问题:修改了utf-8仍无法写入中文解决方法

前言在做用MySQL做程序数据中文存储时出现乱码的情况,在网上查找了解决办法,目前网上比较流行的方法是将库的编码改为utf-8。本人按照方法修改完后,确实解决中文乱码的情况,但是当使用或者新建另一个表时,却还是出现了乱码情况,网上的教程并未对此有明确的解决方法,通过摸索,得出了比较简单的解决方法。方法步骤通过数据库可视化工具进行操作。此处使用可视化工具是Navciat for mysql,其他软件同理。一、右键表,选择“设计表”选项可以看到该行的当前字符集为“latin1”二、将字符集修改为u

2021-04-20 23:56:38 1579

原创 QT去边框化处理

前言在做界面设计的时候,我们常常希望界面更加清新简洁,而做到清醒简洁的首要条件是部件都在自己的可操作范围之中,而QT的界面自带的边框及其违和,下面用几行代码即可去除自带的边框。一、在构造函数添加 除边框的代码this->setWindowFlags(Qt::FramelessWindowHint);二、解决窗口无法移动的问题当执行完第一步操作以后,可以观察到窗口边框已经去掉,但发现此时的窗口不能自由移动。此时需要重写鼠标按下和移动事件。在头文件添加如下代码:void mousePress

2021-04-19 23:15:25 2746

原创 win7下安装MySQL的步骤

下载地址如下:https://dev.mysql.com/downloads/mysql/本文以解压版Zip包的方式来讲解问题如果上诉的操作出现问题,需要删除自己安装的程序,可以在CMD命令框输入:sc query mysqlsc delete mysql

2021-03-25 21:48:45 3833

原创 STL标准库:List调用sort排序

前言我们都知道在标准库里面提供了sort的排序算法,使用方法是sort(begin,end);我们在Vector容器里面,可以使用 sort(V.begin, V.end) 的方法来使用sort排序,但是在List容器里面如此使用,编译器就会报错。方法使用内部封装好的算法接口List<int> l;l.sort();总结1、所有系统提供的标准算法,使用的容器提供的迭代器必须支持随机访问。2、不支持随机访问的迭代器的容器,内部会提供相应的算法接口。...

2021-03-19 15:17:54 291

原创 QT 程序打包的方法

01前言最近在弄毕业设计时,因为要把程序放到不同电脑的环境去测试,而又不可能每一台电脑都安装了QT的开发环境,于是乎有了将程序打包的想法。这里用来的包的工具是windeployqt,是QT官方自带的打包软件(不需要自己下载安装)。02具体操作(1)首先,在QT软件内打开自己的一个项目,用在左下角选择Releases方法来重新编译一次。经过编译之后,我们可以在编译路径上看到一个Releases的文件夹当我们进去文件夹,再进入Releases文件夹后,会看到exe文件,这里以Chat_wiget为

2021-03-14 11:23:21 10124 1

转载 Linux系统下如何检测内存泄露?

原文链接:黑马程序员01. 前言C/C++运行高效,不管是操作系统内核还是对性有要求的程序(比如游戏引擎)都要求使用C/C++来编写,其实C/C++强大的一点在于能够使用指针自由地控制内存的使用,适时的申请内存和释放内存,从而做到其他编程语言做不到的高效地运行。但是内存管理是一把双刃剑,用好了削铁如泥,用不好自断一臂。在申请堆上内存使用完之后中如果做不到适时有效的释放,那么就会造成内存泄露,久而久之程序就会将系统内存耗尽,导致系统运行出问题。就如同你每天跑去图书馆借一打书籍而不还,直到图书馆倒闭为止。

2021-03-13 22:59:36 921

原创 ubuntu无法打开系统设置

系统设置打不开,请重新安装gnome-control-centersudo apt-get install gnome-control-center

2021-03-09 16:36:21 562

原创 String 和 C_String(char*) 的转化

char* 转化成 String可以直接使用 String类的有参构造来实现char* str = "hello world";String s(str);String 转化成 char*可以使用String类的成员函数(c_str)来实现char* str2 = s.c_str();但是直接以上述方法来转化,编译器会报错,原因是,c_str()函数返回的是 const char* 类型的对象,做我们上诉等式左边是char*,因此会出现编译的时候爆红的情况。此时可以添加const或者直接进

2021-03-09 13:15:50 300

原创 linux mysql基础使用

一、名词数据库:可以看做是整个excel文件数据表:可以看做是一个excel文件中的工作表(可以有多个)行(记录):可以看做是一个工作表中的一行,但在数据库中叫记录列(字段):可以看做是一个工作表中的一列,但在数据库中叫字段二、库操作(后续命令都是在mysql终端执行) 命令不区分大小写SHOW DATABASES; 显示当前MySQL的所有的数据库create database 库名; 创建数据库drop database name ; 删除数据库use name ;

2021-02-24 16:48:14 144

原创 继承(Inheritance)+复合(Composition)关系下的构造和析构

我们知道单一的继承或者复合关系的构造函数作用是从内到外,而析构是从外到内的。那么同时拥有继承和复合关系的时候,构造函数与析构函数的作用顺序是怎么样呢,下面有事例代码来总结。class Base { public: Base() { cout << "Base 的 构造函数" << endl; } ~Base() { cout << "Base 的 析构函数" << endl; }};class Com.

2021-01-29 23:27:54 309

原创 深拷贝与浅拷贝的区别

一、深拷贝与前拷贝的区别1.浅拷贝:直接把原来对象的引用直接赋值给新的对象,因此,新对象的值只是引用了旧的对象的数值。2.深拷贝: 赋值的时候不是简单的引用旧的对象,而是重新创建一个新的对象,再把旧的对象的各项数值全部拷贝赋值过来。所以新的对象是“值”而不是“引用”二、为什么要使用深拷贝我们希望在改变新的对象的时候,不改变原来的对象。三、深拷贝的简单案例如设计带指针的class的时候,我们必须要重载=,来定义一个拷贝赋值的函数,而拷贝赋值背后的依赖就是深拷贝。如果没有定义拷贝赋值函数当用户使用

2021-01-29 21:39:13 920

原创 关于带指针的类的拷贝构造、拷贝赋值、析构函数的常用写法以及意义

Bing Tree ,设计类的时候的三个特殊的函数:拷贝构造、拷贝赋值、析构函数class String{public: String (const char* cstr = 0);// 构造函数 String (const String& str); //拷贝构造 Strring& operator = (const String& str); //拷贝赋值(也是=的操作符重载) ~String(); //析构函数privite: char* m_data;

2021-01-27 11:55:33 1668

原创 2017年机组43题

考点:①补码,移码,浮点数的表示范围②有符号数和无符号数的表示范围③精度问题

2020-12-13 00:29:35 137

原创 408中栈的应用

中缀转后缀作用:(用于计算转换过程中的栈的大小,或者任意一步中栈里面存放的是什么元素。)口诀:从左到右扫描式子,遇到数字就写到后缀表达式中,(第一次)遇到符号就压入栈中,高阶符号压栈,低阶或同阶则把输出一个栈的符号。例子:中缀的表达式计算方法:采用两个栈,数入左符号入右,优先级高的符号压入栈,低优先级或者同阶则出栈,数出栈时,要注意先出栈的放右边。3.前缀.后缀的表达式计算方法:采用一个栈,前缀从右扫描,先出栈的放左边。后缀从左扫描,先出栈的放右边。...

2020-12-04 00:40:43 176

空空如也

空空如也

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

TA关注的人

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