擅长面向对象设计、C++程序开发,在金山和华为呆过,互联网从业十多年,有分布式计算和存储系统经验。
1、低效率的用法 // 先查找是否存在,如果不存在,则插入 if (map.find(X) == map::end()) // 需要find一次 { map.insert(x); // 需要find一次 } // 下面这段代码是一个意思 if (0 == map.
假设将值存在文件t中,文件t内容如下,只有一行:a b c需要将a、b和c分别赋给外部变量x、y和z,则脚本可写成如下:eval $(awk '{ printf("x=%s\ny=%s\nz=%s",$1,$2,$3); }' ./t)echo $xecho $yecho $z请注意printf函数中的换行符\n是必须的,起关键作用的是eval命令,它在很多场景有特别的用处。
http://code.google.com/p/mooon 分层结构 系统结构 编程模式
export eth=1&&netstat -ie|awk -F'[: ]' 'begin{found=0;} { if (match($0,"eth'"$eth"'")) found=1; else if ((1==found) && match($0,"eth")) found...
Linux上制作可执行的共享库示例.pdf 推荐阅读:http://blog.chinaunix.net/uid-20682147-id-3760647.html(小心两个共享库共用同一个静态库) x.cpp为共享库libx.so的实现,b.cpp为可执行b的实现。
-- hadoop开头的是UCenter表,cdb开头的是BBS部分的表 -- 搜索出所有垃圾用户名: select `hadoop_members`.`username` from `hadoop_members` left join `cdb_members` on `hadoop_members`.
原文: http://www.linuxdiyf.com/viewarticle.php?id=110380 ClamAntivirus是一个UNIX下开源(GPL)杀毒软件包,这个软件最主要目的是集成在邮件服务器里,查杀邮件附件中的病毒。
文件: 高质量C++编程补充条款.pdf 大小: 169KB 下载: 下载 目录 1. 前言 1 2. 条款:避免使用非众所周知的缩略语 1 3. 条款:规范好#include 1 4.
文件: mooon-http-stress-manual.pdf 大小: 248KB 下载: 下载 1. http-stress是什么? http-stress是一个和ab(Apache Benchmark)类似的HTTP压力测试工具,是作为disp...
mooon db wrapper 1. 前言 mooon db wrapper不是一个DB,仅是对现有的DB API的封装,使得使用更为简单。项目地址:http://code.google.com/p/mooon,可使用SVN下载最新代码。
方法非常简单,LINUX提供了一个查看配置的命令(实际有相应的库函数)getconf,使用它即可,方法如下:getconf LONG_BIT如果返回64,就表示为64位内核,否则应当返回32。
方法:ls -lrt --time-style=long-iso $(find 目录路径 -type f)
在普通的哈希中,如果节点个数(分母)发生变化,原先的次序会被完全打乱重来,一致性哈希解决了这个问题。实际可看成普通的哈希对着的是物理节点,而一致性哈希对着的是虚拟节点,这里可以拿物理内存和虚拟内存来对比,虚拟节点是可认为是使用不完的,挂了一个节点,还可以认为节点数不变,因此哈希的对应关系仍保持不变,也就不存在普通哈希的问题了。
很早就听说过PB(protocol buffers的简称),但从未实际地去了解,最近动手对它进行了初步了了解和使用,由于它长得和RPC/IDL相似,加上以前有参与过使用C++实现过RPC的项目经验,所以容易理解起来比较顺畅,网上也有不少基于PB的RPC实现。
Protocol Buffers十分钟上手:入门示例 1.简介 Protocol Buffers是Google出品并开源的语言和平台均中立的数据序列化和反序列化工具,官方支持C++/Java和Python三大语言,另外有大量的第三方实现支持PHP、D语言和C#等众多语言,这些都可以从Google Protocol Buffers的官方网站上找到链接。
下面这段,初看一定会脑大,实际原因非常明确,所以遇到时要先观察,不一定是头大的问题。gdb -p 1461GNU gdb 6.6Copyright (C) 2006 Free Software Foundation, Inc.
当在C++代码中,直接引用MySQL头文件时,可能会遇到如下错误:In file included from /usr/include/c++/4.1.0/bits/char_traits.
多线程编程,锁通常是必不可少的保证代码运行安全的工具,一提到锁,最直接想到的是性能问题,给人的印象是锁会影响系统性能。这固然不然。但性能本身并不是锁本身引起的,锁也只是一个系统调用,它本身的开销是很小的,很多测试中,我们发现加锁和去掉锁后的性能几乎没有差别,为什么了?问题的关键在于,锁带来的性能下降,是因为锁与锁之间发生了碰撞,如果没有锁间的碰撞,则它所损害的性能是非常有限的。
将一个文件或SOCKET的句柄fd传递给多个线程,进行读、写和Close操作,是否安全了?答案是“否”,这类似于new一个指针后,这个指针传递给多线程是否安全,结果是常常容易造成一个线程使用已经被另一个线程delete的指针。
如果编译遇到如下错误: tmp/cceMNWaA.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status 则可能是因为使用gcc编译cpp文件,两个办法: 1.
fd跨线程是不安全的,当一个线程close它后,就相当于成了野指针,另一线程再使用就成了对野指针的使用,当系统调用使用一个已经close后的fd时,可能出现内核报错,如果安全使用它了?有两个办法:一是对fd进行再包装,产生应用对象,对象通过引用计数保证线程安全;二是dup,直接对fd引用计数,使不同fd指向同一个内核对象,不同线程持有的fd值将不相同,线程只close自己的,实际就是引用计数减一。
方法 直接将环境变量添加到crontab中,如:NAME=zhangsanAGE=3010 * * * * /home/xx/test.sh注意不要加上export,这样test.sh就可以用到环境变量了。
有关snprintf返回值更多信息,请参考:http://bbs.hadoopor.com/thread-1185-1-1.html char str[10];int rt = snprintf(str, 3, "%s", "0123456789"); // 请注意这里的3是包括结尾符在内的,所以执行后,str的值应当为“01”,而不是“012”上述代码,rt将为10。
有关snprintf返回值更多信息,请参考:http://bbs.hadoopor.com/thread-1185-1-1.html snprintf MAN手册:The functions snprintf() and vsnprintf() do not write more than size bytes (including the trailing '\0')这句话表示snprintf总是会将'\0'写入。
http://bbs.hadoopor.comhttp://www.hadoopor.comhttp://forum.hadoopor.com http://hadoop.hadoopor.
1. ADSL通过电话线接到电话线插孔上(电话线) 2. 路由器通过它自己的WLAN端口连接到ADSL上(网线) 3. 用网线将路由器和电脑连接好(网线) 4. 修改路由器的WLAN设置: 4.1. 设置好拨号账号和密码 4.2. 一般不需要设置主/次DNS. 如果需要设置,请注意选择运营商提供的DNS,如电信的就选择电信的DNS,而不能使用长城等其它非电信的ADSL,否则会出现能上QQ等,而不能浏览网页,因为浏览网页需要DNS解析,而上QQ是直接使用IP的。
interpreter和state模式都是通过对行为的抽象,去掉if语句,但interpreter主要是通过组合的方法解决问题,多个对象常会绞合在一起,而state总是一个对象转到另一个对象,这是两个模式间的最大区别之一。
/etc/pam.d目录下需要增加或修改两个文件:1) 在sshd2文件中增加如下一行: auth required pam_pwcheck.so shadow 2) 在system-auth文件中增加如下一行: session required /lib/security/pam_limits.
转自http://blog.csdn.net/dingxy/archive/2009/03/20/4008724.aspx 和http://blog.csdn.net/dingxy/archive/2009/03/23/4016383.
本章讲述了基本的基于命令行界面的系统配置方法。在学习本章前,你需要先阅读 Ubuntu 系统安装提示, 第 3 章. 如是你很关心安全方面的信息,你应该阅读 Securing Debian Manual,它在 harden-doc 软件包中。
SuSE上的一些问题,可能需要另参考:http://blog.chinaunix.net/u2/64804/showart.php?id=2026903 相关版本:红帽企业Linux 现象: 如果你在文件/etc/security/limits.conf中设定了值。
SuSE上的一些问题,可能需要另参考:http://blog.chinaunix.net/u2/64804/showart.php?id=2026903 limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。
SuSE Linux上搭建apache+php+mysql环境 1.安装apache apache安装包:httpd-2.2.9.tar.gz,安装步骤如下: 1) ./configure --prefix=/usr/local/httpd-2.
示例环境:OS: FC2NIC: eth0host name: fc2ip: 192.168.0.20/24default gateway: 192.168.0.254修改ip地址即时生效:# ifconfig eth0 192.
SSH2登录: 现在确认能否不输入口令就用ssh登录localhost: $ ssh localhost 如果不输入口令就无法用ssh登陆localhost,执行下面的命令: $ cd ~/.
环境:SuSE10.1 配置DNS客户端的方法非常简单,现将方法总结如下: 1、修改/etc/resolv.conf 在这个文件里增加DNS服务器的IP地址,格式为:nameserver DNS服务器IP地址 如:nameserver 192.
sed是一个非交互性性文本编辑器, 它编辑文件或标准输入导出的文件拷贝。标准输入可能是来自键盘、文件重定向、字符串或变量,或者是一个管道文件。sed可以随意编辑小或大的文件,有许多 sed命令用来编辑、删除,并允许做这项工作时不在现场。
D Uninterruptible sleep (usually IO)不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,cpu不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了一般不思考R Running or runnabl...
用指针的观点来深入理解dup和dup2的用法 作者:ejian 2007-09-17 网上有很多资料详细讲解了dup和dup2的用法,有讲得不错的,但总感觉理解起来还是有点困难,通过实践,我发现一种C程序更容易理解的讲解方法-使用类比指针的方法来阐述dup和dup2的用法,可能更容易让人在非常短的时间内接受,下面的内容是我理解dup和dup2用法的总结,希望对dup和dup2存有疑惑的朋友所有帮助。
文件: udev.zip 大小: 1KB 下载: 下载 1. 在LINUX目录下建立test 帐户2.下载udev.sh脚本 在http://milw0rm.
Bash的使用GUN readline库来处理用户输入,所以BASH也有emacs/vi 两种模式(主要是快捷键不同)(4DOS没有)一般来说BASH缺省是emacs模式,如果想变成vi模式(如果你是vi用户)就可以了,然后你就可以用和vi一样的快捷键来编辑命令行了.
本人最近会把proc目录详解给大家弄一下,欢迎翻译,有问题则留言。虽然是英文的,但都比较好理解,如有问题,请留言,我们共同为Linux社区而努力。我们翻译效果还不一定好,因为这玩意毕竟是老外搞的吗!!!咯咯,翻译可能引起误解。
IOWait高的一些处理方法1、检查RAID的状态,比如是否正在重建或者没有初始化2、替换操作系统的内核,最好使用发行版标准的Linux kernel,因为有比较多的补丁3、检查/proc/sys/vm下面是否可以优化4、是否使用了文件系统,文件系统是否有优化的选项,比如在RAID5...
稀疏(Sparse)文件的创建 在EXT2/EXT3文件系统上可以使用dd创建稀疏文件: $ dd if=/dev/zero of=fs.img bs=1M seek=1024 count=00+0 records in0+0 records out$ ls -lh fs.
Linux® 内核使用 GNU Compiler Collection (GCC) 套件的几个特殊功能。这些功能包括提供快捷方式和简化以及向编译器提供优化提示等等。了解这些特殊的 GCC 特性,学习如何在 Linux 内核中使用它们。
awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输入域分隔符,默认为一个空格 RS 输入记录分隔符 NF 当前记录里域个数 NR 到目前为止记录数 OFS 输出域分隔符 ORS 输出记录分隔符 1、awk '/101/' file 显示文件file中包含101的匹配行。
Ssh,scp自动登陆方法###########################A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.
Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
rsync客户端参数的具体解释如下: -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关,强制对文件传输进行校验 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD -r, --recursive 对子目录以递归模式处理 -R, --relative 使用相对路径信息 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。