自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冷风吹醒

http://weibo.com/zzmfish

  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 MongoDB多数据中心部署方案

MongoDB支持多种部署方式,从最基本的说起。 1、单实例用于学习或开发,一般不在生产环境使用。 2、副本集用于备份、容灾、读写分离。主节点(Primary)支持读写操作,一般设置2个以上的辅节点(Secondary),读支持读操作。当主节点不可用时,会重新选举产生新的主节点。 3、分片当一台服务器性能无法满足时,可以通过分片实现负载均衡,提高处理性能...

2018-12-17 10:01:59 1175

原创 使用inotifywait同步修改的文件到服务器

一般我们会用sshfs把服务器的目录挂载到本地,如果用IDE直接在挂载目录上开发,会非常慢。如果把代码checkout到本地,使用IDE开发,然后把代码复制到服务器运行,当项目目录比较大的时候也是比较慢。如果只复制修改的文件,会比较麻烦,而且路径经常变化也容易出错。下面一段脚本是使用Linux inotify监视文件变化,然后自动复制改动的文件到服务器(前提是使用sshfs挂载,如果没有挂载可把cp

2015-09-28 17:32:42 2872

原创 PlayFramework “unable to create new native thread”问题

PlayFramework线程池设置PlayFramework是通过配置文件conf/application.conf来设置线程池大小:#Application modeapplication.mode=dev# Execution pool# ~~~~~# Default to 1 thread in DEV mode or (nb processors + 1) threads in PR

2015-04-20 14:03:03 1762

原创 Python的unittest自动化测试框架

项目代码越来越复杂,并且对质量要求越来越高,就开始需要自动化测试。测试框架对比python有很多自动化测试框架可以选择: python自带的unittest第三方的Robot Framework其他第三方测试框架:PyUnit等对开发人员来说,一般不想在测试上花太多时间,因此希望这个测试框架容易学习、使用方便,功能不用很强大,但可以满足一般需要。公司有团队使

2015-01-14 21:22:22 5512

原创 使用git管理服务器开发环境配置

使用git的好处git是一个分布式版本管理系统,和cvs、svn有很大的不同。git的工作目录包含完整的仓库,不需要搭建服务器,不需配置繁琐的用户权限。git会在当前目录创建.git目录作为仓库,不会影响其他文件。如果不想要这个仓库,只需把.git目录删除就可以了。使用git管理开发环境配置有如下好处:1) 开发机一般有标准的配置文件(字符集、缩进等),但每个人难免想做

2014-03-26 14:46:00 721

原创 Linux虚拟机文件系统突然变成只读

虚拟机Linux在svn checkout代码过程中出现错误,“/”文件系统突然变成只读,dmsg可以看到内核出现IO错误。重启虚拟机表示磁盘错误,用命令“fsck / -y”修复磁盘错误。这种情况出现过几次,有时修复磁盘之后可以继续启动,后来干脆就无法启动了。重新安装虚拟机并checkout代码,也很容易出现这个问题。宿主系统运行任务比较多,系统比较慢。有一次svn checkout出错,在

2014-03-26 14:08:49 5972

原创 为小米盒子做的两个软件:桌面和浏览器

Launcher基本功能:列出所有程序,方向键选择,确认键启动。已知问题:由于不会自动更新列表,因此安装新软件后需要重启盒子才可看到新软件。特色:1) 程序启动首先进入小米桌面;2) “小米桌面”图标放到最前。下载:https://github.com/zzmfish/MiBoxLauncher/raw/master/MiBoxLauncher.apk源码:

2013-07-22 21:49:53 6447

原创 vim搜索C++代码插件

