月度归档:2011年08月

Gvim windows下窗口透明

来源于:http://hi.baidu.com/idea_star_/blog/item/6133ac0df7acf93c6a60fb7c.html

在linux下可以实现窗口透明,最近在windows下折腾vim,一直想尝试将窗口设置为透明。于是google之,找到了vimtweak.dll

下载地址:http://www.vim.org/scripts/script.php?script_id=687

下载后把vimtweak.dll放到gvim.exe的安装目录下。

打开gvim,敲入下面命令来实现对应功能。窗口透明后面的参数可以是0~255.个人感觉大于200比较好。

Continue reading Gvim windows下窗口透明

Redis内存存储结构分析

来源于:http://www.searchtb.com/2011/05/redis-storage.html

1 Redis 内存存储结构

本文是基于 Redis-v2.2.4 版本进行分析.

1.1 Redis 内存存储总体结构

Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创建一个 redisDb 数组. 客户端在连接后,通过 SELECT 指令来选择一个 reidsDb,如果不指定,则缺省是redisDb数组的第1个(即下标是 0 ) redisDb. 一个客户端在选择 redisDb 后,其后续操作都是在此 redisDb 上进行的. 下面会详细介绍一下 redisDb 的内存结构.

Continue reading Redis内存存储结构分析

为什么使用 Redis及其产品定位

来源于:http://www.infoq.com/cn/articles/tq-why-choose-redis

传统MySQL+ Memcached架构遇到的问题

实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:

  1. MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。
  2. Memcached与MySQL数据库数据一致性问题。
  3. Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。
  4. 跨机房cache同步问题。

众多NoSQL百花齐放,如何选择

最近几年,业界不断涌现出很多各种各样的NoSQL产品,那么如何才能正确地使用好这些产品,最大化地发挥其长处,是我们需要深入研究和思考的问题,实际归根结底最重要的是了解这些产品的定位,并且了解到每款产品的tradeoffs,在实际应用中做到扬长避短,总体上这些NoSQL主要用于解决以下几种问题

  1. 少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。
  2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。
  3. 这方面最具代表性的是dynamo和bigtable 2篇论文所阐述的思路。前者是一个完全无中心的设计,节点之间通过gossip方式传递集群信息,数据保证最终一致性,后者是一个中心化的方案设计,通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log,然后定期compat归并到磁盘上,将随机写优化为顺序写,提高写入性能。
  4. Schema free,auto-sharding等。比如目前常见的一些文档数据库都是支持schema-free的,直接存储json格式数据,并且支持auto-sharding等功能,比如mongodb。

面对这些不同类型的NoSQL产品,我们需要根据我们的业务场景选择最合适的产品。

Continue reading 为什么使用 Redis及其产品定位

淘宝数据魔方技术架构解析

来源于: http://howe.im/网络/淘宝数据魔方技术架构解析.html

淘宝网拥有国内最具商业价值的海量数据。截至当前,每天有超过30亿的店铺、商品浏览记录,10亿在线商品数,上千万的成交、收藏和评价数据。如何从这些数据中挖掘出真正的商业价值,进而帮助淘宝、商家进行企业的数据化运营,帮助消费者进行理性的购物决策,是淘宝数据平台与产品部的使命。

为此,我们进行了一系列数据产品的研发,比如为大家所熟知的量子统计、数据魔方和淘宝指数等。尽管从业务层面来讲,数据产品的研发难度并不高;但在海量的限定下,数据产品的计算、存储和检索难度陡然上升。本文将以数据魔方为例,向大家介绍淘宝在海量数据产品技术架构方面的探索。

淘宝海量数据产品技术架构

数据产品的一个最大特点是数据的非实时写入,正因为如此,我们可以认为,在一定的时间段内,整个系统的数据是只读的。这为我们设计缓存奠定了非常重要的基础。

1 淘宝海量数据产品技术架构

Continue reading 淘宝数据魔方技术架构解析

使用 Node.js 作为完整的云环境开发堆栈

