12 2017 档案
摘要:参考(原文简直超赞):https://zhidao.baidu.com/question/687563051895364284.html下面是我结合原文写的,为了便于自己理解:关于阻塞和非阻塞的理解可以看这个:http://www.cnblogs.com/xcywt/p/8146123.html 1
阅读全文
摘要:老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种
阅读全文
摘要:在网络编程中通常需要处理很多个连接,可以用select和poll来处理多个连接。但是select都受进程能打开的最大文件描述符个数的限制。并且select和poll效率会随着监听fd的数目增多而下降。 解决方法就是用epoll 1.epoll是Linux内核为处理大批量文件描述符而做了改进的poll
阅读全文
摘要:我们知道TCP是全双工的,可以在接收数据的同时发送数据。假设有主机A在和主机B通信,可以认为是在两者之间存在两个管道。就像这样:A > BA < B 1.close close可以用来关闭一个文件描述符。也就可以用来关闭一个套接字。 当关闭一个套接字时,该套接字不能再由调用进程使用。如果调用进程再去
阅读全文
摘要:1.先说select在多路IO中的限制:1)linux中每个程序能够打开的最多文件描述符是有限制的。默认是1024.可以通过ulimit -n进行查看和修改: xcy@xcy-virtual-machine:~/test/sock10_poll$ ulimit -n1024xcy@xcy-virtu
阅读全文
摘要:fork可以在linux中创建子进程。先看man手册里面的东西: SYNOPSIS #include <unistd.h> pid_t fork(void);DESCRIPTION fork() creates a new process by duplicating the calling pro
阅读全文
摘要:1、先看man手册 SYNOPSIS /* According to POSIX.1-2001 */ #include <sys/select.h> /* According to earlier standards */ #include <sys/time.h> #include <sys/ty
阅读全文
摘要:我们知道TCP是面向连接的,我们只知道有连接断开,其实内部还有一些比较复杂的状态。去了解各个状态之间的切换有助于我们更加深入的了解TCP。下面我们就来分析各个状态。 1、如下图示(图源百度)图中显示出了10种状态。 我们假定断开时是client主动断开的。对于server来说状态有:closed -
阅读全文
摘要:1、TCP的特点: 基于字节流面向连接可靠传输缓冲传输全双工流量控制 2、头部格式和说明 图源百度。如下图示,就是TCP包的头部结构。可以看到这个头部最少有4x5=20个字节。 另外还需要理解TCP协议是承载在IP协议中的。关于IP协议可以参考:http://www.cnblogs.com/xcyw
阅读全文
摘要:关于七层模型和四层模型可以参考这个:http://www.cnblogs.com/xcywt/p/5027277.html 因为四层模型用的比较多,这里只拿四层模型来分析。 1、四层模型中的最下层是链路层,传输的是以太网数据帧。主要有三种格式的以太网数据帧。这里暂时不做详细分析 2、IP数据报格式
阅读全文
摘要:一、gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息。gethostname:获取主机的名字gethostbyname:通过名字获取其他的信息(比如ip) 1.gethostname:man手册里面的解释(部分): #include <unistd.h> i
阅读全文
摘要:直接上代码,亲测有用。 测试: 关于为何C++的模板类声明和实现要放在一起可以参考:http://www.cnblogs.com/xcywt/p/8039574.html
阅读全文
摘要:一,关于编译链接编译指的的把编译单元生成目标文件的过程链接是把目标文件链接到一起的过程编译单元:可以认为是一个.c或者.cpp文件。每个编译单元经过预处理会得到一个临时的编译单元。预处理会间接包含其他文件还会展开宏调用。每个编译单元编译成目标文件后会暴露自己内部的符号。(比如有个fun函数,就会暴露
阅读全文
摘要:1、干货 Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 简而言之,就是可以查看经过网卡的数据包,还会整理出来是哪一层协议的包。
阅读全文
摘要:26.1 发送消息 26.1.1 功能分析 1.确定系统中都有谁 $who 给出的信息包括用户名 用户所在终端 用户登入系统的时间 2.启用消息功能 用户可以禁止别人给我发消息,所以需要先检查一下是否允许发送消息。 $mesg 结果是is n说明消息发送被关闭了。 is y 表示允许发送消息 还可以
阅读全文
摘要:25.1 MySQL数据库 /* 但是我在虚拟机上安装的时候居然不提示输入密码。 这个可以参考http://blog.csdn.net/sinat_21302587/article/details/76870457 导致登录的时候不知道账号密码。 默认的账号密码在 /etc/mysql/debian
阅读全文
摘要:第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell。但是它并不是唯一的选择,还有其他的shell可以供你选择。 23.1 什么是dash shell 百度百科上说:Dash shell是一个Unix shell,比Bash shell小的多,符合POSIX
阅读全文
摘要:gawk是一门功能丰富的编程语言,你可以通过它所提供的各种特性来编写好几程序处理数据。 22.1 使用变量 gawk编程语言支持两种不同类型的变量: 内建变量和自定义变量 22.1.1 内建变量 gawk程序使用内建变量来引用程序数据里的一些特殊功能 1.字段和记录分隔符变量 数据字段变量:允许你使
阅读全文
摘要:本章介绍一些sed编辑器提供的高级特性。 21.1 多行命令 按照之前的知识,所有的sed编辑器命令都是针对单行数据执行操作的。 在sed编辑器读取数据流时,它会基于换行符的位置将数据分成行,一次处理一行数据。 有时会需要对跨多行的数据执行特定操作。 比如,在数据中查找一个长的短语Linux sys
阅读全文
摘要:20.1 什么是正则表达式 20.1.1 定义 正则表达式是你所定义的模式模板。linux工具可以用它来过滤文本。 正则表达式利用通配符来描述数据流中第一个或多个字符。 正则表达式模式含有文本或特殊字符,为sed编辑器和gawk程序定义了一个匹配数据时采用的模板。 20.1.2 正则表达式的类型 使
阅读全文
摘要:这两个工具能够极大简化需要进行的数据处理任务。 19.1 文本处理 能轻松实现自动格式化、插入、修改或删除文本元素的简单命令行编辑。 sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为流编辑器。 流编辑器会在编辑器处理数据之前预先提供的一组规则来编辑数据流。 sed根据命令来处理数据
阅读全文
摘要:参考: http://www.cnblogs.com/skywang12345/p/3596746.html 下面上代码: 分析: 以数组int arr[] = {4, 5, 2 ,6, 1, 3};进行分析:初始化 i=0,j=5, temp = arr[0];红色加粗的表示在下一次将会被覆盖的位
阅读全文
摘要:18.1 创建文本菜单 直接上例子吧: 1 #!/bin/bash 2 function menu 3 { 4 clear 5 echo 6 echo -e "\t\t\tSys Admin Menu\n" 7 echo -e "\t1. Display disk space" 8 echo -e
阅读全文
摘要:可以将shell脚本代码放进函数中封装起来,这样就能在脚本中的任何地方多次使用它了。 17.1 基本的脚本函数 函数:是一个脚本代码块,可以为其命名并在代码中任何位置重用。 17.1.1 创建函数 有两种格式:name 是函数名 1) function name { commands } 2)这种就
阅读全文