自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux c++的一个简单的server和client通信

//server.c#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#include<stdlib.h>#include<arpa/inet.h>#include<string.h&...

2020-01-10 17:55:23 574

原创 Linux下简单的c++调用python例子

1.环境问题:在linux一般自带python解释器,我的为python 2.7.5.(可根据python --version查看)。写环境验证代码,写简单的c++代码,引入头文件#include<python2.7/Python.h>,进行编译。可能出现如下错误:采用yum install python-devel.x86_64 命令解决,编译没有报错可以忽略。...

2019-05-13 16:22:06 6912 3

原创 IO多路复用之select和epoll(详细注释)

select:#include#include#include#include#include#include#include#includevoid usage(char * argv){ printf( "%s\n",argv); }int startup(char * ip,int port){

2016-08-13 17:36:32 519

原创 网络端口的分类

1.公认端口(Well Known Ports):这类端口也常称之为"常用端口"。这类端口的端口号从0到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。例如:80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口通常不会像木马这样的黑客程序利用。为了使大家对这些常用端口多一些认识,在本章后面

2016-08-06 22:29:40 489

原创 删除元素使迭代器失效

迭代器提供一种方法能够访问一个容器里面的数据,而又不用暴露该容器内部的表达式,设计思想是将数据容器和算法分开,然后利用迭代器这个粘合剂将他们撮合在一起。迭代器的使用要注意失效问题。(erase返回被删除迭代器的下一个迭代器)对于顺序容器的失效:void test(){ vector v = { "aaaaaaaaaa", "bbbbbbbbbb", "ccccccc

2016-08-04 23:14:32 591

原创 IP数据报文的分片和组装

分片:MTU(Maximum Transmission Unit,MTU),最大传输单元 ,以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。链路层的这个特性称作MTU。不同类型的网络大多数都有一个上限。如果IP层有一个数据要传,且数据的长度比链路层的MTU还大,那么IP层就要进行分片(fragmentation),把数据报分成若干片,这样每一个分片都小于MTU

2016-08-03 09:21:01 3594

原创 路由表及其建立算法

一.路由表1.路由表仅指定从该路由器到目的地路径上的下一步,而不知道到达目的地的完整路径,标准的IP路由表包含许多对序偶,N表示目的网络的IP地址,R表示到N路径上的下一个路由器的IP地址。2、从Datagram中提取目的IP地址D,计算netid网络号N,if N与路由器直接连接的,ElseIf RoutingTable中包含到N的路由,Then 将Datagram发送到Routin

2016-08-03 01:02:54 3676

原创 利用哈夫曼树进行文件压缩

项目描述:项目简介:利用哈夫曼编码的方式对文件进行压缩,并且对压缩文件可以解压开发环境:windows vs2013项目概述:                 1.压缩         a.读取文件,将每个字符,该字符出现的次数和权值构成哈夫曼树 b.哈夫曼树是利用小堆构成,字符出现次数少的节点指针存在堆顶,出现次数多的在堆底 c.每次取堆顶的两个数,再将两个数

2016-07-25 00:43:07 6555

原创 寻找最小的k个数,处理海量数据的思想

题目:在n个数中找出最小的k个数,例如在1,3,5,7,9,2,4,6,8,10中找出最小的4个数,那么结果就为1,2,3,4分析:最为直接的办法就是将这n个数先进行排序,然后再取出前k个即为最小的k个数,但这绝对得不到面试官的青睐,因为这样做太笨拙。现在可以将数据插入到小堆中,然后将前堆前面的K个数输出就可以。class Heap //建立小堆{public:

2016-07-07 11:24:16 449

原创 AVL树的插入和检查

所以还是满足左路节点小于根节点根节点小于右路节点。现对AVL的插入算法进行实现,方法是先将每个节点按二叉搜素树的方式进行插入,然后再根据AVL树的性质对插入的节点做相应的调整,使其满足AVL树的性质。里面涉及到左旋,右旋,一级左右旋和右左旋。左旋为:右旋为:左右旋:右左旋:现在按图进行代码实现:template stru

2016-06-23 23:48:43 598 1

原创 二叉搜索树的增删查改

二叉搜索树注重增删查改,现在针对key/value形式进行研究。现在对其进行实现,分别有插入,查找,删除,分别对这几个功能用递归和非递归实现。          其中删除操作比较特别,分为3种,分别是删除叶子节点,删除左为空或右为空的节点,第三种是删除左右子树都不为空的节点。最后一种删除最麻烦,它分为三个步骤,分别是找出右树的最左节点,然后和要删除的节点进行key/value的互换,然

2016-06-17 23:43:35 425

原创 BitMap的原理及使用

位图:位图的原理就是用一个bit来标识一个数字是否存在,采用一个bit来存储一个数据,所以这样可以大大的节省空间。例如一个int型有32bit,那么就可以用这32个bit来存储0~31这些整型数据,所以可以将1~31这些数据仅用1个bit来存储,这样节省了空间。例如要存储3,7,4,8主要把握的是映射关系代码实现:class BitMap{

2016-06-08 20:41:13 5931 1

原创 基数排序

原理是按每一位进行对数组的排序,例如:代码实现:int GetDigit(int * parr,int size)//获取最大数的位数{ int max = parr [0]; for (int i = 1; i <= size;i++) {

2016-06-08 17:48:01 321

原创 冒泡排序的优化及最好最差情况

最开始学习的时候并没有对其进行深入的思考,现在对其进行总结,冒泡排序的思想也就不需要赘述。最开我们会将数列进行n-1趟排序,每趟又进行一个循环的冒泡,如果是升序,我们就会将相邻的两个元素进行比较,将大的元素一直向后面“沉”,直到所有循环结束,这是数列也就被我们排序完成。代码如如下:void BubbleSort(int* parr,int size)//冒泡排序(升序){

2016-06-05 20:31:22 17607 3

原创 直接选择排序和它的优化

直接选择排序是一种比较直观的排序,它是从一个无序的额数组中选择一个最小或最大的并将这个最大的放在数组的开始或末尾,现在进行代码的实现:/****/if(parr[j]/********************/现在这个选择排序还有很大的优化空间,上述的方法的时间复杂度为O(n^2)。现在的优化方式是同时选出他的最大的和最小的。代码实现:void Se

2016-06-02 17:14:00 1468

原创 Linux下进度条

功能:模拟1到100的进度条,每次显示打印了百分之多少首先要明白几个转义字符在不同平台的功能:\r : return 到当前行的最左边。\n: newline 向下移动一行,并不移动左右。Linux中\n表示回车+换行;Windows中\r\n表示回车+换行。Mac中\r表示回车+换行。现在进行实现:

2016-06-02 11:08:45 414

原创 Linux背景

Linux的性质,Linux是一种基于冯诺依曼的操作系统,与windows性质相同,只是windows普及程度更高,Linux的普及程度较低。虽然Linux普及程度较低,但是他的一些有点也是我们不可忽视的。Linux具有很强的稳定性和高效性,连续运行较长时间也不是问题,例如,一般Linux可以作为服务器的操作系统,这样可以保证服务器长久性的工作。 Linux对机器配置的要求较低,不需要一直升级机器

2016-05-30 10:47:05 261

原创 二叉树

1.树的节点:节点包含数据和指向其它节点的指针,因为不知道有几个指向其它节点的指针呢个,所以树的结构变得难以定义(因为子节点的个数是未知的),这是可以采用左孩子和右兄弟的表示方法,左孩子可以访问左子树的节点,用右子树可以一直往下访问它的兄弟节点,这样就可以实现树的定义和访问。2.二叉树:对于二叉树,它只有左子树和右子树,所以二叉树就不难表示,二叉链中包含数据,指向左子树的指针和指向右子树的指针,三

2016-05-30 10:47:02 290

原创 回溯法解决迷宫问题

现在有迷宫地图:(回溯法)1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 10 0 0 1 1 1 1 1 1 11 1 0 1 1 1 1 1 1 11 1 0 1 1 1 1 1 1 11 1 0 1 1 1 1 1 1 11 1 0 0 0 0 0 0 1 11 1 0 1 1 1 1 0 1 11 1 0 1 1 1 1 0 1 11 1 0 1 1 1 1 1

2016-05-30 10:46:59 1304

原创 两个队实现栈

我们知道队的特点是先进先出,元素只能从队的尾部进入,只能从队的尾部出来;栈的特点是先进先出,先进栈的元素被压入栈底,后进入的元素覆在栈顶,出栈时也只能从栈的顶部出来。所以我们要借用两个队来实现栈的功能,先不用栈自身的属性却可以实现栈的属性。(队用链表来实现)  现有两个队,我们将他们分别记为Qin,Qout,开始是将元素插入到Qin中,然后将将除了队尾的元素全部保存到Qout中,保存的过程中依次将

2016-05-30 10:46:55 763

原创 万年历软件各个接口功能的实现

万年历软件可以实现日历显示,日历查询,日历修改,日期备忘录,信息帮助这些功能:#include#include"CalendarTable.h"#includeint main(){CalendarTable();system("pause");return 0;}/******************************************************************

2016-05-30 10:46:52 1561

原创 c注释转换成c++注释

对于代码来说注释是非常重要的,因为这样可以提高自己写的代码的刻度性,现在实现c转换成c++注释的功能,可以将眼花缭乱的注释方式总结成8个种类,分别是:// 1.一般情况/* int i = 0; */// 2.换行问题/* int i = 0; */int j = 0;/* int i = 0; */int j = 0;// 3.匹配问题/*int i = 0;/*xxxxx*/// 4.多行注释

2016-05-30 10:46:49 319

原创 C实现单链表的常见功能

以下是本次实现的一些功能:///////////////////////////////////////////////////////////////////////////////普通功能的实现:void InitLinkList(pList* pHead);void Destroy(pList *pHead);void PushBack(pList* pHead, DataType x);v

2016-05-30 10:46:46 834

原创 动态顺序表一般接口功能的实现

动态顺序表可以克服静态顺序表的一些相应问题,使用时可以根据储存数据的数量对存储空间进行动态开辟,可以节省空间,在这将其一般接口功能进行实现。#include"Sql_D.h"#includevoid test1()//初始化{ SqlList_D mylist; Init(&mylist);}void test2()//打印{ SqlList_D mylist; PrintList(&mylist

2016-05-30 10:46:43 242

原创 静态顺序表常见各个接口的实现

顺序表是线性表的一种,除了顺序表线性表还包括链表,今天先讨论顺序表,其中顺序表包括静态的和动态的,现在可以将顺序表的各个接口分别实现#include"Sql_s.h"#includevoid test1()//初始化{ SqlList mylist; Init(&mylist);}void test2()//打印{ SqlList mylist; PrintList(&mylist);}void

2016-05-30 10:46:40 261

原创 怪怪的函数strtok

////#include//strtok函数的利用//int main()//{// char p[] = "192.196.23.45";// char *token=strtok(p, ".");// ///*printf("%s  ",token);// //while (token != NULL)// //{// // token = strtok(NULL, ".");// // if

2016-05-30 10:46:37 273

原创 关于C打开文件失败

C语言可以做到使用文件的多种方式,例如打开一个用于读取的文本文件,创建一个用于写入的文本文件,附加一个文本文件等等。现在我们讨论一下关于使用C语言打开文件错误的情景。   fopen函数用来打开一个文件,其有固定的调用形式:文件指针名=fopen(文件名,"r"),我们这里讨论打开所以是"r",如有其他操作则给fopen传入相应的使用文件方式,例如附加一个文本是"rb"。文件名必须被声明为FILE

2016-05-30 10:46:34 16068 2

原创 C结构体实现一个通讯录

题目:实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名,性别,年龄,电话,住址。提供方法:1.添加联系人信息 2.删除指定联系人的信息 3.查找指定联系人的信息 4.修改指定联系人的信息 5.显示所有联系人信息 6.清空所有联系人 7.以名字排序所有联系人思路分析:1. 首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息

2016-05-30 10:46:31 513

原创 二维数组知多少

有的实际问题一维数组是无法解决的,所以引入二维数组甚至是多维数组,这里着重讨论一下二维数组,如果深刻理解二维数组多维数组也就迎刃而解。1. 二维数组的定义:例如现在有3支球队,每支队有5个人,要充分表达每个人便可以引入二维数组,例如a[0][0]就表示第一支队伍的第一个人。这里的a便是数组名,第一个[0]表示第一支队伍,第二个[0]表示第一支队伍里的第一个人。根据此类比喻可以根据条件要求将二维数组

2016-05-30 10:46:28 357

原创 部分函数功能的实现

1:strcpy的实现函数功能:把从src地址处开始的字符串拷贝到以dest为开始地址的空间里,其中包含src字符串结尾处的'\0'。代码实现:#include//模拟实现strcpy#includevoid my_strcpy(char *dest,  const char *src)/*函数不需要返回*/{    assert(dest); assert(src); while(*src)/*

2016-05-30 10:46:26 436

原创 字符串部分函数的实现

strstr函数的实现本函数是用来判断字符串str2是否是str1的子串。如果是,则函数返回str2在str1中首次出现的的当前地址;否则,返回NULL。代码模拟:#include//模拟实现strstr#includeint main(){   char *my_strstr(char *str1,char *str2);char *str1="she is a good teacher";ch

2016-05-30 10:46:22 278

原创 猜数字小游戏

#include//猜数字游戏#includeint main(){int i=0;printf("猜数字小游戏\n");printf("********************************\n");printf("**********1 开始  **************\n");printf("**********0 退出游戏 ***********\n");printf("**

2016-05-30 10:46:19 499

原创 哈希表的静态,动态,以及key/value形式

哈希是一种算法,将指定的数据按一定规律映射到一段空间内,又可以按照这种规律对它的值进行相应的操作,这一段空间可以称作哈希表,它的的查找速度要快于线性的数据结构,同时也快于表格队列等,所以它具有独特的优势,一般将哈希算法用于快速查找和加密算法。   对于最简单的哈希表,里面设置一个key,它决定将这个值存于哈希表的什么位置,同时把每个设置一个状态,如果有插入数据就将其设置为EXITS,其

2016-05-27 10:20:05 3235

原创 关于shared_ptr

首先了解shared_ptr毫无疑问的是智能指针的一种,智能指针是为了解决在大型代码里无法不好控制指针的问题,例如:在类里面如果出现了动态开辟出来的空间,有一个指针指向这块空间,如果在相应的作用范围之内没有将其delete掉会造成内存的泄漏,所以这样就必须手动的对这一块空间进行释放,但是这非常不利于我们的工作,所以我们就引入了智能指针,它是一个类,它的作用范围结束就自动释放了,所以这样达到了智能的

2016-04-04 16:17:37 359

空空如也

空空如也

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

TA关注的人

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