自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类和对象->四个默认成员函数->运算符重载

类和对象类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。 类的定义 类是用户自定义的类型,如果程

2017-06-25 16:21:39 1239

原创 路由表生成算法以及收敛路由原理

路由表简介路由:数据包从源地址到目的地址所需要经过的路径,由一系列节点组成。 路由节点:一个具有路由功能的主机或者路由器,维护一张路由表,通过查询路由表来决定向那个节点发送数据包。 路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接收和发送,其中最后一个是缺省路由条目。 路由条目:路由表中的每一行,每个条目主要由网络地址、子网掩码、下一跳地址、发送接收四部分组成

2017-06-24 20:32:33 5247

原创 NAT技术与代理服务器详解

NAT技术原理与应用1 概述1.1 简介1.1.1 名词解释公有IP地址:也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻 址的地址。私有IP地址:也叫内部地址,属于非注册地址,专门为组织机构内部使用。因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址:10.0.0.0 ——— 10

2017-06-24 19:44:24 3725

原创 ARP协议以及获取MAC脚本

arp协议 : 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个

2017-06-24 11:54:00 2224

原创 CRC校验

基本概念对应关系:多项式和二进制数有直接对应关系:X的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:X的最高幂次为R,转换成对应的二进制数有R+1位。 多项式包括生成多项式G(X)和信息多项式C(X)。 如生成多项式为G(X)=X4+X3+X+1,可转换为二进制数码11011。 而发送信息位1111,可转换为数据多项式为C(X)=

2017-06-24 11:48:46 987

原创 网络服务端口分类

1. 一共有多少有效端口?计算机一共有65535个有效端口,但是一般使到的也就是十几个2.端口是如何分类的?端口可分为3大类: 1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 2) 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一

2017-06-18 22:58:37 771

原创 C++入门基础知识

1.命名空间C++ Namespace 详解 命名空间的定义格式为:(取自C++标准文档)named-namespace-definition: namespace identifier { namespace-body }unnamed-namespace-definition: namespace { namespa

2017-06-18 20:24:19 535

原创 守护进程

一、什么是守护进程1、守护进程的引入 在现实生活中, 许多大型的软件或服务器必须保证7*24小时(一周7天,一天24小时)无障碍的运行,例如淘宝网、百度搜索引擎、支付宝等等,那么像这样一种要一直运行的程序怎么实现呢?究其本质其实就是我们的守护进程。2、守护进程的定义 守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的

2017-06-18 14:56:47 853

原创 子进程的异步等待方式

等待: 等待有阻塞等待和非阻塞等待。 我们用非阻塞等待来实现异步。 1, 子进程终止时会给父进程发送SIGCHLD信号 2, 为了验证子进程在退出时确实向父进程发送了SIGCHLD信号,我们对SIGCHLD信号进行捕捉 3,#include<stdio.h>#include<stdlib.h>#include<sys/wait.h>#include<signal.h>#includ

2017-06-15 16:25:32 549

原创 对比线程安全和可重入函数

可重入函数函数被不同的控制流程调用,有可能在第一次调用还没返回时就再次 进入该函数,这称为重入。 然而有可能因为重入而造成错乱,像这样 的函数称为不可重入函数, 反之,如果一个函数只访问自己的局部变量或参数,则称为可重入 (Reentrant) 函数。 可重入函数: 重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static)

2017-06-15 16:20:02 416

原创 信号的捕捉与模拟实现sleep函数

信号的捕捉:如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。 信号的处理有三种方式。 那么它是在什么时候处理信号的呢? 我们来看一张图。 0,一张图,两半,上为用户态(运行态),下面为内核态(管理态)。 1, 上图为信号的捕捉,处理流程。 2,图中3,4 是为了处理用户自定义的句柄。 3,图中有4个内核与用户的切换。 4,用户处理信号的时机:从内核

2017-06-15 16:15:47 722

原创 基于单链表的面试题——进阶篇

点击查看如何实现单链表以及单链表的一些基本操作函数 点击查看基于单链表经常见的面试题——基础篇1.判断单链表是否带环?若带环,求环的长度?求环的入口点? 判断是否带环:ListNode *IfRing(ListNode *list)//判断单链表是否带环,返回交点{ ListNode* slow = list; ListNode* fast = list; //是否带环

2017-06-12 14:07:37 986 1

