- 浏览: 386599 次
- 性别:
- 来自: 深圳
最新评论
-
zjx20:
...
非阻塞(nonblock)socket接口会否出现EINTR错误 -
mrfeng:
Digest 方式呢?
构建RESTful Web Service - 验证的实现和使用(HTTP 基本认证) -
lck140:
lck140 写道我照着楼主的方法试了一天了,根本就不行。是不 ...
nginx 预压缩(gzip)静态文件 -
lck140:
我照着楼主的方法试了一天了,根本就不行。是不是有哪没弄好,请高 ...
nginx 预压缩(gzip)静态文件 -
iwlk:
chrome 是支持gzip的, 只是添加了sdch~ 大家 ...
nginx 预压缩(gzip)静态文件
文章列表
对于socket接口(指connect/send/recv/accept..等等后面不重复,不包括不能设置非阻塞的如select),在阻塞模式下有可能因为发生信号,返回EINTR错误,由用户做重试或终止。
但是,在非阻塞模式下,是否出现这种错误呢?
对此,重温了 ...
cURL是一个可以在命令行下发起http请求的工具,phpl有调用ibcurl的适配器(adapter),所以在php里可以很方便的使用这个工具。
在使用cURL的过程中是否觉得难以使用,选项太多,没有封装,使用不够方便?
为了方便使用,我对php的cURL进行了二次封装,基于组合模式,使用灵活,能满足多数应用场景,经过我长期的实践。
支持 ssl/proxy
支持 cookie,会记录所有请求的cookie并带上(如需获得cookie的值,需要自己解析)
支持常见请求方法get/post/put/delete 等等RESTFul所需要的方法
支持文件上传
支持返回http报文和报头
支 ...
Yahoo的前端优化实践中有一条是先把html里的<head>部分先输出(Flush the Buffer Early),这样做浏览器得到head后能先下载head里的css/js文件,而不用等到整个html下载完了才去下载head里的css/js,从而提高网页打开的速度。
http1.1里增加 ...
主要记录阅读High Performance MySQL后新发现的知识点。
1.uuid用binary保存
建议uuid不要使用char来保存,而用binary(16)来保存。这里在长度上来讲用binary会节省一半。因为一个字符占用1个字节,而一个字节实际上可以表示0-256(2^8),用16进制的表示需要2个字节00-FF(0-256)。
优化前:SET uuid = UUID() (类型:char(36))
优化后:SET uuid = HEX(REPLACE(UUID(), '-', '')) (类型:binary(16))
2.用crc32替换长字符串的查找
如果索引列是个很长的字 ...
对于静态文件先压缩再输出是再正常不过的事了,但是这种压缩都是动态的,在每次请求都会先压缩再输出,大大浪费了很多cpu。如果前端加了反向代理缓存,那能减少这种浪费。但不是每个生产环境前端都有缓存的。而nginx有个模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持gzip的请求则读取原文件。
编译nginx的时候需要把--with-http_gzip_static_module参数加上。
配置:
#启动预压缩功能,对所有类型的文件都有效
gzip_static on;
#找不到预压缩文 ...
在使用数据库方面,我们经常会遇到读/写瓶颈,只要不是达到门户级的瓶颈,多数情况都能很好的解决。这段时间NoSQL的崛起,极大的方便解决写瓶颈。写瓶颈的解决方法是先把数据缓冲到NoSQl中,然后定时转储回RMDB里,毕竟RMDB的查询能力更强。所以,会遇到一个问题,就是数据怎么同步回RMDB?
假如,有这样的应用场景,我们使用了NoSQL来存储文章点击数(pv),并定时将点击数存储到MySQL里。
一.用户触发转储
首先给文章增加一个最后同步数据的时间戳,用于记录上次同步数据的时间戳,每次都先对比下最后同步时间是否大于n,大于n的话就同步回MySQL,然后将这次同步的时间戳保存回去。这个最后同 ...
因为RESTful的无状态特性,导致无法知道当前的请求方是否可靠,所以不得不对每次请求进行验证。但是如何更语义化的将需要验证的信息附加到HTTP里呢?现在比较常见的方式是把验证信息作为参数发送过去,但是这样会违反RESTful的原则。例如,GET /user/1/xx验证信息xx。幸好的是HTTP协议本身定义了两种认证方式,Basic和Digest。
一、HTTP 基本认证(Basic Athorization)
I.简介
HTTP基本认证比较简单,明文发送,没有签名,安全性低,没作用域,只能适用于一般场合。
整个交互过程如下:
用户访问需要认证的页面
服务端验证失败,响应401状态码,并 ...
在Percona Performance Conference 2009大会上来自yahoo的Surat Singh Bhati (surat@yahoo-inc.com) 和 Rick James (rjames@yahoo-inc.com)给大家分享了MySQL高效分页的经验。
一、概述
常见分页方式
schema设计和常见的分页方式(偏移)
避免分页偏移过大的技巧
...
key-value 缓存
memcached, repcached, coherence, infinispan, eXtreme scale, jboss cache, velocity, terracoqa
key‐value 存储
keyspace, flare, schema‐free, RAMCloud
最终一致性(eventually‐consistent) key-value 存储
dynamo, voldemort, Dynomite, SubRecord, Mo8onDb, Dovetaildb
ordered‐key‐value‐store
tokyo tyrant, ...
- 2009-11-08 13:12
- 浏览 3353
- 评论(0)
原文:http://opensource.plurk.com/LightCloud/ 实在想不明白为什么被GFW了。
功能
构建在Tokyo Tyrant的基础上,是一个非常快的key-value数据库[基准测试],Tokyo tyrant已经在Plurk.com、mixi.jp和scribd.com等网站使用多年...
性能非常好,可以和memcached相比
只需少数的服务器就可以存储数百万的key,从生产环境得出
水平扩展(scale out)只需增加节点
节点通过主主(master-master)复制(replication)数据,并且支持自动故障转移和负载均衡
Ability to ...
- 2009-11-07 22:06
- 浏览 4775
- 评论(0)
使用:表示10以及使用;表示11的原因是根据ascii的排列来选择的,这样要对64进制比较大小,直接比较就可以了。。。
<?php
function dec2s4($dec) {
$base = '0123456789:;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = '';
do {
$result = $base[$dec % 64] . $result;
$dec = intval($dec / 64);
} while ($dec != 0);
retu ...
- 2009-11-05 11:28
- 浏览 7047
- 评论(1)
当POST到Web Server的时候,Web Server接收数据后再复制一份数据给FastCGI进程,这样多了一次复制开销和内存使用,比较浪费,POST数据越大越明显(包括上传)。nginx允许以文件的方式来传递,nginx先把浏览器POST过来的数据保存在文件里,当传给FastCGI进程的时候,通过文件路径来传递数据(包括上传),从而提高POST性能。
但是,如果只有nginx是不够的,因为php不支持这种传递数据的方式。所以,必须给php打补丁,php-fpm是php的FastCGI管理器,php-fpm支持这种文件传输数据的方式。
说到这里,不得不说一个事情,在bbs上我见到有人讨 ...
- 2009-11-01 20:39
- 浏览 6165
- 评论(0)
Tokyo Cabinet提供了Hash、Fixed-length、Table和B+ Tree四种数据结构,不同的结构特性和应用场景都不一样。TC本身提供了专门测试和调试工具tc (h/f/t/b) mgr。
Tokyo Tyrant在启动的时候,通过数据库文件名后缀来表示使用哪种数据结构。
以下是结构和后缀对应表:
Hash Database :.tch
B+ tree database :.tcb
fixed-length database :.tcf
table database :.tct
内存Hash Database :*
内存B+ tree database :+
启动时, ...
在php里解决XSS最简单的方法是使用htmlspecialchars转义xml实体,但对于需要使用xml的时候就搏手无策了。之前一直使用一个叫RemoveXSS的函数,该函数过滤得比较严格,很多html特性都过滤了,而且有bug,不修改代码使用起来很不友好,修改了却无法应对灵活的XSS攻击。
HTML Purifier是基于php 5所编写的HTML过滤器,支持自定义过滤规则,还可以把不标准的HTML转换为标准的HTML,是WYSIWYG编辑器的福音。。
一、使用HTML Purifier的要求
php 5+
iconv
bcmath
tidy
二、基本用法
默认下,使用UTF-8编码, ...
- 2009-09-23 22:33
- 浏览 12479
- 评论(2)
一db对innodb表执行dml操作出现错误:
ERROR 1033 (HY000): Incorrect information in file: './db/table.frm'
刚开始以为是表定义文件坏了,本想从salve复制一份覆盖,谁知执行show innodb status出现Cannot call SHOW INNODB STATUS because skip-innodb is defined
错误说innodb引擎没启动,看了my.cnf没有skip-innodb选项啊。
重启了mysql,发现错误日志,InnoDB: Error: log file /.../mysq ...
- 2009-09-13 12:59
- 浏览 4101
- 评论(0)