`
willko
  • 浏览: 386599 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
对于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, ...
原文: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 ...
使用:表示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 ...
当POST到Web Server的时候,Web Server接收数据后再复制一份数据给FastCGI进程,这样多了一次复制开销和内存使用,比较浪费,POST数据越大越明显(包括上传)。nginx允许以文件的方式来传递,nginx先把浏览器POST过来的数据保存在文件里,当传给FastCGI进程的时候,通过文件路径来传递数据(包括上传),从而提高POST性能。 但是,如果只有nginx是不够的,因为php不支持这种传递数据的方式。所以,必须给php打补丁,php-fpm是php的FastCGI管理器,php-fpm支持这种文件传输数据的方式。 说到这里,不得不说一个事情,在bbs上我见到有人讨 ...
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编码, ...
一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 ...
Global site tag (gtag.js) - Google Analytics