岚天逸见

2012年7月24日 #

Dash与Bash的语法区别

摘要: 本文系转载,原文URL为:http://www.igigo.net/archives/169如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(355) 评论(0) 推荐(0)

MOOON-server新消息处理接口

摘要: MOOON-server提供了一个通用的TCP框架,并对包的解析抽象出了IPacketHandler接口,这个接口提供了无限制的宽容度,支持任何协议,但是增加了使用复杂。 由于大多数协议,都会定义一个消息包大小字段,基于这个前提,MOOON-server... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(89) 评论(0) 推荐(0)

不再担心日志文件过大:通用日志滚动脚本

摘要: #!/bin/sh# https://github.com/eyjian/mooon/blob/master/mooon/shell/log_rotater.sh# Writed by yijian on 2012/7/22## Linux自带的工具logrotate... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(452) 评论(1) 推荐(0)

改进后的日志类CLogger

摘要: 在原有的基础上增加了module_name,表示模块名,当一个系统由多模块组成时,输出的日志将更加清晰,使用方法,以MOOON-agent中的为例:点击(此处)折叠或打开#define AGENT_MODULE_NAME "AGENT"#define AGENT_LO... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(325) 评论(0) 推荐(0)

开发理念和用户体验

摘要: 开发理念:要有追求美的意识,简就是美。要形成自己的思想,设计需要灵魂。模式模式有时是恶魔,它容易让你走上抄袭模仿之路。把职责单一作为第一原则,并努力遵守,将让你柳暗花明又一村。一切源于生活,多和生活类比,能让理解更为深刻透彻。始终抱严谨心态,用心思考,细节决定品质。用... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(171) 评论(0) 推荐(0)

怎么做自动化

摘要: 在做系统时,不应当盲目地去做自动化,原因有两点:1.有些自动化的代价非常高,反不如人工简单实在2.有些自动化不能保证系统的正确性,它需要人工确认不过,这些也并不应当成为推进自动化的理由,自动化它可以带来两方面巨大的好处:1.大大降低运维工作量2.快速的进行故障恢复所以... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(220) 评论(0) 推荐(0)

来自mooon的最简单的日志类CSimpleLogger