vim下一般使用cscope来搜索代码,通过快捷键自动跳转到函数或类的定义。可是cscope查找函数或类的定义却很不准确,经常列出几百个结果,让人翻页翻到手软。很多时候用正则表达式搜索代码反而更加准确,比如C++类定义可用正则表达式“\bclass 类名\s*[:{\n]”来搜索。因此我做了一个vim插件,可以像cscope一样用快捷键搜索光标下单词的函数或类定义,或仅仅是搜索字符串。没有复杂

2013-07-08 14:13:37 1255

原创 华为T8950d和小米手机1对比

T8950d和小米1S的价格和配置相近,刚好手头也有小米手机1(注意不是1S!)和T8950d,就对比了一下。小米手机1(左)和T8950d(右)的跑分对比,明显米1高出1截:拍照对比(右边是T8950d),明显T8950d更好:其他:外放音质很好,通话声音也很清晰,听起来很舒服;4.5寸IPS屏幕不用说,看起来爽啊;机身有点大,握起来还是有点别扭,没有

2013-01-27 07:47:57 1455

原创 Linux mmap调用使用经验

Linux的mmap系统调用(libc封装了同名函数)可以分配一段匿名的虚拟内存区域,也可以映射一个文件到内存。下面讨论匿名映射。写一个简单的测试程序(见附件),启动时显示程序的虚拟内存和物理内存:VmSize:     4300 kBVmRSS:       356 kB分配虚拟内存区域下面代码是分配10MB的虚拟内存区域:int bufferlen = 10 <

2013-01-27 07:18:29 1041

原创 ELF动态库加载技术

库用于将相似函数打包在一个单元中。Linux支持两种类型的库:静态库(在编译时静态绑定到程序)和动态库(在运行时绑定到程序)。Linux系统使用的动态库是ELF格式,后缀名为so。1 加载动态库内部划分为段,段分为不同的类型: PT_LOAD段:包含代码或数据,是需要被映射到内存中的,每个段有不同的访问权限(读、些、执行);PT_DYNAMIC段:包含动态链接信息,如符

2012-12-31 12:14:36 2052

原创 利用堆栈回溯、addr2line和Graphviz生成运行时函数调用图

现在的软件源代码动则千万行,初学者常常感到迷惘,如果能自动生成关键函数的调用关系图,则思路可以清晰许多。如下面这幅图展示了WebKit网页渲染的部分函数执行过程,比单纯地看代码直观多了。代码下载点这里,包括三个文件backtrace.h、backtrace.c和callgraph.py。1. 堆栈回溯比如要分析libwebcore.so里面的函数调用,首先要知道这个库文件在

2012-08-06 16:38:09 3563 2

原创 Ubuntu下使用ecryptfs加密重要文件

从前有一个摄影师,他不懂加密重要文件,也不懂修电脑,结果你懂的。由此可见对电脑上的重要文件(如公司机密、个人艳照等)进行加密储存的重要性。        ecryptfs是Linux下的企业级加密文件系统,使用十分方便,只需简单几条命令,即可实现对目录的加密。        (1) 安装        Ubuntu安装ecryptfs:sudo apt-get install

2012-08-06 16:31:13 2894

原创 XChat屏幕聊天插件

IRC聊天室介绍1. XChat是什么?XChat是一个IRC聊天客户端。2. IRC是什么?维基百科:IRC(Internet Relay Chat的缩写,“因特网中继聊天”)是一种通过网络的即时聊天方式。其主要用于群体聊天,但同样也可以用于个人对个人的聊天。3. IRC聊天室和QQ群有什么区别?IRC聊天室无需注册、无需认证自由出入,没有人数限制;而QQ群需要注册QQ号

2011-11-02 17:19:15 2312 2

原创 Linux screen工具使用教程

许多人使用SecureCRT等软件登录远程服务器,并且觉得其克隆会话功能很好用。其实只要一个简单的终端软件(如gnome-terminal、putty、xterm等)配合screen就可以达到类似的效果,而且screen还有很多更强大的功能。        如果你的机器上没有

2011-09-27 20:25:28 1985

原创 谨慎使用效率极低的std::list.size()函数

linux环境下的一个刚完成的库函数效率极低,经测试发现瓶颈在std::list.size()函数,而我是这样使用的:while (aList.size()) { ... }。  查看stl源码(SGI版本,一般Linux都是使用这个)发现std::list.size()要遍

2011-08-27 15:10:34 3417

原创 禁止memcached使用SWAP

我对memcached不是很熟悉,只会基本的使用,但常听到人们讨论memcached使用SWAP的问题。一种说法是memcached使用SWAP可能会导致memcached拒绝连接,对此我不太了解,也无法理解:SWAP对应用程序来说应该是透明的,不应该导致程序出现异常反应。但SW

2011-08-07 09:34:17 2460

原创 C++编译优化的几个例子

程序员一般都喜欢谈论编程技巧,尤其是能优化程序效率的技巧,C++程序员都不例外。但很多广泛流传的技巧都是基于一个假设,就是编译器非常愚蠢。但事实上刚好相反,现在的编译器其实非常聪明。不信的话你看下面的例子。int test(){ int result = 0; int i; for (i = 1; i test函数的作用是返回从1加到100的值,大家都知道结果是5050。使用gcc编译器将其编译成汇编:gcc -O2 -S test.cvi test.s生成的汇编:te

2011-03-07 08:16:00 1008

原创 fork和vfork函数介绍

fork在Linux下如果要创建新的进程,可以调用fork函数,这个函数会通过复制当前进程来创建新进程。子进程会复制父进程的页表而共享父进程的内存,使用写时复制机制,只有当任一个程序要更改内存数据时,操作系统才会复制对应的内存页。因此fork函数的执行效率还是比较高的。x86保护模式采用二级页面映射,一级页表每项映射4MB内存,二级页表每项映射4KB内存。每个页表项占用4B内存,一级页表大小为进程使用虚拟内存的1/1000000,二级页表为1/1000。对一个使用1GB虚拟内存的程序来说,其页表大小约为1M

2010-06-27 11:55:00 746

原创 GCC 编译试验:引用变量和循环优化

(1)引用变量C++中的指针和引用就像两兄弟,他们几乎有着相同的功能,在大多数情况下都可以互相替换。指针可用CPU间接寻址来实现,其执行效率会比寄存器寻址要慢。引用常被说成是一种别名,可是CPU指令系统里并没有引用和别名这类东西,那么它是如何实现的呢?它会比指针更快吗?为搞明白这个问题,我做了一次试验。对下面这点代码:void test1(int *i){  (

2010-02-27 15:19:00 999

原创 Linux歌词显示插件

想起歌词显示,大家会想到Windows下大名鼎鼎的千千静听。Linux下也有很多音乐播放器,但一般不会有带歌词显示功能。幸好Linux下的播放器一般支持插件开发,这样许多爱好者就能为播放器增加各种功能,其中就有许多中国人开发的歌词显示插件(没有用过老外的歌词插件,可能老外对这个功能不感冒),效果还不错,而且都是开源的。下面就介绍其中三个(其项目主页都在Google Code上): Show

2010-01-02 21:53:00 1911

原创 打造Linux命令行下的“回收站”

Linux下也有回收站功能,但只在Gnome等桌面环境下面。在终端下面是用rm命令来删除文件,就是直接从硬盘上删除了。要是你一不小心删错了文件,只能采用一些极其复杂的数据恢复工具来补救,而且还不一定有效。我就有过这样的经历,一不小心删错了文件,以致几天的工作成果立马灰飞烟灭。这样的事情发生一次都太多了。我们得在错误中学会成长,为了避免悲剧再次发生,我写了一个具有回收站功能的删除脚本用来代替

2009-12-20 11:34:00 1368 1

原创 小白也玩Archlinux

用ubuntu应该也有两年了,最近想转换一下口味,试试Archlinux。主要是希望通过对系统的DIY来优化系统的执行效率,并掌握更多的Linux系统知识。Archlinux就是满足我需要的这样一个系统:它是为i686处理器编译优化的(不对i586及以下处理器进行兼容),所以能达到更快的执行速度;它提供一个轻量级的基础操作系统(没有图形界面并且只有一些最基本的命令行工具),用户在此基础上定

2009-12-20 11:29:00 2155

原创 做一个WordPress的Picasa插件

一直想为我的博客加上相册功能(这样我照的相片才有人看),但始终没有实现。首先我不会在自己的博客上开发一个完整的相册功能,一来费时费力,二来我的空间容量有限(才100M呢),放不了多少照片。那么我就需要选择一个第三方相册服务,不但容量要大,而且最好能提供开发API,这样我就比较容易把相册功能嵌入到我的博客中。毫无悬念地,我选择了Google Picasa。WordPress博客支持插件开

2009-12-20 11:10:00 1672 1

原创 当天才遇上白痴

在很久很久以前,在奥利地有一个小孩呱呱堕地。这小孩在3岁时就开始学弹琴,5岁就已经可以作曲,6岁时在欧洲巡回演出并造成极大的轰动。之后,小孩逐渐长大成帅哥,并开始在宫廷乐队里担任首席乐师。由于这位帅哥过于风流倜傥,让同样认为自己很帅的大主教强烈不满,最终把他给解雇了。生性风流的他从不甘于被人管束,自然也不会有一份稳定的工作。尽管他不停地作曲并在音乐上取得了巨大的成功,生活依然贫困潦倒。

2009-12-20 11:07:00 594

原创 出租屋生活初体验

厌倦了每天挤两个小时公交车的生活,终于下定决心要租房子了。租房子的过程很有效率,周五上网找信息、周六实地考察、周日正式搬进。连接宽带每月要50元,我没有装。虽然我坚持认为不是钱的问题,可是如果可以免费上网的话,我是一定会用的。没有网络,电脑也没有多大用处了,所以我的笔记本大多数时候就放在公司里,只带回去出租屋一次。脱离了丰富多彩的网络世界,晚上的生活就简单了——洗澡、休息、看书、睡觉。就这

2009-12-20 11:06:00 676

原创 动物展受骗记&长洲岛游记

一日,别人给我两张黄埔珍稀动物展的门票优惠券。上面的介绍说会有企鹅、海豹、鳄鱼,图片上还有海龟和很多色彩斑斓的海洋动物,地点在黄埔区老体育馆,时间在2月21日(周六)和22日(周日),门票30元,有优惠券就15元,可同时参观历史文化展(据说有兵马俑)。上面还有这样一句话:“记得带纸和笔,回来别忘了写作文。”可以知道这是学校发给学生的。看完介绍,我就觉得动物展的内容应该和广州海洋馆差不多。海

2009-12-20 11:03:00 2227

原创 用RSS阅读工具订阅博客

现在写博客的人已经有很多了,身边的朋友几乎都有个人博客的(QQ空间也算一个)。面对这么多亲朋好友的博客,你如何去记忆这么多地址呢?当博客内容更新的时候,你怎么及时知道呢?QQ空间就是牛,它与QQ的集成轻易地把这两个问题都解决了,加上QQ的普及率,它的红火真不是没有道理的。(你没有用过QQ?地球太危险了,你还是赶快回火星吧。)我也一直在用QQ空间,虽然我很讨厌它的90后脑残风格,可是它与QQ的集

2009-12-20 09:45:00 1423

利用堆栈回溯、addr2line和Graphviz生成运行时函数调用图

现在的软件源代码动则千万行,初学者常常感到迷惘,如果能自动生成关键函数的调用关系图,则思路可以清晰许多。如下面这幅图展示了WebKit网页渲染的部分函数执行过程,比单纯地看代码直观多了。 http://blog.csdn.net/zzmfish/article/details/7835956

2012-08-06

空空如也

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

TA关注的人

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