![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 75
帅气滴点C
这个作者很懒,什么都没留下…
展开
-
性能优化总结
介绍常见的性能优化角度、工具等。转载 2022-09-26 23:18:44 · 274 阅读 · 0 评论 -
代码调试core-踩内存
踩内存就是访问了不应该访问的内存,本文介绍如何定位+解决+避免 踩内存问题。后续将不断补充、更新原创 2022-06-21 23:19:49 · 1250 阅读 · 0 评论 -
嵌入式节省内存的手段(1)
为了方便描述,这里进行总结,嵌入式,一般是c语言常用的节省内存的手段1.编程技巧最基本也是最常用的就是字节对齐这个需要平时的积累。例如,在变量的排列方面,我们都知道编译器会考虑对齐。明显,以下第一种定义需要的内存比第二种要大。1)char a;int b; char c;2)char a; char c; int b;编译优化编译时选择优化级别高的,这样生成代码大小有有大规模的减小。内存分时复用业务分时复用即对代码......原创 2022-05-25 19:32:52 · 757 阅读 · 1 评论 -
pyqt 之 QTableView listvview 添加复选框 Checkbox
简述使用各种View控件如QTableView、listview,经常会遇到复选框,要实现一个好的复选框,除了常规的功能外,还应注意以下几点:三态:不选/半选/全选 自定义风格(样式)常见的实现方式编辑委托 方式:利用委托重载createEditor(),激活QCheckBox 特点:必须双击/选中,才能显示CheckBox控件。一般不满足实际中的直接显示的需要。 使用QTableView的setIndexWidget(const QModelIndex &index,原创 2022-05-22 23:46:54 · 3980 阅读 · 3 评论 -
ToDo 待办清单V1.0-(1.项目简介pyqt)
最近想提高工作效率所以做了一个待办清单软件1.0功能:添加待办事项: 程度:添加待办事项清单:分为重要紧急,不重要紧急.重要不紧急,不重要不紧急.更具程度区分不同的颜色. 事项:描述具体的工作事项 状态:分为完成和未完成,其中完成的会自动转为历史工作记录 建立日期和完成日期:用于记录时间 完成情况:记录当前任务的完成情况 领导:记录分配任务的领导 备注:其他信息 筛选 可以根据日期,程度,状态以及自定义搜索 导出: 按照指定的格式导出记录 到期原创 2022-05-01 16:43:49 · 652 阅读 · 0 评论 -
常用设计模式汇总
目录单例模式:观察者模式:装饰者模式适配器模式工厂模式代理模式(proxy)单例模式:即一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过其get方法获取到他们的实例。懒汉写法(线程不安全)public class Singleton {private static Singleton si...转载 2019-11-11 20:07:23 · 174 阅读 · 0 评论 -
C++ 推荐书目
effective c++ :适合在面试之前看,列举了使用C++经常出现的问题及解决这些问题的q技巧 C++ primer:主要讲解C++语法 Inside C++ Object Model:有助于深入了解c++对象的内部。sizeof和虚函数的调用直接等都在这本书中有介绍。 the c++ programming language:可以全面深入掌握C++ 欢迎补充。。。。。。...原创 2019-01-26 15:02:59 · 346 阅读 · 0 评论 -
常量指针 和 指针常量的区别:
常量指针 和 指针常量的区别: * (指针)和 const(常量) 谁在前先读谁 ; *象征着地址,const象征着内容;谁在前面谁就不允许改变。 int a =3;int b = 1;int c = 2;int const *p1 = &b;//const 在前,定义为常量指针int *const p2 = &c;//*在前,定义为指针常量 说明:...原创 2019-01-21 10:47:00 · 161 阅读 · 0 评论 -
编码Unicode和UTF-8
1. 全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作...原创 2019-01-20 10:47:26 · 276 阅读 · 0 评论 -
ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
转自:ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系 ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景。 在Windows3.1里,控件会将mouse, keybord等等的...转载 2019-01-14 22:57:43 · 248 阅读 · 0 评论 -
delete 和 delete []的真正区别
1.我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a; //方式1delete [] a; //方式2肯定会有很多人说方式1肯定存在内存泄漏,是这样吗?...原创 2019-01-19 23:40:12 · 22046 阅读 · 1 评论 -
拷贝构造函数和赋值运算符
在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算符。但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符,这样的对象就不能通过值传递,也不能进行赋值运算class Person{public: Person(const Person& p) = delete; Person& operato...原创 2019-01-19 21:26:31 · 737 阅读 · 0 评论 -
C/C++ 内存分配
1、栈区(stack): 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式先进后出类似于数据结构中的栈; 2、堆区(heap) : 一般由程序员分配释放, 若程序员不释放,程序结束时可能由系统回收,但在程序运行期间可能造成内存的泄露(比如循环new出来的对象却总是没有被delete掉); 3、全局变量区(也称静态存储区)(static):全局变量和静态变量的存储是放在一块的...原创 2019-01-26 16:23:12 · 174 阅读 · 0 评论 -
Error 1 error MSB8020: The build tools for v140 (Platform Toolset = 'v140')
解决办法:参考:https://blog.csdn.net/sinat_20265495/article/details/53348963转载 2019-01-16 15:22:24 · 970 阅读 · 0 评论 -
c++中的虚函数
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的...转载 2019-01-16 20:52:50 · 173 阅读 · 0 评论 -
【C++11】新特性——auto的使用
C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。1. 自动类型推断auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。#include &...转载 2019-03-18 21:36:35 · 393 阅读 · 0 评论 -
编译器与解释器的区别
牧草 = 我们的各种编程语言,C/C++/C#, Java, Pascal, PHP, Python, Perl, Java Script等等切割机 = 各种编译器奶牛 = 各种CPU(不要告诉我Intel和AMD哦),比如x86,ARM,MIPS等等那你应该知道了为什么奶牛会有吃不同形状牧草的嗜好了,这个奇怪的比喻是为了表示不同的CPU接受的不同的机器语言。对应上面的奶牛图,编译器的图...转载 2019-04-23 21:22:54 · 7150 阅读 · 0 评论 -
C/C++ 常用的库函数
1. 判断字符是否是字母、数字等#include <cctype>using namespace std;函数名称 返回值isalnum() 如果参数是字母数字,即字母或者数字,函数返回trueisalpha() 如果参数是字母,函数返回trueiscntrl() 如果参数是控制字符,函数返回trueisdigit() 如果参数是数字(0-9),函数...转载 2019-05-06 22:27:59 · 154 阅读 · 0 评论 -
C中不安全的函数以解决办法汇总
这些函数由于设计的时候比较淳朴,并没有做任何的越界检测,主要容易"被溢出",只需要多设点检查边界,即安全。针对不安全函数及其解决办法的详细描述 第 一位公共敌人是 gets()。永远不要使用 gets()。该函数从标准输入读入用户输入的一行文本,它在遇到 EOF 字符或换行字符之前,不会停止读入文本。也就是:gets() 根本不执行边界检查。因此,使用 gets() 总是有可能使任何缓冲...转载 2019-08-22 11:17:25 · 1507 阅读 · 0 评论 -
函数的调用过程
函数的调用过程,栈帧的创建和销毁以Add()函数为例研究一下函数的调用过程。#include<stdio.h>#include<stdlib.h>int Add(int a, int b){ int z = 0; z = a + b; return z;}int main(){ int a = 10; int b...转载 2019-09-22 23:24:03 · 356 阅读 · 0 评论 -
volatile关键字
一、volatile介绍volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:...转载 2018-08-08 10:47:58 · 99 阅读 · 0 评论 -
RT-thread常见概念
信号量概念:停车场和停车场管理员一样。要去停车的车辆相当于一个任务,管理员相当于信号量,车位相当于公共资源,车要去停车,信号量(管理员)可以知道是否有车位,中间的管理员。作用:不同任务之间进行通信。互斥锁概念:互斥锁,停车场进入一个辆车后,就把停车场锁住,不给其他人使用。没有中间管理信号量与互斥锁的区别互斥量用于线程的互斥,信号量用于线程的同步。这是互斥量和信号量的根本...原创 2019-01-08 22:05:07 · 3824 阅读 · 0 评论 -
字节对齐
对齐概念如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。为什么要字节对齐需要字节对齐的根本原因在于CPU访问数据的效率问题、 。。。正确处理字节对齐、对于标准数据类型,它的地址只要是它的长度的整数倍就行了,而非标准数据类型按下面的原则对齐:数组 :按照基本数据类型对齐,...原创 2019-01-08 21:48:26 · 554 阅读 · 0 评论 -
CString、LPCTSTR、LPTSTR、TCHAR、WCHAR、string、wchar_t、char解析
类型简介 .TCHAR:TCHAR其实是一个宏,其定义为: 也就是说,如果我们使用unicode编码,那么TCHAR指的就是wchat_t,如果我们使用的是ASCII编码,那么TCHAR指的就是char,这样处理的目的是为了程序的可移植性。T表示在Win32环境中, 有一个_T宏 。 #ifdef UNICODEtypedef wchar_t TCHAR;#elsetyped...转载 2019-01-19 14:24:33 · 572 阅读 · 0 评论 -
C语言 计算运算速度
#ifndef _CLOCK_T_DEFINED typedef long clock_t; #define _CLOCK_T_DEFINED #endif #include <stdio.h> #include <stdlib.h> #include <time.h> #incl...原创 2018-11-26 09:28:04 · 3043 阅读 · 1 评论 -
C++迭代器的使用和操作总结
1. 概念迭代器是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访问容器元素。1.2. 定义和初始化每种容器都定义了自己的迭代器类型,如vector:vector<int>::iterator iter; //定义...原创 2018-11-05 22:25:22 · 600 阅读 · 0 评论 -
VS中引用 pthread.h
一、下载,配置三、使用 一、下载,配置POSIX Threads for Win32目前可以下载到的最新版本是2.9.1 ,下载地址:ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip将下载到的exe解压之后,会得到三个目录:其中,Pre-built.2中是已经编译好的lib以...转载 2018-08-16 15:11:39 · 2336 阅读 · 0 评论 -
Vector容器
模板向量的一些其他成员函数:重载操作符[] 返回容器中某一个元素 函数frond()和back()返回第一个和最后一个元素 函数insert()在一个给定的位置插入到一个新的元素 功能push_back()和pop_back()添加或删除最后一个成员函数具体的可以参考函数库,看看有哪些具体的可以使用的。#include <iostream>#include <...原创 2018-08-16 14:51:45 · 123 阅读 · 0 评论 -
虚函数和纯虚函数
1. 虚函数和纯虚函数:虚函数:为了使基类指针调用子类的这个函数,指向谁,就调用谁的函数,可以实现多态的效果。纯虚函数:为了实现一个接口,起到规范作用,继承这个类的必须实现这个函数。class A{public: virtual void foo() { cout<<"A::foo() is called"<<endl; ...转载 2018-08-09 11:11:35 · 465 阅读 · 0 评论 -
IO多路复用机制详解
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: 同步阻塞IO(Blocking IO):传统的IO模型 同步阻塞IO(Non-blocking Io):; 默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。 IO多路复用(IO Multiplexing):即经典的Reactor...转载 2018-07-25 23:12:21 · 273 阅读 · 0 评论 -
查看指针指向的空间大小
_msizeReturns the size of a memory block allocated in the heap.size_t _msize( void *memblock );Routine Required Header Compatibility _msize <malloc.h> Win 95, Win NT For additional compatibility...转载 2018-05-23 22:52:07 · 7009 阅读 · 1 评论 -
C++基础(2)
C++基础(1)C++基础(2)C++基础(3) 目录 1. 字符串1.1. 命名空间using声明1.2. 标准类库string1.2.1 string对象上的操作1.2.2 处理string中的字符1.2 标准类库vector1.2.1 向vector对象中添加元素1.3 迭代器1.3.1 迭代器类型1.3.2 begin和e...原创 2018-12-07 22:32:43 · 191 阅读 · 0 评论 -
C++基础(1)
C++基础(1)C++基础(2)C++基础(3) 目录1.简介2. 基本类型2.1 基本内置类型2.1.1 算术类型2.1.2 类型转换2.1.3 字面值常量3. 变量3.1 变量声明与定义4. 复合类型4.1引用4.2 指针5.const 限定符5.1 const 引用5.1.1 初始化和对const的引用5.1.2 ...原创 2018-12-03 22:41:59 · 201 阅读 · 0 评论 -
C/C++常用函数
1.strchr所在库名:#include <string.h> 函数原型:extern char *strchr(char *str,char character) 参数说明:str为一个字符串的指针,character为一个待查找字符。 函数功能:从字符串str中寻找字符character第一次出现的位置。 返回说明:返回指向第一次出现字符character位置的...原创 2018-12-19 22:51:03 · 439 阅读 · 0 评论 -
visual studio 2017及C++常见错误
目录说明:1.visual studio 2017出现MSB8020,MSB8036等SDK版本选择的错误2.在vs2017中遇到“fatal error RC1015: cannot open include file 'winres.h'.”3.C++中不存在从CString到const char*的转换4.VS2017出现“是否忘记了向源中添加”#include"pch...原创 2019-01-18 16:00:11 · 11209 阅读 · 0 评论 -
C/C++基础例子(1)图书管理系统
一共是三部分: 类的设计 类的实现 主逻辑函数 类的设计////////////////////////////////////////////////////////////////////////////该类实现图书的写入和删除,//////////////////////////////////////////////////////////////////////...原创 2019-01-02 22:49:31 · 1188 阅读 · 7 评论 -
VC6.0设置注释快捷键
第一步:工具栏上右键选择Customize(定制),选择“Add-ins and Macro Files(附加项和宏文件)”页,把SAMPLE前面打上钩。第二步:选择“Commands(命令)”页,Category(类别)选Macros,然后在Commands中把CommentOut(注释)拖曳到工具栏快捷方式。第三步:选择“Keyboard(键盘)”tab页,还是Category(工具栏...转载 2019-01-06 20:44:52 · 350 阅读 · 0 评论 -
ODBC、OLE DB、 ADO的区别
一、ODBCODBC的介绍ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。ODBC(Open Da...原创 2019-01-04 22:30:20 · 7790 阅读 · 3 评论 -
ADO编程详解(C++)
一、概述ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过OLE DB提供者对在数据库服务器中的数据进行访问和操作的应用程序。ADO同OLE DB、数据库之间的关系可以用下图来表示:其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO支持用于建立基于客户...原创 2019-01-04 20:49:15 · 13603 阅读 · 4 评论 -
C/C++ System
在窗户下的系统函数中命令可以不区别大小写! 函数名:system 功能:发出一个DOS命令 用法:执行成功返回0,执行不成功由于不同的操作返回的值不同,可以查手册看#include <stdlib.h> int system(char * command);定时开关机:#include<stdio.h> #include<stdli...原创 2018-12-28 22:38:03 · 2372 阅读 · 0 评论