自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++ 特性回顾

声明和定义c++ 11 中增加了新的声明和定义方式,代码如下 17 #include <stdio.h> 18

2016-01-01 00:34:04 589

转载 Linux配置sendmail实现PHP发送邮件

Linux配置sendmail实现PHP发送邮件1.安装sendmailyum -y install sendmail2.安装mail命令yum -y install mailx3.开启sendmail/etc/rc.d/init.d/sendmail start4.设置开机启动vim /etc/rc.local最后一行添加上

2014-11-11 10:50:48 7390

转载 github push 出现connection refused 的处理办法

针对公网上的服务器的检查,在日志中会发现大量针对22端口(ssh)的非法扫描。为了增强安全性,减少这些扫描,我们将服务器的ssh端口改成了一个非标准的端口。这时,连接github时,会出现错误,无法连接:#git pullssh: connect to host github.com port xxxxx: Connection refusedfatal: The remo

2014-10-28 12:05:52 6862

转载 versions mac yosemite 下崩溃的修复

在文本编辑器中打开 ~/.subversion/servers 在 [global] 下添加该行:http-library = serf

2014-10-21 11:31:50 935 1

转载 PHP 常用正则表达式整理

表单验证匹配验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z A-Z]$验证账号,不能有空格,不能非数字:^\d+$验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]\w{5,17}$验证是否含有 ^%&',

2014-05-27 20:12:13 706

原创 lua5.2 可能会遇到的一些错误

在使用protoc-gen-lua的时候,遇到一个神奇的错误,pb.c:435:34: error: array has incomplete element type 'const struct luaL_reg'这个时候是不是有点世界观崩塌的感觉?事实上查阅资料发现,lua5.1中,有下面一句话#define luaL_reg luaL_Reg所以这个问题的修复很简单

2014-03-29 16:37:50 1686

转载 cocos2dx使用lua和protobuf

为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。socket使用的是cocos2dx集成的websocket。先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 + protoc-gen-lua + Python 2.7.51.在protobuf目录下依次执行如下命令[plain] view

2014-03-29 16:34:38 771

转载 php redis 接口说明

phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用;以下是redis官方提供的命令使用技巧:下载地址如下:https://github.com/owlient/phpredis(支持redis 2.0.4)Redis::__construct构造函数$redis = new

2014-02-28 21:19:27 1192

转载 Using MIT-Scheme in MacOS X on the Command Line

IntroductionMIT/GNU Scheme is great, but if you’re an OSX user, and have a comfortable terminal environment set up, you might prefer to use mit-scheme directly from the command line instead of

2013-10-23 21:58:22 1295

原创 lua读写redis的环境部署

我的lua环境是5.2版本,而对应的lua redis接口都是基于5.1的。所以首先先安装1. compact5.1 这个安装没什么好说的,搜到官方网站,下载即可。然后copy对应lua文件到lua对应的安装库路径我这里是/usr/local/lib/lua/5.2/2.  安装luasocke, 这个接口是实现了lua基本的网络请求接口。这个安装麻烦一点,对应的参考h

2013-10-22 11:45:04 1791 1

原创 luasocket 安装遇到的问题

因为要通过lua来访问redis,发现luasocket是因此必须要装的。但在装的过程中遇到了好多问题,上网参考了一些解决方案如下下载源码下载一个稳定发布版本:下载 LuaSocket 2.0.2源码:luasocket-2.0.2.tar.gz2、编译2.1 解压[html] view plaincopyprint?

2013-10-21 15:30:14 5631

原创 pbc 的使用

這兩天在準備lua開發的基本組件。其中一個重要的部份就是lau要能讀寫字符串數據,即序列化的數據。這樣才能和其他服務做通用處理。現在通用的序列協議莫過於google的protobuf了。上網找了一圈,發現lua的protobuf 解析文件都是第三方。有兩種是拿python開發的,問題也還不少。國內有牛人雲風開發的一個pbc的版本。個人做了基本嘗試,發現python版本的問題多多。2

2013-10-16 18:24:24 2760

原创 zmalloc 代码解释(redis代码阅读)

