自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nginx源码-执行流程图

图片较大,点击放大拖拽,或者下载到本地

2019-05-28 17:53:27 861 1

原创 TCP可靠传输的工作原理-停止等待&连续的ARQ(一)

停止等待协议,TCP的可靠传输,连续的ARQ协议

2017-06-26 20:10:24 20386 5

原创 容易被忽略的网络传输层小知识点

一、端口号的分类以及用途    众所周知,一个ip地址对应了唯一的主机。而端口号对应了唯一的一台主机的唯一一个网络进程。    而这两者联系起来就叫套接字。因此套接字对应了唯一的一个网络进程。    那么,什么是端口号?    端口号其实就是一个为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口,只具有本地意义。    因此,两台计算机之间交互,不仅要知道双方的ip地

2017-06-19 17:33:13 517

原创 网络模型(OSI七层和TCP/IP四层)

看了有关方面的网络书籍以及大牛们的博客,总结一张图如下,如有问题,请多多指出。

2017-06-15 20:47:17 336

原创 使用gdb如何调试多进程和多线程

一、gdb调试的一些常用指令。1、首先,要想对一个程序进行调试,就必须在编译的时候加-g选项(生成Debug版本),默认为Release版本。2、运行该程序:run(简写r)3、查看代码:list(简写l)4、打断点:break(简写b)后跟行号(或者函数名、文件名:行号)5、查看所有断点:info b6、跳转到下一断点处:continue(简写c)7、删除断点:del

2017-06-15 16:33:37 619

原创 Linux-消息队列

消息队列是进程间通信System V版本(消息队列、信号量、共享内存)之一。所谓System V版本就是其生命周期随内核(及时进程结束,消息队列也不会被删除),这是与管道的不同。还有一个不同点就是:管道是以数据流方式来发送(接受)数据,而消息队列是以数据块的方式来发送(接受)数据。首先,下面是有关消息队列的系统调用:1、int msgget(key_t key, int msgfl

2017-06-12 19:41:49 342

原创 匿名管道和命名管道

一:匿名管道(pipe)。    是一种最基本的IPC机制,由pipe函数创建。    调用pipe函数时在内核中开辟一块缓冲区用于通信。而我们把这块缓冲区叫做管道。      #include    int pipe(int fd[2]);    其参数:为一个输出型的参数。其中fd[0]中保存读端口的文件描述符,fd[1]中保存写端口的文件描述符。    其返回值:

2017-05-12 20:48:52 948

原创 僵尸进程和孤儿进程

什么是僵尸进程?       一个子进程在其父进程没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait,则该僵尸进程将无法回收,等到父进程结束后,会被init回收。验证:#include#include#includeint main(){ pid_t id=fork(); if(0 == id)

2017-04-14 17:11:53 424

原创 STL-空间配置器

STL空间配置器的底层原理:维护了一个狭义的内存池,并且用一个自由链表来维护该内存池。该自由链表比较类似于哈希的开链法的存储结构。源代码:#pragma onceusing namespace std;#define __THROW_BAD_ALLOC cerr << "out of memory" << endl; exit(1)typedef void*(*F

2017-03-27 20:15:27 295

原创 JSON的解析与反解析

JSON.h#ifndef __JSON__H__#define __JSON__H__#include <stdio.h>typedef enum //表示7种数据类型{ LEPT_NULL, //null LEPT_FALSE, //false LEPT_TRUE, //true LEPT_NUMBER,//数字 LEPT_STRING,//...

2017-03-21 18:13:55 1456

原创 数据结构-排序算法集合(包含所有排序)

1.比较排序:    1).插入排序(直接插入排序、希尔排序)    2).选择排序(选择排序、堆排序)    3).交换排序(冒泡排序、快速排序)    4).归并排序(归并排序)2.非比较排序:    1).计数排序    2).基数排序(LSD、MSD)

2017-03-09 13:27:35 188

原创 数据结构-红黑树(RBTree)

#pragma onceenum Color{ RED, BLACK};template struct RBTreeNode{ K _key; V _value; Color _col; RBTreeNode* _left; RBTreeNode* _right; RBTreeNode* _parent; RBTreeNode(const K& key,

2017-03-08 11:29:32 391

原创 数据结构-二叉搜索树

#pragma once//K/V模型(key/value) //运用:英汉互译 templatestruct SearchBinaryTreeNode{ SearchBinaryTreeNode* _left; SearchBinaryTreeNode* _right; const K _key; //eg:英译汉 V _value; SearchBinaryTre

2017-03-07 17:17:47 248

原创 数据结构-堆(Heap)

#include #include using namespace std;templatestruct Bigger{ bool operator()(T left, T right) { return left > right; }};templatestruct Lower{ bool operator()(T left, T right) { re

