自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一个小型的网页抓取系统的架构设计

一个小型的网页抓取系统的架构设计         网页抓取服务是互联网中的常用服务,在搜索引擎中spider(网页抓取爬虫)是必需的核心服务。搜索引擎的衡量指标“多、快、准、新”四个指标中,多、快、新都是对spider的要求。搜索引擎公司比如google、baidu都维护者自己负责的spider系统。当然他们的系统很复杂,在这里我们介绍一个小型的网页抓取系统的架构,目标是快速的抓取某个或者

2014-11-07 12:23:43 1940 2

原创 数据库的水平扩展与垂直扩展

数据库水平扩展与垂直扩展          在互联网应用中,数据库经常是我们存储和访问数据的常用介质。随着负载的增大,对数据库读写性能的要求往往成为很大的挑战。在这种情况下我们可以考虑数据库相关的replication机制提高读写的性能。由于一般采用一写多读的replication机制(写master同步到多个slaves),导致这样的机制往往会有缺陷。首先它依赖于读写的比例,如果写的操作过多

2014-10-31 17:41:53 11293

原创 json-cpp 库使用

Json-cpp         是一个使用c++开发的面向对象的json库。 核心数据结构         Reader是json-cpp数据的读取器,可以从文件流,字符串中读取json数据,使用下面的接口:         boolparse( const std::string &document,                   Value &root,

2014-08-03 12:03:42 2895

原创 linux句柄泄露问题查看

背景:我们在开发linux在线服务器的时候经常会遇会句柄泄露的问题。因为在linux系统设计里面遵循一切都是文件的原则,即磁盘文件、目录、网络套接字、磁盘、管道等,所有这些都是文件,在我们进行打开的时候会返回一个fd,即是文件句柄。如果频繁的打开文件,或者打开网络套接字而忘记释放就会有句柄泄露的现象。在linux系统中对进程可以调用的文件句柄数进行了限制,在默认情况下每个进程可以调用的最大句柄

2014-07-27 15:14:47 16694 2

原创 使用enca进行字符集转码

在linux进行开发与运维的时候,我们经常遇到字符编码的问题,系统字符设置、vimrc fileencoding设置、终端设置往往搞的晕头转向,当一个文件出现乱码的时候,我们通常不能识别它是什么编码的,而从不知道如果正确解码。         今天使用enca这个字符集编解码工具,感觉比incov好用很多,安装:1)下载enca工具  wget http://dl.cihar.com/

2014-04-24 20:22:34 3469

原创 C++字符串split方法

在c++ string中并没有split方法,当然通过find方法可以实现一个split字符串的方法,有没有其他的更简便的方法呢?可以通过std::getline函数实现split 字符串的功能。        istream& getline (istream& is, string& str, char delim);getline函数从is中提取字符串并放到str里面,直到遇到del

2014-04-10 21:10:55 1892

原创 宏与namespace

宏在程序预处理阶段完成替换,namespace是在编译的阶段生效,所以宏与namespace无关,即在namespace内部和外部同样生效,所以不能使用名字空间来定义宏的使用范围。或者这个也是c++不提倡使用宏的原因。  #include namespace TEST { #define MAX_NUM  1024 } int main(){    pr

2014-04-10 20:32:32 7571

原创 C语言如果通过函数名调用函数?

可能你会想怎么会有这么奇葩的需求,但在实际的工程中,这种需求是十分常见的。比如我在代码是实现了几种场景的应对函数(如果是c++中可能是自己定义的类,为了使得讨论变得简单我们假设开发语言是C),并且想通过程序启动的参数(或者配置),来决定调用哪个函数。         举个简单的例子来说,我定义了下面的函数:                   voidint_handler() {  pr

2014-02-11 17:40:17 3862

原创 Python re(正则表达式)模块

Python re(正则表达式)模块Python支持的正则表达式元字符和语法:re模块  Python可以通过re模块来实现使用正则表达式匹配字符串,我们可以通过查看~/installs/python/lib/python2.7/re.py 文件查看re提供的方法,主要使用的下面的几个接口:l  def match(pattern, string, flags=0):

2014-01-20 20:11:40 1189

原创 如果让自己的代码更好的让其他人理解

最近接手一个较大项目的代码,在阅读代码的过程中,发现下面可以利于自己的代码被其他人的tips,或许都是简单的规则,但是却发现十分的重要。1)凡是数据结构中声明的变量都要有注释标识它的作用;2)凡是全局变量的声明都需要注释;3)凡是函数的声明处都需要添加注释;4)全局变量的命名要一望便知,这个变量名不能是一个很通用的名词,可以考虑使用g_前缀。

2014-01-20 20:02:29 606

原创 vim 浏览文件窗口插件

在vim中进行编辑的时候,经常有浏览文件的需求。当我们知道文件名的时候,可以通过sp命令横向打开一个新的文件,但是这种方法并不方便,因为当你对当前目录不熟悉的情况下,还需要退出编辑器,查看当前的目录下的文件。那么有没有方面的浏览方式呢?其实vim有标准的插件支持这个功能,在vim7.0后,这个标准插件是netrw.vim,它已经伴随vim发布,不需要安装。在vim中尝试打开目录的时候,vim会

2013-12-29 21:18:18 1767

