linux
sunlylorn
2010.7校招加入腾讯目前就职于360搜索
展开
-
用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 · 44787 阅读 · 20 评论 -
hash_map 与 hash_set 详解
1 数据结构:hash_map原理这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空转载 2012-11-26 15:07:29 · 1070 阅读 · 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 · 1598 阅读 · 0 评论 -
几个常用的xargs使用例子
xargs是一个非常有用的命令。下面给出我常用的几个例子:假设有文件 f 内容如下:abc123456789qwertyoptest命令把命令行输入原样输出,源码如下:#include int main(int argc, char **argv){ for(int i=0; i<argc; ++i)原创 2012-09-28 18:23:56 · 1595 阅读 · 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 · 11787 阅读 · 1 评论 -
理解 pkg-config 工具
你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中。然后,告诉你的同事说,你可以取下来用了。这时,你长长的出了一口气,几天的工作没有白费,多么清新的空气啊,你开始飘飘然了。“Hi,怎么编译不过去?”你还沉浸在那种美妙的感觉之中,双臂充满着力量,似乎没有什么问题能难倒你的。正在此时,那个笨蛋已经冲着你嚷开了。“不会吧转载 2012-08-25 21:02:22 · 794 阅读 · 0 评论 -
linux进程内存分布
linux进程内存分布,地址从低到高依次是代码段,数据段,堆,栈,堆栈之间是mmap映射的共享内存空间以及共享库,再上是命令行参数,环境变量,最高1g是共享的内核空间。其中栈是从高地址向低地址分配,堆是从低地址向高地址分配。具体如下图所示:原创 2012-08-17 23:24:32 · 3982 阅读 · 0 评论 -
./configure && make && make install详解
在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的README INSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装! 我们都知道源码包安装分为这么几个阶段,1、 ./configure:“configure”会在你的系统上测试存在的特性 Make:编译程序。5、 cd:进入到这个源码包。转载 2012-08-17 18:54:27 · 1224 阅读 · 0 评论 -
有效操作Linux命令行的几种方法
1.在命令历史中查找 强烈推荐使用 Ctrl+r, 这个键组合是反向增量查找消息历史。很好用。 比如你很久以前输入过某个命令如。 gcc -c -DKKT - Dnnn 等等,一长串, 用上下方向键来找比较困难,这时候可以Ctrl+r,然后输入gcc很快找到该命令,重复按Ctrl+r将查找更早的历史。 其实还有 Ctrl+s 是正向增量查找的,但是由于这个快捷键被终端预设成锁屏幕了,转载 2012-08-16 13:58:23 · 823 阅读 · 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 · 4130 阅读 · 0 评论 -
Valgrind中文使用手册
名字: valgrind是一个调试和剖析的程序工具集。概要用法: valgrind [[valgrind] [options]] [your-program] [[your-program-options]]概述: Valgrind是一个Linux下灵活的调试和剖析可执行工具。它由在软件层提供综合的 CPU内核,和一系转载 2012-08-06 21:38:32 · 3703 阅读 · 0 评论 -
linux下调试内存泄露的利器Valgrind
Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违转载 2012-08-06 21:01:04 · 4788 阅读 · 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 · 5200 阅读 · 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 · 2099 阅读 · 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 · 4765 阅读 · 0 评论 -
利用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 · 1069 阅读 · 0 评论 -
安装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 · 7407 阅读 · 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 · 8493 阅读 · 1 评论 -
程序遇到core的时候 使得程序继续执行的解决办法
最近有点懒了,好久没有更新博客了,今天来一发。在代码开发过程中,我们经常会遇到程序core掉,这个时候正常的处理步骤是,我们保留程序的coredump,然后分析,进而找出程序的bug,fix it!但是,如果你的程序是线上服务,而且只会有极少数的输入会导致程序core掉,而且你允许可以有少量错误发生,那么这时候,我们的一个直观想法是,有没有什么方法可以 跳过这些该死的极少数异常数据原创 2013-11-20 15:37:07 · 3784 阅读 · 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 · 16956 阅读 · 7 评论 -
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 · 1122 阅读 · 0 评论 -
个性化离线实时分析系统pora
1.业务场景伴随着市场和技术的发展,个性化已经成为淘宝搜索的一个重要目标。简单来说,个性化就是让每个用户在使用淘宝搜索时都能够获取自己最想要的结果,而不再是千篇一律的展示。实现个性化最直接的手段就是通过分析用户的历史行为日志,为用户打上不同的标签,在搜索中根据这些标签来展示最贴近的结果。在淘宝,用户属性分析是通过每天在云梯上定时运行的map reduce job来完成的,产出结果导入我们的转载 2013-05-13 14:03:48 · 994 阅读 · 0 评论 -
linux下uniq中文需要设置字符集
linux下uniq中文需要设置字符集 LANG=zh_CN.UTF-8或LANG=C原创 2013-05-13 14:19:30 · 2738 阅读 · 0 评论 -
Vim简明教程:基本可视模式
Vim简明教程:基本可视模式可视模式让你可以选择文件的一部分内容,以便作比如删除,复制等工作。进入可视模式v用v命令进入可视模式。当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。三种可视模式v一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。V一行一行地选。从按下V的那行起转载 2013-05-13 14:07:33 · 1370 阅读 · 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 · 2010 阅读 · 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 · 1881 阅读 · 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 · 17209 阅读 · 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 · 10056 阅读 · 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 · 4800 阅读 · 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 · 2430 阅读 · 0 评论 -
C语言宏定义中的void
在看代码的时候,我们经常发现C语言的宏定义中会出现void,如:#define DICT_NOTUSED(V) ((void) V)其实这里的void仅仅是去掉编译器对木有使用的局部变量的警告。原创 2012-05-18 11:39:53 · 2148 阅读 · 0 评论 -
GCC 提供的原子操作
gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub (type *ptr, type value, ...)type __sync_fetch转载 2012-05-16 11:53:23 · 955 阅读 · 0 评论 -
crontab的相对路径的问题
1、背景最近写了一个小程序,读取相对路径下的文件,部分代码如下:bool read(const char*path){ ifstream fin(path); string strLine; while(!fin.eof()) { getl原创 2011-09-29 10:36:34 · 8139 阅读 · 2 评论 -
用std::set来保存char*/const char*
我们如何能在c++中使用set来保存char*/const char*呢?答案是提供定制的template argument -> Compare.#include #include struct strless : public std::binary_转载 2011-08-24 14:51:18 · 2057 阅读 · 0 评论 -
用GDB调试程序
GDB概述GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长转载 2011-08-24 14:50:06 · 747 阅读 · 0 评论 -
配置GDB以支持查看stl容器数据
GDB的自定义命令非常有用,通过自定义命令,直接操作容器中的数据,可以方便的查看STL容器中的数据。这个链接dbinit_stl_views是Dan C Marinescu写的查看STL容器的自定义命令(如果不适合你的STL版本的话,可以自行修改)。把它添加到你的.gdb转载 2011-09-19 08:44:38 · 11992 阅读 · 0 评论 -
socket异步编程--libevent的使用
这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的函数(或接口)并向系统注册,然后在需要的时候只向系统提交读写的请求之后就继续做自转载 2011-09-03 11:54:56 · 5807 阅读 · 0 评论 -
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 · 1427 阅读 · 1 评论 -
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 · 3167 阅读 · 1 评论 -
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 · 15655 阅读 · 0 评论