2017-03-06 23:09:41 287

原创 数据结构-二叉树线索化迭代器(续上节)

#pragma once#include using namespace std;enum Type{ LINK, //指针指向的是一颗子树 THREAD //指针指向的是线索化};templatestruct BinaryTreeThdNode //二叉树的节点结构{ T _data; BinaryTreeThdNode* _left; BinaryTr

2017-03-05 19:12:57 292

原创 数据结构-二叉树的线索化

主要代码实现:#pragma once#include using namespace std;enum Type{ LINK, //指针指向的是一颗子树 THREAD //指针指向的是线索化};templatestruct BinaryTreeThdNode{ T _data; BinaryTreeThdNode* _left; BinaryTreeThd

2017-03-05 15:33:15 288

原创 数据结构-广义表

广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。    A = () B = (a,b) C = (a,b,(c,d)) D = (a,b,(c,d),(e,(f),h)) E = (((),()))主要代码://广义表结构(链表套链表)#pragma once#

2017-03-04 19:39:55 342

原创 数据结构-二叉树(包含递归和非递归版本)

#pragma once#include #include #include using namespace std;template struct BinaryTreeNode{ T _value; BinaryTreeNode* _leftchild; BinaryTreeNode* _rightchild; BinaryTreeNode(const T& x)

2017-02-25 19:09:38 115

原创 STL-模拟实现list

STL中list的模拟实现,以及迭代器实现

2017-02-24 23:19:56 190

原创 STL-模拟实现List

模拟实现STL中的list

2017-02-24 23:16:28 414

原创 STL-模拟实现vector(含类型萃取)

1.类型萃取//类型萃取struct TrueType{ bool Get() { return true; }};struct FalseType{ bool Get() { return false; }};templatestruct Type{ typedef FalseType NowType;};template<>stru

2017-02-23 19:06:19 378

原创 解析unordeded_map和unordeded_set的底层实现

unordered_map\unordered_set底层实现

2017-02-20 09:39:14 5282 1

原创 CVTE水果笔试题

好像是去年CVTE在招聘的时候出了这样的一个笔试题:       题目的大意就是:本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的三种水果,并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,并且求出排列前三的这三种水果。      

2017-02-16 12:04:45 649

原创 c语言链表以及面试题

#ifndef __PNODE_H__ //不带头结点的链表#define __PNODE_H__#include #include #include typedef int DataType;typedef struct Node{ DataType data; struct Node *next;}Node, *PNode;void InitList(P

2016-12-07 23:39:13 1829

原创 诊所管理系统

//设计人类(Person类)和医生类(Doctor类),在此基础上,通过增加患者和账单,使它们公用于表示一家诊所的信息管理。//(1)在一条医生记录中,包括医生的专业说明(specialty),// 如内科医生(surgeon)、儿科医生(pediatrician) 、产科医生(obstetrician)及全科医生(general practitioner)。//(2)Doctor记录还

2016-07-21 15:37:03 4746 1

原创 银行家算法实现

一:银行家算法中的数据结构1)可利用资源向量Available是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。2)最大需求矩阵Max这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。3)分配矩阵Al

2016-06-26 16:21:30 992

原创 十进制转二进制思想以及延伸

说起十进制转为二进制,我想大家对它的算法并不陌生。它在数学中的主要思想就是:用这个要转化的数不停的除2取余,并且用商来重复之前的操作,直至商为0;那么,我们就可以根据这个思想来写出我们的C程序。首先,我们必须要清楚的是:我们依次得到的这个余数其实是这个数二进制序列按从最低位到最高位依次得到的数。(这个不要搞错了,不然输出就可能会出问题的)那么,我们可以创建一个数组将它存起来,然后再

2016-06-15 12:49:26 1560

原创 简易词法分析器

当我们写好一段代码之后,我们通常的操作是:编译,链接, 执行。而在编译阶段,我们的编译器就会进行词法分析这个阶段,来分析有没有词法错误。而单词符号一般分为五大类:1.关键字,也称保留字,比如:if,else,sizeof等(c语言中由32个关键字,在这里也就不一一列举);2.标识符,用来表示各种名字,如:常量名,变量名,函数名等;3.常数,各种类型的常数,如:23,3.1415

2016-06-12 16:42:52 5059 2

原创 const在c和c++中的异同

hello!大家好!初次写博客,希望可以得到大家多多支持。或者有什么意见和建议。希望可以得到大家的评论。     今天我想谈谈const在c和c++中的用法。     首先,可能大家在刚一接触到const的时候,大家一致性的以为它仅仅就是一个来定义常量的关键字。          eg:const int x=5;          x呢,它是一

2016-06-07 23:23:04 357

空空如也

空空如也

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

TA关注的人

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