自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Passkey模式

asskey 模式用于以比简单地将其他类设置为友元类更细粒度的方式将类的部分方法暴露给另一个类

2023-12-04 15:26:05 83

原创 PAT B1016.部分A+B

1016. 部分A+B (15)正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。输出格式:在一行中...

2019-03-26 10:39:52 213

转载 Windows 各种计时函数总结

本文对Windows平台下常用的计时函数进行总结,包括精度为秒、毫秒、微秒三种精度的5种方法。分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock()不仅可以用在Windows系统,也可以用于Linux系统。在Windows系统下三种,使用Windows提供的API接口timeGetTime()、GetTickCount()及QueryPerf...

2018-11-20 17:47:44 772

原创 C++中SendMessage与PostMessage的区别

Send有发送的意思,而Post具有投寄的意思。 联想一下现实生活中我们写信(很久很久以前。。。。)来记就很简单了:Send: 相当于邮寄员,他会将快件亲手交给收件人,并且需要收件人签字,他才闪人。而在消息机制中,就是说,系统(邮寄员)会将收到的消息(邮局分发)直接发送到某个窗口的窗口过程(收件人),并且需要该窗口作出处理(收件人签字)才返回。 这东东就是SendMessage。Post...

2018-11-19 17:32:59 1615

原创 MFC--对话框技巧

1. 在任务栏隐藏对话框      ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);2. 使对话框为顶层窗口        SetWindowPos(&amp;this-&gt;wndTopMost, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);3. 在运行时添加最大化,最小化按钮    SetWindowL...

2018-11-16 18:58:23 236

原创 线程总结第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_beginthreadex? 使用多线程其实是非常容易的,下面这个程序的主线程会创建了一个子线程并等待...

2018-11-16 16:53:25 270 1

原创 MFC中OnTimer的应用

文章目录一、OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现:二、先了解下SetTimer这个API函数的原型在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了当不需要计时器的时候调用KillTimer(nIDEvent);三、如果需要要加入两个或者两个以上的 timer怎么办?一、OnTimer()函数用于实现定时控制功能,定时控制功...

2018-11-15 17:47:54 514

原创 三种编程规则:驼峰命名法、帕斯卡命名法、匈牙利名

文章目录一、三种流行的命名法则1、驼峰命令法(Camel):骆驼式命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它使用得当相多另一方面,下划线法是c出现后开始流行起来的,在许多旧的程序和UNIX这样的环境中,它的使用非常普遍 .驼峰式命名法分为:2、匈牙利命名法(Hungarian):匈牙利命名法关键是:匈牙利命名法的规则是:3、帕斯卡(Pascal)...

2018-11-14 11:22:19 10833

原创 防止头文件被多次包含

为了避免同一个文件被include多次1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。方式一:#ifndef __SOMEFILE_H__#define __SOMEFILE_H__... ... // 一些声明语句#endif方式二:#pragma once... ....

2018-11-06 11:02:58 572

原创 TCP的三次握手与四次挥手(详解+图片)

1、TCP与UDP?1.1、概述传输控制协议(TCP)是一个比较复杂的协议。主要特点如下:(1)TCP是面向连接的运输层协议。也就是说,在使用TCP协议之前,需要建立TCP连接,当传输数据完毕,必须释放已经建立的TCP连接。(2)每一条TCP连接只能是点对点的。(3)TCP协议是可靠交付的服务。通过TCP连接传输的数据,无差错,不丢失,不重复,并且按顺序到达。(4)TCP提供全双工通信...

2018-10-09 19:19:08 909 1

原创 进程间通信的方式总结(特点,以及code demo)

进程间通信(IPC,InterProcess Communication):是指在不同进程之间传播或交换信息。一、简单的进程间通信:命令行:父进程通过exec函数创建子进程时可以附加一些数据。环境变量:父进程通过exec函数创建子进程顺便传递一张环境变量表。信号:父子进程之间可以根据进程号相互发送信号,进程简单通信。文件:一个进程向文件中写入数据,另一个进程从文件中读取出来。命令行...

2018-10-08 19:50:39 8943 1

原创 vector扩容原理说明

