linux
sunlylorn
2010.7校招加入腾讯目前就职于360搜索
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
利用awk自身变量NR和FNR来处理多个文件
NR:表示awk开始执行程序后所读取的数据行数。FNR:awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。使用方法:awk -F分隔符 'NR==FNR { do some stuff } NR!=FNR{ do so原创 2013-01-28 18:29:24 · 1155 阅读 · 0 评论 -
min()的宏定义中的(void) (&_x == &_y)的含义
近日无意间发现,关于常见的min的宏定义,在Linux中是这样的:/** min()/max()/clamp() macros that also do* strict type-checking.. See the* "unnecessary" pointer comparison.*/#define min(x, y) ({ \typeof(x) _x = (x);转载 2012-05-18 11:43:15 · 2524 阅读 · 0 评论 -
apache 2.0以上中的默认的是没有acceptpathinfo
从APACH2.0.30以上服务器中去掉了acceptpathinfo;如果需要的话需要在http.conf中添加AcceptPathInfo On这一条。即原来的 Options FollowSymLinks includes AllowOverride None改成 Options FollowSymLinks includes All转载 2012-05-21 15:50:30 · 2184 阅读 · 0 评论 -
protocol buffer
This tutorial provides a basic C++ programmer's introduction to working with protocol buffers. By walking through creating a simple example application, it shows you how toDefine message formats转载 2012-05-24 14:26:28 · 5393 阅读 · 0 评论 -
linux下调试内存泄露的利器Valgrind
Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违转载 2012-08-06 21:01:04 · 5005 阅读 · 0 评论 -
Valgrind中文使用手册
名字: valgrind是一个调试和剖析的程序工具集。概要用法: valgrind [[valgrind] [options]] [your-program] [[your-program-options]]概述: Valgrind是一个Linux下灵活的调试和剖析可执行工具。它由在软件层提供综合的 CPU内核,和一系转载 2012-08-06 21:38:32 · 3906 阅读 · 0 评论 -
ubuntu下hadoop安装与伪分布式的配置
今天想装个hadoop玩玩,记录安装步骤如下。一、先决条件1、sun jdk6以上,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1637583.html jdk-7u5-linux-i586.tar.gz2、hadoop,下载地址: http://mirror.bjtu.edu原创 2012-07-27 13:20:29 · 4245 阅读 · 0 评论 -
有效操作Linux命令行的几种方法
1.在命令历史中查找 强烈推荐使用 Ctrl+r, 这个键组合是反向增量查找消息历史。很好用。 比如你很久以前输入过某个命令如。 gcc -c -DKKT - Dnnn 等等,一长串, 用上下方向键来找比较困难,这时候可以Ctrl+r,然后输入gcc很快找到该命令,重复按Ctrl+r将查找更早的历史。 其实还有 Ctrl+s 是正向增量查找的,但是由于这个快捷键被终端预设成锁屏幕了,转载 2012-08-16 13:58:23 · 899 阅读 · 0 评论 -
./configure && make && make install详解
在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的README INSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装! 我们都知道源码包安装分为这么几个阶段,1、 ./configure:“configure”会在你的系统上测试存在的特性 Make:编译程序。5、 cd:进入到这个源码包。转载 2012-08-17 18:54:27 · 1305 阅读 · 0 评论 -
linux进程内存分布
linux进程内存分布,地址从低到高依次是代码段,数据段,堆,栈,堆栈之间是mmap映射的共享内存空间以及共享库,再上是命令行参数,环境变量,最高1g是共享的内核空间。其中栈是从高地址向低地址分配,堆是从低地址向高地址分配。具体如下图所示:原创 2012-08-17 23:24:32 · 4090 阅读 · 0 评论 -
理解 pkg-config 工具
你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中。然后,告诉你的同事说,你可以取下来用了。这时,你长长的出了一口气,几天的工作没有白费,多么清新的空气啊,你开始飘飘然了。“Hi,怎么编译不过去?”你还沉浸在那种美妙的感觉之中,双臂充满着力量,似乎没有什么问题能难倒你的。正在此时,那个笨蛋已经冲着你嚷开了。“不会吧转载 2012-08-25 21:02:22 · 857 阅读 · 0 评论 -
Ubuntu下安装opencv
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->一、下载代码1、一些会用到的库sudo apt-get install build-essential cmake libgtk2.0-dev libtiff4-dev libjasper-dev libavformat-dev libswscale-原创 2012-08-25 21:00:39 · 11936 阅读 · 1 评论 -
几个常用的xargs使用例子
xargs是一个非常有用的命令。下面给出我常用的几个例子:假设有文件 f 内容如下:abc123456789qwertyoptest命令把命令行输入原样输出,源码如下:#include int main(int argc, char **argv){ for(int i=0; i<argc; ++i)原创 2012-09-28 18:23:56 · 1681 阅读 · 0 评论 -
c++ string 和 stl算法
toupper,tolower地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法:string s("heLLo");transform(s.begin(), s.end(), s.begin(), ::toupper);cout transform(s.begin(), s.end(), s.begin(), ::转载 2012-11-01 11:21:31 · 1704 阅读 · 0 评论 -
hash_map 与 hash_set 详解
1 数据结构:hash_map原理这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空转载 2012-11-26 15:07:29 · 1166 阅读 · 0 评论 -
hadoop之grep
hadoop streaming -D stream.non.zero.exit.is.failure=false ...#!/bin/shisdebug=falseSTREAMING=/home/work/software/hadoop/contrib/streaming/hadoop-streaming.jarHADOOP=/home/work/software/ha原创 2013-01-11 12:40:17 · 4870 阅读 · 0 评论 -
C语言宏定义中的void
在看代码的时候,我们经常发现C语言的宏定义中会出现void,如:#define DICT_NOTUSED(V) ((void) V)其实这里的void仅仅是去掉编译器对木有使用的局部变量的警告。原创 2012-05-18 11:39:53 · 2275 阅读 · 0 评论 -
Cannot assign requested address以及大量的TIME_WAIT解决办法
curl在服务器上提示“Cannot assign requested address”错误,这是由于curl客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口。端口号的数量取决于一个内核参数net.ipv4.ip_local_port_range:sysctl -a | grep portnet.ipv原创 2013-05-16 11:20:30 · 5164 阅读 · 0 评论 -
vim自动更新ctags与taglist
vim的ctags和taglist在默认情况下是不进行自动更新的,这对于编写代码是非常不方便的,好在vim的脚本还是很强大的,于是在vimrc中添加如下函数:function! UpdateCtags() let curdir=getcwd() while !filereadable("./tags") cd .. if getc转载 2013-05-13 14:09:16 · 10340 阅读 · 0 评论 -
SecureCRT配置文件保存和导入
每次重装系统或换电脑后,SecureCRT都需要重新配置才能使用,为了减少不必要工作,在首次配置好环境后,请保存:XP下: C:\Users\XXX\AppData\Roaming\SecureCRTWin7下:C:\Users\XXX\AppData\Roaming\VanDyke\Config\Sessions目录下的文件或者config文件,下次只需要把这次文件重新导原创 2013-05-13 14:22:38 · 19355 阅读 · 0 评论 -
使用C++(通过Thrift)访问/操作/读写Hbase
要使用C++访问Hbase,可以走的途径少之又少,据说当前最好的方法就是通过Thrift来实现:http://thrift.apache.org/所以本文分成几部分:(1)安装Thrift;(2)用Thrift 生成访问Hbase所需的C++文件;(3)在程序中通过Thrift来访问Hbase。另外,本文只包含读写Hbase数据的例子,不包含配置Hbase的方法,如需这些内容,转载 2013-05-13 14:02:03 · 2106 阅读 · 0 评论 -
vim 根据不同目录设置不同的vimrc
一、背景目录/home/user下有.vimrc目录 /home/user/dir1有.vimrc1目录 /home/user/dir2有.vimrc2二、期望目标:当在/home/user/dir1下面打开vim时,自动调用.vimrc1。当在/home/user/dir2下面打开vim时,自动调用.vimrc2。三、解决方法原创 2013-05-13 14:05:27 · 2150 阅读 · 0 评论 -
Vim简明教程:基本可视模式
Vim简明教程:基本可视模式可视模式让你可以选择文件的一部分内容,以便作比如删除,复制等工作。进入可视模式v用v命令进入可视模式。当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。三种可视模式v一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。V一行一行地选。从按下V的那行起转载 2013-05-13 14:07:33 · 1498 阅读 · 0 评论 -
linux下uniq中文需要设置字符集
linux下uniq中文需要设置字符集 LANG=zh_CN.UTF-8或LANG=C原创 2013-05-13 14:19:30 · 2811 阅读 · 0 评论 -
个性化离线实时分析系统pora
1.业务场景伴随着市场和技术的发展,个性化已经成为淘宝搜索的一个重要目标。简单来说,个性化就是让每个用户在使用淘宝搜索时都能够获取自己最想要的结果,而不再是千篇一律的展示。实现个性化最直接的手段就是通过分析用户的历史行为日志,为用户打上不同的标签,在搜索中根据这些标签来展示最贴近的结果。在淘宝,用户属性分析是通过每天在云梯上定时运行的map reduce job来完成的,产出结果导入我们的转载 2013-05-13 14:03:48 · 1110 阅读 · 0 评论 -
stl for_each使用
template Function for_each (InputIterator first, InputIterator last, Function f);Apply function to rangeApplies function f to each of the elements in the range [first,last).The behavior of原创 2013-07-12 18:42:17 · 1200 阅读 · 0 评论 -
坑爹的hiredis API使用
hiredis是redis的官方C API,但是不得不说API的使用很坑爹。hiredis提供了一个名为redisCommand的API用于向redis server发送命令,redisCommand的函数原型如下:void *redisCommand(redisContext *c, const char *format, ...)貌似很牛逼的样子,提供了类似printf原创 2013-07-04 15:48:49 · 17105 阅读 · 7 评论 -
程序遇到core的时候 使得程序继续执行的解决办法
最近有点懒了,好久没有更新博客了,今天来一发。在代码开发过程中,我们经常会遇到程序core掉,这个时候正常的处理步骤是,我们保留程序的coredump,然后分析,进而找出程序的bug,fix it!但是,如果你的程序是线上服务,而且只会有极少数的输入会导致程序core掉,而且你允许可以有少量错误发生,那么这时候,我们的一个直观想法是,有没有什么方法可以 跳过这些该死的极少数异常数据原创 2013-11-20 15:37:07 · 3977 阅读 · 0 评论 -
win7下硬盘安装centos 6.5
一、安装过程中需要的软件1. 硬盘分区软件 pqmagic2. Ext2Fsd (见 http://www.linuxidc.com/Linux/2008-11/17469.htm ) 在windows下复制文件到ext2(或ext3)文件系统中,由于ext2类型的文件系统在windows下是不能够识别的,即ext2类型的分区在windows下是隐藏不可见的,Ext2Fsd 可以通过设置显原创 2014-01-23 17:33:24 · 8578 阅读 · 1 评论 -
安装deep learning 的 python开发环境
最近在看deep learning的相关知识,从deeplearning.net上下载了一份代码,需要配置以下环境:安装步骤如下:0、python最好是2.6以上的,版本低的,记得升级一下。1、安装setuptoolshttps://pypi.python.org/pypi/setuptools/ python setup.py install 提示错误:Com原创 2014-01-23 17:46:30 · 7578 阅读 · 0 评论 -
用nohup执行python程序时,print无法输出
nohup python test.py > nohup.out 2>&1 &发现nohup.out中显示不出来python程序中print的东西。这是因为python的输出有缓冲,导致nohup.out并不能够马上看到输出。python 有个-u参数,使得python不启用缓冲。nohup python -u test.py > nohup.out 2>&1 &原创 2014-02-12 18:40:18 · 46196 阅读 · 20 评论 -
在windows 和 linux下引入hash_set、hash_map头文件
推荐使用方法:在源代码的前面写入一下代码:// just for "#include " in linux#if __GNUC__>2#include #include using namespace __gnu_cxx;#else#include #include using namespace stdext;#endif其它解转载 2011-10-20 11:04:50 · 3539 阅读 · 0 评论 -
linux之磁盘分区(参考鸟哥的教程)
原创 2008-08-01 11:40:00 · 824 阅读 · 0 评论 -
开始学习linux
开通此博客,致力于学习linux,并鞭策我努力坚持下去!原创 2008-07-31 10:48:00 · 628 阅读 · 0 评论 -
linux下挂载windows扇区
随着linux的普及,越来越多的人在安装windows的同时,也会装上linux系统体验一下。由于我们对windows环境已经比较熟悉,因此我们的文件大多是保存在windows环境下。那么如果我们在玩linux的时候想访问自己的文件时怎么办呢?这就要靠强大的linux大大提供的mount命令了。用mount命令我们可以很容易地访问windows特有格式(如FAT32,NTFS等等)的分区。原创 2008-08-25 15:23:00 · 913 阅读 · 0 评论 -
linux下查看进程内存使用情况
<br />动态查看一个进程的内存使用<br />1、top命令top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s如果想根据内存使用量进行排序,可以shift + m(Sort by memory usage)<br /> <br />静态查看一个进程的内存使用<br /> 1、pmap命令pmap pid2、ps命令ps aux|grep process_name3、查看/proc/process_id/文件夹下的sta原创 2011-03-01 12:35:00 · 154490 阅读 · 8 评论 -
time,gettimeofday,clock_gettime,_ftime
clock_gettime( ) 提供了纳秒的精确度1、头文件 2、编译&链接。在编译链接时需加上 -lrt ;因为在librt中实现了clock_gettime函数3、函数原型int clock_gettime(clockid_t clk_id, struct timespect *tp); 参数说明: clockid_t clk_id 用于指定计时时钟的类型,有以下4种: CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-原创 2011-04-10 11:59:00 · 19978 阅读 · 4 评论 -
fcntl的close-on-exec标志
每个文件描述符都有一个close-on-exec标志。默认情况下,这个标志最后一位被设置为 0。这个标志符的具体作用在于当开辟其他进程调用exec()族函数时,在调用exec函数之前为exec族函数释放对应的文件描述符。我们来看一下具体的实例这是两个程序://file:fcntlint main(){ pid_t pid; fd = open("test.txt",O_RDWR|O_APPEND); if (fd == -1) ##printf("open err/n")转载 2011-04-26 11:47:00 · 15942 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
<br />1. Epoll是何方神圣?<br />Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。<br />其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东转载 2011-04-26 11:29:00 · 3279 阅读 · 1 评论 -
do{}while(0) 的作用
<br />do{}while(0)do{}while(false)do{}while(__LINE__==-1)1.用在出错处理中,替代goto//使用gotobool Func(){bool ret = true;ret=Func1();if(!ret) goto err;ret=Func2();if(!ret) goto err;ret=Func3();if(!ret) goto err;//...return true;err://转载 2011-04-26 11:07:00 · 1489 阅读 · 1 评论
分享