<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Uaena的博客]]></title><description><![CDATA[记录与分享自己的学习成果]]></description><link>https://blog.youkuaiyun.com/biqioso</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; biqioso]]></copyright><item><title><![CDATA[动态库的链接和链接选项-L，-rpath-link，-rpath【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/109218134</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/109218134</guid><author>biqioso</author><pubDate>Thu, 22 Oct 2020 11:14:46 +0800</pubDate><description><![CDATA[（转自：https://my.oschina.net/shelllife/blog/115958）

链接动态库

如何程序在连接时使用了共享库，就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录，然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时，Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用，用户可以通过设定它来查找除默认路径之外的其他路径，如查找/work/lib路径,你可以在/etc/rc]]></description><category></category></item><item><title><![CDATA[linux connect 设置连接超时【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/109050193</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/109050193</guid><author>biqioso</author><pubDate>Tue, 13 Oct 2020 14:23:22 +0800</pubDate><description><![CDATA[原来我们实现connect()超时基本上都使用unix网络编程一书的非阻塞方式（connect_nonb），今天在网上看到一篇文章，觉得很有意思，转载如下：

读Linux内核源码的时候偶然发现其connect的超时参数竟然和用SO_SNDTIMO操作的参数一致:
　　File: net/ipv4/af_inet.c

 559 timeo = sock_sndtimeo(sk, flags &amp; O_NONBLOCK);
			 560
			 561 if...]]></description><category></category></item><item><title><![CDATA[Too many open files的四种解决办法【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/109048351</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/109048351</guid><author>biqioso</author><pubDate>Tue, 13 Oct 2020 11:57:17 +0800</pubDate><description><![CDATA[【摘要】 Too many open files有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd对该进程进行了限制,四 inotify达到上限.

领导见了孔乙己，也每每这样问他，引人发笑。孔乙己自己知道不能和他们谈天，便只好向我们新员工说话。有一回对我说道，“你定位过问题么？”我略略点一点头。他说，“定位过，……我便考你一考。Too many open files，怎样解决？”我想，考评垫底的人，也配考我么？便回过脸去，不再理会。孔乙己等了许久，很恳切的说道]]></description><category></category></item><item><title><![CDATA[解决SHELL脚本中的export无法生效的问题【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/109046327</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/109046327</guid><author>biqioso</author><pubDate>Tue, 13 Oct 2020 10:35:28 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/cutedog2012/article/details/80499354）

要跑的程序分好多步骤要手动输入命令，想写个脚本搞一下。
每个步骤里都有好多环境变量要设置，于是在脚本里各种用export，发现在执行后根本没有修改到环境变量。于是在网上各种搜，找到解决办法。

解决：比如脚本为run.sh，如果执行./run.sh是不生效的，要执行source ./run.sh，完美。
...]]></description><category></category></item><item><title><![CDATA[linux内核中likely与unlikely【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/108545378</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/108545378</guid><author>biqioso</author><pubDate>Sat, 12 Sep 2020 09:32:26 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/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(]]></description><category></category></item><item><title><![CDATA[autoscan、aclocal、automake和autoconf区别【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/107709399</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/107709399</guid><author>biqioso</author><pubDate>Fri, 31 Jul 2020 11:16:52 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/renhui1112/article/details/96480535）

autoscan:

扫描源代码以搜寻普通的可移植性问题，比如检查编译器，库，头文件等，生成文件configure.scan,它是configure.ac的一个雏形；

aclocal:

根据已经安装的宏，用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序，它的定义是]]></description><category></category></item><item><title><![CDATA[iptables中SNAT、DNAT和MASQUERADE的含义【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/107707175</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/107707175</guid><author>biqioso</author><pubDate>Fri, 31 Jul 2020 10:06:32 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/jk110333/article/details/8229828）

IPtables中可以灵活的做各种网络地址转换（NAT），网络地址转换主要有两种：SNAT和DNAT。

SNAT是source networkaddress translation的缩写，即源地址目标转换。比如，多个PC机使用ADSL路由器共享上网，每个PC机都配置了内网IP，PC机访问外部网络的时候，路由器将数据包的报头中的源地址替换成路由器的ip，当外部网络的服务器比如网站web服]]></description><category></category></item><item><title><![CDATA[二进制协议和文本协议【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/107705831</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/107705831</guid><author>biqioso</author><pubDate>Fri, 31 Jul 2020 09:11:31 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/qq_28893679/article/details/78469732）

进行网络通信时，我们经常纠结于到底使用什么样的协议传输数据，下面我谈谈应该怎么选择一种合理的协议格式。

网络协议

标准定义是这样的：

　　为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

　　网络协议至少包括三要素：

　　语法：语法是用户数据与控制信息的结构与格式，以及数据出现的顺序。

　　语义：解释控制信息每个部分的意义。它规定了需要发出何种控制信息，以及]]></description><category></category></item><item><title><![CDATA[Nat的类型——Cone Nat、Symmetic Nat【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/107098152</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/107098152</guid><author>biqioso</author><pubDate>Fri, 03 Jul 2020 08:54:50 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/yifuteli_kevin/article/details/8911261）

Nat共分为四种类型：


1.Full Cone Nat

2.Restriced Cone Nat

3.Port Restriced Cone Nat

4.Symmetric Nat


Symmetric Nat 与 Cone Nat的区别


1.三种Cone Nat同一主机，同一端口会被映射为相同的公网IP和端口

2.Symmetric Nat只有来自同一主机]]></description><category></category></item><item><title><![CDATA[Linux内核之pid为0和pid为1【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106900167</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106900167</guid><author>biqioso</author><pubDate>Mon, 22 Jun 2020 13:34:31 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/jingyilin2008/article/details/7815508?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159222398219725222455913%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=159222398219725222455913&amp;biz_]]></description><category></category></item><item><title><![CDATA[Linux下使用 ipset 封大量IP及ipset参数说明【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106896985</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106896985</guid><author>biqioso</author><pubDate>Mon, 22 Jun 2020 10:24:32 +0800</pubDate><description><![CDATA[（转自：https://unixso.com/Linux/ipset.html）

Linux使用iptables封IP，是常用的应对网络攻击的方法，但要封禁成千上万个IP，如果添加成千上万条规则，对机器性能影响较大，使用ipset能解决这个问题。

iptables 包含几个表，每个表由链组成。默认的是 filter 表，最常用的也是 filter 表，另一个比较常用的是nat表，封IP就是在 filter 表的 INPUT 链添加规则。
在进行规则匹配时，是从规则列表中从头到尾一条一条进行匹配。
这像是]]></description><category></category></item><item><title><![CDATA[ebtables介绍【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106334876</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106334876</guid><author>biqioso</author><pubDate>Mon, 25 May 2020 15:50:54 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/kv110/article/details/47919913）

ebtables是与iptables类似的命令， 区别在于ebtables用于对以太网帧的过滤，iptables用于对ip数据包的过滤。

过滤流程见图



1. 命令格式

ebtables [-t table ] -[ACDI] chain rule specification [match extensions] [watcher extensions] target
ebtable]]></description><category></category></item><item><title><![CDATA[NAT模式/路由模式/全路由模式【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106275275</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106275275</guid><author>biqioso</author><pubDate>Fri, 22 May 2020 10:51:01 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/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的]]></description><category></category></item><item><title><![CDATA[linux mknod命令解析【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106100425</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106100425</guid><author>biqioso</author><pubDate>Wed, 13 May 2020 16:08:36 +0800</pubDate><description><![CDATA[(转自：https://blog.youkuaiyun.com/a1010256340/article/details/83088870)

linux系统中设备管理的基本知识：

 我们的linux操作系统跟外部设备（如磁盘、光盘等）的通信都是通过设备文件进行的，应用程序可以打开、关闭、读写这些设备文件，从而对设备进行读写，这种操作就像读写普通的文件一样easy。linux为不同种类的设备文件提供了相同的接口，比如read(),write(),open(),close()。

 所以在系统与设备通...]]></description><category></category></item><item><title><![CDATA[TCP带外数据【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106091415</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106091415</guid><author>biqioso</author><pubDate>Wed, 13 May 2020 09:58:11 +0800</pubDate><description><![CDATA[(转自：cnblogs.com/c-slmax/p/5553857.html)

传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.linux系统的套接字机制支持低层协议发送和接受带外数据.但是TCP协议没有真正意义上的带外数据.为了发送重要协议,TCP提供了一种称为紧急模式(urgentmode)的机制.TCP协议在数据段中设置U]]></description><category></category></item><item><title><![CDATA[设备驱动程序简介【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/106014188</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/106014188</guid><author>biqioso</author><pubDate>Sat, 09 May 2020 10:45:03 +0800</pubDate><description><![CDATA[（转自：https://www.cnblogs.com/microxiami/p/11254081.html）

更多内容请参考Linux设备驱动程序学习----目录

1. 简介

  Linux系统的优点是，系统内部实现细节对所有人都是公开的。Linux内核由大量复杂的代码组成，设备驱动程序可以作为进入Linux内核世界大门的切入口。

  设备驱动程序在Linux内核中，是一个个独立的黑盒子，在调用内部接口时某个特定硬件做出响应，这些接口隐藏了设备的工作细节。用户的操作通过独立于特定驱动程序的一组标准]]></description><category></category></item><item><title><![CDATA[路由器转发规则【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/105995807</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/105995807</guid><author>biqioso</author><pubDate>Fri, 08 May 2020 14:18:26 +0800</pubDate><description><![CDATA[（转自：https://blog.51cto.com/echo1937/1281746）


	源主机在发起通信之前，将Self IP与目的主机的IP进行比较，如果两者位于同一网段（用子网掩码计算后具有相同的网络号），那么源主机直接向目的主机发送ARP请求，在接收到目的主机的ARP应答后获取对方的MAC地址，然后用对方的MAC地址作为目的MAC进行报文发送，位于同一VLAN（网段）的主机互访时属于...]]></description><category></category></item><item><title><![CDATA[通过实例来理解 eventfd 函数机制【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/105991688</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/105991688</guid><author>biqioso</author><pubDate>Fri, 08 May 2020 11:39:52 +0800</pubDate><description><![CDATA[（转自：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,...]]></description><category></category></item><item><title><![CDATA[Linux进程间通信——eventfd【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/105991465</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/105991465</guid><author>biqioso</author><pubDate>Fri, 08 May 2020 11:22:32 +0800</pubDate><description><![CDATA[（转自：https://blog.youkuaiyun.com/qq_28114615/article/details/97929524#%E5%86%99eventfd）

什么是eventfd


eventfd是Linux 2.6提供的一种系统调用，它可以用来实现事件通知。eventfd包含一个由内核维护的64位无符号整型计数器，创建eventfd时会返回一个文件描述符，进程可以通过对这个文...]]></description><category></category></item><item><title><![CDATA[libubox / uci / ubus 的移植【转】]]></title><link>https://blog.youkuaiyun.com/biqioso/article/details/105991359</link><guid>https://blog.youkuaiyun.com/biqioso/article/details/105991359</guid><author>biqioso</author><pubDate>Fri, 08 May 2020 11:18:07 +0800</pubDate><description><![CDATA[（转自：http://blog.chinaunix.net/uid-27057175-id-5793181.html）

uci配置管理和ubus通信框架是openwrt系统上非常好的轻量级服务。
以至于，在非openwrt系统上都想用它们来搞事情。
而它们又都是cmake来自动编译的。
这里记录下HOWTO。
sourouce ${你的交叉环境变量}
CC=${CROSS}gcc
CXX=${C...]]></description><category></category></item></channel></rss>