扩容原理概述新增元素:Vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素;对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了 ;初始时刻vector的capacity为0,塞入第一个元素后capacity增加为1;不同的编译器实现的扩容方式不一样,V...

2018-10-07 19:17:32 4993

原创 C++智能指针auto_ptr使用讲解

auto_ptr是C++98标准库提供的一个智能指针,但已被C++11明确声明不再支持。auto_ptr具有以下缺陷:auto_ptr有拷贝语义,拷贝后源对象变得无效,这可能引发很严重的问题;而unique_ptr则无拷贝语义,但提供了移动语义,这样的错误不再可能发生,因为很明显必须使用std::move()进行转移。#include &lt;iostream&gt;#include ...

2018-10-05 21:52:57 1466

原创 C++智能指针shared_ptr讲解与使用

手动管理的弊端在简单的程序中,我们不大可能忘记释放 new 出来的指针,但是随着程序规模的增大,我们忘了 delete 的概率也随之增大。在 C++ 中 new 出来的指针,赋值意味着引用的传递,当赋值运算符同时展现出“值拷贝”和“引用传递”两种截然不同的语义时,就很容易导致“内存泄漏”。手动管理内存带来的更严重的问题是,内存究竟要由谁来分配和释放呢?指针的赋值将同一对象的引用散播到程序各处,...

2018-10-05 20:45:52 13949 5

原创 c++实现MD5加密

简单说明一下MD5的处理步骤:MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。①如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448。填充的方法是填充一个1和n个0。填充完后,信息的长度就为 N*512+448(bit)也就是说我们将一组信息分成n个...

2018-09-18 22:03:33 419

原创 统计二进制数中“1” ,“0”的个数

//统计二进制数中“1”的个数,用如下代码int fun(int value){    int cnt = 0;    while(value)    {        cnt++;        //消除所有1,变成0        value = value &amp; (value - 1);    }} //统计二进制数中“0”的个数,用如下代码int fu...

2018-09-12 00:09:07 1732 3

原创 运算符的优先级

优先级 操作符 描述 例子 结合性 1 () [] -&gt; . :: ++ -- 调节优先级的括号操作符 数组下标访问操作符 通过指向对象的指针访问成员的操作符 通过对象本身访问成员的操作符 作用域操作符 后置自增操作符 后置自减操作符 (a + b) / 4; arra...

2018-09-12 00:05:32 222

原创 计算机网络

四、计算机网络1、什么是计算机网络:把分布在不同地理位置的计算机与专门的网络设备用通信线路互相连成一个规模大、功能强的系统,从而使众多计算机可以方便地互相传递信息、共享软件、硬件、数据信息等。简单来说,计算机网络就是由通信线路互相连接的许多自主工作的计算机构成的的集合,它是计算机技术和通信技术相结合的产物。2、计算机网络的功能a、数据通信b、资源共享c、提高系统的可靠...

2018-09-12 00:00:11 954

原创 为什么选择Qt?

前言:为什么现在QT越来越成为界面编程的第一选择? 1.主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MFC的界面库代码也是比较混乱,qt有qss样式 设计这个功能。当项目移植到到QT后,MFC相对于QT缺点实在太多。当然MFC还有一个致命的缺陷,没法跨平台。 2.有同学可能说为什么不直接使用C# WPF做界面,一些项目和工具确实是用C#做的,C#和C++也确...

2018-09-01 16:04:26 12063

转载 Qt发展及应用

转载自:http://emb.hqyj.com/Column/Column206.htm 据美国统计局的统计:平均每个美国人都占有8个芯片,这局面很快将波及到。所以嵌入式系统无疑是当前热门有发展前途的IT应用领域之一。常见到的手机、PDA、机顶盒、高清电视(HDTV)、路由器、汽车电子、智能家电、医疗仪器、航天航空设备等等都是典型的嵌入式系统。对于刚刚走进嵌入式软件开发的同学来说,Qt既熟...

2018-09-01 15:35:45 9174

原创 用time(NULL)返回值手动计算当前时间 (要考虑时区)

