自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 sh pipeline

sh的保留字如下: ! { } case do done elif else esac fi for if then until while原来{ 和 }都是保留字,这样我真正明白它们前后必须有空...

2011-06-12 15:43:44 133

原创 FreeBSD下利用网卡的polling模式减少高数据量下的系统负载办法

FreeBSD在做IPsec-Gateway或作路由的情况下,当处理的数据包到达一定数量级(>15000包/每秒)时,系统的负载会很高,表现是输入任何命令响应很慢。用TOP显示CPU的状态时,大量时间被中断(interrupt),如下:CPU states: 0.0% user, 0.0% nice, 1.0% system, 98.8% interrupt, 0.2% idle...

2011-06-12 15:40:39 410

原创 crond需要重启么?

今天一同事说把A机器的/var/spool/cron/admin scp到B机器上的/var/spool/cron/目录下,有时不生效,需要restart crond.经过实际验证,发现此现象描述不对。为了查明现象,又看了一下cron 的manual page,有这么一段描述: Additionally, cron checks each minute to see if it...

2011-06-11 12:20:42 426

原创 tmpfs的一点认识

大家知道物理内存的存取速度是通常磁盘的10倍以上,直接使用它来存放客户频繁访问的资源有很多应用场景,比方说我们的少量静态资源,例如css,js,image),那么我们就可以直接使用内存来存放这些资源,能很好的提高用户访问网站的体验。 传统的ramdisk是个块设,是把物理内存拿出来一部份当作磁盘使用,使用它需要用mkfs来创建文件系统,才能真正地使用它,且改变ramdisk的默认大...

2011-06-11 12:10:49 137

原创 GDB信号的处理和启动配置文件(转载)

信号的处理程序是和网络相关的,调试期间经常地收到SIGPIPE,导致gdb停下来。看了一下gdb info,解决方法很简单。用handle命令设置一下缺省signal的处理行为就可以了:handle SIGPIPE nostop如果连提示信息都不想看见,就可以这样设置:handle SIGPIPE nostop noprint就可以了。其他相关信号也可以类似处理。想了解目前的s...

2011-05-22 21:57:13 125

原创 信号量基础知识

