自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 非阻塞(nonblock)socket接口会否出现EINTR错误

对于socket接口(指connect/send/recv/accept..等等后面不重复,不包括不能设置非阻塞的如select),在阻塞模式下有可能因为发生信号,返回EINTR错误,由用户做重试或终止。但是,在非阻塞模式下,是否出现这种错误呢?对此,重温了系统调用、信号、socket相关知识,得出结论是:[b]不会出现[/b]。首先,1.信号的处理是在用户态下进行的,也就...

2012-10-05 21:11:50 267

仅供参考, cURL 二次封装的类库 Curl_Manager

[url=http://curl.haxx.se/]cURL[/url]是一个可以在命令行下发起http请求的工具,phpl有调用ibcurl的适配器(adapter),所以在php里可以很方便的使用这个工具。在使用cURL的过程中是否觉得难以使用,选项太多,没有封装,使用不够方便?为了方便使用,我对php的cURL进行了二次封装,基于组合模式,使用灵活,能满足多数应用场景,经过我...

2010-07-03 21:27:08 244

PHP实时输出报文到浏览器

Yahoo的前端优化实践中有一条是先把html里的部分先输出([url=http://developer.yahoo.com/performance/rules.html#flush]Flush the Buffer Early[/url]),这样做浏览器得到head后能先下载head里的css/js文件,而不用等到整个html下载完了才去下载head里的css/js,从而提高网页打开的速度。...

2010-06-06 15:09:37 542

High Performance MySQL 笔录(schema/index 部分)

主要记录阅读High Performance MySQL后新发现的知识点。[b]1.uuid用binary保存[/b]建议uuid不要使用char来保存,而用binary(16)来保存。这里在长度上来讲用binary会节省一半。因为一个字符占用1个字节,而一个字节实际上可以表示0-256(2^8),用16进制的表示需要2个字节00-FF(0-256)。优化前:SET uuid = ...

2010-05-19 18:49:36 117

原创 nginx 预压缩(gzip)静态文件

对于静态文件先压缩再输出是再正常不过的事了,但是这种压缩都是动态的,在每次请求都会先压缩再输出,大大浪费了很多cpu。如果前端加了反向代理缓存,那能减少这种浪费。但不是每个生产环境前端都有缓存的。而nginx有个模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持gzip的请求则读取原文件。...

2010-05-15 14:04:05 435

NoSQL数据转储(同步)方式

在使用数据库方面,我们经常会遇到读/写瓶颈,只要不是达到门户级的瓶颈,多数情况都能很好的解决。这段时间NoSQL的崛起,极大的方便解决写瓶颈。写瓶颈的解决方法是先把数据缓冲到NoSQl中,然后定时转储回RMDB里,毕竟RMDB的查询能力更强。所以,会遇到一个问题,就是数据怎么同步回RMDB?假如,有这样的应用场景,我们使用了NoSQL来存储文章点击数(pv),并定时将点击数存储到MySQL...

2010-05-01 20:21:24 254

构建RESTful Web Service - 验证的实现和使用(HTTP 基本认证)

因为RESTful的无状态特性,导致无法知道当前的请求方是否可靠,所以不得不对每次请求进行验证。但是如何更语义化的将需要验证的信息附加到HTTP里呢?现在比较常见的方式是把验证信息作为参数发送过去,但是这样会违反RESTful的原则。例如,GET /user/1/xx验证信息xx。幸好的是HTTP协议本身定义了两种认证方式,Basic和Digest。[size=large][b]一、HTT...

2010-04-07 11:40:35 192

原创 FYI, MySQL高效分页

在Percona Performance Conference 2009大会上来自yahoo的Surat Singh Bhati ([email protected]) 和 Rick James ([email protected])给大家分享了MySQL高效分页的经验。[size=large][b]一、概述[/b][/size][list][*]常见分页方式[*]s...

2010-03-05 17:23:00 402

NoSQL系统汇总

[b]key-value 缓存[/b]memcached, repcached, coherence, infinispan, eXtreme scale, jboss cache, velocity, terracoqa[b]key‐value 存储[/b]keyspace, flare, schema‐free, RAMCloud[b]最终一致性(eventually‐...

2009-11-08 13:12:36 90

分布式持久key-value数据库 LightCloud

原文:[url]http://opensource.plurk.com/LightCloud/[/url] 实在想不明白为什么被GFW了。[size=medium][b]功能[/b][/size][list][*]构建在Tokyo Tyrant的基础上,是一个非常快的key-value数据库[[url=http://tokyocabinet.sourceforge.net/benc...

2009-11-07 22:06:58 216

10进制和64进制相互转换 php版

使用:表示10以及使用;表示11的原因是根据ascii的排列来选择的,这样要对64进制比较大小,直接比较就可以了。。。[code="php"]

2009-11-05 11:28:39 680

nginx + php-fpm 优化 post 性能

当POST到Web Server的时候,Web Server接收数据后再复制一份数据给FastCGI进程,这样多了一次复制开销和内存使用,比较浪费,POST数据越大越明显(包括上传)。nginx允许以文件的方式来传递,nginx先把浏览器POST过来的数据保存在文件里,当传给FastCGI进程的时候,通过文件路径来传递数据(包括上传),从而提高POST性能。但是,如果只有nginx是不够的...

2009-11-01 20:39:28 304

Tokyo Cabinet 的四种数据结构

Tokyo Cabinet提供了Hash、Fixed-length、Table和B+ Tree四种数据结构,不同的结构特性和应用场景都不一样。TC本身提供了专门测试和调试工具tc (h/f/t/b) mgr。Tokyo Tyrant在启动的时候,通过数据库文件名后缀来表示使用哪种数据结构。以下是结构和后缀对应表:[list][*][b]Hash Database[/b] :.t...

2009-10-29 19:31:54 90

使用HTML Purifier解决XSS问题

在php里解决XSS最简单的方法是使用htmlspecialchars转义xml实体,但对于需要使用xml的时候就搏手无策了。之前一直使用一个叫[url=http://kallahar.com/smallprojects/php_xss_filter_function.php]RemoveXSS[/url]的函数,该函数过滤得比较严格,很多html特性都过滤了,而且有bug,不修改代码使用起来很不...

2009-09-23 22:33:37 198

更改MySQL log size导致的问题

一db对innodb表执行dml操作出现错误:[code="java"]ERROR 1033 (HY000): Incorrect information in file: './db/table.frm'[/code]刚开始以为是表定义文件坏了,本想从salve复制一份覆盖,谁知执行show innodb status出现[code="java"]Cannot call SHOW INN...

2009-09-13 12:59:20 188

php里json_decode无法解析的情况,返回空(null)

我的版本是5.2.x,php的json解析也太烂了,兼容性太差了。[b]一、只能使用双引号(")[/b]在JSON里只用"来表示字符串,例如[code="java"]{'aa':'sdf'}'adf'['1', '2'][/code]这些使用'的统统不能解析,而且对象的属性也必须用",也就是只能用双引号..直接用str_replace("'", '"', $...

2009-08-04 21:08:09 261

linux 下 SpiderMonkey 1.7.0 编译和安装

这个shell脚本将会自动下载源代码编译,然后把头文件和tbl文件拷贝到include目录,.so文件将拷贝到lib目录,还会把js(执行程序)拷贝到bin目录在Ubuntu 6.06测试通过[code="java"]#!/bin/bashif test "$USER" = root; then wget http://ftp.mozilla.org/pub/mozill...

2009-08-03 20:30:39 339

激动人心的 APC 新特性

来自facebook的大牛在OSCON2009上分享了APC的当前状况和未来发展,有几点特性确实让人非常激动。APC已经不再只是一个opcode和数据缓存。[b]一、lazy loading[/b]根据作者的介绍,现在APC已经支持lazy loading,并且已经在facebook中运行。例如,文件fun.php[code="php"]...

2009-07-27 23:22:39 114

什么是core文件?

原文:[url]http://www.unixguide.net/linux/faq/07.13.shtml[/url]bug和操作系统或硬件的保护机制都会导致程序异常终止,操作系统会kill掉这些进程并产生core文件,程序员可以通过core文件来找出问题所在。它记录了程序挂掉时详细的状态描述。如果想要寻找core文件的产生程序,可以使用file命令,例如:[code="ja...

2009-07-18 02:15:17 533

ImageMagick命令行下无法执行的问题

在命令行下执行 convert -resize 100x100 xx.jpg xx.jpg出现错误[code="java"]convert: error while loading shared libraries: libMagickCore.so.2: cannot open shared object file: No such file or directory[/code]解决方...

2009-07-18 00:17:32 473

改善InnoDB恢复的时间

InnoDB的恢复速度是一个十分让人困惑的问题。这里有很多关于它的讨论:[url]http://bugs.mysql.com/bug.php?id=29847[/url][url]http://dammit.lt/2008/10/26/innodb-crash-recovery/[/url]这些问题导致InnoDB奔溃的时候,需要很长的启动时间。即使从备份文件恢复也会影响到(包括LVM...

2009-07-08 22:35:08 69

使用logrotate做nginx日志轮询

logrotate看名字就知道是专门做日志轮询的,只把任务配置放在/etc/logrotate.d/下,任务就会自动完成,而且无需安装,系统自带,比较推荐使用.[code="java"][root@srv logrotate.d]# vi /etc/logrotate.d/nginx[/code]配置如下[code="java"]/usr/local/nginx/logs/ww...

2009-06-28 02:11:11 144

再实验mysql中批量查询使用in还是n+1?

延续上次的实验,[url]http://willko.iteye.com/blog/407964[/url]200m记录,innodb先从小量查询开始实验,只考虑随机情况,毕竟生产环境比较少出现顺序.20个值的情况[code="java"]| 3 | 0.23469200 | SELECT * FROM Member WHERE MemberID IN (...

2009-06-28 01:31:49 130

同步无阻塞加载js

一同事分析页面遇到阻塞式加载js,影响了页面的渲染速度。.之前,实现WYSIWYG插件机制的时候为了实现lazy load,写了个同步无阻塞加载js的方法,解决方法很暴力,仅供参考,,注意,只是个demo。。。[code="html"] test var require = {}; function import...

2009-06-28 00:25:57 85

一次查询完成基于“父id"的无限分类

无限分类谈得太多了,无非三种方法“路径”“左右值”“父id”,网上的讨论得比较多,具体实现就不再次讨论了。三种方法,各有优缺点。“父id”的优点在于实现简单和移动节点简单,缺点在于查询麻烦,毕竟只能针对一层操作。我想,对于“父id”这种无限分类的查询,多数人都是使用递归来实现了,性能自然不用说,分成n条sql去查询,对mysql的造成不少负载。如果,仔细考虑下个递归过程,完...

2009-06-25 18:00:35 108

flash 无法 隐藏(display:none)的解决方法

如果在页面,把flash用css隐藏起来(display:none),那么显示的时候会有问题,因为显示的时候flash会重新加载。。解决方法就是把margin设置成负数,偏移出视觉,再把position设置成absolute就可以达到display:none的效果了,而且flash还会继续运行。。显示回来,只要把这两个css属性还原就可以了。。...

2009-06-23 18:11:16 228

mysql中批量查询使用in还是n+1?

某日,在一LAMP群里,讨论这个,有些人倾向于in,有些人倾向n+1(用union组合结果),还说是baidu的dba去他们公司培训说一定要使用n+1.。其实,我看未必,使用in的话搜索只需走扫描一次索引就好了,因为是rang,从最小值扫到最大值。而使用n+1的话,每条sql都需从树根开始往下扫描,这样反而遍历的索引数多了。所以,我的看法是,当值之间比较相近(顺序)的时候使用in,当值之间...

2009-06-14 01:45:08 550

轻量级持久存储系统 MemcacheDB

注:memcached可能简称mc,memcachedb可能简称mcdb[size=medium][b]一、memcachedb是什么[/b][/size]mcdb是一款分布式键值持久存储系统,由新浪开源。mcdb基于mc协议,所以可以使用mc客户端直接使用,存储引擎方面使用Berkeley DB,支持主从复制模式。[size=medium][b]二、memcachedb的应用场景...

2009-05-24 18:55:10 225

图片上传即时显示缩略图的方法

当用户批量上传图片的时候,马上显示缩略图,能有效提高UE。先看demo,基于jquery,[url]http://www.willko.cn/lab/test.html[/url],目前还不完善,希望和大家继续探讨目前,浏览器兼容情况:ie6: 支持ie7: 支持ie8: 未测试ff2: 未测试ff3: 支持webkit系列: 不支持对于webkit...

2009-05-07 21:52:20 259

nginx 实现缺省图片的方法

在一个nginx的windows移植群里,有朋友问到这个问题,如何实现nginx下当图片不存在返回缺省图片。[size=medium][b]一、使用rewrite[/b][/size][code="java"]location ~* \.(gif|jpg|jpeg|png|bmp)$ { if (!-f $request_filename){ rewrite ^ /404.g...

2009-04-11 00:29:06 189

启动mysql出现错误,找不到系统表

之前的服务器被别人拿了,所以自己买了台美国vps,根据笔记安装完启动mysql,又启动不了。查看了错误日志[quote]090321 18:55:03 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data/usr/local/mysql/libexec/mysqld: Table 'my...

2009-03-22 02:05:08 140

使用版本号来同步浏览器缓存

在浏览器缓存这块,缓存同步比较被动,如果依靠设置时间过期的话,那文件更新了将不能及时同步。今天,发现Wordpress加载js和css都会在文件名后加上一串变量,很多网站都这样,例如je:[code="html"] [/code]后面有一个时间戳,这个时间戳是这个文件的版本号以前一直没想明白为什么,今天突然想明白了,这是这个文件的版本号)。这样做的话,可以把缓存设置成永不过...

2009-03-21 10:27:56 208

我看php 5.3 的新特性

从php4到php5,从个人框架到开源框架的发展,见证着php从山寨走上正规大军的发展。php6还在酝酿中,相信php5会作为php6小试牛刀的场地。php5.3是php5的一个里程碑,加入了大量新特性。我个人总感觉php功能是越来越多了,但是php的语法却越来越丑陋了,有时加入了新功能,而新功能带来了问题,为了修复问题,又要加入新的语法来修复,郁闷。估计php用语法修复问题是为了更好的解...

2009-03-13 23:34:33 111

mysql 随机获取记录 order by rand 优化

如果要随机获取记录数,在mysql里最简单的方法肯定是order by rand()了,但是这种方法只能在表记录极少的情况下才能使用。主要是因为order by rand()导致了using filesort.这个时候查询类型会变成all,索引会失效。只需简单的变通下,完成可以做到同样的效果。根据记录的类型,分类连续和非连续两种。连续指记录是连续存放的,并且有字段可以证明记录是连续的,...

2009-02-28 16:07:56 204

php 实现简单 sso 初步方案

首先,声明一点,sso和任何语言没有关系,因为我只懂php,为了非php程序员误入,所以就起了这样的标题。我也是这几天才接触这个sso的,sso就是要解决同步登陆、退出的问题。如果有什么错误的地方,请指出,谢谢。假设当前情况有passport系统、应用blog和应用album,实现应用之间同步登陆退出之类的操作。我的方案是这样的,passport系统有三个模块,一个是OBSer...

2009-02-24 18:37:35 105

feed设计

对于sns来说,动态就是核心,动态是传播信息的媒体,用户以动态展开各种交互。从技术角度来说,动态在读和写方面会很多,用户要先看到动态再去做其它操作,而其它操作都会导致动态的更新,表记录会很多,并只有插入,删除和查询,动态显示每个人都不一样,甚至有很大分别。先说下好友表,好友表需要有用户id和好友的id两个字段,建唯一索引。连接的时候只需using index,如果内存够大,可以缓冲...

2009-02-21 23:46:28 97

原创 nginx 502 Bad Gateway 错误问题收集

因为,nginx和lighttpd的文档真的很少,更不用说中文文档了,所以收集一些和502有关的错误在这里,保留来源地址,建议看来源地址的内容。502是FastCGI出现问题,所以从FastCGI配置入手。[b]1.请检查你的FastCGI进程是否启动[/b][b]2.FastCGI进程不够使用[/b]请通过执行 netstat -anpo | grep "php-cg...

2009-02-16 12:40:30 179

PHP-FPM高负载技巧 (PHP-FPM on highload tips)

[b]只供参考,英语不好,多多练习。。[/b]这些技巧都比较基本的。。[color=gray]When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you : )[/color][color=darkblue]如果您高负载网站使用PHP-FP...

2009-02-15 23:18:15 188

轻量级持久存储系统 Tokyo 初窥篇

这套Tokyo系列有三个产品,Cabinet是数据库,Tyrant提供管理Cabinet的接口,Dystopia提供全文索引。我把Cabinet理解为存储引擎,Tyrant类似mysql的管理器,Dystopia则是插件。Tokyo Cabinet是日本人开发的一款数据库,它的功能比较简单,只能键值保存,没有检索功能,以hash table、b+tree、fixed-length arra...

2009-02-15 10:20:59 384

memcached 以及 php客户端 安装

web2.0和web1.0不一样,web1.0以内容为中心,所以web1.0做负载只需缓存内容就可以了,使用反向代理缓存页面就可以解决大部分问题了。而web2.0鼓励用户交互,内容都是动态的,只做反向代理命的话中率低,而且对数据库进行频繁的写,对数据库压力大。所以,web2.0对web1.0更需要使用内存缓存。memcached高性能的,分布式的内存对象缓存系统,在动态应用中减少数据库负载...

2009-02-15 09:27:02 146

空空如也

空空如也

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

TA关注的人

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