/** 用time(NULL)返回值 计算当前时间* @author 李政 &amp;amp;lt;[email protected]&amp;amp;gt;*/#include&amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;time.h&amp;amp;gt;#include&amp;amp;lt;stdbool.h&amp;amp;gt;int main(){

2018-08-26 21:25:25 5940

原创 linux下用time(NULL)函数和localtime()获取当前时间

time(); 函数函数原型: time_t time(time_t *timer)函数用途: 得到机器的日历时间或者设置日历时间头 文 件: time.h输入参数: timer=NULL时,得到机器日历时间, =时间数值时 用于设置日历时间;time_t是一个long类型 localtime();函数函数原型: struct t...

2018-08-26 21:14:53 20818

原创 求最大公约数,最小公倍数(c语言多种方法实现)

/** 最大公约数:辗转相除法实现 辗转相减法实现 穷举法实现* 最小公倍数:穷举法实现* @author 李政 &amp;amp;lt;[email protected]&amp;amp;gt;*/#include&amp;amp;lt;stdio.h&amp;amp;gt;int x,y,temp;//最大数的交换函数int max(int *x,int *y){ if(*x &amp;amp;lt; *y) {

2018-08-26 20:23:53 16001 3

原创 n皇后问题 --两种方法解决(c语言实现)

/** n皇后问题 n个皇后两两不在一行,不在一列,不在同意对角线上* 两种方法: 1、暴力法 2、回溯法* @author 李政 &amp;amp;lt;[email protected]&amp;amp;gt;*/#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdbool.h&amp;amp;gt;#include &amp;amp;lt;mat

2018-08-26 19:50:02 20423 2

原创 大数运算之100的阶乘(c语言实现)

/** 100以内的阶乘(还可以更大,只需把arr[256]调到更大)* @author 李政 &amp;lt;[email protected]&amp;gt;*/#include &amp;lt;stdio.h&amp;gt;void factorial(int n, char *pout){ if(pout == NULL) { return; } i...

2018-08-26 19:28:31 9871 3

原创 linux动态获取终端窗口的大小方法(代码测试 )

通过函数signal();接受SIGWINCH信号 每次接收到信号,打印屏幕的大小/** 通过函数 ioctl(); 获得终端界面的参数* @author 李政 &amp;amp;lt;[email protected]&amp;amp;gt;*/#include &amp;amp;lt;termios.h&amp;amp;gt;#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &

2018-08-26 15:26:41 1311

原创 linux获取终端窗口的大小方法(有代码测试)

一、获得终端窗口大小的方法1、在shell下可以直接用$LINES和$COLUMNS两个变量,$LINES是屏幕高,$COLUMNS是屏幕宽,单位都是字符数。2、大多数UNIX系统都提供了一种功能,可以对当前终端窗口的大小进行跟踪,在窗口大小发生变化时,使内核通知前台进程组。内核为每个终端和伪终端保存一个winsize结构://其中struct winsize位于termios.h头文...

2018-08-26 14:42:13 9807

原创 Linux终端个性化配置

使用linux系统将近一年了,今天在做项目时注意到命令终端的格式和颜色均是可以配置,故在网上学习了一番,并写下此博客作为学习笔记。简单分析终端颜色和格式的默认配置代码,然后展示了语法规则,最终给出了自己使用的配置方案。一般Linux中的配置文件大多以点开头,而且多以rc结尾。比如vim的配置文件 .vimrc,bash shell的配置文件.bashrc,等等。 像这样的配...

2018-08-25 23:58:11 8075

原创 随机生成一组彩票

/** 随机生成一组球号 红色: 1-33 蓝色: 1-16* @author 李政 &amp;lt;[email protected]&amp;gt;*/#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#include&amp;lt;stdbool.h&amp;gt;#include&amp;lt;time.h&amp;gt;

2018-08-24 20:12:04 4126

原创 输出任意阶层的螺旋数组(c语言)

/** 根据输入的 m n 显示螺旋数组* @author 李政 &amp;lt;[email protected]&amp;gt;*/#include&amp;lt;stdio.h&amp;gt;#define N 20//行:m 列:nvoid matrx(int a[][N],int m,int n){ int d,x=0,y=0; int right,left,up,do...

2018-08-24 19:33:21 1211 1