linux 中信号相关的一个结构体 struct sigaction 主要在sigaction信号安装和sigqueue信号发送时会用到该结构位于/usr/include/bits/sigaction.h在里面可以找到该结构的描述 {我现在实现的系统是as 4 内核版本 2.6.9-5.EL}/* Structure describing the action to be taken ...

2011-05-10 18:40:12 148

原创 do while(0)的妙用

在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在...

2011-05-09 18:43:11 66

原创 asprintf

sprintf() 的整个介面长的样子的是:   int sprintf ( char * str, const char * format, ... )   也就是在使用前,必须要先建立好一个字元阵列的空间,再用这个函式把内容填入,下面就是简单的例子:   int tmp = 10;   char cstr[20];   sprintf( cstr, "%...

2011-05-08 21:49:18 3633

原创 获取用户输入的问题(清除stdin)

需求: 从终端获取用户输入的用户名和密码(有效长度为n),我把 buffer 设为 n+10,这样当用 户输入过长时可以接收到多余的字符,从而判断出超长了;如果用户直接按回车键,那么应该 接收到0个字符。函数: fgets( buf, buf_size, stdin) 问题: 当用户输入超过 ...

2011-05-08 21:37:21 360

原创 Linux下的UDP/TCP端口映射(netcat and socat)

说起来有点土,事到如今才第一次用socat.不过今天看了一眼,netcat(nc)这东西ms已经N年没有人维护了.最先有个叫nc110的东西,由于太普及, 以至于人们都不想再去改动它的功能.结果导致多年来没有任何进步…现任的RHEL5里面好像也是由nc110改出来的.另外分支出来一个netcat,这个在google上直接netcat最容易出来,但也好多年没有人动过了…由于这些情况,才使得soc...

2011-05-07 20:42:13 702

原创 linux任务管理

disown是bash内部命令,nohup是外部命令disown跟bg,fg一样是针对job进行操作,nohup是针对命令操作disown -h 和nohup一样,在退出bash后,把进程的控制权都交给init...

2011-05-07 20:32:14 176

原创 gcc attribute

 GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。  __attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attr...

2011-05-03 20:28:41 111

原创 TCP_NODELAY 和 TCP_CORK

TCP_NODELAY 和 TCP_CORK,这两个选项都对网络连接的行为具有重要的作用。许多UNIX系统都实现了TCP_NODELAY选项,但是,TCP_CORK则是Linux系统所独有的 而且相对较新;它首先在内核版本2.4上得以实现。此外,其他UNIX系统版本也有功能类似的选项,值得注意的是,在某种由BSD派生的系统上的 TCP_NOPUSH选项其实就是TCP_CORK的一部分具体实现。...

2011-04-28 18:25:11 70

原创 boost trim

boost 字符串算法解密 修剪(trim.hpp) trim 算法库中是用于修剪字符串的: trim_left_copy_if()trim_left_if()trim_left_copy()trim_left()trim_right_copy_if()trim_right_if()trim_right_copy()...

2011-04-27 21:58:41 543

原创 boost multi_index_container

本章介绍的主题是multi_index_container注:继续往下读之前希望你对C++模板和stl的一些知识有过了解什么是多索引容器?为什么要使用它?如何使用? 接下来一一回答以上的问题。 想必大家在实际开发中一定多多少少会遇到以下的问题,我需要创建一个map,并且需要两种方式去索引,比如:创建一个的map,但是我既需要用学号去索引,又需要用姓名去索...

2011-04-27 21:18:30 124

原创 变量相关命令(env,export,set,read, array, declare

系统的预设参数文件:/etc/profile。查询变量:env,export,setenv 是 environment (环境) 的简写,列出来所有的环境变量。export 执行后跟env是一样的内容。不过,export 还能将变量转变成环境变量。想要让该变量内容继续的在子程序中使用,那么就请执行:export 变量这个东西用在『引用他人的档案或者其它程序』时,相当的重...

2011-04-26 21:38:48 126

原创 stl priority_queue

简单的使用示例。view plaincopy to clipboardprint?#include "stdafx.h"//非vc编译器可去掉 #include #include #include using namespace std; //看看priority_queue的声明,模板的第三个参数就是比较规则,规则可以是个函数,也可...

2011-04-26 21:20:05 102

原创 linux backlog

  在linux中,/proc/sys/net/core/somaxconn这个参数,  看下其解析:  对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,  我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.  每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的...

2011-04-25 15:13:57 65

原创 linux backlog

  在linux中,/proc/sys/net/core/somaxconn这个参数,  看下其解析:  对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,  我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.  每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的...

2011-04-25 15:13:55 58

原创 stl hash_map

#include #include #include #include /*因为hash_map暂不为CPP标准所以没办法写为*//*-------------------------------------------*/using std::cout;using std::endl;using std::string;/*-------------...

2011-04-23 19:57:24 96

原创 linux串口登陆

在这个互连网高速发展的时代, 企业内网络设备的安全和运行稳定也成为人们的焦点话题之一,在网络安全方面有句行话"技术不是万能药!".在整个安全问题的全方面考虑中,人才是最重要的环节.为此,非常多企业的重要服务器都没有输出或输入设备,就算有,也只是安装系统时使用,一旦投入生产式管理,基本依靠网络进行,网络毕竟不是这么可靠,如果服务器的网络瘫痪了,你正好需要远程解决网络的问题,那该怎么做?其实Linux...

2011-04-23 09:31:52 662

原创 linux rename

Linux中rename命令的用法刚学习linux的时候,对文件重命名首先想到的就是rename命令,但是按照在windows下对文件重命名的方式试了N多次都没有反应,在网上一搜索,发现很多人都对rename命令知之甚少,甚至有一部分人说linux下没有rename命令,建议大家用mv命令。鉴于此,于是man rename一下,好好的研究了一下它的用法 ,在此对rename命令和mv命令在...

2011-04-21 09:38:30 160

原创 stl heap

make_heap原型: #include void make_heap( random_access_iterator start, random_access_iterator end ); void make_heap( random_access_iterator start, random_access_iterator end, StrictWeakOrder...

2011-04-17 10:01:05 61

原创 expand and upexpand

expand:NAME expand - convert tabs to spacesSYNOPSIS expand [OPTION]... [FILE]...DESCRIPTION Convert tabs in each FILE to spaces, writing to standard output. With...

2011-04-09 13:33:02 84

原创 tfs源码分析(1)

TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同...

2011-04-01 20:52:16 144

原创 STL容器之List:splice

//splice// merge two lists #include #include #include #include using namespace std;template class Print{ public: void operator () (T& t) { c...

2011-04-01 19:36:28 123

原创 内核模块相关命令:lsmod,depmod,modprobe

lsmod功能:列出内核已载入模块的状态用法:lsmod描述: lsmod 以美观的方式列出/proc/modules的内容。 输出为: Module(模块名) Size(模块大小) Used by(被...使用) eg. ne2k_pci 8928 0 8390 ...

2011-03-28 13:24:00 61

原创 套接字选项列表(一个查询的代码和解释列表)

getsockopt和setsockopt #include int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, void *optval, socklen_t *o...

2011-03-23 15:44:21 63

原创 通过先unlink()后close()创建安全的临时文件

使用POSIX(Portable Operating System Interface)标准文件操作函数可以创建安全的临时文件:使用open()创建临时文件。马上调用unlink()删除文件,该临时文件将被从当前目录中去除;但inode会等到所有打开的文件描述符都关闭(reference count = 0)时才被删除。在此之前变成一个孤儿(orphan inode),使用ls 或者 du...

2011-03-15 14:26:49 154

原创 parted操作磁盘

除了fdisk命令,在linux下还有一个功能也非常强大的磁盘管理工具parted。这里继续沿用[使用fdisk命令对linux硬盘进行操作] 中的环境对parted命令进行一些介绍。parted的基本操作输入parted命令,进入parted管理界面,如果没有指定硬盘,parted命令会默认选择第一个硬盘为当前操作硬盘。[root@a ~]# partedGNU Parted 1...

2011-03-12 16:15:22 123

原创 linux写缓存调优

我们在磁盘写操作持续繁忙的服务器上曾经碰到一个特殊的性能问题。每隔 30 秒,服务器就会遇到磁盘写活动高峰,导致请求处理延迟非常大(超过3秒)。后来上网查了一下资料,通过调整内核参数,将写活动的高峰分布成频繁的多次写,每次写入的数据比较少。这样可以把尖峰的写操作削平成多次写操作。以这种方式执行的效率比较低,因为内核不太有机会组合写操作。但对于繁忙的服务器,写操作将更一致地进行,并将极大地改进交互式...

2011-03-11 09:34:26 116

原创 linux find

由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。一、find 命令格式1、find命...

2011-03-11 09:00:02 63

原创 linux自动登录到桌面

Ubuntu默认是每次登录都是要输入用户名和密码的,照理说这是安全方面虑,但是每次都要输入登录信息,对于自己玩的电脑或着没什么安全方面顾虑的用户来说,那是很烦的,所以我们要通过设置让Ubuntu能够自动登录。 1.System—Administration—Login Window (需要输入root用户的密码)  2.Login Window Preferences里点到Sec...

2011-03-10 08:48:38 659

原创 Linux下提高性能的系统调用sendfile,splice和tee

熟悉Linux内核2.4版本的也许知道:在2.4版的内核中内嵌了一个叫做khttpd的静态网页服务器。当时,可能是效率的因素致使她被添加了进来,至于为什么最新的2.6版内核去掉了这个服务器,我考虑可能是因为Linux内核“只提供机制,熟悉Linux内核2.4版本的也许知道:在2.4版的内核中内嵌了一个叫做khttpd的静态网页服务器。当时,可能是效率的因素致使她被添加了进来,至于为什么最新的2...

2011-03-08 09:19:47 180

原创 阅读HAProxy代码学习linux下的splice函数用法

自从linux 2.6.9后linux提供了驱动级的系统函数splice。它的作用是在文件描述符直接转发数据,直接对内核内存块做引用标记而不需要借用用户内存复制数据。这样就大大节省了分配内存,再read和write的性能消耗。 自己用了一下这个函数发现总是返回EINVAL,于是去阅读HAProxy的源代码,总算弄明白了一些使用条件,理解了这个函数的设计思路。 可以说sp...

2011-03-08 09:13:50 129

原创 ftok学习

系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名,id是子序号。在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为65538,换算成16进...

2011-03-07 08:46:51 74

原创 (转)STL:历史与组件速览

——STL的优点就不罗嗦了,对一个C++开发人员来讲,不熟悉STL是无论如何都说不过去的,这不需要什么借口。侯捷老师的大作《STL源码剖析》确实是深入学习STL的绝佳教材,于是决定好好研读一下这本书,并将所学记录于blog上,作为一个学习笔记,说不定还能遇到不少同道中人共同学习。如果能更多的了解STL的机制,就可以不仅更加纯熟的应用,掌握一个开发的利器,更能学习其设计思想而加以应用,使自己的功...

2011-03-06 20:33:30 83

原创 leader-follower模型

解决的方案是使用Leader-Follower线程模型,它的基本思想是所有的线程被分配成两种角色: Leader和Follower,一般同时只有一个Leader线程,所有的Follower线程排队等待成为Leader线程,线程池启动时自动产生一个Leader负责等待网络IO事件,当有一个事件产生时,Leader线程首先通知一个Follower线程,并将其提拔为新的Leader,然后自己去处理这...

2011-03-04 08:53:33 1022

原创 服务器开发

* 任何情况下不能吞异常,一般使用logger,哪怕只能用e.print... 也是有补救措施的,而吞掉便无从知晓。 * 配置多资源时,各种公用的内容没有提取,导致修改时非常麻烦,推荐使用include方式 * 子资源要能使用父资源的指标值,也就是父子要有继承关系 * 国际化时不应该再另起一个模型,这样会使同一修改改动很多文件 * 任何会导致特殊字符危险的方案不能用,比如 - ...

2011-03-03 09:21:58 58

空空如也

空空如也

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

TA关注的人

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