
linux
文章平均质量分 51
Adair编程日记
这个作者很懒,什么都没留下…
展开
-
NAT技术与代理服务器调研
一、首先看看什么是NAT技术以及什么时候会涉及到它?1、所谓NAT技术就是网络地址转换。 2、那么它用在什么地方呢? 在专用网内部的一些主机本来已经分配到了本地IP地址,但是现在又想和因特网上的主机通信。那么应当采用什么措施呢? 最简单的办法就是设法再申请一些全球IP地址,但这在很多情况下是行不同的,因为全球的IPv4的地址已经所剩不多了,目前使用最多的方法就是采用网络地址转换。但是这种原创 2017-06-20 15:01:14 · 351 阅读 · 0 评论 -
CRC校验
【CRC校验】【定义】 CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。、【校验码位数】CRC校验码位数 = 生成多项式位数 - 1。注意有些生成多项式的简原创 2017-06-12 15:03:25 · 296 阅读 · 0 评论 -
守护进程
守护进程是什么? 守护进程也称精灵进程。试运行在后台的一种特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。如何创建? (1)调用umask将文件模式创建屏蔽字设置为0. (2)调用fork,父进程退出。 (3)调用setsid创建一个新会话。 (4)将当前工作目录更改为根目录。原创 2017-06-09 16:54:21 · 166 阅读 · 0 评论 -
crond和crontab调研
cron机制 cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制crontab参数 -u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab crontab -u 使用者名称 -l:可以列出crontab的内容原创 2017-06-09 16:51:34 · 443 阅读 · 0 评论 -
可重入函数与线程安全关系
什么是可重入函数和不可重入函数可重入函数 在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会 出错。不可重入函数在实时系统设原创 2017-05-05 19:10:19 · 275 阅读 · 0 评论 -
linux中vim编辑器的简单配置
ctrl + w + h 光标 focus 左侧树形目录ctrl + w + l 光标 focus 右侧文件显示窗口ctrl + w + w 光标自动在左右侧窗口切换ctrl + w + r 移动当前窗口的布局位置o 在已有窗口中打开文件、目录或书签,并跳到该窗口go 在已有窗口 中打开文件、目录或书签,但不跳到该窗口t 在新原创 2017-02-18 23:42:41 · 247 阅读 · 0 评论 -
用linux进行简单进度条编辑
一·单步编写makefile。二·编写好Procbra.c三 编写完成后就利用它们来生成进度条,结果如下生成后利用make clean删除之前生成的Procbra.i, Procbra.s,Procbra.o,以及Proc原创 2017-02-17 21:36:54 · 298 阅读 · 0 评论 -
URG_PSH区别
一、URG&PSH的区别 TCP的报头信息有六个控制位,说明本段文的性质;分别为紧急URG、确认ACK、推送ACK、复位RST、同步SYN、终止FIN;今天我们来主要来介绍介绍PSH和URG的区分;1.URG是什么? URG表示紧急指针,与紧急指针字段搭配使用,当URG = 1时,表示紧急指针字段有效。它告诉系统此报文有紧急数据,应尽快传送(相当于高优先级数据),而不按照原来的排序顺序来传送原创 2017-06-27 17:17:58 · 746 阅读 · 0 评论 -
如何用SHELL编写一个进度条
代码如下:#!/bin/bashi=0lable=('|' '\\' '-' '/')while [ $i -le 100 ]do printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${lable[$i%4]}" str='#'$str sleep 0.1 let i++doneprintf "\n"123456原创 2017-07-17 10:38:14 · 261 阅读 · 0 评论 -
单链表逆置,反转,并查找倒数第K个结点
typedef struct Node{ Node(const int& value) : m_value(value) , m_pNext(NULL) {} int m_value; Node* m_pNext;}Node,pNode ResList(pNode pHead){ if (pHead == NULL) return N原创 2017-07-17 11:04:52 · 269 阅读 · 0 评论 -
arp脚本
【arp脚本】原创 2017-06-12 15:15:11 · 215 阅读 · 0 评论 -
gdb调试多进程和多线程
一,gdb的基础知识1>介绍: gdb是Linux环境下的代码调试工具。 2>使用:需要在源代码生成的时候加上 -g 选项. 3>开始使用: gdb binFile 4>退出:ctrl + d 或 quit 5>调试过程中的常用命令: list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代码。 r或run:运翻译 2017-06-12 15:28:27 · 165 阅读 · 0 评论 -
端口分类调研
端口是什么?通常我们所说的端口就是指计算机端口。计算机端口是英文port的意译,可以认为是计算机与外界通讯交流的出口。端口又可分为三大类:公认端口(Well Known Ports)、注册端口(Registered Ports)以及动态和/或私有端口(Dynamic and/or Private Ports)。公认端口:从0到1023,它们紧密绑定于一些服务。通常这些端口的原创 2017-06-13 21:33:07 · 283 阅读 · 0 评论 -
tcp_server和tcp_client
tcp_server代码如下:#include<stdio.h>#include<stdlib.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/types.h>#include<string.h>static void usage(const char *proc){原创 2017-06-30 16:11:25 · 1070 阅读 · 0 评论 -
select服务器
select代码如下:#include<stdio.h>#include<sys/socket.h>#include<sys/types.h>#include<netinet/in.h>#include<arpa/inet.h>#include<fcntl.h>#include<stdlib.h>#include<unistd.h>#include<sys/select.h>int原创 2017-06-30 16:27:49 · 207 阅读 · 0 评论 -
udp_server
udp_server代码如下:#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <stdl原创 2017-06-30 16:33:36 · 222 阅读 · 0 评论 -
poll_server
poll与select不同在于描述符存储方式不同和参数类型不同。 1.结构体数组的管理:当每次有需要关心的描述符时,将其放入结构体中,每次有无效的描述符后,将其描述符置-1,下次poll函数会忽略它。当有新的描述符加入时,从头遍历结构体,将为-1的元素设为要关心的描述符事件状态。切记:当新的描述符加到结构体数组末尾时要更新关心描述符个数,即poll第二个参数。 2.每次调用poll后,结构体原创 2017-06-30 16:45:57 · 314 阅读 · 0 评论 -
tcp三次握手与四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 那如何断开连接呢?简单的过程如下: 【注意】中断连接端可以是Client端原创 2017-06-23 16:42:10 · 160 阅读 · 0 评论 -
tcp定时器调研
TCP常用的四种定时器:重传定时器坚持定时器保活定时器时间等待定时器 具体介绍: (1)重传定时器①应用场景: TCP报文段超时② 特点:对于tcp协议,在规定的时间内,发现没有收到ACK,就会重新发送消息,如果还没有收到ACK,继续重新发送消息,每次重新发送消息的时间间隔不同,默认第一次重传是发现超时后1s,第二次重传是第一次重传后3s,第三次是6s;③重传时间=2*RTT 计算RTT常原创 2017-06-23 16:45:01 · 239 阅读 · 0 评论 -
多线程多进程服务器与进程线程池
1.进程池(1)进程池是由服务器预先创建的一组子进程,这些子进程的数目在3-10个之间。进程池中的所有子进程都运行着相同的代码,并具有相同的属性,比如优先级,PGID等等。因为进程池在服务器启动之初就创建好了,所以他们没有打开不必要的文件描述符(从父进程继承而来),也不会错误地使用大块的堆内存(从父进程复制得到)。(2) 当有新的任务到来时,主进程将通过某种方式选择进程池中的某一个子进程来为之服务。原创 2017-06-23 16:59:24 · 490 阅读 · 0 评论 -
epoll_server
代码如下:#include <sys/socket.h>#include <sys/epoll.h>#include <netinet/in.h>#include <arpa/inet.h>#include <fcntl.h>#include <unistd.h>#include <stdio.h>#include <pthread.h>#include <errno.h>#defi原创 2017-07-04 16:59:32 · 217 阅读 · 0 评论 -
eval调研
eval是shell内置的命令。eval命令可以对命令行求值,然后做shell替换,再执行替换后的命令行。 1、eval会把赋值语句中双引号之间的内容直接赋给‘=’前的变量,而不是当作字符串赋给变量。 例如:version=”(2 4)” 是将字符串赋值给 version;eval version=”(2 4)” 执行时变成了 version=(2 4), 是把数组 (2 4) 赋值给 vers原创 2017-07-04 17:09:30 · 293 阅读 · 0 评论 -
单链表带环问题
判断单链表是否带环?若带环,求环的长度?求环的入口点?并计算每个算法的时间复杂度&空间复杂度 分析:不带环fast指针可以走到尾,带环则走不到;若带环fast指针一次走两步,slow指针一次走一步。(fast和slow的间距会逐渐缩小,一次缩小1,不会错过,其余走法可能会跳过,或者构成死循环);入口点:第二次的相遇点ListNode* IsHaveLoop(ListNode* plist)//判断原创 2017-07-17 11:20:38 · 374 阅读 · 0 评论