摘要: /** * 单个头文件,可即时独立使用,只要定义了宏NOT_WITH_MOOON,即不依赖于mooon * 简单的写日志类,非线程安全,提供按大小滚动功能 * 不追求功能,也不追求性能,只求简单,若要功能强、性能高,可以使用CLogger * * 使用方法: * 1)... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(164) 评论(0) 推荐(0)

优雅的让一个类在线程安全和线程非安全间切换

摘要: 一个良好的多线程库,不应当一刀切的全加锁。因为有些时候,虽然是多线程环境,但可能依照设计一个类只会被一个线程操作,这个时候加锁是多余的,纯浪费性能,但另一些场景又需要它是线程安全的。假设有一个类X:class X{public: void xoo();};这里总... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(177) 评论(0) 推荐(0)

简单的主备切换方案

摘要: 主备切换是很多高可用性系统都必须解决的问题,方法有很多,象基于ZooKeeper的主备切换就是一个很好的选择。在这里提供一种更简单但不完美的主备切换方法:1) 假设A和B是集群中的主控(Master)节点2) 1~7是工作节点(如HDFS中的DataNode)... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(938) 评论(0) 推荐(0)

内网软件设计要领

摘要: 内网软件指的是只为一个企业内部提供服务的软件,它和外网软件有个很大不同 —— 即节点数是相对稳定的而且是非常有限的,在设计时可以充分利用这一特点进行简化。比如设计一款在各IDC间传输数据(文件或消息)的软件时,完全可以建立一对一的连接(为支持重连,可以为会话Sessi... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(145) 评论(0) 推荐(0)

Linux与网卡相关的几个命名

摘要: ifup - start a preconfigured net interface.ifdown - stop a (preconfigured) net interface.ifstatus - show the state of a (preconfigured... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(133) 评论(0) 推荐(0)

细节决定品质:不良的if/else使用习惯

摘要: 代码重构无处不在,重点滴做起。经常见到一些下面这样的代码:1、不要拿bool和false直接比if (false == IsXXX()){}这是画蛇添足,费力不会讨好,直接了当即可:if (!IsXXX())2、太多的if/else嵌套,导致过多缩进,造成眼花缭乱,阅... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(224) 评论(0) 推荐(0)

源于生活的设计之一:职责问题

摘要: 我相信大家在工作时,都厌烦手上同时有多个项目,特别是运维多个项目,那么我们在做软件设计时,也应当如此,我们不能给一个对象赋予太多责任,并尽量将主要的剥离出来单独实现(比如mooon中将异步收发数据的状态机剥离出来成了单独可复用的类CRecvMachine和CSendM... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(104) 评论(0) 推荐(0)

Linux下显示目录树的源代码包

摘要: 作者:Steve Baker (ice@mama.indstate.edu) tree-1.5.1.rar tree-1.5.1.zip 解压后,执行make即可编译成功,并生成可执行文件tree。 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(160) 评论(0) 推荐(0)

Linux下select使用陷阱

摘要: Select函数使用简单,其工作原理大家通常也知道,但是在实际的使用过程中可能并没有严格遵守,而且确实也比较难以完全遵守,除非不使用它。Select采用一个bit表,每个fd对应表中的一个bit位,宏FD_SETSIZE为表的大小,添加到fd_set中的fd值必须小于... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(797) 评论(0) 推荐(0)

MOOON-scheduler设计图更新

摘要: 初稿设计:http://blog.chinaunix.net/uid-20682147-id-3252602.html在上一版本的基础上,进行了细化和关系调整,并考虑了Service在线升级,升级过程中,会同时存在两个不同版本的Service,这可以从CService... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(79) 评论(0) 推荐(0)

基于/proc统计网络流量的脚本

摘要: #!/bin/sh# 下载:https://github.com/eyjian/libmooon/tree/master/shell# 流量统计工具# 可带一个两个:# 参数1:网卡名,如eth0或eth1等# 参数2:统计次数# 参数3:统计间隔(秒)# 输出格式:... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(141) 评论(0) 推荐(0)

简单的统计指定进程ID(或进程名)CPU、内存脚本

摘要: 仅一行脚本,复制粘贴即可使用。按进程名:while true; do ps h -o pcpu,vsize,rss -C 进程名; sleep 2; done按进程ID:while true; do ps h -o pcpu,vsize,rss -p 进程ID; sl... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(184) 评论(0) 推荐(0)

linux下测试磁盘的读写IO速度

摘要: 有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.下面是两种测试方法:(1)使用hdparm命令这是一个是用来获取ATA/IDE硬盘的参数的命令,... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(137) 评论(0) 推荐(0)

Linux的Proc文件系统详解

摘要: Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系 统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(547) 评论(0) 推荐(0)

shell脚本实现对网卡流量监控

摘要: 突然想对linux的网卡流量进行监控,又不想使用cacti,觉得配置snmp很麻烦。现成的工具好像也没啥太好用的。决定自己写一个脚本。 点击(此处)折叠或打开#!/bin/bashrx1=$(ifconfig $1|grep "RX bytes"|awk '{prin... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(247) 评论(0) 推荐(0)

MOOON-scheduler问题讨论:消息如何传递回去和主动发送出去?

摘要: 对于进程模式,有两种可选的消息发出方案:1.每个Service进程都独立加载一份dispatcher2.所有Service进程不加载dispachter,只内核加载一份dispatcher,消息发出时,总是需要通过内核方案一优点:1.高效,因为少了从Service进程... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(112) 评论(0) 推荐(0)

linux out of memory分析(OOM)

摘要: 原文:http://blog.csdn.net/guomsh/article/details/6536915Linux有一个特性:OOM Killer,一个保护机制,用于避免在内存不足的时候不至于出现严重问题,把一些无关的进程优先杀掉,即在内存严重不足时,系统为了继续... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(1046) 评论(0) 推荐(0)

设计mooon调度器遇到的难题

摘要: mooon的设计进入关键时刻,有几个决策点还没有定下来,如下:1.是否同时支持进程和线程模型进程模型是指内核为一个独立的进程,而每个业务又为独立的一个进程,业务可以为多线程,同时内核会产生相应个数的内核线程与业务线程一一对应,内核线程和业务进程在创建业务时产生。线程模... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(70) 评论(0) 推荐(0)

MOOON-scheduler核心设计图(初稿)

摘要: 按以下思路进行设计,非最终设计图,有等进一步思考,以发现问题,需要达到以下目的:同时支持线程和进程模式(做了抽象)Service不和线程绑定Service独占线程池或进程(进程下再划分线程池)Session和线程绑定,不跨线程Service下可以有0到多个Sessio... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(81) 评论(0) 推荐(0)

使用valgrind检查cache命中率,提高程序性能

摘要: 作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(706) 评论(0) 推荐(1)

disuz 7.2文字常量定义文件messages.lang.php

摘要: 当需要对disuz做一些修改时,可能会涉及到这个文件。D:\hadoop\backup\20120619221410\templates\default\messages.lang.php '未定义操作,请返回。','group_nopermission' => '您... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(80) 评论(0) 推荐(0)

什么样的命名才是合理的?谈命名的原则

摘要: 写代码,少不了各种命名,那如何才是最合理的命名,或者没有好坏之分了?如果有了理论基础,这事就好办。mooon中的命名采用的理论依据:1.简单性,拒绝画蛇添足,如类成员变量仅以“_”打头,前面的字母“m”纯是多余的2.易读性,拒绝高深莫测的缩写,宁愿使用长名称3.不固执... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(136) 评论(0) 推荐(0)

软件技术发展的几个阶段

摘要: 软件技术经历也如下几个发展阶段:1.纯属科学家的玩意2.个人英雄者的世界,比如我们常说的第一代程序员3.纯软件公司,产生了大批纯软件公司,而且活得很好,如当年的四大软件园4.软硬结合,纯软件的死了大半,象华为软硬结合活得很好5.互联网化,象腾讯、百度等6.移动互联网,... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(565) 评论(0) 推荐(0)

MOOON-agent发布:MOOON-agent系统设计与使用说明

摘要: MOOON-agent系统设计与使用说明.pdf MOOON-agent系统设计与使用说明易剑 2012/6/16目录1. 设计目标12. 应用场景23. 主要功能24. 系统骨架35. 资源接口36. 内置CommandProcessor37. 编程接口37.1... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(213) 评论(0) 推荐(0)

名词:topology、architecture和struct,究竟什么才是架构?

摘要: 在技术文档中,发现很多时候并没有对topology、architecture和struct进行严格区分,有时可以见到一个topology成了architechure,有时一个struct成了architechure。从严谨的角度出发,究竟应当如何去定义和区分,以便正确... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(190) 评论(0) 推荐(0)

养成良好的编程习惯

摘要: 良好的编程有习惯的意义在于:1.犹如面子,给人好的好象2.犹如在找东西,容易找到3.不给人添麻烦,让人接手得舒舒服服4.从源头避免版本不一致问题(当同一个文件在不同目录下出现拷贝时,容易出现其中某个未同步更新的问题)5.提升代码的维护性良好的习惯包含但不限于以下几点:... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(122) 评论(0) 推荐(0)

为何有着良好设计的系统代码反而不容易看懂?

摘要: 在实践中遇到一个问题,就是经过良好设计而实现的代码,大家会觉得不容易看懂,而平铺直述的反而易看。我分析这是一个很正常的现象,原因是未设计而出的代码是按人的正常思维平铺直述的,所以大家容易看,这些代码常有些共性:即冗长、重复的现象常见、基本没有职责单一可言、比较扁平、以... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(164) 评论(0) 推荐(0)

全局变量相互依赖和初始化顺序的解决办法

摘要: 如果是定义一个全局的map,会出现如下core:Program received signal SIGSEGV, Segmentation fault.0x00007ffff7b449ea in std::_Rb_tree_decrement(std::_Rb_tre... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(676) 评论(0) 推荐(0)

解决:libtool: line 815: X--tag=CXX: command not found

摘要: 下面这个错误据说是libtool版本问题,需要回退版本,但实际上不用回退版本也可以解决,在libtool(请注意不是/usr/bin/libtool,而是和configure同一目录下的,在mooon中,就是src目录)文件中找到下列行:# An echo progr... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(410) 评论(0) 推荐(0)

致命错误: zlib.h:没有那个文件或目录

摘要: 下面这个错误是因为zlib包没有安装,安装后问题即可解决。但有一点请注意安装命令是:sudo apt-get install zlib1g-dev,而非sudo apt-get install zlib./file_util.cpp:19:18: 致命错误: zlib... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(790) 评论(0) 推荐(0)

undefined reference to `clock_gettime'

摘要: 下面这个错误通常是因为链接选项里漏了-lrt,但有时发现即使加了-lrt仍出现这个问题,使用nm命令一直,会发现-lrt最终指向的文件没有包含任何symbol,这个时候,可以找相应的静态库版本librt.a,看看它里面是否存在`clock_gettime'。/data... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(285) 评论(0) 推荐(0)

解决“possibly undefined macro: AC_PROG_LIBTOOL”

摘要: 今天特别花1688在51buy.com上买了台同方的笔记本用于mooon的开发,先是安装了Fedora,觉得不好,想安装openSuSE,但发现安装包太大,最后仍选择了ubuntu 12.04,默认没有安装automake等工具,按提示逐一进行了安装,遇到如下这个错误... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(2501) 评论(0) 推荐(0)

解决“configure: line 2747: -g: command not found”

摘要: 下面这个错误是因为没有安装g++$ ./configure --prefix=/data1/mooon/runchecking for a BSD-compatible install... /usr/bin/install -cchecking whether bu... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(319) 评论(0) 推荐(0)

openssl编程轻松入门(含完整示例)

摘要: openssl编程入门(含完整示例).pdf openssl编程轻松入门(含完整示例)一见1. 编写目的第一次跑起openssl示例并不太简单,本文的目的是为了让这个过程变得非常简单。在开始之前,要非常感谢周立发同学,正是通过他共享的示例,较轻松的入了门。本文... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(604) 评论(0) 推荐(0)

进程绑定CPU简单应用

摘要: 注:原发表在Hadoop技术论坛相关函数:sched_setaffinity, sched_getaffinity, CPU_CLR, CPU_ISSET, CPU_SET, CPU_ZERO - set and get a process's CPU affinit... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(141) 评论(0) 推荐(0)

inotify_add_watch使用注意

摘要: 注:原发表在Hadoop技术论坛1.inotify_add_watch返回并不是一个fd,而只是一个标识2.对于同一个PATH,inotify_add_watch将返回相同的标识。不需要调用close关闭,但需要调用inotify_rm_watch来删除。在对文件进行... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(551) 评论(0) 推荐(0)

解决C++代码单元测试中的难题-不可验证和IO调用

摘要: 原帖发表在Hadoop技术论坛在做C++程序的单元测试时,大家经常会遇到两个问题:1.不方便验证测试结果,原因是因为不可访问保护和私有类成员2.对于需要访问的connect、receive、send等不好绕过这里介绍两种方法,即可解决:1.在编译单元测试代码时,加上U... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(151) 评论(0) 推荐(0)

io_submit、io_setup和io_getevents示例

摘要: 注:原发表在Hadoop技术论坛io_submit、io_setup和io_getevents和LINUX上的AIO系统调用。这有一个非常特别注意的地方——传递给io_setup的aio_context参数必须初始化为0,在它的man手册里其实有说明,但容易被忽视,我... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(1799) 评论(0) 推荐(0)

程序遇到SIGILL,考虑依赖库接口和库版本是否一致

摘要: 如果你的程序遇到SIGILL, Illegal instruction问题,你应当考虑一下是否存在版本不一致的问题,比如依赖的共享库接口变了,但你仍在使用老版本的库,问题的现象通常是诡异,而且你觉得不可能挂的地方,而通常是挂在你对依赖库的调用之处。简单点说就是:头文件... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(119) 评论(0) 推荐(0)

通过包装父类的抽象方法达到结构和行为都统一

摘要: 注:原发表在Hadoop技术论坛在进行OO时,很容易做到结构统一,这个也容易理解,如下:class Parent{public: virtual void hello() = 0;};class Child1: public Parent{private: ... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(109) 评论(0) 推荐(0)

C语言编程程序的内存如何布局

摘要: C语言编程程序的内存如何布局C语言程序在内存中各个段的组成 C语言程序连接过程中的特性和常见错误 C语言程序的运行方式 一:C语言程序的存储区域 由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(118) 评论(0) 推荐(0)

struct对齐问题

摘要: ChinaUnix最近有个贴子讨论热烈,在这里记录一下我的理解,struct的对齐是遵照下列二个条件中最小的一个进行的:1.#pragma pack(N)中N指定的值2.struct中最大的成员(请注意不是指sizeof值最大的那个,而应当是__alignof__值最... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(117) 评论(0) 推荐(0)

socket的五大误区

摘要: 隐患 1.忽略返回状态第一个隐患很明显,但它是开发新手最容易犯的一个错误。如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失。反过来,这可能传播错误,使定位问题的源头变得困难。捕获并检查每一个返回状态,而不是忽略它们。考虑清单 1 显示的例子,一个套接... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(68) 评论(0) 推荐(0)

通过小代码体验程序中BSS段和DATA段的差异

摘要: 注:原发表在Hadoop技术论坛BSS(Block Started by Symbol)用来存储未初始化的全局变量,值为0的通常会被编译器认为未初始化,属于静态内存分配区,不会占用程序文件空间DATA用来存储已经初始化的全局变量,也属于静态内存分配区,会占用程序文件空... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(108) 评论(0) 推荐(0)

mooon-agent接收状态机代码摘要

摘要: recv_machine.h 点击(此处)折叠或打开#ifndef MOOON_AGENT_RECV_MACHINE_H#define MOOON_AGENT_RECV_MACHINE_H#include AGENT_NAMESPACE_BEGINclass CAge... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(122) 评论(0) 推荐(0)

mooon-agent发送状态机代码摘要

摘要: 发送状态机比接收状态机相对要简单send_machine.h 点击(此处)折叠或打开#ifndef MOOON_AGENT_SEND_MACHINE_H#define MOOON_AGENT_SEND_MACHINE_H#include AGENT_NAMESPACE... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(125) 评论(0) 推荐(0)

mooon-agent核心设计图

摘要: 代码:http://code.google.com/p/mooon/source/browse/#svn%2Ftrunk%2Fcommon_component%2Fsrc%2Fagent说明:以下类图只画出了基础的核心类和主要关系,弱的依赖关系没有画出来。应用场景:在... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(90) 评论(0) 推荐(0)

mooon调度器设计的考量因素

摘要: 调度器的设计必须满足以下要求:1、高效,最好不用查找,而是直接的数组下标定位,这就要求设计好分布式对象的ID2、支持业务独占进程,这是保证高可用性的前提,也是解业务与业务间,和业务和平台间耦合的前提3、本地间的业务进程间通讯优化,避免走网络4、简洁的通讯消息结构 ... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(101) 评论(0) 推荐(0)

mooon-agent设计要点

摘要: mooon-agent以简约的设计为主,力求各对象之间保持简单的关系,尽量避免过度的传递,因此CAgentThread成了核心。除此之外,还有几个关键的设计点:1、采用了可Epollable的队列,以保证消息的实时上报2、使用了状态机,分别为发送消息的CSendMac... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(133) 评论(0) 推荐(0)

常用vim设置

摘要: set nuset roset shiftwidth=4set tabstop=4set softtabstop=4syntax onif &term=="xterm" set t_Co=8 set t_Sb=^[[4%dm ... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(110) 评论(0) 推荐(0)

类的层次结构设计

摘要: 图1在写程序时,我们会经常遇到如上图所示的一种情形——深层调用,ClassD1和ClassD2需要调用ClassA关联的ClassX、ClassY和ClassZ等,对于这种情况,经常见到通过构造函数一层层往下传递做法。这做法有什么不好了?它不符合开闭原则,当新增一个依... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(183) 评论(0) 推荐(0)

彻底告别VC

摘要: 第一次接触VC大概是在1998年底,当时好象是5.0版本,然后不久就转到了6.0,正式常用大概是2001年,当时拼命学VC和Delphi,学COM等。在02年底转向Unix/Linux开发,依然使用VC6.0作为编辑器,中间VC出了很多个新版本,但基本没有使用过,直接... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(111) 评论(0) 推荐(0)

古代神童

摘要: PPT下载:http://img1.51cto.com/attachment/201205/1246491_1337385297.ppt提纲春秋 - 项橐战国 - 甘罗东汉 - 曹冲东汉 - 周不疑东汉 - 孔融西晋 - 王戎唐初 - 骆宾王唐初 - 王勃中唐 - 李... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(97) 评论(0) 推荐(0)

Linux系统调优

摘要: 原文:http://roqi410.blog.51cto.com/2186161/671708Linux在进行系统调优的时候,首先要考虑整个操作系统的结构,然后针对各个部分进行优化,下面展示一个Linux系统的各个组成部分:有上图可以看出,我们可以调整的有应用程序,库... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(228) 评论(0) 推荐(0)

网络字节序问题的思考

摘要: 对于网络编程,为适应异构环境,通常会做主机字节序到网络字节序的转换,消息一多,是有一定CPU浪费的,这一般不是个好主意,于是有些做法在消息头用一个bit来指示消息的字节序,可以不必要的转换。但是增加这么一个bit,多少增加了些复杂度,特别是破坏消息结构的通用性,是否可... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(131) 评论(0) 推荐(0)

简约的网络字节序处理

摘要: 实现下载: inttypes.txt 处理网络程序的字节序,是件非常简单的事,但每次使用时,都显示调用ntohl之类的转换,仍是一件麻烦的事。怎样做更简单了?只需要定义出各种网络字节序的类型即可,而这些类型和主机字节序兼容。标准的网络字节序是大字节序,在当今小字节... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(132) 评论(0) 推荐(0)

LINUX内存高,触发OOM-KILLER问题解决

摘要: 原文:http://www.cnblogs.com/itfriend/archive/2011/12/14/2287160.html最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂1. 首先确认该系统的版本是32位?#uname -aLin... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(633) 评论(0) 推荐(1)

Hadoop开发者第四期

摘要: 全文下载:http://ishare.iask.sina.com.cn/f/14487230.html目录mooon 1 海量数据处理平台架构演变 4 计算不均衡问题在Hive中的解决办法 15 Join算子在Hadoop中的实现 20 配置Hive元数据DB为Pos... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(98) 评论(0) 推荐(0)

改进型MapReduce

摘要: 全文下载: 改进型MapReduce.pdf 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(72) 评论(0) 推荐(0)

hadoop开发者第三期

摘要: 全文下载: hadoop开发者第三期.pdf 目录Hadoop中的数据库访问MapReduce中多文件输出的使用ZooKeeper使用与分析浅析一种分类数据模型Sector框架分析RunonHadoop 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(77) 评论(0) 推荐(0)

Hadoop开发者入门专刊

摘要: 全文下载:http://ishare.iask.sina.com.cn/f/6740538.html目录 1 Hadoop介绍 2 Hadoop在国内应用情况 3 Hadoop源代码eclipse编译教程 7 在Windows上安装Hadoop教程 13 在Linux... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(111) 评论(0) 推荐(0)

hadoop开发者第二期

摘要: 全文下载:http://ishare.iask.sina.com.cn/f/7401946.html目录 1、Hadoop 业界资讯......................................... - 1 - 2、Nutch + Hadoop 构建商... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(94) 评论(0) 推荐(0)

配置VIM语法高亮及自动缩进

摘要: 原文:http://blog.sina.com.cn/s/blog_601331150100gjmk.html 1 、配置文件的位置在目录 /etc/ 下面,有个名为vimrc 的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(235) 评论(0) 推荐(0)

Hadoop源代码eclipse编译指南

摘要: 全文下载: Hadoop源代码eclipse编译指南.pdf 目录1. 下载Hadoop源代码 12. 准备编译环境 22.1. Hadoop代码版本 22.2. 联网 22.3. java 22.4. Ant和Cygwin 32.5. Eclipse 43. 编译... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(83) 评论(0) 推荐(0)

需求驱动赢得创新

摘要: 在现实生活中,我们会经常发生非常相似的东西,我揣摩是因为后者参考了前者,而偏离了需求驱动这基本原则。这涉及到我们究竟应当如何去设计一个东西。我的做法是按需而动,而不是按参照物去做,参照物只是帮助整理需求工作。一旦我们按需而动,结果就是做出的东西往往就是真正的新产品,而... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(77) 评论(0) 推荐(0)

转载:x86的cpu_relax解析

摘要: 原文:http://blog.liuw.name/1024内核执行的任务在很多情况下是不加锁的,只是poll某个公有变量去保证同步。再深一步,即使是使用锁,本质上也是一个poll某个公有变量的过程。这个poll的过程需要CPU一直循环等待。要是让我这个菜鸟来写的话,循... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(230) 评论(0) 推荐(0)

高效的使用stl::map和std::set

摘要: 1、低效率的用法// 先查找是否存在,如果不存在,则插入if (map.find(X) == map::end()) // 需要find一次{ map.insert(x); // 需要find一次}// 下面这段代码是一个意思if (0 == map.count... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(703) 评论(0) 推荐(0)

Linux内核list&hlist解读

摘要: 全文下载: Linux内核list&hlist解读.pdf 目录1. 前言 22. 通用宏 22.1. typeof 22.1.1. 定义 32.1.2. 用途 32.1.3. 示例 32.2. offset_of 32.2.1. 定义 32.2.2. 作用 32... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(210) 评论(0) 推荐(0)

awk给外部变量赋值

摘要: 假设将值存在文件t中,文件t内容如下,只有一行:a b c需要将a、b和c分别赋给外部变量x、y和z,则脚本可写成如下:eval $(awk '{ printf("x=%s\ny=%s\nz=%s",$1,$2,$3); }' ./t)echo $xecho $yec... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(1762) 评论(0) 推荐(0)

测试mktime和localtime_r性能及优化方法

摘要: // 编译方法:g++ -g -o x x.cpp或g++ -O2 -o x x.cpp,两种编译方式性能基本相同。//// 结论:// 1) 环境变量TZ和isdst均不影响localtime_r的性能// 2) 环境变量TZ严重影响mktime和localtime... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(186) 评论(0) 推荐(0)

Linux上制作可执行的共享库示例

摘要: http://bbs.hadoopor.com/thread-3313-1-1.htmlx.cpp为共享库libx.so的实现,b.cpp为可执行b的实现。x.cpp文件内容:#include #include // 使用C++作为编译器void woo(){ ... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(124) 评论(0) 推荐(0)

只显示指定网卡IP地址命令

摘要: export eth=1&&netstat -ie|awk -F'[: ]' 'begin{found=0;} { if (match($0,"eth'"$eth"'")) found=1; else if ((1==found) && match($0,"eth")... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(224) 评论(0) 推荐(0)

代码规范:换行对齐问题

摘要: 今天有同事看了我写的代码,问为何逗号要放在前面,以下列两段代码为列:代码段一void function(int a , char b , short c , long d , st... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(681) 评论(0) 推荐(0)

高质量C++编程补充条款

摘要: 文件:高质量C++编程补充条款.pdf大小:169KB下载:下载目录1. 前言 12. 条款:避免使用非众所周知的缩略语 13. 条款:规范好#include 14. 条款:避免长短语句无规律交错 25. 条款:避免头重脚轻 26. 条款:充分利用public和pr... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(102) 评论(0) 推荐(0)

清理disuz垃圾用户信息SQL语句

摘要: -- hadoop开头的是UCenter表,cdb开头的是BBS部分的表-- 搜索出所有垃圾用户名:select `hadoop_members`.`username` from `hadoop_members` left join `cdb_members` on ... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(82) 评论(0) 推荐(0)

解决C++代码单元测试中的难题-不可验证和IO调用

摘要: 在做C++程序的单元测试时,大家经常会遇到两个问题:1.不方便验证测试结果,原因是因为不可访问保护和私有类成员2.对于需要访问的connect、receive、send等不好绕过这里介绍两种方法,即可解决:1.在编译单元测试代码时,加上UNIT_TEST宏(名字可以为... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(97) 评论(0) 推荐(0)

按时间顺序显示指定目录的文件

摘要: 方法:ls -lrt --time-style=long-iso $(find 目录路径 -type f) 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(141) 评论(0) 推荐(0)

如何查看Linux内核是否为64位版本?

摘要: 方法非常简单,LINUX提供了一个查看配置的命令(实际有相应的库函数)getconf,使用它即可,方法如下:getconf LONG_BIT如果返回64,就表示为64位内核,否则应当返回32。 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(287) 评论(0) 推荐(0)

mooon db wrapper

摘要: mooon db wrapper1. 前言mooon db wrapper不是一个DB,仅是对现有的DB API的封装,使得使用更为简单。项目地址:http://code.google.com/p/mooon,可使用SVN下载最新代码。开发和交流论坛:http://b... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(161) 评论(0) 推荐(0)

mooon http-stress使用教程

摘要: 文件:mooon-http-stress-manual.pdf大小:248KB下载:下载1. http-stress是什么?http-stress是一个和ab(Apache Benchmark)类似的HTTP压力测试工具,是作为dispatcher和http_par... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(139) 评论(0) 推荐(0)

使用protocol buffers优缺点分析

摘要: 很早就听说过PB(protocol buffers的简称),但从未实际地去了解,最近动手对它进行了初步了了解和使用,由于它长得和RPC/IDL相似,加上以前有参与过使用C++实现过RPC的项目经验,所以容易理解起来比较顺畅,网上也有不少基于PB的RPC实现。为什么要去... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(642) 评论(0) 推荐(0)

需要使用一致性哈希吗?

摘要: 在普通的哈希中,如果节点个数(分母)发生变化,原先的次序会被完全打乱重来,一致性哈希解决了这个问题。实际可看成普通的哈希对着的是物理节点,而一致性哈希对着的是虚拟节点,这里可以拿物理内存和虚拟内存来对比,虚拟节点是可认为是使用不完的,挂了一个节点,还可以认为节点数不变... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(132) 评论(0) 推荐(0)

改进型MapReduce

摘要: 1. 前言本文通过对MapReduce的分析,列出MapReduce存在的问题,然后提出一种解决这些问题的改进型MapReduce,这种改进型的MapReduce暂且取名为MapBalanceReduce。由于经验和水平有限,所述观点和方法未必正确,诚心欢迎交... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(290) 评论(0) 推荐(0)

inotify_add_watch使用注意

摘要: 1.inotify_add_watch返回并不是一个fd,而只是一个标识2.对于同一个PATH,inotify_add_watch将返回相同的标识。不需要调用close关闭,但需要调用inotify_rm_watch来删除。在对文件进行读、写、关闭监控时需要注意这个特... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(2213) 评论(0) 推荐(0)

走出锁的误区 - 正面认识锁

摘要: 多线程编程,锁通常是必不可少的保证代码运行安全的工具,一提到锁,最直接想到的是性能问题,给人的印象是锁会影响系统性能。这固然不然。但性能本身并不是锁本身引起的,锁也只是一个系统调用,它本身的开销是很小的,很多测试中,我们发现加锁和去掉锁后的性能几乎没有... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(188) 评论(0) 推荐(0)

C++与MySQL的冲突

摘要: 当在C++代码中,直接引用MySQL头文件时,可能会遇到如下错误:In file included from /usr/include/c++/4.1.0/bits/char_traits.h:46, from /usr/include... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(313) 评论(0) 推荐(0)

当gdb看到一行行的??时,你要冷静!

摘要: 下面这段,初看一定会脑大,实际原因非常明确,所以遇到时要先观察,不一定是头大的问题。gdb -p 1461GNU gdb 6.6Copyright (C) 2006 Free Software Foundation, Inc.GDB is free software,... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(430) 评论(0) 推荐(0)

Protocol Buffers十分钟上手:入门示例

摘要: Protocol Buffers十分钟上手:入门示例1.简介Protocol Buffers是Google出品并开源的语言和平台均中立的数据序列化和反序列化工具,官方支持C++/Java和Python三大语言,另外有大量的第三方实现支持PHP、D语言和C#等众多语言,... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(129) 评论(0) 推荐(0)

如何为crontab调度运行的多脚本设置共享的环境变量?

摘要: 方法直接将环境变量添加到crontab中,如:NAME=zhangsanAGE=3010 * * * * /home/xx/test.sh注意不要加上export,这样test.sh就可以用到环境变量了。 http://bbs.hadoopor.com/... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(132) 评论(0) 推荐(0)

如何解决fd跨线程安全问题

摘要: fd跨线程是不安全的,当一个线程close它后,就相当于成了野指针,另一线程再使用就成了对野指针的使用,当系统调用使用一个已经close后的fd时,可能出现内核报错,如果安全使用它了?有两个办法:一是对fd进行再包装,产生应用对象,对象通过引用计数保证线程安全;二是d... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(337) 评论(0) 推荐(0)

__gxx_personality_v0错误原因

摘要: 如果编译遇到如下错误:tmp/cceMNWaA.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'collect2: ld returned 1 exit status则可能是因为使用gc... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(451) 评论(0) 推荐(0)

文件和SOCKET跨线程安全吗?

摘要: 将一个文件或SOCKET的句柄fd传递给多个线程,进行读、写和Close操作,是否安全了?答案是“否”,这类似于new一个指针后,这个指针传递给多线程是否安全,结果是常常容易造成一个线程使用已经被另一个线程delete的指针。对fd的各系统调用本身是线程安全的,比如可... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(423) 评论(0) 推荐(0)

interpreter_command_state pattern

摘要: 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(78) 评论(0) 推荐(0)

ANTLR实现的SQL解析器 - OQL

摘要: 使用ANTLR写了个SQL解析器,这样ORM的基本功能就比较完整了。几天的时间比较仓促,所以对于最终目标,还只能算是个雏形。总体状况使用SQL解析器的主要优点:1. 基于解析之后的语法树提供用户操作接口,灵活性非常好,因为达到了对SQL每一部分的完整控制。2.... 阅读全文

posted @ 2012-07-24 16:19 岚天逸见 阅读(188) 评论(0) 推荐(0)

导航