- 博客(16)
- 收藏
- 关注
转载 多进程/多线程TCP server实现
socket在TCP/IP协议中,“IP地址+TCP/UDP端口号”表示唯一网络通信中的一个进程,IP地址+端口号称为socket。注意:字节序有大端和小端,在两台使用不同字节序的主机上通信,为了让两台主机间能正确的通信,发送端总是把字节序转成大端字节序数据后在发送,接收方知道接受的一定是大端字节序,然后根据自己的字节序进行转化就不会出错。调用函数int socket(int do...
2019-05-15 16:36:52
559
原创 crontab使用
1.语法介绍:分 时 天 月 周 命令每列表示意义a. 第一个*表示的是分钟1~59分钟,默认*表示的是每分钟都执行,x-y表示的是x~y这段每分钟都执行,*/n表示每n分钟执行一次,x,y,z表示的是x,y,z分钟都执行。b. 第二个*表示的是小时1~23小时,默认*表示的是每小时都执行,x-y表示的是x~y这段每小时都执行,*/n表示每n小时执行一次,x,y,z表示的是x,
2017-10-23 16:34:17
301
原创 epoll使用
1. int epoll_create(int size)创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大(maxfd+1);当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。2. int epoll_ctl(int
2017-10-09 14:54:10
268
原创 autotools工作原理
先按照一个简单的步骤实现一个automake的helloworld例子:1. 创建一个实验路径mkdir amhelloworld && cd amhelloworld2. 创建一个src目录mkdir -p src3. 创建一个简单的helloworld.c程序源文件vim amhelloworld.c[cpp] view plain
2017-09-25 10:07:24
1025
转载 Linux内核数据包处理流程-数据包接收(3)
五、队列层1、软中断与下半部当用中断处理的时候,为了减少中断处理的工作量,比如,一般中断处理时,需要屏蔽其它中断,如果中断处理时间过长,那么其它中断有可能得不到及时处理,也以,有一种机制,就是把“不必马上处理”的工作,推迟一点,让它在中断处理后的某一个时刻得到处理。这就是下半部。下半部只是一个机制,它在Linux中,有多种实现方式,其中一种对时间要求最严格的实现方式,叫
2017-08-29 09:40:50
440
转载 Linux内核数据包处理流程-数据包接收(2)
四、网卡的数据接收内核如何从网卡接受数据,传统的经典过程:1、数据到达网卡;2、网卡产生一个中断给内核;3、内核使用I/O指令,从网卡I/O区域中去读取数据;我们在许多网卡驱动中,都可以在网卡的中断函数中见到这一过程。但是,这一种方法,有一种重要的问题,就是大流量的数据来到,网卡会产生大量的中断,内核在中断上下文中,会浪费大量的资源来处理中断本身。所以,一个问题
2017-08-29 09:39:51
662
转载 Linux内核数据包处理流程-数据包接收(1)
数据包的接收作者:kendoKernel:2.6.12一、从网卡说起这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析。这里以Intel的e100驱动为例进行分析。大多数网卡都是一个PCI设备,PCI设备都包含了一个标准的配置寄存器,寄存器中,包含了PCI设备的厂商ID、设备ID等等信息,驱动程序使用来描述这些寄存器的标识符。如
2017-08-29 09:38:17
2375
转载 bitmap
概述所谓bitmap就是用一个bit位来标记某个元素对应的value,而key即是这个元素。由于采用bit为单位来存储数据,因此在可以大大的节省存储空间算法思想32位机器上,一个整形,比如int a;在内存中占32bit,可以用对应的32个bit位来表示十进制的0-31个数,bitmap算法利用这种思想处理大量数据的排序与查询优点: 效率高,
2017-02-23 16:07:31
205
转载 makefile中变量调试
转载:http://blog.youkuaiyun.com/u011923747/article/details/21193887对于Makefile中的各种变量,可能是我们比较头痛的事了。我们要查看他们并不是很方便,需要修改makefile加入echo命令。这有时候很不方便。其实我们可以制作下面一个专门用来输出变量的makefile(假设名字叫:vars.mk)vars.mk
2017-02-18 14:10:23
1422
原创 内核编译
根据要编译的内核运行的架构,选择ARCH和CROSS_COMPILE,下面以mips交叉编译为例:1. 配置内核时时,使用make ARCH=mips CROSS_COMPILE=mips-linux- menuconfig2. 编译内核时使用make ARCH=mips CROSS_COMPILE=mips-linux- 内核配置
2017-02-16 16:50:07
416
原创 虚拟机联网及组网
参考网址:http://blog.youkuaiyun.com/u010738184/article/details/52131548通过Vmvare创建虚拟机,并通过3种方式(bridge,NAT,host-only)实现联网1、bridge:让主机和虚拟机在同一个网段,设置为bridge,并虚拟机网卡和主机的网卡桥接在一起2、NAT:使用NAT联网,ip地址的获
2017-02-16 09:25:24
270
原创 Makefile知识总结
1、.PHONY:声明为伪目标,当目标不依赖于任何文件时,在执行make的时候会认为该目标(没有变化)已经存在,不再执行底下的命令。 例如:clean: @rm -f main2.o 2、wildcard:匹配指定模式的文件 $(wildcard *.c):匹配所有的.c文件3、define:定义一个命令包,在执行make时,命令包中
2017-02-16 09:15:35
471
原创 linux上运行程序问题,提示cannot open shared object file错误的解决办法
linux上运行程序问题,提示:./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory问题原因:没有找到动态连接库的路径解决办法:1. 找到so的路径,将路径添加到/etc/ld.so.conf文件最后一行,如/
2017-02-16 09:08:41
13801
原创 ubuntu上安装smb,将linux文件映射到windows下
ubuntu上安装smb#sudo apt-get install samba#sudo apt-get install smbclient开启smb服务:#vim /etc/samba/smb.conf 在文件结尾添加如下行:[share]comment=this is Linux share directorypath=/public=yeswrit
2017-02-16 09:06:22
825
原创 vagrant安装及配置文件
vagrant用于创建和部署虚拟化开发环境。以下是在ubuntu系统上进行操作1.vagrant 安装 apt-get install vagrant ----安装agrant vagrant box add puppetlabs/ubuntu-14.04-64-nocm ----添加vagrant box apt-get install virtualbox-5.
2016-11-18 09:24:49
1226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人