自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis实战系列(6) 利用lua对redis特定类型元素的list进行分段

只对排序的数字list进行分段存取,性能上有所下降,但是没有测试下降多少list_add.lualocal config = redis.call('config','get','list-max-ziplist-entries')local maxzipNum=tonumber(config[2])local metainfo=KEYS[1]..':split:met

2012-06-07 14:19:48 3272

原创 Redis实战系列(5) phpredis的brpop问题

使用phpredis的brPop实现消息队列时,发现每隔3秒便会出现read error on connection,而brPop的timeout参数是58,也就是默认的php socket超时时间减去2。redis server的timeout已经是0。 php的default_socket_timeout=-1,但是还是3秒的周期出现异常。最后发现是connect时传入了timeout=3,将

2012-06-07 14:18:56 2139 2

原创 Redis实战系列(5) phpredis的brpop问题

使用phpredis的brPop实现消息队列时,发现每隔3秒便会出现read error on connection,而brPop的timeout参数是58,也就是默认的php socket超时时间减去2。redis server的timeout已经是0。 php的default_socket_timeout=-1,但是还是3秒的周期出现异常。最后发现是connect时传入了timeout=3,将

2012-06-07 14:18:55 8167 1

原创 Redis实战系列(4) key的设计

Redis实战系列(4) key的设计我们的业务是内部微博,主要模块有 用户信息、微博信息、我关注的人、我的粉丝、我关注的人发布的微博、我发布的微博,还有类似sina微博的小黄签之类的提醒功能。key的设计如下:1.用户信息 用户信息是离散,因此用hashtable来存储以用户的user_id为key。实例 user:info:$user_id 其中$user_id是动态的变量 use

2012-06-05 16:13:32 4860

原创 Redis实战系列(3) 使用hashtable和hash-max-zipmap-entries优化内存使用

在我的系统中大约有50000个用户,每个用户有nickname1、nickname2、nickname3、nickname4、profile_id。对于上面几个属性来说,每个用户都是唯一的,而用户信息大概有70个字段。我用user:info:$profile_id作为一个hashtable的key来存储一个用户的所有信息。而系统要求能用nickname1、nickname2、nickname3、n

2012-06-02 15:12:58 10830 1

原创 Redis实战系列(2) 使用List结构构造高效的队列系统