原创 C语言 实现长整数的相加

/** C语言 实现长整数的相加* @author 李政 &lt;[email protected]&gt;*/#include &lt;stdio.h&gt;#include &lt;string.h&gt;#define MAXLEN 1000void longadd(char* s1,char* s2 ,int* s3){ int arr1[MAXLEN...

2018-08-24 09:19:00 8680

原创 c语言实现memcpy函数 (考虑内存重叠以及指针的强制转换)

#include &lt;stdio.h&gt;#include &lt;assert.h&gt;void* my_memcpy(void* dest, const void* src, size_t count){ assert( dest != NULL || src != NULL); char* d; const char* s; //地址重叠 ...

2018-08-22 23:38:25 1178

原创 c++ 重载运算符的详细使用例子

#include &lt;iostream&gt;#include &lt;stdlib.h&gt;using namespace std;class Point{ int x; int y; //friend Point operator + (Point&amp; a,Point&amp; b); friend ostream&amp; operat...

2018-08-22 23:34:05 915

原创 c++ 重载及相关知识详细讲解

一、操作符函数在C++中,编译器有能力把一个由数据、对象和操作符共同组成的表达式,解释为对一个全局或成员函数的调用。该全局或成员函数被称为操作符函数,通过重定义操作符函数,可以实现针对自定义类型的运算法则,并使之与内置类型一样参与各种表达式。二、双目操作符表达式 成员函数 形如L#R双目操作符表达式,将被编译器解释为 L.operator#(R)a-b+c ...

2018-08-22 23:30:43 166

原创 C++中sring有关函数的使用方法(加使用的例子)

1、字符串的基本用法2、字符串的基本运算3、字符串的大小和容量4、字符串的拼接5、在字符串中搜索特定的字符6、在字符串中提取子字符串7、访问字符串中的单个字符8、字符串的查找与替换9、字符串的比较与排序10、字符串的插入与删除11、字符串的交换与复制1、字符串的基本用法/* 字符串的基本用法主要是指字符串类对象的定义与初始化方...

2018-08-22 23:28:59 1729

原创 c++、虚函数、强制类型转换、多态

一、虚函数、覆盖、多态虚函数:成员函数在定义时添加了 virtual 关键字,这种函数叫虚函数。覆盖:如果在子类中实现与父类中的虚函数具有相同的函数,那么子类中的成员函数会覆盖父类中的成员函数。多态:如果子类中的成员函数对父类中的成员进行了覆盖,当一个指向中子类的父类指针或引用了子类的父类引用,当使用它调用虚函数,然后根据实际的调用对象调用子类中的覆盖函数,而不是父类中了虚函数,这种语法...

2018-08-13 20:52:58 1726

原创 基类的继承,虚函数,覆盖和隐藏

一、类与类之间关系:1、类与类之间可能会存在共性。2、类与类之间必定会有差异。3、为了节约开发时间和代码量,我们在设计类时可以把类的共享代码,抽象出来形成一个基础类(基类)。4、使用基类+差异生成一个新的类的叫派生类二、继承的语法1、在设计一个类时如果已有的类中有它需要的成员,它可以从已有的类中继承哪些成员,被继承的类叫父类或基类,继承类叫作派生类或子类。cl...

2018-08-10 20:51:59 2662 3

原创 成员函数的重载、覆盖与隐藏(详细)

成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。重载与覆盖成员函数被重载的特征: (1)相同的范围(在同一个类中) (2)函数名字相同 (3)参数不同 (4)virtual 关键字可有可无覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分...

2018-08-10 20:48:20 4225 2

转载 CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...

2018-08-10 20:42:30 85

原创 UNIX/Linux --进程间通信

一、基本概念    进程间通信(IPC):进程之间交换数据的过程叫进程间通信。    进程间通信的方式:        简单的进程间通信:             命令行:父进程通过exec函数创建子进程时可以附加一些数据。            环境变量:父进程通过exec函数创建子进程顺便传递一张环境变量表。            信号:父子进程之间可以根据进程号相互...

2018-07-26 19:23:22 231 1

空空如也

空空如也

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

TA关注的人

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