自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 eval

shell中的eval 功能说明:重新运算求出参数的内容。语  法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。参  数:参数不限数目,彼此之间用分号分开。1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。2.eval也可

2017-07-03 16:06:53 261

原创 UDP套接字编程

client#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdlib.h>void usage(const char* proc){ printf("us

2017-07-03 16:00:36 263

转载 线程池

诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这样就引入

2017-07-03 15:44:47 264

原创 epoll服务器

#include <sys/epoll.h>#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#defi

2017-07-03 15:36:58 283

原创 网络服务器select

#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h>#include <string.h>///////////////////static vo

2017-06-30 17:15:49 414

原创 模拟多进程多进程服务器

序言网络字节序C语言中,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低

2017-06-26 15:17:00 601

转载 TCP的3次握手和4次挥手

三次握手建立连接: 如上图(黑框)所示,在最初两端的TCP进程都处于CLOSED状态。host1主动打开连接,而host2被动打开连接。host2的TCP服务器进程优先创建传输控制块TCB,准备接受客户进程的连接请求,然后将自己的状态有COLSED改为LISTEN(收听)状态,等待客户的连接请求;host1的TCP客户进程也是创建传输控制块TCB,然后向B发出连接请求报文段,这是首部中的同部位SYN

2017-06-23 11:15:12 279

转载 TCP协议中的定时器

TCP协议中的定时器(1)连接建立(connection establishment)”定时器:在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止。   (2)“重传(retransmission)”定时器:在TCP发送某个数据段时设定。在滑动窗口协议中,接受窗口会在连续收到的包序列中的最后一个包向接收端发送一个ACK,当网络拥堵的时候,发送端的数据包和接收端

2017-06-23 10:35:50 419

原创 TCP协议中URG&PSH

上图展示了TCP的报头信息,下来我们介绍URG与PSH:什么是URG与PSH?URG紧急URG(URGent) 当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应当尽快传输(相当于高优先级的数据),而不要按原来的排队顺序来传送。例如:已经发生了很长的一个程序要在远地的主机上运行。DNA后来发现了一些问题,需要取消该程序的运行。因此用户从键盘上发出中断命令(Ctrl+C)。如

2017-06-23 10:27:49 699

转载 端口分类

在网络技术中,端口大致有两种意思: 1) 是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等; 2) 二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。也可以解释分为: 1) 软件端口:应用层的各种协议进程与运输实

2017-06-19 12:53:00 1049

转载 什么是代理服务器?其原理和常见的代理服务器

代理服务器的概念代理服务器(Proxy Server)是个人网络和Internet服务商之间的中间代理机构,它负责转发合法的网络信息,对转发进行控制和登记。代理服务器作为连接Internet(广域网)与Intranet(局域网)的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性,缓存,内容过滤,访问控制管理等功能。代理服务器,顾名思义就是局域上不能直接上

2017-06-19 12:45:26 2263

转载 NAT技术

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

2017-06-19 12:39:15 373

原创 ARP协议

ARP协议存在的作用在网网络通讯时,源主机的应用用程序知道目目的主机的IP地址和端又口口号,却不知道目目的主机的硬件地址,而而数据包首首先是被网网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目目的主机的硬件地址。ARP协议就起到这个作用。ARP协议的组成以太网目的地址:接收端的MAC地址 以太网源地址:发送方的MAC地址 帧类型 : 对于

2017-06-12 17:48:11 339

原创 循环冗余检验CRC(Cyclic Redundancy Check)

CRC存在的意义现实的通信链路都不会是理想的。这就是说,比特在传输的过程中可能会产生差错:1可能会变成0,0可能会变成1,这就叫做比特差错。在一段是时间内,传输错误的比特占所传输比特总数的比率成为误码率BER(Bit Error Rate)。误码率与信噪比有很大的关系,在实际通信中不可能使误码率下降到零。 因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。 目前

2017-06-12 17:03:52 886

转载 crond

crond简介crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 Linux下的任务调度分为两类,系统任务调度和用户任务调度。 系统任务调度:系统周期性所要执行的工作,比