Redis 提供了brpop blpop brpoplpush三个阻塞命令来监听一个List数据结构。下面是php脚本server.php$redis = new Redis();$redis->connect('127.0.0.1');while(true){ $data = $o->brpop(array('key1','key2'), 30); var_dump($data

2012-06-01 11:39:55 10943

原创 Redis实战系列(1) 运行多个实例以充分发挥多核处理器的能力

我们知道Redis是用"单线程-多路复用io模型"来实现高性能的内存数据服务的,这种机制避免了使用锁,但是同时这种机制在进行sunion之类的比较耗时的命令时会使redis的并发下降。因为是单一线程,所以同一时刻只有一个操作在进行,所以,耗时的命令会导致并发的下降,不只是读并发,写并发也会下降。而单一线程也只能用到一个cpu核心,所以可以在同一个多核的服务器中,可以启动多个实例,组成master-

2012-05-31 14:49:04 12026

转载 gcc生成静态库和动态库

一、库文件简介简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态库文件的扩展名是.a,共享库文件的扩展名是.so(在CYGWIN环境下,分别叫做.o和.dll)。共享库现在常常被叫做动态库,是由于很多人借用了MS Window

2009-10-13 21:50:00 641

原创 关于php中类的作用

     如题,我想学习java、c#、c++的同学能够比我解释的更好,但是我还是想要妄自菲薄一下,发表一下我的一点不成熟的看法。有人问php中的类到底有什么作用,我觉得这明显有贬低php的面向对象特性的嫌疑,好像面向对象换了个语言来实现其本质特征就不一样了。面向对象是一个概念,是一种思想,如果你没有很好的理解,无论在用什么语言实现,那只能是一堆函数的堆砌而已,可以形容为只用了面向对象的“

2009-08-16 11:03:00 736

原创 对web并发插入时出现重复记录的一点想法

       首先我们先了解下mysql的锁表机制。一种是共享锁,一种是独占锁。共享锁就是读锁,这种锁主要就是防止在读的时候又有新数据的插入,而并不排斥其他的线程读取。而独占锁就是在写的时候加的锁,既防止读,又防止写。好了,现在我们分析下为什么会出现重复记录。 假设一种情况:假设有两个表:a,b。a为订单表,b为帐务记录表。if order1.state == not_confirm

2009-08-10 11:08:00 1787

原创 mysql事务隔离级别测试

<?phpinclude_once(getenv(HOME)./autoload.php);$oDb = Db::get(account);$oDb->query(SET TRANSACTION ISOLATION LEVEL SERIALIZABLE);//$oDb->query(SET TRANSACTION ISOLATION LEVEL REPEATABL

2009-08-06 21:46:00 1063

原创 Extending.and.Embedding.PHP读书笔记(5)-内存管理

1.内存php对照c语言的malloc(), free(), strdup(), realloc(), calloc()等等这些函数进行了封装,实现了一套自己的内存管理宏emalloc(),efree(),strdup(),erealoc(),ecalloc()等等宏。为什么要自行封装内存管理函数呢,直接用操作系统提供的不行吗?这是因为在每个请求中,遇到die,exit或者是具有使脚本停止

2009-08-03 15:36:00 818

原创 Extending.and.Embedding.PHP读书笔记(4)-php变量

 1.php是松散变量类型的语言,即变量可以不经过声明便可以使用,变量可以存储任何类型的值2.比较重要的数据类型在Zend/zend.h中定义的zval zvalue_valuetypedef struct _zval_struct {    zvalue_value value;    zend_uint refcount;    zend_uchar type;

2009-08-03 15:15:00 1057

原创 Extending.and.Embedding.PHP读书笔记(3)-Zend线程安全

    Php在其诞生初期,作为一个单进程的CGI程序并没有考虑线程安全,因为没有任何进程能够比一个请求生存期更长。所以一个内部变量能够声明在一个全局范围内,并且可以任意更改,只要它被确切的初始化了。任何没被清理的资源都会随着cgi进程的结束而被释放。    多进程的web server的出现并没有促使TSRM这层的出现,真正促使该层出现的是多线程web server的出现。   

2009-08-03 15:14:00 935

原创 Extending.and.Embedding.PHP读书笔记(2)-php生命周期

 1.php的开始和结束有两个,其中一个为随着sapi启动而启动,并随着sapi关闭而结束。每个扩展都包含这两个函数PHP_MINIT_FUNCTION 随着sapi启动,进行一些该扩展的静态变量声明等操作,这些变量将会出现在每次请求中。PHP_MSHUTDOWN_FUNCTION随着sapi的关闭进行一些该扩展的资源清理工作。另外一个随着每个请求而启动,随着单个请求的结束而结束。PHP_RI

2009-08-03 15:13:00 988

原创 Extending.and.Embedding.PHP读书笔记(1)-php关键部分介绍

 php分5个部分1.SAPI(Server API),这部分负责提供外部接口。2.Php core 负责请求管理,网络和io操作3.Zend引擎,负责语法分析,编译执行,内存和资源管理4.Php extensions php扩展,这包含了我们日常所使用的所有函数5.最后一部分TSRM,贯穿所有上面几个部分,这一层叫作线程安全的资源管理(Thread Safe Resource

2009-08-03 15:11:00 929

原创 变量的初始化

    一般的编译器都支持在编译阶段初始化全局变量,但是我想生命的全局变量对象过大的话,会占用很多磁盘空间。静态全局变量在可执行文件中的数据段。     局部变量在所谓的BSS段放着,这个段的名字就叫为初始化存储段。如果操作系统为程序提供的这个单独的段,那么他一般也会支持在程序执行前将程序所用内存清空,所以为了节省空间,编译器并未对局部变量进行初始化。但是在有的操作系统中,虽然有此段,但是操作

2009-07-16 09:58:00 368

原创 在用链表实现堆栈时遇到的问题

下面是正确的代码 1 #include 2 #include 3 4 struct node{ 5 int value; 6 struct node *next; 7 }; 8 9 struct node *push(struct node *stack,int value); 10 struct node *pop(s

2009-07-07 20:18:00 750 2

空空如也

空空如也

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

TA关注的人

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