在看redis代码的时候,看到一个常用的函数zmalloc,这个是作者封装的一个malloc函数。深入看看,对内存空间的申请和线程安全都会有所了解。void *zmalloc(size_t size) {    void *ptr = malloc(size+PREFIX_SIZE);

2013-08-05 21:43:08 1259

原创 skynet_net source code analyses

skynet harbor, 是以数字作为索引,目前猜测是每个handle的私有空间~

2013-07-16 11:22:00 1512 1

原创 skynet-源码分析1:目录下的文件整理

skynet是c和lua结合的一个开源游戏引擎,是云风所写,对我等屌丝来说,是很好的参考先整理一下文件结构,然后再慢慢深入主目录下有10个目录,105个文件,具体包含的情况,我简单画了个图,明天深入skynet-src来看看

2013-07-01 12:27:37 2224

原创 beautiful english speech

1.  Family, All good people, Heroes, every one of them, Our hearts and prayers go to their families. And they will be remembered.  Nor will we forget those who serve out of spotlight, to whom we owe h

2013-06-29 17:37:14 784

转载 svn command 常用

转载自http://www.codelast.com/?p=5719(1)查看日志提交的时候一般会写上注释,如果要查看提交日志,用以下命令:1svn log -l 4其中,-l 4表示只查看最近4条日志(也可以没有这样的参数,就表示查看所有日志)。但是你通常会很抓狂地发现,最近的几条

2013-06-21 22:07:47 774

转载 C/C++中的日期和时间 TIME_T与STRUCT TM转换

转载自http://www.cnblogs.com/Wiseman/archive/2005/10/24/260576.html摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:

2013-06-19 21:00:56 689

原创 nginx 研究2

今天看了一下main的初步源码,第一行,就让我学到了一些东西int ngx_cdeclmain(int argc, char *const *argv)什么是ngx_cdecl找到#define ngx_cdecl是个空定义,那么究竟是来干嘛的查了一下,发现是跨平台时的一种约定。http://en.wikipedia.or

2013-06-19 16:53:56 835

原创 php install phpunit on ubuntu

ubuntu上安装phpunit,直接安装完,使用会报错,需要更新pear源,sudo apt-get install phpunitsudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear channel-discover pear.symfon

2013-06-14 22:43:47 857

转载 realpath

#include limits.h>#include stdlib.h>char *realpath(const char *path, char *resolved_path);Feature Test Macro Requirements for glibc (see feature_test_macros(7)):realpath():_BSD_SOURCE || _XOPE

2013-06-14 17:15:29 1141

转载 fstat、stat和lstat 区别(转)

原文地址http://www.cnitblog.com/guopingleee/archive/2008/11/13/51411.htmlstat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。1首先隆重介绍的是一个非常重要的”VIP”人物,他是fstat, stat和lstat

2013-06-14 17:11:33 651

原创 nginx 初探一

首先参考一下emiller的模块开发介绍这篇http://www.evanmiller.org/nginx-modules-guide.htmlNginx模块有三个主要的角色Handler, 处理请求,并产生结果Filter, 过滤结果Load-balancer 负载均衡Note: Unlike modules in Apache

2013-06-10 12:01:08 945

原创 linux 服务器时间函数

linux下,至少有两种当前时间的获取函数,1. time(NULL)2. gettimeofday(NULL, NULL) 这两个函数都是在用户态完成的,效率上来说,time更高;精度上来说gettimeofday()更好。根据需要自己选择吧,测试函数如下,#include #include #include #include #inc

2013-06-09 16:15:53 937

转载 nginx的定时器源码分析

编写服务器常常会需要实现定时器功能。windows下有微软封得好好的控件,拖之即用,Linux下面就算了,还是自己动手吧。虽说Linux提供了基于信号的定时功能(alarm,settimer),但是,考虑到信号是如此的粗暴,还是算了,在写高性能服务器的时候,还是别用了。免得被虐。既然放弃了系统的定时功能,那么只能在用户空间自己实现了,思路也很简单。维护一个时间和一堆定时器事件,每次

2013-06-06 21:11:53 838

转载 vim.c 使用

This article is part of the ongoing Vi / Vim Tips and Tricks Series. As a programmer, you may do lot of repetitive tasks while coding such as:Adding file headerAdding function/frame commentInclu

2013-06-01 17:11:04 690

原创 线程安全

之前的一篇中提到了,在访问同一个i对象时,可能会有访问结果跟预期不一致的问题。今天正好看到了一些线程对内存访问加锁的函数,于是上网搜集了一下,做了个整理。参考资料:http://www.cnblogs.com/FrankTan/archive/2010/12/11/1903377.htmlhttp://blog.itmem.com/?p=1286http://pic.dhe.ibm.com/inf

2013-05-18 12:33:27 670

原创 protobuf 使用中发现的一个问题

首先先说一下版本protoc  --version2.5.0然后说一下bug是什么,就是在把一个对象序列化成一个ostringstream后,如果再把另一个对象序列化到同一个ostringstream后,会发现第二个对象变成了两个对象。即使ostringstream.clear() 后一样会有问题先上协议文件, 标准的examplepackage lm;

2013-05-16 18:08:56 982

原创 google test 中的小陷阱

昨天晚上在做单元测试时,有两个例子始终过不去。但是令我惊讶的是,分别测试时,竟然可以通过。程序的本质上来说就是对一个字符串的按位读取。那么为什么,这个程序会出现这样的异常情况呢?我的初步怀疑是gtest是多线程的,而我在对字符串操作的时候不是线程安全的,导致当前在字符串的索引与我的预期出现了偏差。今天晚点时候写个简单的例子来验证一下。

2013-05-15 09:35:01 681

转载 数据类型 -- uint32_t 类型(ZZ)

1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.    如:    a> 当某个数据不可能为负数时我们一定要考虑用以下类型:       unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsigned long int,     b> 当有些数据你不知道是正负时一定不要用"a>"中的类型, 不然

2013-05-13 23:29:20 1535

转载 Reactor模式,或者叫反应器模式

原文链接http://daimojingdeyu.iteye.com/blog/828696Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方

2013-05-13 19:37:18 689

原创 svn ignore some directory

提交程序的时候,最烦的事情就是有些目录是不需要提交的。例如php页面程序里的tmp, cache, log等目录,或者c/C++目录下,使用cmake外部编译时创建的build目录。那么如何自动忽略这些目录下的变更?下面的几行代码足以满足。svn propset svn:ignore "*" log/svn propset svn:ignore "*" tmp/svn

2013-04-29 20:03:44 942

原创 c/C++的xml解析

现代的程序开发,难免会需要去解析一些静态数据。xml作为静态数据存储的一种常见方式,如何拿c/c++来解析,就成为了一个重要的话题。查阅了不少资料后,先决定试试tinyXml。因为它的风格,我更喜欢一些。下面简单的介绍一下如何使用。假设test.xml这么设计       233       11. 首先定义一个xml的文件对象: T

2013-04-29 19:34:21 1001 2

转载 LINUX命令行如何查看memcache运行状态?

(附加)如何查看memcache服务器端版本:  ./memcached  -hmemcache的运行状态可以方便的用 stats 命令显示。首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。这些状态的说明如下:pidmemcache服务器的进程ID

2013-04-17 17:53:18 1000

原创 ubuntu 12 install redis

今天开始写数据server部分,大家初步的方案是用redis+mysql所以要安装,下面记录安装的基本过程,留做后续参考unbuntu 12 已经支持从安装源来安装redis了sudo apt-get install redis-serversudo cp /etc/redis/redis.conf /etc/redis/redis.conf.default

2013-04-17 11:04:05 1122

转载 极不和谐的 fork 多线程程序

原文地址http://blog.codingnow.com/2011/01/fork_multi_thread.html极不和谐的 fork 多线程程序继续前几天的话题。做梦幻西游服务器优化的事情。以往的代码,定期存盘的工作分两个步骤,把 VM 里的动态数据序列化,然后把序列化后的数据写盘。这两个步骤,序列化工作并没有独立在单独线程/进程里做,而是放在主线程的。IO 部分则在一

2013-04-16 20:22:52 632

原创 Cannot assign requested address

在做压力测试的时候,发现客户端总会报错误Cannot assign requested address上网搜了资料后发现,1. 要设socket 是可重用的,但是这个我在程序里也已经写了int bReuseaddr=1;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(in

2013-04-16 16:32:54 944

转载 linux下最大文件描述符的限制

linux下最大文件描述符的限制有两个方面,一个是用户级的限制,另外一个则是系统级限制。先介绍如何修改系统级的限制通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下:$ulimit -n1024当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的session

2013-04-15 10:53:28 949

原创 gtest source code

gtest  里面有一段漂亮的宏定义代码大意就是说如果定义了跑出异常,就要在执行的时候判断,试图捕获异常,并处理异常如果没有定义就不用管了,  如下的红色代码所示,两段式一样的# if GTEST_HAS_EXCEPTIONS#  define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \  try {

2013-04-13 17:50:24 1075

转载 Redis如何处理客户端连接

连接的建立Redis通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。然后为这个socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法然后创建一个 readable

2013-04-09 13:52:01 841

空空如也

空空如也

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

TA关注的人

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