原创 vim taglist 使用

taglist用于看文件中出现的函数、变量与宏,Taglist 安装过程如下:1)  解压taglist_45.zip,可以看到doc、plugin目录2) >letTlist_Exit_OnlyWindow = 1 "设置焦点在Tlist窗口里面 letTlist_GainFocus_On_ToggleOpen=1"按照名字排序letTlist_Sort_Type =

2013-12-25 21:19:51 562

原创 性能优化再议

有关性能优化,我们都知道”过早的性能优化是程序设计中的万恶之源(Donald Knuth)”,因为性能优化可能打破程序的可读性、可维护性甚至正确性,所以在进行性能优化的时候必须三思而后行。在性能优化之前我们必须清楚的了解到了性能的问题确切发生在什么位置,如果不知道哪些地方出问题就开始修理可能会导致大的时间浪费。举上段时间的一个bad case,我们的程序发现性能上的问题,简单Review代

2013-11-26 23:45:19 558

原创 linux 静态库使用经验

在编写程序的过程中,对于一些接口往往抽象成lib库的形式,甚至有些程序只有一个主程序,其他接口的调用都是库的形式存在。较多的使用库会比较利于程序的维护,因为我们的程序都可以被其他的人使用,但是往往库的存在会增加一些编译上的问题。        在linux中有静态库和动态库两种,两者各有优劣,对于后端伺服的服务器来说,我们更倾向于静态库,因为它部署方便,效率更高,而后端的服务器并不在意那些静态

2013-09-27 13:29:40 1149

原创 老手是如果教新手的(搞笑篇)

由发生在某公司的真实事件改编. 新人:         各位高工,为毛make能过,make -j32过不了? 高工A:         make-j32出错原因应该是并发编译多库依赖的问题,比如a库依赖b库,如果并发先编译到a库,就会报错,再搞下ok了,应该是那些静态库都生成了,B同学,这事你怎么看?高工B:    我觉得不知道为什么,可能中病毒了。高工C:

2013-09-24 23:19:19 575

原创 老手是如果教新手写程序的

一个新手同学写了一个从mysql中导出数据的程序,时间太长了要80分钟,我们如何去优化它呢?老手:你可以试试采用分城市导出而不是一下导出全国数据,因为最后生成的数据是以城市为单位的; 新手:我按照城市的citycode 取模10,每次导出10分之一城市的数据,这样需要的内存减少了,处理的时间下降到60分钟了。老手:你的程序还是串行处理的,你可以采用多进程的方式,取模值作为参数传给你

2013-09-24 23:12:54 709

翻译 mysql_use_result 使用

来自:http://dev.mysql.com/doc/refman/5.0/en/mysql-use-result.html20.6.7.71. mysql_use_result()MYSQL_RES*mysql_use_result(MYSQL *mysql)描述:    对于每个可以产生一个结果集的命令(比如select、show、describe, explain, che

2013-09-08 21:57:09 2438

原创 使用GDB 调试STL方法

背景:当我们用gdb调试stl时候,往往看到的是stl内部变量的值,比如打印一个string a输出:(gdb) p a$1 = {  static npos = 18446744073709551615,   _M_dataplus = {    > = {     > = {},},     members ofstd::basic_string,std::

2013-08-23 11:40:25 12779 2

原创 系统性能调优经验

在开发对外提供服务的模块的时候,系统的性能经常会是令我们头疼的问题,具体系统性能的定义与瓶颈的定位方法,可以参考陈皓的这篇文章:性能调优攻略http://coolshell.cn/articles/7490.html 大牛的这篇文章还是很全面的。下面我会以我们的一些工程经验和曾经遇到过的问题,来实例化一些系统性能调优的经验。 Ø  代码级别1.       减少数据copy

2013-08-22 19:11:49 4228

原创 C 程序员趟坑之C++ remove_if函数模板

最近由于项目需要,进行了一些C++项目的开发。由于以前一直是用C开发,开发过程中难免趟了些小坑,记录如下:       实现一个代码片段要实现vector中一些元素的删除功能,使用到了C++的函数模板remove_if,由于对这个函数不够熟悉,以为它会返回处理过后的vector,继续对这个vector使用触发了BUG,查看了http://www.cplusplus.com/referenc

2013-03-27 21:00:05 1324

原创 编译-O 选项对性能提升作用

GCC -O 选项         这个选项控制所有的优化等级。使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候。-O设置一共有五种:-O0、-O1、-O2、-O3和-Os。让我们来逐一考察各个优化等级:-O0:这个等级(字母“O”后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级。这样就不会优化

2013-03-27 20:34:57 1599

原创 Json 数据格式与使用

前半部分内容来自http://www.json.org/json-zh.htmlJSON(JavaScript ObjectNotation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集

2013-03-05 20:42:33 1308

原创 bashrc 与 bashprofile文件区别

一个windows背景的同事,刚开始做linux系统上的开发,咨询为什么他的bin程序找不到相应的so文件,告知他需要配置LD_LIBRARY_PATH变量来指定动态链接库位置,方法是在~/.bashrc 或者 ~/.bash_profile中加入export语句,比如:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/tools/svn/lib/便可以查

2013-02-26 20:57:06 487

空空如也

空空如也

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

TA关注的人

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