- 博客(86)
- 资源 (16)
- 收藏
- 关注
原创 nginx: error while loading shared libraries libpcre.so
今天要装下nginx,本来是运维的事情,结果我来弄了,折腾了下:nginx依赖libpcre库,在安装nginx前需要先安装libpcre库安装完libpcre后安装nginx这一起都挺正常然后启动nginx,出现了error while loading shared libraries: libpcre.so.1: cannot open shared objec
2013-06-18 17:58:21 1753
原创 今天
昨天打完球回家都11点半了,为了省钱导了三趟车才到,屌丝啊今天杯具的就发现好像感冒了,但又不太像,可能是昨天没睡好,浑身疼今天主要是把漫游精确到县级的需求给搞了,代码改动量不大;另外把登录的接口又优化了下,赶快把登录的接口给弄完吧,我都要疯了。。。晚上坐班车回家的,出奇的快,35分钟就到东风桥了,爽歪歪啊晚上去喝了碗羊汤,吃完看了会《楚汉传奇》,感觉轻松点了8天的班还真是累啊,
2013-01-10 22:10:36 903
原创 今天
今天看公司专家们的心得,收获良多。本来自己现在是摇摆不定的,看了后多少有点改进,专注、勤学好问、多实践、耐得住寂寞 等等吧我就是不专注啊,三心二意。。。下午本来要去听一个专家将无线互联网的发展方向的讲座,结果来了个需求讨论,没去成,可惜了。上午协助检索那边定位了个问题,应该是json转义的原因,看现在的代码里没有转义,自己改成pack_json后有错误,没时间细看了,就让师兄去搞了。
2013-01-09 19:11:12 756
原创 今天
今天主要看service的代码了,把与user直接的交互弄的更明白点;另外修复了下user的接口,主要是与dispatch的交互操作,如果操作失败是否进行retry的接口,这个接口弄的比较恶心,关键是判断什么情况下需要retry,什么情况下不需要,比如写db错误的话是否需要?正常情况下是需要的,而我偏偏弄到了一个死角,如果一直写失败咋办。。。囧;导师说如果一直写失败的话一般是是硬盘满或者db出问题
2013-01-08 20:20:05 865
原创 互联网之灰度升级
前几天看篇关于灰度升级的ppt,感触挺深的,正好赶上自己手上一个模块要升级线上,就想这样用用看,结果运维的童鞋直接全部升级,然后让我看log有没有问题了,可能是因为我们的系统现在比较小吧,用到的服务和机器相对较少,容易回滚,灰度的意义不大。但灰度升级这一理念还是很值得学习的。其实现实生活中有挺多关于灰度的例子,比如世界上新研发了一种药,一般会慢慢的推广,以防发生大的危险和灾难,这其实是一个很好
2013-01-08 07:48:09 6714 2
原创 今天开始继续写log。。。
今天在公司跟小宝商量以后每天写日志,技术和业务相关的读后感什么的都行如果不写的话请对方吃饭 哈哈这就mark下,准备以后的生活咯~~~娃哈哈~~~坚持坚持
2013-01-07 18:04:03 896 1
原创 今天 securecrt ctrl+s;grep 健身
securecrt在操作的时候一不小心就按到了ctrl+s,导致securecrt假死,这时候再按下ctrl+q,就可以解决这个问题了CTRL-S and CTRL-Q are called flow control characters. They represent an antiquated way of stopping and restarting the flow of outpu
2012-11-16 16:00:34 2319
原创 今天
今天算是很忙碌的一天,主要处理了用户登录、微博的相应接口,同时继续敲我的位置运营的代码早上起来班车上路很堵,大概9点15左右才到,平常8点50能到的;而且班车可能要改地点了,好像孟师傅也有点不乐意改,听他说话的语气和打电话的口气跟往常不一样,毕竟跟我们大家熟悉了,要再换一批新的人,他也别扭,而且要走的新路线红绿灯比较多,可能也会堵车吧;我可能需要坐另外一趟的班车了,不是起点站了,要在在路边等班
2012-11-08 22:58:30 748
原创 现在的我
好久没有静下心来总结了,每天都是瞎忙,没有太多的提高和收获,我这是怎么了?虽然我内心不抵触现在的工作,但总是提不上精神头,总是瞎想,比如想自己的能力太差啦,不能胜任现在的工作(其实还是自己不努力,很多东西没好好学,可我为什么不好好学呢?抵触?不喜欢?反正是平静不下来,总想换工作啊,回老家啊,进国企啊,等等,我太不努力了!!!!!!!!!!)该清醒了,该努力了,boy!!!即使跳槽也要有实力
2012-11-07 19:09:04 937 2
原创 数组下标为负数;strsep实现
数组的下标是否可以为负数?在一般的教材中都会说这个会使得操作越界什么的,但在一些具体的实现中这个技巧有时候还是很给力的。网上很多人说数组下标是不可以为负的,但一个经典的strsep源码中就使用了这个技巧。下面是strsep的一个典型实现,这个函数是用来根据de
2011-07-06 14:00:12 3041 3
原创 判断两个链表是否相交并找出交点
问题描述: 一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。 思路: 1、碰到这个问题,第一印象是采用hash来判断,将两个链表的节点进行hash,然后判断出节点,这种想法当然是可以的。 2、当然采用暴力的方法也是可以的,遍历两个链表,在遍历的过程中进行比较,看节点是否相同。 3、第三种思路是比较奇特的,在编程之美上看到的。先遍历第一个链表到他的尾部,然后将尾部的
2011-06-28 14:55:00 37109 8
原创 数据结构之trie树
今天看了下trie树,总结下: 1、trie树定义: trie树可以看做用位置来标记元素。 下图是一个trie树的例子: 从图中可以知道,从跟节点开始遍历树的话,在一个路径上会生成单词(当然不一定遍历到叶子节点,图中是叶子节点才形成一个单词,但实际中并不一定这样的。可以在路径中的某个子路径上形成一个单词,当然这样的话需要通过一定的标记来说明一个单词已经形成了) 可以通过
2011-06-19 11:42:00 4628 1
原创 windows下配置apache+mysql+php
在window下搭建了一个apache+mysql+php的环境,结果访问php页面都显示空白,测试连接数据库也正常(虽然没有正确显示,但connect 数据库是没有错误的,而且apache的log没有错误信息),但php信息空白,后来才发现时php.ini的文件设置问题。 short_open_tag = Off 改为 short_open_tag = On 其他的步骤就跟网上介
2011-06-09 20:49:00 918
原创 二叉搜索树;二叉查找树;二叉排序树;binary search tree
binary search tree,中文翻译为二叉搜索树、二叉查找树或者二叉排序树。简称为BST 一:二叉搜索树的定义 他的定义与树的定义是类似的,也是一个递归的定义: 1、要么是一棵空树 2、如果不为空,那么其左子树节点的值都小于根节点的值;右子树节点的值都大于根节点的值 3、其左右子树也是二叉搜索树 在算法导论中的定义: 下图中是BST的两个例子: 其中(b)图中
2011-06-09 19:09:00 17941 3
原创 二叉树的遍历;前序 中序 后序遍历二叉树;递归 非递归实现; 重建二叉树;编程之美重建二叉树
最近复习数据结构,重点看了下二叉树,这篇文章主要介绍下二叉树的遍历,包括中序遍历、前序遍历和后序遍历;同时利用二叉树的中序遍历和前序遍历或者后序遍历来重建一棵二叉树。 下面先给出对于某个节点的前序、中序、后序遍历的定义: 1、前序遍历: 先访问该节点,然后在递归遍历其左子树,然后再访问其右子树 2、中序遍历: 先递归遍历其左子树,然后访问该节点,然后再递归遍历其右子树 3、后序遍历: 先递归遍历其左子树,然后递归遍历其右子树,然后在访问该节点。 下面先说明如何实现二叉树的三种遍历,然后
2011-06-02 16:41:00 23599
原创 旋转字符串;编程珠玑第二章;rotate a one-dimensional vector;循环移位数组;编程之美
一:问题描述: 编程珠玑第二章的第二个问题是字符串(或者理解为向量)旋转问题,具体描述如下: rotate a one-dimensional vector of n elements left by i positions. eg: with n = 8; i = 3, the vector abcdefgh is rotated to defghabc. 这个问题在编程之美中也出现了,问题描述: 设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加
2011-05-30 10:07:00 3708 1
原创 位图法;海量数据处理之位图技巧;位图技巧;海量数据;编程珠玑第二章问题A;40亿整数;腾讯面试题
编程珠玑第二章开始提出了三个问题,其中第一个问题是这样的:一个顺序文件至多包括40亿个32位的整数,这些数是无序的,找出一个不在该文件中的32位整数。(可能有数字是不在该文件中的,因为2^32总共包括了42+亿个数,因此肯定有整数是不在该文件中的,这是鸽巢原理吧?) 据说这是腾讯的一道面试题,大概描述如下: 问题描述: 问题的描述大概就是这样了。 刚看到这个题目就想到了bitmap,很适合使用,下面简单说明下。 1、bitmap方法 如果问题对于内存没有要求,可以采用bitmap的方
2011-05-28 11:11:00 6821 2
原创 finding anagrams(颠倒字母而成的字) of a given word; 编程珠玑之如何找出一个单词的换位词; 如何找出字典中的兄弟单词
这篇文章主要是描述一个单词的变体或者变换。 问题的描述: 在编程珠玑里面是这样的: 据说是百度的一个面试题,是这样描述的: 其实总结下问题描述其实是差不多的:给定一个字典(即单词序列),用户输入一个单词,求出字典中单词的变换? 一: 看到这个题目后,直觉是可能是这样的:求出输入单词的全部变换(假如单词的长度是n,则其全部变换有n!个。如果有相同的字母就不是n!了吧?),求出单词的变换后,判断每个变换是否在字典中。 例如对于输入abc,则其变换有3!=6种:abc、acb、bc
2011-05-28 09:33:00 3555
原创 编程珠玑---第一章 阅读笔记
昨天看了编程珠玑的第一章和课后题目,收获很大,大概总结下。 第一章首先提出了一个问题:如果有一个文件最多n(n=1000w)个整数,这些整数都
2011-05-26 17:19:00 1407
原创 想想五年后的你,什么工作值得你去拼命? 转~ 推迟满足感 成长比成功重要
今天看到同学空间里的一篇文章,看了后还是有不少收获的,不得不承认自己急功近利了,太过于急于得到结果了,用今天《把时间当作朋友》这本书里面的一个词汇来提醒下自己:要学会推迟满足感~~~~哈哈~~~~ 人生是一个长跑,很长很长的长跑~~~ 突然发现自己好久没有做下规划了,上次的规划是一年前的,多少需要改变下了~~~周末计划下未来的五年吧~包括找工作、工作的发展、职业的发展、个人的成长等 一定要记住:成长比成功重要,永远永远!!! 成长比刚毕业的薪水重要的多的多 成长比一个帝都户口重要的多的多 成长比
2011-05-18 23:09:00 2319
原创 编程之美---求二进制数中1的个数
问题描述:对于一个字节的无符号整型变量,求其二进制表示中1的个数。 解答: 看到这个问题,一个最直接的想法就是%2来统计1的个数了,实现如下: int count(type n) { int count = 0; while(n != 0) { if(n%2 == 1) { count++; } n = n/2; } return count; } 解法二: int count(type n) { int count = 0; while(n != 0) { n
2011-05-08 10:19:00 11737 4
原创 multiple definition of 变量重复定义
test-1.0使用#ifndef只是防止了头文件被重复包含(其实本例中只有一个头件,不会存在重复包含的问题),但是无法防止变量被重复定义。 今天遇到一个问题,与下面描述情况类似: # vi test.c ------------------------------- #include #include "test.h" extern i; extern void test1(); extern void test2();
2011-03-26 11:22:00 2726
原创 C C++全局变量初始化 initializer element is not constant 错误 c++中为什么不能对全局变量在函数外赋值
今天师弟的一个问题 //错误代码 node *p; p = new node; int main(void) {…} //修改后 node *p = new node; int main(void) {…} 找了好久不知道什么错误,我虽然很快帮他修改正确了,但却不明白其实质 查了好久,可能有点专牛角尖,是关于c c++全局变量赋值的问题,同时也关系到初始化和赋值的关系等 http://topic.csdn.net/u/20090129/19/d8661d27-4790-46
2011-02-28 17:34:00 20523 1
原创 gdb调试多进程 gdb 多进程 多线程调试方法 gdb调试
关于gdb调试多进程很早之前就看过,但一直没有总结很深入的学习,今天又碰到这个问题了,记录下 记得kk跟我说过,在开发程序的时候尽量少调试,尽量少使用gdb等调试工具,尽量多的使用log等方式来定位错误,这样会大大减少调试所需的时间和精力,同时也能快速的定位问题。当然,利用gdb调试还是有很多的优势的,比如对于我这个菜鸟来说,可以好好学习下强大的gdb~ 关于gdb的基本调试,基本已经掌握了,经常会使用的一些命令有: s----step n----next c-----continue p---
2011-02-26 20:16:00 5425
原创 unp pipe popen函数
在unix中pipe是一种很早的进程间通讯的手段,主要用于有血缘关系的进程(例如父子进程等)。pipe是半双工的,即数据流的方向是单向的。关于pipe的内容在unp的pipe和fifo章节进行总结吧,本文主要分析popen函数。 标准I/O库提供了popen函数,原型如下: FILE *popen(const char *cmd, const char *type); int pclose(FILE *stream); 其中cmd是一个shell命令行,当调用popen函数时,会创建一个pi
2011-02-26 12:17:00 1656
原创 UNP第二章 第三章 Posix IPC & system v IPC
最近两天将UNP的第二章和第三章看了下,主要讲解了unix系统下两种IPC,包括POSIX的IPC和system v下的IPC,两种IPC的使用是不相同的。 POSIX下IPC主要包括三种: posix message queue posix semaphores posix shared memory sysytem v IPC包括: system v message queue system v semaphores system v shared memory 在POSIX I
2011-02-23 15:23:00 3067 1
原创 UNIX网络编程 UNP 卷2 第一章
今天开始拜读UNP这部神作了~~~ 第一章主要是简介内容,包括对经典IPC和同步机制的描述。虽然卷2主要是讲解IPC的,但这个IPC包括了平常所说的进程间通讯和同步。 PIPE FIFO Message Queue Mutex Locks Semaphores Shared memory RPC socket(主要在卷1) 本章主要分析了IPC对象的持续性:process、kernel和filesystem三种类型的持续性,可以由下图表示:
2011-02-21 16:35:00 1699
原创 __cdecl调用 C语言变参
__cdecl调用 在C语言中,函数调用支持不定参数,例如printf函数,可以不知道参数的个数,eg: void err_info(const char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); } 这是如何实现的呢?如何支持变参的呢? 下面简要介绍下__cdecl调用方式,当然还有很多其他的调用方式,不过目前用不到 函数调用需要
2011-01-19 09:52:00 2333
原创 linux sticky bit 目录权限 rwt权限
今天看到有个目录的权限是rwxrwxrwt 很惊讶这个t是什么,怎么不是x或者-呢?搜了下发现: 这个t代表是所谓的sticky bit。 sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除
2011-01-16 12:53:00 10013 1
原创 linux下进程ID linux下set user id和set group id总结 linux下进程的各个ID总结 user ID in process APUE 第四章
linux中每个进程有六个或者更多的ID与其关联: real user id一般是从passwd文件中获取的,一般是不会发生改变的,当然也可以改变。可以理解为启动该进程的用户,即哪个用户启动了该进程,那么该进程的real user id就是该用户的id effective user id决定了进程访问文件的权限,一般情况下是与real user id是相同的,但可以改变 saved set-user-id 当该程序被执行时,save set-user-i
2011-01-15 17:16:00 9443
原创 APUE 第三章 文件I/O 文件的打开、读写、设置等
本章介绍了UNIX系统中文件操作的函数,主要包括open、read、write、lseek、close等。这些函数被称为unbuffered I/O,unbuffered意味着每次调用read、write都会调用一个系统调用,这些函数不是ISO C的组成部分,但是是POSIX的组成部分。 本章的所有内容基本可以用这样一个图来描述,理解了这个图,基本就理解了本章的内容。 从上图可以看出在整个关系链中,出现了进程、文件描述符(fd)、文件表、进程表、v-node表等。 系统维护了一张进程表,其中的每一
2011-01-15 10:49:00 1495
原创 APUE 第七章 进程的运行环境
APUE第七章主要分享了进程的运行环境。主要内容包括: 1、main函数 在这节里面主要说明了在我们平常利用的main函数是如何被调用的。其实从程序开发人员的角度会考虑这样一个问题,编译后 的程序为什么会运行?为什么要有main函数等等。main函数是不是程序最开始运行的地方,等等。 其实当一个C程序在运行前,系统会做很多的初始化工作,然后再调用exec函数来运行C程序。 2、进程的终止 进程的终止方式有8种:
2010-12-11 10:46:00 970 1
原创 2010年11月27日~
好久没写东西了。。。 今天跟着boss去面试,还是挺有感触的。 boss和李老师的专业水平确实很高,我不得不承认,只是跟我的方向不同而已,如果我做硬件或者通信方向的话收获肯定比现在大的多的多,毕竟两位是中国最高等研究机构的科研人员,水平确实很高。 上次去高交会,碰见了静静,很令人惊奇,居然这么碰巧的就碰见了,毕竟事前没有联系,而且是我在会场逛的时候碰到的,算是有种他乡遇故知的感觉吧,吃饭的时候聊了不少,收获也很多。我基本是个书呆子,脑子很呆板,不会太多的变通,中国教育的典型失败案例,虽然我从来没有抱怨
2010-11-27 22:10:00 887
原创 堆排序
对于堆排序来说,首先需要做的是要建堆,建堆是一个不断调整堆的过程,能够在线性时间内完成。 堆排序的过程 1、建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程,相当于o(h1)+o(h2)…+o(hlen/2) 其中h表示节点的深度,len/2表示节点的个数,这是一个求和的过程,结果是线性的O(n)。 2、调整堆:调整堆在构建堆的过程中会用到,而且在堆排序过程中也会用到。利用的
2010-10-28 20:55:00 10215
原创 splint parse error!
最近使用splint的时候一直出现parse error,搜了很多资料也没个具体的说法,而且大家很多人遇到了这个问题。。在一个国外的网站上无意间看到一个不知道是不是splint的bug了,说是变量在使用前需要先定义,不知道是不是这个意思. https://lab.cs.ru.nl/laquso/Case_studies:OpenSSH_Security_Analysis_with_Splint#Parse_Errors 我在使用中遇到的问题是: int main(void) {
2010-10-27 20:50:00 3335 2
原创 pthread_create 内存泄漏 valgrind
pthread_create()在使用的过程中遇到的一个问题: 今天在使用线程的时候出现了一个问题,利用valgrind监测程序的运行时出现了memory leak。感觉到很奇怪,这样的情况应该不会发生的啊,毕竟是系统的函数。去网上搜了下,发现国内国外都有这个问题 呵呵。大概了解了下原因:创建的线程需要进行join或者detach状态,这样才能保证创建线程过程中分配的内存得以释放,才能避免memory leak的情况。因此,记得需要将线程进行join或者detach。
2010-10-22 21:25:00 7261
原创 vim自动加载模板的插件~
记得之前实习的时候新建一个文件.h .c .cpp后会自动加一些文件说明,比如文件的名字,创建日期、创建者等等一些信息,想起来使用很方便,就自己找了下怎么做,没想到这么难搜,不过还是被我找到了~~~CU上一个帖子:http://bbs.chinaunix.net/viewthread.php?tid=8952581、将文件放入 plugin(~/.vim/plugin/ 或者 $HOME/vimfiles/plugin/)目录2、.vimrc 加入:let g:template_load = 1le
2010-10-18 16:02:00 6311
原创 cppunit测试工具
<br />前段时间用过CPPunit,但都是直接拿来用的,今天自己装了下,测试通过,不过也花费了很多时间。。<br />1、下载cppunit,可以从sourceforge上找<br />2、解压 tar。。。<br />3、安装 ./configure make make install<br />4、配置:<br />将cppunit-version目录下include目录的cppunit目录cp到/usr/include下<br />5、配置链接库:<br />修改/etc/ld.so.co
2010-10-17 11:24:00 1079
原创 C++开发工具和库
<br /><br />希望采用的有CPPUNIT、log4cxx<br />工具包括:gcov、gprof、valgrind、splint(貌似只能用于C)<br />希望以后坚持使用!!<br /> <br />http://blog.csdn.net/uestc_huan/archive/2008/10/23/3126651.aspx<br /> <br />在项目开发中,借助一定的软件工具,可以大大提高工作效率,方便项目管理和团队合作。<br />这里介绍几个软件,一个合格的C++程序员应该了解和掌
2010-10-16 20:23:00 1647
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人