自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QComboBox的currentIndexChanged死循环问题

void SysSettingImpl::onAutoStartChange() { OI_Q(SysSetting); int autoStart = _autoStart->currentIndex(); if (autoStart == 0) { _isAutoStart = false; _autoStart-&g.

2020-07-01 11:33:08 1046

原创 c++内存分配小结

1.c++内存分配有如下几个部分:栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。堆区(heap):一般由程序员自动分配,如果程序员没有释放,程序结束时可能有OS回收。其分配类似于链表。全局区(静态区static):存放全局变量、静态数据、常量。程序结束后由系统释放。全局区分为已初始化全局区(data)...

2020-06-30 09:47:01 143

原创 死锁问题分析

介绍死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特...

2020-06-30 09:46:40 546

原创 c++线程池简单实现

多线程技术主要是解决单个处理器单元内多个线程的执行问题,由此诞生了所谓的线程池技术。线程池基本部分组成:1.线程池管理器(Thread Pool):负责创建、管理线程池,最基本的操作为:创建线程池、销毁线程池、增加新的线程任务;2.工作线程(Worker):线程池中的线程,在没有任务时会处于等待状态,可以循环执行任务;3.任务队列(Tasks Queue):未处理任务的缓存队列,提...

2020-06-30 09:46:21 556

原创 c++常见内存错误总结

发生内存错误是件非常麻烦的事情,编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。常见的内存错误及其对策如下:1.内存分配未成功,却使用了它编程新手常犯这种错误,因为他们没有意识到内存分配会不成功。常用解决办法是,在使用内存之前检查指针是否为NULL。如果指针p是函数的参数,那么在函数的入口处用assert(p...

2020-06-30 09:45:26 360

原创 c++父类的私有成员能否继承

1.子类可以间接访问父类私有成员父类的私有成员函数和私有成员变量一样,只有该类内部的其他成员函数可以调用,对外是封蔽的。子类继承了父类的共有函数,且父类的公有函数调用了其内部的私有函数,此时子类调用父类的公有函数便能访问父类的私有成员函数了。#include <iostream>using namespace std;class A{ public: v...

2019-08-14 00:13:11 8307

原创 jupyter notebook默认路径和浏览器设置

首先在win10的64系统下载安装了anaconda,版本如下然后一步步安装成功后,开始我们的设置1、修改默认的工作路径,有两种方法:方法一:右击jupyter notebook快捷方式,属性,将目标中的最后%号之前加上你的路径,起始位置也改成你的路径,高级里选管理员运行,应用确定。方法二:打开Anaconda Prompt,输入jupyter notebook --...

2019-08-09 01:42:56 1089

原创 linux下用火焰图(flame graph)性能分析

Perf命令Perf 命令(performance的简写)是 Linux 系统原生提供的性能分析工具,返回 CPU 正在执行的函数名以及调用栈(stack)。通常,它的执行频率是 99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题。$ sudo perf record -F 99 -p 22645-g -- sleep...

2019-08-03 11:52:38 1410

转载 穷举法应用-百钱买鸡问题

问题描述:每只大公鸡值 5 个钱,每只母鸡值 3 个钱,每 3 只小鸡值 1 个钱,现在有 100 个钱,想买 100 只鸡,问如何买?有多少种方法?void Buy(){ int count = 0; for (int roosters = 0; roosters &lt;= 20; roosters++) //枚举大公鸡数量 { for (in...

2019-03-03 22:56:14 612

原创 迭代法应用-计算一个数的平方根

迭代公式:xn+1=12(xn+axn)x_{n+1} = \frac{1}{2}(x_{n}+\frac{a}{x_{n}})xn+1​=21​(xn​+xn​a​)迭代法的核心是迭代公式,此处的迭代公式可由牛顿迭代法求得。代码实现:double cl_root(double a, double eps){ double xi = a / 2.0; //初始值用a的一半,很多人...

2019-03-03 22:47:27 925

原创 c++知识点总结2

1.int * const p 与 const int *p的区别int *const p:常量指针,p是一个常量类型的指针,不能修改这个指针的指向,但是这个指针所指向地址上的值可以改变const int *p:指向常量的指针,定义了一个指针指向一个常量,不能通过指针来修改这个指针所指向的值2.抽象类的派生类实例化的必要条件是什么?所有的纯虚函数都要被实现,有一个未实现派生类都不能...

2019-02-28 20:04:38 189

原创 C++知识点总结1

1.C++有了malloc和free为什么还要new和delete?第一:malloc和free属于c++的标准库函数,new和delete属于c++的运算符,他们都用于申请动态内存和释放内存。第二:对于非内部的数据对象(比如类对象),只用malloc和free无法满足动态对象的要求。这是因为对象在创建的同时需要自动执行构造函数,而在销毁对象前需要自动执行析构函数,而malloc和free属于...

2019-02-24 22:37:27 147

空空如也

空空如也

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

TA关注的人

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