04 2014 档案
Redis使用总结之与Memcached异同(转)
摘要:Redis使用总结之与Memcached异同http://www.cnblogs.com/ceecy/p/3279407.htmlRedis是什么?两句话可以做下概括:1. 是一个完全开源免费的key-value内存数据库2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 stri... 阅读全文
posted @ 2014-04-25 10:49 外星猿 阅读(145) 评论(0) 推荐(0)
操作系统CPU上下文切换
摘要:关于CPU,有3个重要的概念:上下文切换(context switchs),运行队列(Run queue)和使用率(utilization)。 上下文切换: 目前流行的CPU在同一时间内只能运行一个线程,超线程的处理器可以在同一时间运行多个线程(包括多核CPU),Linux内核会把多核的处理器当作多个单独的CPU来识别。 一个标准的Linux内核可以支持运行50~50000个进程运行,对于普通的CPU,内核会调度和执行这些进程。每个进程都会分到CPU的时间片来运 行,当一个进程用完时间片或者被更高优先级的进程抢占后,它会备份到CPU的运行队列中,同时其他进程在CPU上运行。这个进程切换的... 阅读全文
posted @ 2014-04-07 18:47 外星猿 阅读(2174) 评论(0) 推荐(0)
从Java视角理解CPU上下文切换(Context Switch)
摘要:在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之间需要竞争IO设备, 或者竞争锁资源,导致往往执行速度还不如单个线程. 在这里有一个经常提及的概念就是: 上下文切换(Context Switch).上下文切换的精确定义可以参考: http://www.linfo.org/context_switch.html. 下面做个简单的介绍. 多任务系统往往需要同时执行多道作业.作业数往往大于机器的CPU数, 然而一颗CPU同时只能执行一项任务, 如何让用户感觉这些任务正在同时进行呢? 操作系统 阅读全文
posted @ 2014-04-04 16:13 外星猿 阅读(455) 评论(0) 推荐(0)
Netty原理和使用
摘要:Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器。支持HTTP、 WebSocket 、Protobuf、 Binary TCP |和UDP,Netty已经被很多高性能项目作为其Socket底层基础,如HornetQ Infinispan Vert.xPlay Framework Finangle和 Cassandra。其竞争对手是:Apache MINA和 Grizzly。 传统堵塞的IO读取如下:InputStream is = new FileInputStream("input.bin 阅读全文
posted @ 2014-04-03 16:40 外星猿 阅读(836) 评论(0) 推荐(0)
Java NIO原理和使用
摘要:Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。Java NIO出现不只是一个技术 阅读全文
posted @ 2014-04-03 16:39 外星猿 阅读(554) 评论(0) 推荐(0)