2017-06-09 15:14:17 502

原创 精灵进程

什么是精灵进程 以及其特点守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。守护进程的特点: (1)Linux系统启动时会启动很多系统服务进程,守护进程没有控制终端,不能直接和用户交互

2017-06-09 14:45:00 498

转载 gdb调试多进程和多线程命令

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-06-06 16:14:17 317

原创 智能指针之 Auto_Ptr

在介绍智能指针之前我们先看以下代码:void FunTest(){ int *p = new int[10]; FILE* pFile = fopen( "1.txt", "w" ); if (pFile == NULL) { return; } // DoSomethint(); if (p != NULL) {

2017-04-13 14:27:20 269

原创 Linux 进程间通信之 消息队列

消息队列(一)概念     消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每一个数据块都被认为是一个有类型,接受者进程接受的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步与阻塞问题。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定按照先入先出。消息队列与命名管道有一样的不足,就是每个消息的最大长度是有上限

2017-03-31 23:10:19 314

原创 Linux 进程通信之 命名管道

命名管道(一)概念

2017-03-31 22:09:49 319

原创 LINUX 进程通信之匿名管道

(一)管道的创建管道是一种最基本的IPC机制,由pipe函数创建:#include int pipe ( int filedes[2] );pipe函数需要一个形参(一个含有2个整型元素的数组),创建成功返回0,失败返回-1该函数本质原理:当父进程创建子进程,子进程则按照父进程的PCB进行部分拷贝形成自己的PCB。在父进程的PCB中含有一个叫做files_struc

2017-03-28 19:15:42 344

原创 C++多态及虚表深度剖析

文章内容纲要:(一):对象类型(二):多态(三):虚表剖析(四):带有虚函数多继承&菱形继承对象模型剖析一、对象类型二、多态【静态多态】编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误,例如:【动态

2017-03-20 20:57:37 518

原创 C++继承

一:什么是继承?它的表现形式是什么样子的?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。二:继承关系和访问限定符三种成员访问限定符public(公有)  private(私有) protecte

2017-03-13 17:41:49 290

原创 LINUX中粘滞位的作用及验证

一:LINUX粘滞位使用粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,也只能针对目录设置,对于目录内文件有效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般于/tmp目录,以防止普通用户删除或移

2017-02-19 21:31:51 511

转载 LINUX下 PCB的结构task_struct构造分析

一、task_struct 结构描述1.进程状态(State)进程执行时,它会根据具体情况改变状态。进程状态是调度和对换的依据。Linux 中的进程主要有如下状态,如表4.1 所示。(1)可运行状态处于这种状态的进程,要么正在运行、要么正准备运行。正在运行的进程就是当前进程(由current 宏 所指向的进程),而准备运行

2017-02-19 20:40:54 2994

转载 LINUX 进程调度算法

进程调度:  无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。一、进程的基本状态及状态间的转换:  1.等待态:等待某个事件的完成;  2.就绪态:等待系统分配处理器以便运行; 

2017-02-19 20:32:56 639

原创 程序进度条分析及编程

一:思考思路       1:简单进度条的模型类似于   [                                        ] [% 0]                                                     [#                                      ] [%10]           实际上就是将

2017-02-16 22:50:38 643

原创 liunx下对于modification time(更改mtime),status time(ctime),access time(atime)的理解与

一:操作环境             基于liunx操作系统的虚拟机二:实例创建及属性显示

2017-02-14 23:50:28 780

原创 有一组数字,有两个数字只出现一次,其他数字都是成对出现的,请找出这个数字

(一)思考思路1:

2016-10-31 21:24:41 421

原创 三子棋

#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #define ROWS 3#define COLS 3void game();void put_photo(char arr[ROWS][COLS],int row,int col);void player_go(char arr[ROWS]

2016-10-25 20:40:32 295

原创 挫逼的扫雷

添加头文件#ifndef __GAME_H__#define __GAME_H__#include #include#include #include#define fire_num 20#define ROWS 10#define COLS 10void put_photo(char arr[ROWS+2][COLS+2],int row,int col);voi

2016-10-23 20:29:51 407

原创 指针讲解(二)

数组指针(二)      在(一)中,我们简单的讲解了简单指针,内容包含(数组作为形参,)

2016-10-22 22:42:27 220

原创 指针内容总结(一)

指针讲解                              (一)简单指针1:首先什么是指针呢?指针的形式有哪些呢?      指针其实就是地址,我们通过这个地址找到我们所需要的数据,类似于宾馆的形式,每个房间都有房号(地址),我们在入住的时候按照房号找到所指示的房间(数据),我们拿的房卡(房卡标有房号)就是指针。      指针主要的形式有 int *p=NULL(指向整

2016-10-20 22:49:04 364

原创 一组数据中只有一个数字出现了一次。 其他所有数字都是成对出现的。请找出这个数字(数组指针的方法)

(一)思考思路例:一组数据中只有一个数字出现了一次数据:arr[]={1 ,3 ,5 ,7, 1, 3, 5}这组数据中,只有7出现了一次。结构:找到的数就是:7.1:对于这样的一个数组,我们应该使用函数调用的办法来实现,使得整个程序清晰可见2:要找出这样的数,其实我们可以用传址的方式来检验相同性,即数组中第 i 个数据与第 i +1 ,i+2 , i+3....i+n

2016-10-19 17:54:15 721

原创 模块化思想:创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。

(一)思考思路1:一个复杂功能的程序,如果将所有的功能都写在主函数内,这样的程序的可读性太差,而且在理解的过程中很容易出现问题,所以将一些复杂功能,分块写入子函数,利用函数调用来实现模块功能是一个程序员必备的能力2:函数调用:   主函数调用子函数包括这几部分:   1):子函数的类型(int  void等),依据函数功能来使用函数类型,比如说 调用一个数组,想对其数据进行逆置,那

2016-10-18 19:18:59 1226

原创 二分查找

(一)思考思路1:二分查找其实是给定一组具有单调函数的数,在其中查找你想要的元素2:实际上把具有这样规律的数放在一个数组里,定义数组元素的下表为 i j  给定一个数组,元素个数为n    需要查询的数为aint arr[n];    int left=0,right=sizeof(arr)/sizeof(arr[0])-1;每次查询,取中间元素,下标为int x=(i+j

2016-10-16 21:52:00 255

原创 杨辉三角形

(一)思考思路:1:   杨辉三角形的每一行第一个元素和最后一个元素赋值为1    arr[ i ][ 0 ]=arr[ i ][ i ]=1     //  i = j2:for循环实现输出每一行,嵌套for循环实现输出每一列3:实际上 我们计算除(1)以外的各个元素,  从第二行起,中间的每一个数是上一行里相邻两个数之和   arr[ i ][ j ]=arr[ i-1 ]

2016-10-15 21:51:19 320

原创 改良版 菱形输出

思考思路:1:如上图 我们采用for循环依次输出行数,每一行也采用for循环输出每一列2:将此菱形分为两个部分来处理首先是    根据观察发现      第一部分    每一行的空格数与行数有一定的规律         空格数 =(总行数-当前行数)

2016-10-13 22:50:58 213

原创 在屏幕上输出以" * "构成的菱形

思考思路:1:  图像里星星最多的一行有13个' * ',其他行的' * '都是与它有一定关系的锐减(相邻两行' * '相差2)        那么我们是否可以创建一个13个元素的数组?每一行的最中间开始向两边输出' * '2:按照这个思路,我们考虑怎么让每一行输出我们想要的' * '     /*    考虑第一行     星星出现在第7个的位置      /*

2016-10-12 20:33:30 616

原创 编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出.

题目:    编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出思考思路: 1:看到“接受字符”很多人想到scanf语句,但是题设中不是只输入一次而且输入类型也不同(%c %d),那么定义就显得比较麻烦,所以getchar()函数可以帮你实现 2:“。。。。可以一直。。。。”说明要使用循环结构,既然是

2016-10-11 15:04:33 3072

空空如也

空空如也

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

TA关注的人

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