来源于: http://howe.im/编程/使用-node-js-作为完整的云环境开发堆栈.html

随着技术创新表面上继续以指数级速度发展,新思想层出不穷。服务器端的 JavaScript 就是这些新思想之一。 Node.js 是一种事件驱动的 I/O 框架,用于 UNIX 类平台上的 V8 JavaScript 引擎,适合于编写可伸缩的网络程序,如 Web 服务器。 Node.js 正是这种新思想的实现。 

Node.js 并非与 JavaScript 抗衡,而是使用它作为完整的开发堆栈,从服务器端代码一直延伸到浏览器。Node.js 还充分利用了另一种创新思想:通过回调利用异步 I/O 的并发性模型。 

Node.js 云计算平台 

在云计算环境中使用 Node.js 框架时,能显示出它的一个巨大优点。对于应用程序开发人员,这往往归结使用平台即服务 (PaaS) 或基础架构即服务 (IaaS) 模型。对于开发人员而言,最抽象和公认最方便的方法是使用 PaaS 提供程序。图 1 十分简单地说明了 PaaS IaaS 模型的结构。

Continue reading 使用 Node.js 作为完整的云环境开发堆栈

Google用户体验设计的10准则

来源于: http://howe.im/网络/google用户体验设计的10准则.html

Google的愿景

Googl用户体验团队致力于创建有用的(useful)、快速的(fast)、简单的(simple)、有吸引力的(engaging)、创新的( innovative)、适合大众的(universal)、有用的(profitable)、漂亮的(beautiful)、值得信赖的(trustworthy)、个性化的(personable)的应用。

Google用户体验的十大准则

1.将焦点集中在用户的生活,工作,和他们的梦想上。

Google 用户体验小组努力发现用户的真正需求,包括那些他们自己都无法阐明的需求。有了这些信息,Google 就可以创建解决现实问题的产品并激发所有人的创造力。Google的目标不仅仅是按部就班的工作,而是改善人们的生活。总之,一个精心设计的 Google 产品在日常生活中是非常有用的。他并不是靠花哨的视觉效果和技术打动用户的,虽然也有具备这些特性。他不会强迫用户去使用他们不想要的特性,但是他会引导有兴趣的用户自发的去使用他们。他不会入侵别人的生活,但是回想那些想要探索世界信息、工作的更加快速和便捷、分享想法的用户敞开大门。

Continue reading Google用户体验设计的10准则

HTTP1.1和HTTP1.0的区别

来自于: http://blog.csdn.net/yanghehong/article/details/4222594

翻了下HTTP1.1的协议标准RFC2616,下面是看到的一些它跟HTTP1.0的差别。

Persistent Connection(持久连接)

HTTP1.0中,每对Request/Response都使用一个新的连接。

HTTP 1.1则支持Persistent Connection, 并且默认使用persistent connection.

Host

HTTP1.1Request消息头里头多了一个Host域,比如:

GET /pub/WWW/TheProject.html HTTP/1.1

Host: www.w3.org

HTTP1.0则没有这个域。

可能HTTP1.0的时候认为,建立TCP连接的时候已经指定了IP地址,这个IP地址上只有一个host

Continue reading HTTP1.1和HTTP1.0的区别

Go 和 Python Web 服务器性能对比

来源于: http://www.oschina.net/question/25940_19172。之所以转载,文中提到的python web架构是我所感兴趣的,和有价值的。

我通常使用 Python 来构建 Web 应用。一年前,在兴趣的驱使下,我开始学习 Go。 在此期间,我重写了一些原本由 C 开发的 CGI 应用,包括运行于 chroot 环境下的同 thttpd 服务器一起的应用。我开始寻找可以开发易于 chroot、且内置 Web 服务器的独立 Web 应用的工具。那时,我开始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 数据库 API。我发现,有 http、mustache.go  GoMySQL 包的 Go 可以是我用来工作的不错的工具组合。因此,我决定使用 Go 编写我的应用。

Continue reading Go 和 Python Web 服务器性能对比