自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划 - 最长公共子串

设dp[i][j]为当公共子串的最后一位字母为str1[i]和str2[j]时,公共子串的长度。状态转移方程:当str1[i] == str2[j]时, dp[i][j] = dp[i - 1][j - 1] + 1; 当str1[i] != str2[j]时 , dp[i][j] = 0; #include<iostream>#include<string.h&...

2018-10-27 10:17:48 317

原创 C++ 素数

#include <iostream>#include <string.h>#include <math.h>using namespace std;int primeNum(int n){ if (n <= 1) { return 0; } int mid = sqrt(n); for...

2018-10-27 09:54:05 410

原创 C++ 常记知识点

1、如果.h文件中声明了一个static全局变量,且多个源文件中使用#include包含了该头文件,则:多个源文件中都包含一份单独的拷贝,且初始值相同。这些拷贝之间相互独立,如果改变其中某个静态全局变量的值,不会影响静态全局变量的其他拷贝。2、内联函数和宏定义的区别:内联函数:在编译阶段展开;是一个函数,具有函数的基本性质,可以像普通函数一样调试;作为类的成员函数时,可以访问类成员,t...

2018-10-23 13:19:59 295

原创 插入排序、希尔排序、快速排序

插入排序:void insertSort(int array[], int n){ int temp = 0; int j = 0; for (int i = 1; i < n; i++) { if (array[i] < array[i - 1])//当前值小于有序序列的最大值 { tem...

2018-10-17 17:54:08 184

原创 自定义实现string类

myString.h: #include <iostream>using namespace std;#ifndef MYSTRING_H#define MYSTRING_Hclass MyString{public://构造函数 MyString(const char* str = NULL);//拷贝构造函数 MyString(const ...

2018-10-17 16:48:25 704

原创 快速排序

 将最左边的点设置为基准点,小的放到左边,大的放到右边,然后递归直到left>=right为止。#include <iostream>using namespace std;void quickSort(int array[], int left, int right){ if (left >= right) { return;...

2018-10-13 08:51:03 148

原创 c++ 实现全排列

中心思想:递归求子数组的全排列。具体操作:将每个元素都与子数组的第一个元素交换, 再求剩余部分的全排列, 求完后再交换会来,复原原数组。中止条件:low==high时,输出一种排列情况。#include <iostream>using namespace std;void swap(int &a,int &b){ int temp=a...

2018-10-10 11:11:20 4975

原创 二叉树的非递归遍历

节点:class Node{public: int data; Node* left; Node* right;};非递归前序遍历:void preOrder1(Node* root){ if (root == nullptr) { return; } stack<Node*> nStac...

2018-10-09 11:52:50 112

转载 内存池

为什么需要内存池?C/C++下我们经常需要分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内存块,这些会产生额外开...

2018-10-05 22:03:32 1178

原创 c++ const用法总结

1、const修饰指针const int* a;表明*a的值不可变,但是指向的地址可变。 int* const a;表明a的值不可变,即该指针指向的地址不可改变。2、const修饰值const int a;表明a的值不可变。3、const修饰成员变量必须在构造函数中进行初始化; 可以被非const成员函数和const成员函数调用;4、const修饰成员函数void sum...

2018-10-05 15:17:56 137

转载 c++函数模板、类模板

关于这一块,只说一点:类模板的实现需要和类的声明放在同一个文件中,即都放在.h文件中,否则会报错。原因:        因为在编译时模板并不能生成真正的二进制代码,而是在调用模板类或函数的CPP文件时才会去找对应的模板声明和实现,在这种情况下编译器是不知道实现模板类或函数的CPP文件的存在,所以它只能找到模板类或函数的声明而找不到实现,而只好创建一个符号寄希望于链接程序找地址。但模板类...

2018-10-04 22:05:41 168

转载 c++中的头文件(.h)和实现文件(.cpp)区别

转载:《c++中的头文件(.h)和实现文件(.cpp)区别》

2018-10-04 22:04:36 1305

原创 指针和引用的区别以及对引用传递的解释

指针和引用的区别:指针是一个实体,是一个指向地址的值,引用只是一个别名; 指针在使用的时候需要解引用(*),引用不需要; 指针的值是可变的,引用的值一定要在初始化的时候被指定且不可变; 指针可以用const修饰,引用不行; 指针可以为空,引用不可以为空; sizeof指针得到的是指针的大小,sizeof引用得到的是引用指向的变量的大小; 指针++是指地址+1,引用++是引用指向的变...

2018-10-03 16:39:54 180

原创 牛客网错题集锦之六

目录1、完全二叉树、完美二叉树、完满二叉树1)完全二叉树 (Complete Binary Tree)2)完美二叉树(Perfect Binary Tree)3)完满二叉树(Full Binary Tree)2、关于何时编译linux内核3、软件是程序、数据及相关文档的集合4、联合union类型的变量在定义时是可以被初始化的5、逗号表达式6、数据的物理结构和逻辑...

2018-10-02 17:51:35 184

原创 C/C++中空结构体、空数组、空类的作用

