![个人头像照片](https://ucc.alicdn.com/avatar/img_549ec0fb89fbd36f61d148fccaa340bb.jpg)
暂无个人介绍
嵌套执行make 在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。
make的静态模式 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法: : : ... targets定义了一系列的目标文件,可以有通配符。
makefile中两重if判断 法一: ifeq ($(GCC_MINOR),$(filter $(GCC_MINOR),4 5)) filter X, A B will return those of A,B that are equal X.
跟我一起写Makefile:使用条件判断 使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 示例 下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。
makefile中宏定义 在Makefile中我们可以通过宏定义来控制源程序的编译。 只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。 如: CFLAGS += -D __KK__ 相当于#define __KK__ 或 C...
位域简介 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。
strtok简介 下面的说明摘自于最新的Linux内核2.6.29,说明了strtok()这个函数已经不再使用,由速度更快的strsep()代替。 函数说明 char *strtok(char s[], const char *delim); strtok()用来将字符串分割成一个个片段。
strtol简介 long int strtol(const char *nptr, char **endptr, int base) strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。
判断字符串是否为ip 法1: #include #include #include #include #include int if_a_string_is_a_valid_ipv4_address(const char *str) {...
Css让文字自适应Table宽度[转] .ctl{ table-layout:fixed } .ctl td{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px} 关键样式:...
#define offsetof(s,m) (size_t)&reinterpret_cast((((s *)0)->m)) 该宏用于求结构体中一个成员在该结构体中的偏移量。第一个参数是结构体的名字,第二个参数是结构体成员的名字。
typedef long time_t; 表达时间(秒数) size_t是标准C库中定义的,32位中为unsigned int,在64位系统中为 long unsigned int,用于指明数组长度或下标,它必须是一个正数,设计size_t就是为了适应多个平台,其引入增强了程序在不同平台上的可移植性。
ptrdiff_t简介 ptrdiff_t是C/C++标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。ptrdiff_t定义在stddef.h(cstddef)这个文件内。
关于TIME_WAIT可能引发的网络问题 统计? shell> netstat -nt | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' 如何减少? 网络上已经有不少相关的介绍,大多是建议: shell> sysctl net.
TCP Timestamp选项 Description Protocol suite: TCP/IP. Protocol type: Transport layer protocol.
AES分组加密使用示例 示例1 /* tomcrypt(http://libtomcrypt.org/) aes分段加密演示。使用前 #include AES,分段长度16,密钥最大长度32 还支持以下各种分段加密方式,其分段长度和密钥长度参考 crypt.
AES分组加密简介 1、首先应该明白AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节),当数据不是16字节的倍数时填充,这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度。
对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB) 一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.
定位高负载的几个命令 Uptime Dmesg Vmstat vmstat 1 ps awwlx --sort=vsz Iostat iostat -x 5 Iotop Top Munin 原文: http://www.
%wa指CPU等待磁盘写入完成的时间。首先看下%wa的解释:Percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request. 用`lsof | less`查看文件的读写情况 `iostat -cdDx 10` 。
1、首先,用top命令查看 查看12.6% wa IO等待所占用的CPU时间的百分比,高过30%时IO压力高 2、其次,用iostat -x 1 10 如果 iostat 没有,要 yum install sysstat 查看%util 100.10 %idle 66.29 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
http长连接200万尝试及调优 对于一个server,我们一般考虑他所能支撑的qps((QueryPerSecond)),但有那么一种应用, 我们需要关注的是它能支撑的连接数个数,而并非qps,当然qps也是我们需要考虑的性能点之一。
For a TCP connection memory consumed depends on 1) size of sk_buff (internal networking structure used by linux kernel) 2) the read and write...
单机最大tcp连接数 网络编程 在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少? 如何标识一个TCP连接 在确定最大连接数之前,先来看看系统如何标识一个tcp连接。
core dump 简介 在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明者为王安),线圈就叫作core ,用线圈做的内存就叫作“core memory”。(线圈的单词应该是coil,呵呵)如今,半导体工业澎勃发展,已经没有人用线圈当内存了,不过,在许多情况下,人们还是把内存叫作“core”。
解决 nf_conntrack: table full, dropping packet 的几种思路 nf_conntrack 工作在 3 层,支持 IPv4 和 IPv6,而 ip_conntrack 只支持 IPv4。
wrk简介 wrk 是一个比较先进的 HTTP 压力测试工具。 测试方法: wrk -t8 -c400 -r10m http://localhost:8080/index.html 原文 http://www.oschina.net/p/wrk
web服务器压测内核tcp参数调整 下面是对内核参数的调整: echo "2048 64512" > /proc/sys/net/ipv4/ip_local_port_range echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle ...
方向 删除 ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh ctrl + k 删除光标后面所有字符相当于VIM里d shift+$...
部分 TCP 参数简介 tcp_max_syn_backlog 端口最大 backlog 内核限制。此参数限制 服务端应用程序 可以设置的端口最大 backlog 值 (对应于端口的 syn_backlog 和 backlog 队列长度)。
通过调整tcp参数来防范DDOS攻击 虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 结果: 除了ESTABLISHED,可以看到连接数比较多的几个状态是:FIN_WAIT1, TIME_WAIT, CLOSE_WAIT, SYN_RECV和LAST_ACK;下面的文章就这几个状态的产生条件、对系统的影响以及处理方式进行简单描述。
1. Orphan socket 不属于任何进程的socket叫orphan socket。这里顺便一下讨论orphan socket,因为很多网络资源不足导致的错误都和“孤儿socket”有关。
Linux系统资源限制 1. 最大文件数 查看进程允许打开的最大文件句柄数:ulimit -n 查看进程所占的文件描述符: lsof -p xxx | wc -l 设置进程能打开的最大文件句柄数:ulimit -n xxx 2. ulimit -n vs. file-max ? 简单的说, ulimit -n控制进程级别能够打开的文件句柄的数量, 而max-file表示系统级别的能够打开的文件句柄的数量。
两种情况会出发 "Out of socket memory" 的信息: 1.有很多的孤儿套接字(orphan sockets) 2.tcp socket 用尽了给他分配的内存 首先看看情况 2。
查找信息,Aug 31 18:25:36 collect-28 kernel: printk: 58 messages suppressed. 此报错需要修改内核信息如下; (1) 加大 ip_conntrack_max 值: 查出原本的 ip_conntrack_max 值,指令...
iptables ip_conntrack_max 1、what 允许的最大跟踪连接条目 -允许的最大跟踪连接条目:CONNTRACK_MAX(默认值是 2^16=65536 ) -存储跟踪连接条目列表的哈西表的大小:HASHSIZE -每个哈西表的条目(叫一个bucket),包含了一个链接起来的跟踪连接条目 -哈希表大小HASHSIZE,表现为 条目bucket的多少,在iptables启动时在日志中会显示。
dlopen()是一个强大的库函数。该函数将打开一个新库,并把它装入内存。该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的。比如 Apache Web 服务器利用这个函数在运行过程中加载模块,这为它提供了额外的能力。
out of socket memory调整 主要是调整TCP缓冲区 Increasing the TCP send and receive buffers will increase the performance a lot if (and only if) you have a lot of large files to send.
/proc/sys/net/ipv4/tcp_max_orphans 系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。
print_r - 打印关于变量的易于理解的信息。 bool print_r ( mixed $expression [, bool $return ] ) Note: 参数 return 是在 PHP 4.3.0 的时候加上的 print_r() 显示关于一个变量的易于理解的信息。
var_export - 输出或返回一个变量的字符串表示。 mixed var_export ( mixed $expression [, bool $return ] ) 此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
var_dump - 打印变量的相关信息 void var_dump ( mixed $expression [, mixed $... ] ) 此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
lsof命令是什么? 可以列出被进程所打开的文件的信息。被打开的文件可以是 1.普通的文件 2.目录 3.网络文件系统的文件 4.字符设备文件 5.(函数)共享库 6.
pfiles -打开的文件描述符列表,命令报告每个进程中所有开放文件的 fstat(2) 和 fcntl(2) 信息。此外,如果信息可从 /proc/pid/path 获得,还将报告一个到文件的路径。
truss 命令 用途 跟踪进程的系统调用、动态装入的用户级函数调用、接收的信号和造成的机器故障。 truss 命令执行指定命令或附加在列出进程标识上,并产生对系统调用、接收的信号和进程造成的机器故障的跟踪。
此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。 stack是一个脚本工具,其核心实现就是使用了gdb以及thread apply all bt命令。
ltrace - A library call tracer strace - trace system calls and signals -S display system calls 显示系统调用 -t, -tt, -ttt print absolute times...
strings命令 在对象文件或二进制文件中查找可打印的字符串。 语法 strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ File ... ] 描述 strings 命令在对象文件或二进制文件中查找可打印的字符串。
touch touch [OPTION]... FILE... Update the access and modification times of each FILE to the current time.