原创 基于单链表经常见的面试题——基础篇

点击进入查看如何实现链表以及链表的一些基本操作函数 基于单链表的面试题——进阶篇1.比较顺序表和链表的优缺点,说说它们分别在什么场景下使用?首先我们时间上来进行分析:(1)对于顺序表。不论是静态的还是动态的,他们都是连续的存储空间,在读取上时间效率比较快,可以通过地址之间的运算来进行访问,但是在插入和删除操作会出现比较麻烦的负载操作。 (2)对于链表,因为他是链式存储。在我们需要的时候才在堆上开

2017-06-09 21:18:49 1668

原创 实现无头结点单链表的基本操作函数

基于单链表经常见的面试题——基础篇 基于单链表的面试题——进阶篇什么是无头结点链表??? singlelinkedlist.h头文件#ifndef __SINGLELINKEDLIST_H__#include<stdio.h>#include<windows.h>#include<assert.h>typedef int DataType;typedef struct ListNode

2017-06-09 17:29:41 8933 1

原创 c语言经典面试题

上面两幅图中有六道经典C语言面试题,真的可以认真看看!!!直接贴代码:#include<stdio.h>#include<windows.h>#include<assert.h>void bit_set(unsigned char *p_data, unsigned char position, int flag){ assert(p_data!=NULL); if ((pos

2017-06-05 18:35:16 1211

原创 阻塞信号

一,信号在内核中的表示1,在此之前,必须先了解几个概念: 信号递达(Delivery):实际执行信号处理的动作。 信号未决(Pending):信号从产生到递达之间的状态。 信号阻塞(Block):被阻塞的信号产生时将保持在未决状态,直到 进程解除对此信号的阻塞,才 执行递达的动作。注意:信号阻塞和信号忽略是不同的。只要信号被阻塞就不会递达,除非解除阻塞,而忽略是在递达之

2017-06-05 12:54:13 794

原创 使用gdb和core dump如何快速定位到段错误

这篇文章主要介绍的就是在产生段错误时如何快速定位到错误的位置? 一.一个简单的关于段错误的实例   [cpp] view plain copy#include  #include    void handler(int sign)  {      printf("pid is %d,signnum is %d\n"

2017-06-05 12:24:19 4930

原创 基于单链表、环形队列(并发有锁)的多线程生产者消费者模型

在这之前的我已经介绍过生产者消费者模型,不懂的可以下跳地址: http://blog.csdn.net/quinn0918/article/details/728259921、环形缓冲区缓冲区的好处,就是空间换时间和协调快慢线程。缓冲区可以用很多设计法,这里说一下环形缓冲区的几种设计方案,可以看成是几种环形缓冲区的模式。设计环形缓冲区涉及到几个点,一是超出缓冲区大小的的索引如何处理,二是如何表示缓

2017-06-03 22:59:25 2217

原创 实现静态顺序表和动态顺序表

其实顺序表的静态实现以及动态实现和通讯录的实现原理基本上是一致的,在这里就不做过多的解释,直接贴代码。 静态通讯录:http://blog.csdn.net/quinn0918/article/details/71937767 动态通讯录:http://blog.csdn.net/quinn0918/article/details/72182598 文件流通讯录:http://blog.csd

2017-06-02 18:58:53 774

原创 互斥锁死锁状态详解

在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为” 互斥锁” 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。那么到底怎样的情形才会产生死锁呢? 典型的两种死锁情形: (一)线程自己将自己锁住 一般情况下,如果同一个线程先后两次调用lock,在第二次调⽤用时,由于锁已经被占用,该线程会挂起等待占用锁的线程释放锁,然而锁正是被自己占用着

2017-06-01 01:53:16 10256

原创 生产者与消费者模型

日常生活中,每当我们缺少某些生活用品时,我们都会去超市进行购买,那么,你有没有想过,你是以什么身份去的超市呢?相信大部分人都会说自己是消费者,确实如此,那么既然我们是消费者,又是谁替我们生产各种各样的商品呢?当然是超市的各大供货商,自然而然地也就成了我们的生产者。如此一来,生产者有了,消费者也有了,那么将二者联系起来的超市又该作何理解呢?诚然,它本身是作为一座交易场所而诞生。将上述场景例比到我们实际

2017-06-01 01:28:12 601

空空如也

空空如也

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

TA关注的人

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