1、sizeof是什么?对象类型的大小是在编译的时候直接确定的。 sizeof不是一个函数,而是一个返回对象类型大小的宏。 其作用是返回一个对象或类型所占的内存字节数。如下例子可以运行通过:int main(){ int a = 12; int b[sizeof(a)]; cout << sizeof(b)/sizeof(int) <&l...

2018-10-02 17:27:14 7640 2

原创 c结构体、c++结构体和c++类的区别以及错误纠正

 C和C++结构体的区别C语言中的结构体不能为空。 C语言中的结构体只是一个复杂的数据类型,只能定义成员变量,不能定义成员函数,但是可以定义函数指针;C++可以定义成员函数和成员变量。 C++的结构体和类体现了数据结构和算法的结合。 C语言中定义结构体变量时,struct不可以省略:C++中定义结构体变量时,struct可以省略。struct Test{ int num;...

2018-10-02 15:02:58 874

原创 MATLAB绘图 - 绘制符合论文要求的图表

写小论文的时候,经常需要插入固定格式图标,手动设置太麻烦,按照网上的资料编了一段程序出来进行自动处理,生成图片后再利用MATLAB导出即可。目的:生成5*7cm大小的折线图。%% 绘图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 设置字体 & 边框figure()a...

2018-09-14 12:41:46 6710 4

原创 牛客网错题集锦之五

目录1、关于HTTP1.0和HTTP1.12、已知中序遍历的序列为abcdef,高度最小的不可能的二叉树的前序遍历是?3、使用贪心算法思想的算法4、基于哈希算法在信息安全中主要应用在:5、实型常量6、中间代码生成时所依据的是:语义规则7、关于无分类编址CIDR8、&&和||具有短路特性1、关于HTTP1.0和HTTP1.1HTTP1.0:只支...

2018-09-12 15:26:30 471

原创 牛客网错题集锦之四

目录1、函数的定义和调用2、循环队列3、曼彻斯特编码4、printf输出编译顺序5、类中初始化列表的执行顺序是变量的声明顺序!6、MySQL索引7、Linux中可以用来查找可执行文件的命令8、时间片轮转法计算平均周转时间1、函数的定义和调用函数的定义不可以嵌套 函数的调用可以嵌套2、循环队列循环队列中,front为队头指针,rear为队尾指针,存储空...

2018-09-11 20:56:39 167

原创 二叉树前序、中序、后序遍历及推导方法

目录二叉树的遍历方法推导遍历结果1、已知前序遍历和中序遍历2、已知中序遍历和后序遍历3、已知前序遍历和后序遍历,无法确定一颗唯一的二叉树参考文献 二叉树的遍历方法前序遍历:根左右。先打印,再遍历左子树,再遍历右子树; 中序遍历:左根右。先遍历左子树,再打印,再遍历右子树; 后序遍历:左右根。先遍历左子树,再遍历右子树,再打印。采用递归思想实现:/**...

2018-09-10 20:39:17 22128 5

原创 牛客网错题集锦之三

目录1、构造函数初始化时的初始化列表2、“<<=, >>=, &=, ^=, |=”的含义3、类的静态成员4、Math类中与取整有关的方法5、字符数组和字符串6、优先级7、C++中参数传递的方式8、能够从输入流中提取指定长度的字节序列的函数是:read 1、构造函数初始化时的初始化列表必须采用初始化列表的情况:没有默认...

2018-09-10 20:16:03 228

原创 牛客网错题集锦二

目录 1、常量与变量2、C程序中的预处理命今是在预编译时进行处理的,而不是在程序执行过程中来处理的。3、运算符优先级4、共用体union5、原码、反码、补码6、 派生类的成员变量访问权限7、构造函数不能声明为虚函数,析构函数可以声明为虚函数1、常量与变量‘c’是字符常量 c是变量2、C程序中的预处理命今是在预编译时进行处理的,而不是在程序执行过程中来处理...

2018-09-08 11:14:12 213

原创 牛客网错题集锦之一

目录1. 派生类和继承2. 指针数组3. 二叉树遍历4. UTF-8和UTF-165.构造函数和析构函数的调用顺序6. 内部静态类的可见性和存在性不一致7. 用C程序实现的算法可以没有输入但必须要有输出8. Nagle算法的规则:1. 派生类和继承派生类类内,不管哪种继承,一定能访问基类的public和protected成员,永远不能访问private成员;...

2018-09-05 22:58:20 189

原创 Error:stack overflow分析

函数的栈空间是用于存放局部变量、函数返回地址以及函数参数等数据的内存区域,其大小是有限制的(VC6默认1M)。局部变量占用空间太大或者函数的调用层次太深就会出现“stackoverflow”的情况。解决:增大栈空间或者在堆上分配内存。以VC6为例,如何增大栈空间:Project->setting->link->category中选择output,修改stack的R...

2018-08-31 14:36:34 2870

原创 C++ new和delete内存管理

目录1、new和delete的含义1)对基本类型的处理2)对类的处理new[]/delete[]和new/delete的工作原理如果出现delete pT22、new/delete和malloc/free的区别和联系​3、C++申请、释放内存的步骤4、内存泄漏的几种情况5、参考文献 1、new和delete的含义new和delete是用来分配内存和释...

2018-08-31 14:17:46 298

原创 TCP 协议及封包和解包

关于这方面网上资料不少,主要筛选出了这几篇讲的比较有条理的文章来看。《TCP/IP 网络数据封包和解包》《socket 封包和解包》《TCP通讯处理粘包详解》《TCP协议及帧格式》《关于TCP封包、粘包、半包》说一下我是怎么处理的:Recv接收数据,存入chSendbuff中; 判断chSendBuff中的数据,是否大于一个自定义数据包的长度; 如果大于,则开始校验...

2018-08-30 19:49:37 5470

转载 Linux中的signal机制

参考:《Linux信号发送命令之kill命令》《linux中的signal机制》《SIGINT SIGTERM SIGKILL区别》

2018-08-30 19:32:03 204

原创 strcut结构体和char型数组的相互转化

针对内存连续的结构体,把一整段内存拷贝到char数组对应的内存中。考虑4字节对齐!struct Test{ int a; char b; char c[1024]; unsigned short d;};char* ch = "abcdefghijklmn1234567890";char* chTest = new char[2048];memse...

2018-08-30 19:24:01 6148

转载 libevent关键函数及知识点梳理

本文转载自:https://blog.csdn.net/yuliying/article/details/42126195 事件循环控制:主要是开始事件循环和终止事件循环 使用默认配置开始事件循环: event_base_dispatch() 开始事件循环,可以设置一些参数: event_base_loop() 指定时间后退出事件循环,处理完回调函数后退出 : e...

2018-08-30 17:40:33 1393

原创 recv( )函数返回值说明

recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);参数说明第一个参数指定接收端套接字描述符;  第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;  第三个参数指明buf的长度; 第四个参数一般置0。同步Socket的recv函数的执行流程当应用程序调用recv函数时:rec...

2018-08-30 17:27:16 37183 1

原创 C/C++常用函数记录

long int strtol(const char *nptr,char **endptr,int base);说明参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8...

2018-08-30 16:44:19 245

原创 如何判断一个字符串指针是否为空(c)

#include<stdio.h>#include<stdlib.h>void main() { char *str = (char*)malloc(sizeof(char)*10); //分配地址空间 gets(str); //输入 if(str[0]!='\0') //由于字符串以'\0'结尾,故可以这样来判断 ...

2018-08-30 16:36:40 5371

转载 事件驱动模型和异步IO多路复用

介绍的比较全面和基础的一篇文章,对于理解概念有很大的帮助:《事件驱动模型和异步IO多路复用》 《libevent和基于libevent的网络编程》 epoll 仅在linux是IO复用技术 Libevent 将不同平台的IO复用技术封装统一的接口,使程序可以跨平台 ZeroMQ 消息队列,支持不同的模型,用于将不同的应用程序采用消息方式连接起来,erlang的机制有点类似。...

2018-08-30 16:34:00 335

原创 g++调试工具

g++调试工具:valgrind --log-file=val.log --leak-check=full ./serverhttps://blog.csdn.net/yuanfengyun/article/details/45246325

2018-08-23 19:58:23 419

转载 C++ 数字、string和char*的转换

引用:https://blog.csdn.net/zhubaohua_bupt/article/details/70055878#include<iostream>#include<string>#include<sstream>#pragma warning(disable:4996)using namespace std;int main...

2018-08-15 16:01:48 258

转载 Linux环境下段错误的产生原因及调试方法小结

写的比较详细的一篇文章:《Linux环境下段错误的产生原因及调试方法小结》

2018-08-15 15:57:38 415

原创 STL的多线程安全问题

多个线程可以同时读取一个容器中的内容,eg: find, begin, end 等. 多个线程对不同容器的同时写入合法。 但是,多个线程同时读写一个容器是很危险的。以map为例:当你调用map的任何接口时,比如 end(), begin(), find()等时,可能会返回一个iterator,如果有别的线程正在修改这个map,你的iterator就变得无效了,再用这个iterator行为就...

2018-08-15 15:51:32 1392

原创 GDB调试基本命令

GDB调试步骤使用gdb调试时,需要在编译时使用-g参数g++ -g test.cpp -o testgdb ./test常用命令:start                   #开始调试,停在第一行代码处,(gdb)start l                         #list的缩写查看源代码,(gdb) l [number/function] b &lt...

2018-08-09 20:10:15 63417

转载 Socket详解

目录一、其他参考资料二、引用:1、网络中进程之间如何通信?2、什么是Socket?socket一词的起源3、socket的基本操作3.1、socket()函数3.2、bind()函数网络字节序与主机字节序3.3、listen()、connect()函数3.4、accept()函数3.5、read()、write()等函数3.6、close()函数...

2018-08-09 11:17:17 223

转载 将类封装成dll/lib的方法

引用:将类封装成dll/lib的方法:https://blog.csdn.net/oceanark/article/details/51902316

2018-08-09 09:21:25 1750

空空如也

空空如也

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

TA关注的人

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