- 博客(139)
- 收藏
- 关注
转载 网络粘包问题解决办法
流协议与粘包: 我们知道TCP是一个基于字节流的传输服务,这意味着TCP所传输的数据之间是无边界的,像流水一样,是无法区分边界的;而UDP是基于消息的传输服务,它传输的是数据报文,是有边界的。而对于数据之间有无边界,反映在对方接收程序的时候,是不一样的:对于TCP字节流来说,对等方在接收数据的时候,不能够保证一次读操作,能够返回多少个字节,是一个消息,还是二个消息,这些都是不...
2019-09-28 20:22:00
373
转载 C++中 =default 和 =delete 使用
编译器默认为一个类生成的默认函数默认构造函数默认析构函数默认拷贝构造函数默认赋值函数移动构造函数移动拷贝函数class DataOnly {public: DataOnly () // default constructor ~DataOnly () // d...
2019-09-28 08:47:00
238
转载 c++ unordered_map 自定义key
C++11新增了一类散列容器包括unordered_set, unordered_map, unordered_multiset, unordered_multimap, 即之前熟悉的hash_set, hash_map等。这类容器底层以哈希表实现之,通过unordered_map介绍下这类容器的使用。unordered_map 是一个模板类,需要我们提供5个魔板参数。依次为...
2019-09-22 18:49:00
1244
转载 c++ list的坑
std::list为空时调用pop_front的访问越界问题std::list为空时调用pop_back访问越界问题所以在使用pop_front 、pop_back要先判断list是否为空std::list为empty时调用pop_front导致程序崩溃如果list中装的是指针,当其为empty时,再调用pop_front可能会返回一个非NULL的值,此时直接使用这个返...
2019-09-22 12:24:00
618
转载 c++ vector 的坑
一个空的vector执行pop_back操作会发生什么由于之前看STL源码剖析的时候,发现所执行的操作如下:只是简单的将末尾的finish迭代器减1后destroy。这让人产生一个疑问:假如这个vector为空了,finish=start了,finish再减1不就不在vector的内存控制范围了么。于是,我打算看一下vs2013编译器和g++编译器的源码。vs2013的...
2019-09-22 12:03:00
1737
转载 C++ 单例模式总结与剖析
本文转自:https://www.cnblogs.com/sunchaothu/p/10389842.htmlC++ 单例模式总结与剖析单例可能是最常用的简单的一种设计模式,实现方法多样,根据不同的需求有不同的写法; 同时单例也有其局限性,因此有很多人是反对使用单例的。本文对C++ 单例的常见写法进行了一个总结, 包括懒汉式、线程安全、单例模板等; 按照从简单到复杂,最终回归简单...
2019-09-17 23:47:00
134
转载 值得推荐的C/C++开源框架和库
原文:https://www.cnblogs.com/arxive/p/6907546.html转载于:https://www.cnblogs.com/Malphite/p/11495672.html
2019-09-10 09:43:00
87
转载 七、用户组
1、endgrent表头文件 #include<grp.h> #include<sys/types.h>定义函数 void endgrent(void);函数说明 endgrent()用来关闭由getgrent()所打开的密码文件。返回值 无附加说明 无 2、endpwent表头文件 #include<...
2019-08-31 17:37:00
153
转载 十二、格式化I/O
1、fprintf表头文件 #include<stdio.h>定义函数 int fprintf(FILE * stream, const char * format,.......);函数说明 fprintf()会根据参数format 字符串来转换并格式化数据,然后将结果输出到参数stream 指定的文件中,直到出现字符串结束(‘\0‘)为止。返回值 ...
2019-08-28 23:49:00
185
转载 十四、错误处理
1、ferror表头文件 #include<stdio.h>定义函数 int ferror(FILE *stream);函数说明 ferror()用来检查参数stream 所指定的文件流是否发生了错误情况,如有错误发生则返回非0 值。返回值 如果文件流有错误发生则返回非0 值。2、perror表头文件 #include<stdio.h...
2019-08-27 23:32:00
97
转载 八、数据结构和算法
1、crypt表头文件 #define _XOPEN_SOURCE #include<unistd.h>定义函数 char * crypt (const char *key,const char * salt);函数说明 crypt()将使用Data Encryption Standard (DES)演算法将参数key所指的字符串加以编码,ke...
2019-08-26 22:49:00
87
转载 六、数学函数
1、abs表头文件 #include<stdlib.h>定义函数 int abs (int j)函数说明 abs () 用来计算参数j的绝对值,然后将结果返回。返回值 返回参数j的绝对值结果。2、acos表头文件 #include <math.h>定义函数 double acos (double x);函数说明 ...
2019-08-25 16:33:00
425
转载 五、内存及字符串操作
1、bcmp表头文件 #include<string.h>定义函数 int bcmp ( const void *s1,const void * s2,int n);函数说明 bcmp()用来比较s1 和s2 所指的内存区间前n 个字节,若参数n为0,则返回0。返回值 若参数s1 和s2 所指的内存内容都完全相同则返回0 值,否则返回非零值。...
2019-08-25 15:40:00
177
转载 四、日期时间
1、asctime表头文件 #include<time.h>定义函数 char * asctime(const struct tm * timeptr);函数说明 asctime()将参数timeptr 所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 3...
2019-08-24 23:34:00
113
转载 三、内存管理
1、calloc表头文件 #include <stdlib.h>定义函数 void *calloc(size_t nmemb,size_t size);函数说明 calloc()用来配置nmemb 个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb* size);不过,在利用callo...
2019-08-23 23:48:00
97
转载 二、字符串转换
1、atof表头文件 #include <stdlib.h>定义函数 double atof(const char* nptr)函数说明 atof() 会扫描nptr字符串,跳过前面的空格字符,知道遇上数字或正负号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串包含正负号、小数点或E(e)来表示指数部分,如1...
2019-08-22 09:12:00
122
转载 一、字符测试
1、isalnum表头文件 #include<ctype.h>定义函数 int isalnum(int c)函数说明 检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用isalpha(c) || isdigit(c)返回值 若参数c为字符或数字,则返回TRUE,否则返回NULL2、isalpha表头文件 #include<...
2019-08-21 13:34:00
151
转载 linux c函数参考手册
一、字符测试 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ascii码字符) isblank(测试字符是否为空格字符) iscntrl(测试字符是否为ascii码的控制字符) isdigit(测试字符是否为阿拉伯数字) isgraph(测试字符是否为可打印字符) i...
2019-08-21 13:19:00
307
转载 C++,Windows/MFC_中L和_T()之区别
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,VisualC++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:一...
2019-06-13 09:35:00
169
转载 CString 的成员函数详解
CSTRING的成员函数详解typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString;CString的构造函数:1 CString( );2 CString( const CString& stringSrc );3 CString( TCHAR ch, int nRepea...
2019-06-12 15:32:00
128
转载 c++ CArray函数
CArray属于MFC,是一个数组模板类。MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型。常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。但是声明一个carray数组必须是确定数组长度,可以之后...
2019-06-12 14:08:00
856
转载 Google C++ 风格指南
Google 开源项目风格指南 Google c++编码规范中文版转载于:https://www.cnblogs.com/Malphite/p/11009011.html
2019-06-12 13:16:00
86
转载 Singleton模式
Singleton模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象)?在基于对象的设计中我们可以通过创建一个全局变量(对象)来实现,在面向对象和面向过程结合的设计范式(如C++中)中,我们也还是可以通过一个全局变量实现这一点。但是当我们遇到了纯粹的面向对象范式中,这一点可能就只能是通过Singleton模式来实现了Singleton.h 1 #ifndef _...
2019-06-06 15:16:00
271
转载 Factory模式
1)为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题n多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如new ×××;的代码。这里带来两个问题1)客户程序员必须知道实际子类的名称(当系统复杂后,命...
2019-06-06 14:48:00
120
转载 AbstactFactory模式
AbstractFactory模式就是用来解决这类问题的:要创建一组相关或者相互依赖的对象。 AbstractFactory模式关键就是将这一组对象的创建封装到一个用于创建对象的类(ConcreteFactory)中,维护这样一个创建类总比维护n多相关对象的创建过程要简单的多。Product.h 1 #ifndef _PRODUCT_H_ 2 #de...
2019-06-06 14:32:00
99
转载 c++ STL map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边...
2019-06-04 14:29:00
106
转载 c++ 容器
容器(container)用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在 STL 中都被实现为容器。程序员使用容器时,即将容器类模板实例化为容器类时,会指明容器中存放的元素是什么类型的。容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实际插入的是对象或变量的一个复制品。STL 中的许多算法(即函数模板),如排序、查...
2019-06-03 15:55:00
449
转载 012.MFC_ListControl
列表控件CListCtrl 四种视图:大图标 、小图标、列表、详细信息CImageList转载于:https://www.cnblogs.com/Malphite/p/10962198.html
2019-06-02 10:45:00
74
转载 统计代码运行时间计时器
linux#include <sys/time.h> #include <iostream> #include <time.h> double get_wall_time() { struct timeval time ; if (gettimeofday(...
2019-05-30 23:37:00
179
转载 011.MFC_Slider
滑块CSliderCtrl 常用函数SetLineSize() GetLineSize() SetPageSize() GetPageSize()SetRangeMax() GetRangeMax()SetRangeMin() GetRangeMin()SetRange() ...
2019-05-26 18:13:00
178
转载 010.MFC_Progress
一、建立名为processCtrl的MFC工程,添加Progress Control 和 button控件。修改button Caption属性为start,ID属性为IDC_BTN_START为进度条添加控件变量m_progress二、双击button进入processCtrlDlg.cpp,添加void CprocessCtrlDlg::OnBnClickedBt...
2019-05-26 16:01:00
202
转载 c++基本知识
new 创建的对象位于堆区,通过 delete 删除时才会调用析构函数;如果没有 delete,析构函数就不会被执行。C++ this指针详解this指针几点注意:this 是 const 指针,它的值是不能被修改的,一切企图修改该指针的操作,如赋值、递增、递减等都是不允许的。this 只能在成员函数内部使用,用在其他地方没有意义,也是非法的。只有当对象被创建后this 才有意...
2019-05-18 22:56:00
80
转载 006.MFC_对话框_复选框_单选钮
对话框和控件复选框单选框分组框示例:三原色画图一、建立名为Demo2的MFC工程,按照下图添加控件并修改2个Group Box Caption属性分别为颜色、外观修改3个Check Box Caption和ID属性分别为(红色,IDC_CHK_RED)、(绿色,IDC_CHK_GREEN)、(蓝色,IDC_CHK_BLUE)修改2个Radio Box Caption和ID...
2019-05-14 00:18:00
222
转载 MFC_对话框_访问控件_7种方法_A
访问对话框控件的七种方法方法一、GetDlgItem()->GetWindowText();GetDlgItem()->SetWindowText();方法二、GetDlgItemText();SetDlgItemText();方法三、GetDlgItemInt();SetDlgItemInt();一、建立名为Demo的MFC工程,并按...
2019-05-11 11:48:00
187
转载 002.MFC_对话框_静态文本_编辑框
一、建立 名为dialogAndCtl的MFC工程,并添加如图控件1、将上方static text 控件 Caption属性设置为在文本框中如数文本,可以统计字符2、edit control控件属性 参照下图顺序设置,并将ID属性设置为IDC_EDIT_INPUT3、设置button控件 Caption属性 为统计,ID属性为IDC_BTN_COUNT4、设置下方...
2019-05-11 11:08:00
305
转载 027.MFC_映射消息
映射消息MFC中的消息映射宏 DECLARE_MESSAGE_MAP BEGIN_MEASSAGE_MAP END_MESSAGE_MAP向导自动映射消息手动添加映射消息MFC会帮我们自动映射大部分消息,当MFC不能自动映射消息时就需要我们手动映射消息一、建立名为message的MFC工程,并添加如图组件1、双击清空-自动button进入messageDlg.cpp...
2019-05-09 00:03:00
114
转载 025.MFC_窗口操作
窗口操作一、建立名为dialogOp 的mfc 工程 ,添加9个button 和1个check box组件,并按如图修改caption属性。最大化窗口双击最大化button,进入dialogOpDlg.cpp添加void CdialogOpDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 SendMessage(WM...
2019-05-08 22:34:00
96
转载 024.讲MFC_窗口指针
窗口指针通过HWND获得CWnd指针 //如何通过窗口句柄获得窗口指针获得应用程序主窗口的指针 //如何获得应用程序主窗口的指针一、建立名为dialogPoint的mfc工程,添加两个button双击button1进入dialogPointDlg.cpp添加void CdialogPointDlg::OnBnClickedButton1(){ // TO...
2019-05-07 23:27:00
132
转载 023.MFC_属性页控件(tab control)
属性页控件属性页->选项卡->对话框CTabCtrl一、建立名为tabCtrl的mfc工程,添加Tab Control控件,设置属性ID为IDC_TAB,并添加变量m_tab在tabCtrlDlg.cpp文件函数BOOL CtabCtrlDlg::OnInitDialog()中添加 // TODO: 在此添加额外的初始化代码 m_tab.InsertItem(0,...
2019-05-07 22:53:00
292
转载 009.MFC_Spin
数值调节按钮CSpinButtonCtrl属性 Alignment Auto Buddy Set Buddy integer成员函数 SetRange32() SetBase()转载于:https://www.cnblogs.com/Malphite/p/10822972.html...
2019-05-06 23:35:00
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人