`
ordinary
  • 浏览: 77262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
            #设置背景颜色  .skin-box-bd{background:url(http://img02.taobaocdn.com/imgextra/i2/1758944073/TB2ARZhapXXXXabXpXXXXXXXXXX_!!1758944073.jpg_620x10000.jpg);} #修改分类之外的导航 .skin-box-bd .menu-list{background:none repeat scroll 0 0 #CE243F;} #菜单文字之外  .skin-box-bd .menu-list .menu-selected .li ...
你是否曾为表单设计感到过沮丧或不知所措呢?接下来三篇文章,希望能彻底改变你的看法,真正爱上Web表单设计。首先感谢Luke Wroblewski的帮助,让我有机会细心品味设计表单的乐趣。总体来说,Web表单主宰着结算、注册和数 ...
交互设计是近几年流行的一个词语。现在市场上有许多资料来介绍什么是交互设计,如何做交互设计等。从场景,任务,用户,操作等分析。但由于受实际情况的限制,往往不能很深入。所以笔者结合实际工作体验与大家分享 ...

Netty实现原理浅析

转载http://www.kafka0102.com/2010/06/167.html Netty是JBoss出品的高效的Java NIO开发框架,关于其使用,可参考我的另一篇文章 netty使用初步。本文将主要分析Netty实现方面的东西,由于精力有限,本人并没有对其源码做了极细致的研 究。如果下面的内容有错误或不严谨的地方,也请指正和谅解。对于Netty使用者来说,Netty提供了几个典型的example,并有详尽的API doc和guide doc,本文的一些内容及图示也来自于Netty的文档,特此致谢。 1、总体结构
http://highscalability.com  
 引用:http://www.ibm.com/developerworks/cn/linux/l-cn-rwspinlock3/     基于简单共享变量的读写自旋锁的不足 本系列文章的第 2 部分中给出的实现都基于简单共享变量,简洁实用,但在大规模多核、NUMA 系统上可扩展性较差。我们说某个读写自旋锁的实现是可扩展的,通俗地讲是指在线程访问模式(读者写者数目之比、各自到来的频率及持有锁的时间)不变的前提下增加处理器的个数,线程的吞吐量(单位时间内获得锁的线程数目)也随之大幅增加。如果能接近线性(甚至由于缓存的影响使得超线性)增加,我们说该实现是高可扩展的。 基于简单共享变量的 ...
 引用:http://www.ibm.com/developerworks/cn/linux/l-cn-rwspinlock2/?ca=drs-     读者优先的读写自旋锁 我们先不考虑性能,搞出一个可用的实现再说。首先,用一个整型变量 status 来记录当前状态;另一个整型变量 nr_readers 来记录同时持 ...
       引用:http://www.ibm.com/developerworks/cn/linux/l-cn-rwspinlock1/index.html?ca=drs-       读写自旋锁简介 什么是读写自旋锁 自旋锁(Spinlock)是一种常用的互斥(Mutual Exclusion)同步原语(Synchronization Primitive),试图进入临界区(Critical Section)的线程使用忙等待(Busy Waiting)的方式检测锁的状态,若锁未被持有则尝试获取。这种忙等待的做法无谓地消耗了处理器资源,故而只适用于临界区非常短小的代码片段,例 ...

Analysis Patterns

Models are  not right or wrong ;they are more or less useful. Engineering demands a trade-off between the cose of building and maintaining an arifact and the features it will provide  Conceptual models are linked to interfaces not implementations  Patterns are a point ,not a destination
http://en.wikipedia.org/wiki/Java_Specification_Request
The Exceptional Performance team has identified a number of best practices for making web pages fast. The list includes 35 best practices divided into 7 categories. Filter by category:   Content   Server   Cookie   CSS  

Base 128 Varints

 Google Protobuf里面提出了“Base 128 Varints”编码,这是一种变字节长度的编码,官方描述为:varints是用一个或多个字节序列化整形的一种方法。我理解要点有三个(1)操作是序列化(2)操作对象是整形(3)变长编码。重点是最后一点,他是如何编码的呢?        (1)除了最后一个字节,varint中的每个字节的最高位设为1,表示后面还有字节出现        (2)每个字节的低7位看成是一个组(group),这个组和他相邻的下一个7位组共同存储某个整形的“组合表示”,最低有效组在前面。     上面的定义可能比较生硬,我没看具体例子之前,也没搞明白,我 ...
从本篇文章开始(命名为Redis分析系列),将会通过分析Redis的源代码(以Redis 2.2.0 RC1为准),来对它的内部实现做一些探讨。本文主要介绍Redis启动加载过程,总体上可以分为如下几步: 1. 初始化全局服务器配置 2. 加载配置文件(如果指定了配置文件,否则使用默认配置) 3. 初始化服务器 4. 加载数据库 5. 网络监听 整个启动加载过程如下图所示: 下面对于上图中的各个步骤一些介绍,有些部分(如数据库加载、网络监听)会在后面单独用一篇文章详细说明。 初始化全局服务器配置
Redis从1.2版本开始,设计了一套统一的协议格式,作者讲到自己设计的协议在下面几个方面进行了权衡: 1. 实现简单 2. 快速通过计算机解析 3. 容易让人阅读 如果我们需要自己实现一个Redis客户端程序,有必要了解一下Redis的协议格式。在网络层面,客户端通过TCP连接到Redis服务器(默认端口6379,可以通过配置文件修改),客户端与服务器之间发送的命令以\r\n(CR LF)结尾。 请求协议 Redis请求参数的通用格式如下: *<参数数量> CR LF $<第1个参数字节数> CR LF <参数数据> CR LF ... ...
如果认为Redis是一个key value存储, 可以使用它来代替MySQL;如果认为它是一个可以持久化的cache, 可能只是用它保存一些频繁访问的临时数据(代替Memcached);除此之外,还可以把Redis当做一个轻量级的消息队列使用,因为它内置就支持list数据结构和PUB/SUB命令;还可以当做一个轻量级的分布式锁系统。Redis是REmote DIctionary Server的缩写,在Redis在官方网站的解释是: Redis is an open source, advanced key-value store. It is often referred to as ...
Global site tag (gtag.js) - Google Analytics