- 博客(245)
- 资源 (53)
- 收藏
- 关注
原创 MOOON分布式消息结构
MOOON主要消息结构如下,缺点是消息本身占用字节数较多:// 为何要做IPV4和IPV6区分?// 是因为如果只需要支持IPV4,则一个IP地址只需要用一个4字节表示,// 这样源和目的IP地址共节省了24字节;// 支持IPV6时,同时兼容IPV4,但对于IPV4多浪费24字节;// 源和目标IP,要么都为IPV4,要么都为IPV6,不允许交叉出现。#ifdef IPV6_S
2012-07-30 23:15:34 8276
原创 MOOON-agent更新:新增IHeartbeatHook接口
新增IHeartbeatHook接口的目的是让应用可以在心跳包中安插自己的数据,比如将自己的状态数据通过心跳带回去。
2012-07-27 09:46:56 7755
转载 Dash与Bash的语法区别
本文系转载,原文URL为:http://www.igigo.net/archives/169如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题1.定义函数bash: f
2012-07-24 16:19:25 2727
原创 MOOON-server新消息处理接口
MOOON-server提供了一个通用的TCP框架,并对包的解析抽象出了IPacketHandler接口,这个接口提供了无限制的宽容度,支持任何协议,但是增加了使用复杂。 由于大多数协议,都会定义一个消息包大小字段,基于这个前提,MOOON-server引用了新的接口IMessageObserver,它能够解析任何包头是net::TCommonMessageHeader的消息,在一个包解
2012-07-24 16:19:23 7773
原创 不再担心日志文件过大:通用日志滚动脚本
不用再担心脚本输出的日志文件过大爆满磁盘,log_rotater.sh可让你高枕无忧,肆无忌惮地重定向日志到文件中。 log_rotater.zip #!/bin/sh# Writed by yijian on 2012/7/22# 本脚本功能:# 1) 实现一个通用的按大小的日志滚动# 2) 要求日志文件扩展名为“.log”,否则请稍修改代码# 3)
2012-07-24 16:19:23 32873 1
原创 改进后的日志类CLogger
在原有的基础上增加了module_name,表示模块名,当一个系统由多模块组成时,输出的日志将更加清晰,使用方法,以MOOON-agent中的为例:点击(此处)折叠或打开#define AGENT_MODULE_NAME "AGENT"#define AGENT_LOG_BIN(log, size) __MYLOG_BIN(agent::logger,l
2012-07-24 16:19:22 7916
原创 开发理念和用户体验
开发理念:要有追求美的意识,简就是美。要形成自己的思想,设计需要灵魂。模式模式有时是恶魔,它容易让你走上抄袭模仿之路。把职责单一作为第一原则,并努力遵守,将让你柳暗花明又一村。一切源于生活,多和生活类比,能让理解更为深刻透彻。始终抱严谨心态,用心思考,细节决定品质。用户体验:往往只在产品层面受到重视和关注,其实在每个层面都应当重视,后台开发是典型的被忽视的,代码同样需要用户体验
2012-07-24 16:19:22 8115
原创 怎么做自动化
在做系统时,不应当盲目地去做自动化,原因有两点:1.有些自动化的代价非常高,反不如人工简单实在2.有些自动化不能保证系统的正确性,它需要人工确认不过,这些也并不应当成为推进自动化的理由,自动化它可以带来两方面巨大的好处:1.大大降低运维工作量2.快速的进行故障恢复所以在做系统应当多考虑自动化,以降低运维工作量和提升系统可用性为目标,一个好的自动化,应当考虑如
2012-07-24 16:19:21 7891
原创 来自mooon的最简单的日志类CSimpleLogger
/** * 单个头文件,可即时独立使用,只要定义了宏NOT_WITH_MOOON,即不依赖于mooon * 简单的写日志类,非线程安全,提供按大小滚动功能 * 不追求功能,也不追求性能,只求简单,若要功能强、性能高,可以使用CLogger * * 使用方法: * 1) 构造一个CSimpleLogger对象 * CSimpleLogger logger(".",
2012-07-24 16:19:21 28304
原创 项目诉求
最近新接手一项目,乱,只有眼睁睁了,只能尽量做到新增的保持有序,但无法扭转大局。暂还能将就着用,也只能如此,但如果持续有新的需求,那终将有推倒重开发的一天,因为没办法在它的基础上做质的开发,分析一个重要原因是开发过程中,没有迭代重构,导致恶疾越积越多,加上开发人员缺乏主动服务项目的意识和责任心,一些新加入的又随波逐流或缺乏经验,以至于病入膏肓。另外,项目开发过程中的监管缺失,也是走到今天这步的重要
2012-07-24 16:19:20 8867
原创 优雅的让一个类在线程安全和线程非安全间切换
一个良好的多线程库,不应当一刀切的全加锁。因为有些时候,虽然是多线程环境,但可能依照设计一个类只会被一个线程操作,这个时候加锁是多余的,纯浪费性能,但另一些场景又需要它是线程安全的。假设有一个类X:class X{public: void xoo();};这里总结几个常见的做法:1.本身不加锁,由调用者来加锁,坏处是如果多数场景都是加锁的,由会
2012-07-24 16:19:20 24894
原创 简单的主备切换方案
主备切换是很多高可用性系统都必须解决的问题,方法有很多,象基于ZooKeeper的主备切换就是一个很好的选择。在这里提供一种更简单但不完美的主备切换方法:1) 假设A和B是集群中的主控(Master)节点2) 1~7是工作节点(如HDFS中的DataNode)3) 在每个工作节点上,都同时配置了A和B的IP,而且是对等的,无主备之分所谓主:是指提供服务的主控,而
2012-07-24 16:19:20 17764
原创 内网软件设计要领
内网软件指的是只为一个企业内部提供服务的软件,它和外网软件有个很大不同 —— 即节点数是相对稳定的而且是非常有限的,在设计时可以充分利用这一特点进行简化。比如设计一款在各IDC间传输数据(文件或消息)的软件时,完全可以建立一对一的连接(为支持重连,可以为会话Session),这不管是对有时序要求,还是无时序要求的传输,都将得到大幅度简化。应用场景:上游应用 -> 上游内网软件 --
2012-07-24 16:19:19 7722
原创 细节决定品质:不良的if/else使用习惯
代码重构无处不在,重点滴做起。经常见到一些下面这样的代码:1、不要拿bool和false直接比if (false == IsXXX()){}这是画蛇添足,费力不会讨好,直接了当即可:if (!IsXXX())2、太多的if/else嵌套,导致过多缩进,造成眼花缭乱,阅读困难if (){ if () {
2012-07-24 16:19:19 25083
原创 MOOON-scheduler设计图更新
初稿设计:http://blog.chinaunix.net/uid-20682147-id-3252602.html在上一版本的基础上,进行了细化和关系调整,并考虑了Service在线升级,升级过程中,会同时存在两个不同版本的Service,这可以从CServiceTable和CkernelService间的关系看出来,升级过程中不会有任何消息的丢失,完全无缝升级,得益于双版本同时在
2012-07-24 16:19:17 7741
原创 基于/proc统计网络流量的脚本
#!/bin/sh# 下载:https://github.com/eyjian/libmooon/tree/master/shell# 流量统计工具# 可带一个两个:# 参数1:网卡名,如eth0或eth1等# 参数2:统计次数# 参数3:统计间隔(秒)# 输出格式:统计时间,入流量(Kbps),入流量(Mbps),出流量(Kbps),出流量(Mbps)# Please edit...
2012-07-24 16:19:16 12056
原创 disuz 7.2文字常量定义文件messages.lang.php
当需要对disuz做一些修改时,可能会涉及到这个文件。D:\hadoop\backup\20120619221410\templates\default\messages.lang.php// Message Pack for Discuz! Version 1.0.0// Created by Crossday$language = arr
2012-07-24 16:19:10 9154
原创 MOOON-agent发布:MOOON-agent系统设计与使用说明
MOOON-agent系统设计与使用说明.pdf MOOON-agent系统设计与使用说明易剑 2012/6/16目录1. 设计目标12. 应用场景23. 主要功能24. 系统骨架35. 资源接口36. 内置CommandProcessor37. 编程接口37.1. agent.h47.2. message.h57.3. m
2012-07-24 16:19:08 7925
原创 全局变量相互依赖和初始化顺序的解决办法
如果是定义一个全局的map,会出现如下core:Program received signal SIGSEGV, Segmentation fault.0x00007ffff7b449ea in std::_Rb_tree_decrement(std::_Rb_tree_node_base*) () from /usr/lib/x86_64-linux-gnu/libstdc++.
2012-07-24 16:19:07 6290
ejstatd一个增强型的jstatd
2018-12-05
开源C++版本CGI库CGICC入门
2018-12-04
Redis-5.0.0集群配置
2018-11-01
SSH2免密码登录OpenSSH
2018-10-11
两个openssh间免密码登录
2018-10-11
OpenSSH登录SSH2
2018-10-11
两个SSH2间免密码登录
2018-10-11
Hadoop-2.8.0分布式安装手册
2018-09-11
ZooKeeper-3.4.6分布式安装指南
2018-09-10
磁盘文件读性能测试
2018-09-10
快速上手,协程剖析
2018-09-10
madvise、fadvise、posix_madvise和posix_fadvise函数的使用
2018-09-10
Redis-4.0.11集群配置
2018-09-10
Thrift结构分析及增加取客户端IP功能实现
2018-09-10
再议GCC编译时的静态库依赖次顺问题
2018-09-10
C++鲜为人知的符号
2018-09-10
__lll_mutex_lock_wait的错误原因
2018-09-10
nohup、&、setsid、fork和fg、bg究竟有啥区别?
2018-09-09
零停重启程序工具Huptime研究
2018-09-09
mooon_ssh和mooon_upload使用示例
2018-09-09
Kafka常用命令收录
2018-09-09
性能测试进阶指南——LoadRunner 9.1实战(扫描版)
2012-11-01
深入多线程编程
2012-11-01
iwlwifi-9000-pu-b0-jf-b0-34.618819.0.tar.gz
2020-02-04
Linux后台开发工具箱-葵花宝典.pdf
2020-01-15
Docker入门之安装Docker.pdf
2020-01-14
服务网格代理Envoy入门.pdf
2020-01-07
rapidjson常见使用示例.pdf
2019-12-02
车世界-车的知识大全
2019-11-12
基于zookeeper-3.5.5安装hadoop-3.1.2.pdf
2019-11-09
在hadoop-3.1.2上安装hbase-2.2.1.pdf
2019-11-09
Linux后台开发工具箱-葵花宝典.pdf
2019-11-08
REdis命令处理流程处理分析
2019-04-01
严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关
2019-01-30
源码解读Linux的limits.conf文件
2019-01-30
x86_64汇编调试程序初步
2018-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人