自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Uaena的博客

记录与分享自己的学习成果

  • 博客(432)
  • 收藏
  • 关注

转载 路由器中同一网段或者不同网段的数据通信流程分析【转】

(转自:https://www.cnblogs.com/stupidbug/p/8252322.html)一、iptables/netfilter链数据走向流程图1、netfilter链中的数据流向2、netfilter在内核中的位置二、同一网段通信1、网络拓扑图2、分析通信pc1-------->pc2进行数据通信需要知道pc1和pc2的...

2020-02-18 16:26:55 1677

原创 Linux开发学习笔记(二)

 (温馨提示:内容有点多,可点右边的目录进行跳转)Shell编程1、简单介绍Shell 脚本(shell script),是一种为 shell 编写的脚本程序。Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。简单地讲,shell编程就是对一堆Linux命令的逻辑化处理。 在计算机科学中,Shell俗称壳(...

2018-10-04 10:37:43 4638

原创 Linux开发学习笔记(一)

(温馨提示:内容有点多,可点右边的目录进行跳转)安装虚拟机并联网1、安装虚拟机vmware:安装完vmware并打开——》点击创建新的虚拟机——》自定义——》下一步——》选择稍后安装操作系统——》选择Linux Ubuntu 64位——》给虚拟机取名字、选择安装路径——》配置处理器数量1和内核数量2——》虚拟机内存选择1G——》使用桥接网络——》一直选默认——》完成。2...

2018-10-04 10:30:50 939

转载 每天一个linux命令目录【转】

(转自:https://www.cnblogs.com/peida/archive/2012/12/05/2803591.html)开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令。学习的主要参考资料为:  1.《鸟哥的linux私房菜》  2.http://codingstandards.iteye.com/blog/786653  3...

2018-07-19 13:28:48 249

转载 一步步学习Linux多任务编程【转】

(转自:https://blog.csdn.net/tennysonsky/article/details/45847551)系统调用01、什么是系统调用?02、Linux系统调用之I/O操作(文件操作)03、文件描述符的复制:dup(), dup2()多进程实现多任务04、进程的介绍05、Linux可执行文件结构与进程结构06、多进程实现多任务(一):...

2018-05-11 16:57:38 1340

转载 Linux高级网络编程系列教程【转】

(转自:https://blog.csdn.net/lianghe_work/article/details/45190463)一、网络应用层编程1、Linux网络编程01——网络协议入门2、Linux网络编程02——无连接和面向连接的区别3、Linux网络编程03——字节序和地址转换4、Linux网络编程04——套接字5、Linux网络编程...

2018-05-09 18:21:00 776

转载 网络常用的linux系统调用【转】

(转自:http://www.cnblogs.com/sky-heaven/p/4730664.html)网络之常用的Linux系统调用下面一些函数已经过时,被新的更好的函数所代替了(gcc在链接这些函数时会发出警告),但因为兼容的原因还保留着,这些函数将在前面标上“*”号以示区别。一、进程控制 fork 创建一个新进程 clo...

2018-05-06 13:54:03 474

转载 动态库的链接和链接选项-L,-rpath-link,-rpath【转】

(转自:https://my.oschina.net/shelllife/blog/115958)链接动态库如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用,用户可以通过设定它来查找除默认路径之外的其他路径,如查找/work/lib路径,你可以在/etc/rc

2020-10-22 11:14:46 613

转载 linux connect 设置连接超时【转】

原来我们实现connect()超时基本上都使用unix网络编程一书的非阻塞方式(connect_nonb),今天在网上看到一篇文章,觉得很有意思,转载如下:读Linux内核源码的时候偶然发现其connect的超时参数竟然和用SO_SNDTIMO操作的参数一致:  File: net/ipv4/af_inet.c 559 timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); 560 561 if...

2020-10-13 14:23:22 534

转载 Too many open files的四种解决办法【转】

【摘要】 Too many open files有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd对该进程进行了限制,四 inotify达到上限.领导见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向我们新员工说话。有一回对我说道,“你定位过问题么?”我略略点一点头。他说,“定位过,……我便考你一考。Too many open files,怎样解决?”我想,考评垫底的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道

2020-10-13 11:57:17 1084

转载 解决SHELL脚本中的export无法生效的问题【转】

(转自:https://blog.csdn.net/cutedog2012/article/details/80499354)要跑的程序分好多步骤要手动输入命令,想写个脚本搞一下。每个步骤里都有好多环境变量要设置,于是在脚本里各种用export,发现在执行后根本没有修改到环境变量。于是在网上各种搜,找到解决办法。解决:比如脚本为run.sh,如果执行./run.sh是不生效的,要执行source ./run.sh,完美。...

2020-10-13 10:35:28 904

转载 linux内核中likely与unlikely【转】

(转自:https://blog.csdn.net/u014470361/article/details/81193023)前言  内核版本:linux 4.13  在linux内核中,经常可以看见if( likely(x))或if( unlikely(x))语句,那么likely和unlikely是什么意思呢?本文将对likely和unlikely进行一些讨论。likely和unlikely参考/include/linux/compiler.h */# define likely(

2020-09-12 09:32:26 154

转载 autoscan、aclocal、automake和autoconf区别【转】

(转自:https://blog.csdn.net/renhui1112/article/details/96480535)autoscan:扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形;aclocal:根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序,它的定义是

2020-07-31 11:16:52 266

转载 iptables中SNAT、DNAT和MASQUERADE的含义【转】

(转自:https://blog.csdn.net/jk110333/article/details/8229828)IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。SNAT是source networkaddress translation的缩写,即源地址目标转换。比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP,PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服

2020-07-31 10:06:32 247

转载 二进制协议和文本协议【转】

(转自:https://blog.csdn.net/qq_28893679/article/details/78469732)进行网络通信时,我们经常纠结于到底使用什么样的协议传输数据,下面我谈谈应该怎么选择一种合理的协议格式。网络协议标准定义是这样的:  为计算机网络中进行数据交换而建立的规则、标准或约定的集合。  网络协议至少包括三要素:  语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。  语义:解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及

2020-07-31 09:11:31 364

转载 Nat的类型——Cone Nat、Symmetic Nat【转】

(转自:https://blog.csdn.net/yifuteli_kevin/article/details/8911261)Nat共分为四种类型:1.Full Cone Nat2.Restriced Cone Nat3.Port Restriced Cone Nat4.Symmetric NatSymmetric Nat 与 Cone Nat的区别1.三种Cone Nat同一主机,同一端口会被映射为相同的公网IP和端口2.Symmetric Nat只有来自同一主机

2020-07-03 08:54:50 1933

转载 Linux内核之pid为0和pid为1【转】

(转自:https://blog.csdn.net/jingyilin2008/article/details/7815508?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159222398219725222455913%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159222398219725222455913&biz_

2020-06-22 13:34:31 1782

转载 Linux下使用 ipset 封大量IP及ipset参数说明【转】

(转自:https://unixso.com/Linux/ipset.html)Linux使用iptables封IP,是常用的应对网络攻击的方法,但要封禁成千上万个IP,如果添加成千上万条规则,对机器性能影响较大,使用ipset能解决这个问题。iptables 包含几个表,每个表由链组成。默认的是 filter 表,最常用的也是 filter 表,另一个比较常用的是nat表,封IP就是在 filter 表的 INPUT 链添加规则。在进行规则匹配时,是从规则列表中从头到尾一条一条进行匹配。这像是

2020-06-22 10:24:32 935

转载 ebtables介绍【转】

(转自:https://blog.csdn.net/kv110/article/details/47919913)ebtables是与iptables类似的命令, 区别在于ebtables用于对以太网帧的过滤,iptables用于对ip数据包的过滤。过滤流程见图1. 命令格式ebtables [-t table ] -[ACDI] chain rule specification [match extensions] [watcher extensions] targetebtable

2020-05-25 15:50:54 2582

转载 NAT模式/路由模式/全路由模式【转】

(转自:https://blog.csdn.net/rudyn/article/details/44036331)NAT模式。此模式下,由局域网向广域网发送的数据包默认经过NAT转换,但路由器对所有源地址与局域网接口不在同一网段的数据包均不进行处理。例如,路由器LAN口IP设置为192.168.1.1,子网掩码为255.255.255.0,LAN口所处网段为192.168.1.0/24,此时,路由器收到源地址为192.168.1.123的数据包会进行NAT转换;但如果收到源地址为20.31.76.80的

2020-05-22 10:51:01 1905

转载 linux mknod命令解析【转】

(转自:https://blog.csdn.net/a1010256340/article/details/83088870)linux系统中设备管理的基本知识: 我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样easy。linux为不同种类的设备文件提供了相同的接口,比如read(),write(),open(),close()。 所以在系统与设备通...

2020-05-13 16:08:36 298

转载 TCP带外数据【转】

(转自:cnblogs.com/c-slmax/p/5553857.html)传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.linux系统的套接字机制支持低层协议发送和接受带外数据.但是TCP协议没有真正意义上的带外数据.为了发送重要协议,TCP提供了一种称为紧急模式(urgentmode)的机制.TCP协议在数据段中设置U

2020-05-13 09:58:11 362

转载 设备驱动程序简介【转】

(转自:https://www.cnblogs.com/microxiami/p/11254081.html)更多内容请参考Linux设备驱动程序学习----目录1. 简介  Linux系统的优点是,系统内部实现细节对所有人都是公开的。Linux内核由大量复杂的代码组成,设备驱动程序可以作为进入Linux内核世界大门的切入口。  设备驱动程序在Linux内核中,是一个个独立的黑盒子,在调用内部接口时某个特定硬件做出响应,这些接口隐藏了设备的工作细节。用户的操作通过独立于特定驱动程序的一组标准

2020-05-09 10:45:03 454

转载 路由器转发规则【转】

(转自:https://blog.51cto.com/echo1937/1281746) 源主机在发起通信之前,将Self IP与目的主机的IP进行比较,如果两者位于同一网段(用子网掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在接收到目的主机的ARP应答后获取对方的MAC地址,然后用对方的MAC地址作为目的MAC进行报文发送,位于同一VLAN(网段)的主机互访时属于...

2020-05-08 14:18:26 1004

转载 通过实例来理解 eventfd 函数机制【转】

(转自:https://www.jianshu.com/p/802f068196d9)eventfd 是 Linux 的一个系统调用,创建一个文件描述符用于事件通知,自 Linux 2.6.22 以后开始支持。# bionic/libc/include/sys/eventfd.h(Android 8.0源码)int eventfd(unsigned int initial_value,...

2020-05-08 11:39:52 603

转载 Linux进程间通信——eventfd【转】

(转自:https://blog.csdn.net/qq_28114615/article/details/97929524#%E5%86%99eventfd)什么是eventfdeventfd是Linux 2.6提供的一种系统调用,它可以用来实现事件通知。eventfd包含一个由内核维护的64位无符号整型计数器,创建eventfd时会返回一个文件描述符,进程可以通过对这个文...

2020-05-08 11:22:32 610

转载 libubox / uci / ubus 的移植【转】

(转自:http://blog.chinaunix.net/uid-27057175-id-5793181.html)uci配置管理和ubus通信框架是openwrt系统上非常好的轻量级服务。以至于,在非openwrt系统上都想用它们来搞事情。而它们又都是cmake来自动编译的。这里记录下HOWTO。sourouce ${你的交叉环境变量}CC=${CROSS}gccCXX=${C...

2020-05-08 11:18:07 1409

转载 ipcs命令详解——共享内存、消息队列、信号量定位利器【转】

(转自:https://blog.csdn.net/dalongyes/article/details/50616162?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-3)多...

2020-05-08 10:16:28 569

转载 linux ipcs命令详解【转】

(转自:https://blog.csdn.net/huangyimo/article/details/80236181)进程间通信概述进程间通信有如下的目的:1、数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间;2、共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到;3、通知事件,一个进程需要向另一个或一组进程发送消息,通知它...

2020-05-08 10:14:26 384

转载 C语言可变参数详解【转】

(转自:https://blog.csdn.net/longintchar/article/details/85490103?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158890188319725256728493%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%25...

2020-05-08 09:57:32 550 1

转载 Linux时间编程之strftime():格式化输出好帮手【转】

(转自:https://blog.csdn.net/Blazar/article/details/82962324)刚工作那时候遇到这样一个需求:要求设备能够按照用户的设置,以各种方式显示时间及日期:时间-24小时制/12小时制;日期-年月日/月日年/日月年。那时候,只懂得用最基本的方法去得到 struct tm这个结构体,然后再一个个判断条件输出。刚开始写的代码非常啰嗦,被同事笑了一番,然...

2020-05-08 09:29:57 294

转载 Linux多线程调用ubus导致死锁问题【转】

(转自:https://blog.csdn.net/TSZ0000/article/details/100575772)测试组发现用户进程在某种特定情况下,会出现死锁,现象是进程还在S状态,但没有任何反应,所以怀疑死锁。问题复现通过几次测试发现,进程中设置的参数恢复出厂后重启进程很大概率会出现死锁,这时候已经把复现的方法明确,但是从复现的场景来看暂时无法定位出原因。接下来就编译问题版...

2020-05-08 09:11:04 1861

转载 Linux下面 多线程死锁问题的调试【转】

(转自:https://www.cnblogs.com/qianxun/p/3285739.html)最近写服务,经常是单进程,多线程的,加了各种锁,很担心出现死锁问题,专门学习了一下死锁问题的诊断。死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或 系统产生了死锁...

2020-05-07 18:09:38 287

转载 Linux的线程锁【转】

(转自:https://blog.csdn.net/u010304442/article/details/90449716)1.互斥锁在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务。1.1锁的创建互斥锁可以动态或静态的被创建,可以用宏PTHREAD_MUTEX_INITIALIZER来静态的初始化锁,采用这种方式比较容易理解,互斥锁是pthread_mute...

2020-05-07 17:35:13 224

转载 利用sprintf和sscanf实现十六进制和十进制之间的相互转换【转】

(转自:https://blog.csdn.net/stpeace/article/details/13168851)#include <stdio.h> int main(){ char s[100] = {0}; sprintf(s, "%x", 15); printf("%s\n", s); // f char str[100] = "f"; int i...

2020-05-07 17:07:11 697

转载 sscanf的高级用法【转】

(转自:https://blog.csdn.net/noodies/article/details/4386570?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogComme...

2020-05-07 17:02:01 481

转载 逻辑左移、逻辑右移、算术左移、算术右移、循环左移、循环右移【转】

(转自:https://blog.csdn.net/u011070169/article/details/53894154)逻辑左移时,最高位丢失,最低位补0;逻辑右移时,最高位补0,最低位丢失;算术左移时,依次左移一位,尾部补0,最高的符号位保持不变。算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一个符号位;循环左移时,将最高位重新放置最低位循环右移时,将...

2020-05-07 16:36:07 816 1

转载 再谈 Linux下的nanosleep函数【转】

(转自:https://blog.csdn.net/hbuxiaofei/article/details/46416605?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogC...

2020-05-07 15:07:19 850

转载 GCC编译时增加宏定义-D标识符,相当于宏定义#define 标识符【转】

(转自:https://blog.csdn.net/u012435142/article/details/83217883)GCC编译时增加宏定义-D<标识符>,相当于#define <标识符>,可以在遇到条件编译时执行。#ifdef <标识符> //条件编译内容#endif例子: 搭配gcc编译命令:gcc -DDEBUG -g -o...

2020-04-14 14:43:52 429

转载 pkg-config 详解【转】

(转自:https://blog.csdn.net/newchenxf/article/details/51750239)1 什么是pkg-configpkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息。例子:pkg-config opencv –libs –cflags结果:-I/usr/include/opencv/usr...

2020-03-25 11:32:38 610

空空如也

空空如也

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

TA关注的人

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