摘要:
《现代操作系统》精读与思考笔记 第一章 引论本系列博文是《现代操作系统(英文第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正文精要部分的摘录和课后习题精解,因此不会事无巨细的全面摘抄,仅仅根据个人情况进行记录和推荐。由于是英文版,部分内容会使用英文原文。 课后习题的选择标准:尽量避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,而是能够引起思考加深理解的题目。为了保证解答的正确性,每道题都会附上作者的原文解答,而中文部分会适当加入自己的见解。原书答案下载地址:http://www.hzbook.com/Books/4.
阅读全文
posted @ 2013-11-03 00:08
HackerVirus
阅读(242)
推荐(0)
摘要:
Redis集群方案前段时间搞了搞Redis集群,想用做推荐系统的线上存储,说来挺有趣,这边基础架构不太完善,因此需要我们做推荐系统的自己来搭这个存储环境,就自己折腾了折腾。公司所给机器的单机性能其实挺给力,已经可以满足目前的业务需求,想做redis集群主要有以下几点考虑: 1、扩展性,scale-out,以后数据量变得很大之后,不至于推到重来,redis虽然可以开启虚拟内存功能,单机也能提供超过物理内存上限的容量,但频繁在内存和硬盘间swap页会大大降低其性能,有点儿违背redis的设计初衷。 2、redis是一个单线程io复用的结构,无法有效利用服务器的多核结构,如果能在一台多核机器起多个r
阅读全文
posted @ 2013-11-02 22:52
HackerVirus
阅读(219)
推荐(0)
摘要:
Hadoop处理大量小文件的问题和解决方法小文件指的是那些size比HDFS的block size(默认64M)小的多的文件。如果在HDFS中存储小文件,那么在HDFS中肯定会含有许许多多这样的小文件(不然就不会用hadoop了)。而HDFS的问题在于无法很有效的处理大量小文件。任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在namenode的内存中,没一个object占用150 bytes的内存空间。所以,如果有10million个文件,没一个文件对应一个block,那么就将要消耗namenode 3G的内存来保存这些block的信息。如果规模再大一些,那么将会
阅读全文
posted @ 2013-11-02 22:51
HackerVirus
阅读(258)
推荐(0)
摘要:
Lazy Scheduler:我的轻量级任务调度框架一、背景 工作中经常涉及任务调度,一直都是采用while(true) => if hitted DO => Thread.Sleep(interval)的模式。但是最近实在是感觉这种实现模式很挫。并且没有考虑到性能问题,需要撞击n次才能命中一次,使用效率不足5%(一百次while循环命中不到5次),但是单方面加大线程睡眠时间又无法保证高准确性和高精度。那有么有其它好的思路:即可以保持高准确性、高精度,又不浪费资源呢?二、我的思路 上述的短板在于:无目的的线程Sleep,如果我们可以每次恰到好处的Sleep,即线程被唤醒后刚好赶上下
阅读全文
posted @ 2013-11-02 22:44
HackerVirus
阅读(206)
推荐(0)
摘要:
Solr与MongoDB集成,实时增量索引一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务。 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml、json等形式的内容,使得对数据的使用更灵活。 对于MongoDB与Solr的描述不在这里阐释了,本文旨在给大家提供整个Solr与MongoDB接合的方法,实现实时的增量索引。 MongoDB的官网:http://www.mongodb.org/ Solr项目的主页:http://lucene.apache.org/solr/二. 寻找解决方案 既...
阅读全文
posted @ 2013-11-02 22:43
HackerVirus
阅读(2830)
推荐(1)
摘要:
程序性能优化(二)基于处理器分支预测优化: 现代处理器由指令控制单元(ICU)和执行单元(EU)组成,ICU负责取指、译码,EU负责指令执行,为了并行处理ICU会预取指令,所以EU执行的指令通常ICU在前期就取出译码,对于含有分支的代码就包含多条取指路径,ICU在分支路径采用了分支预测技术,既预先选择一条分支取指译码,如果后期发现预测失败则需要重新取指,这意味着浪费了几个时钟周期。分支预测算法通常基于以前运行的结果来作为下次预测的依据。 1. 优化分支预测: 由于预测算法通常基于以前的结果,如果我们的代码分支条件的判断是有规律的,则有助于分支预测的准确性,如下例所示:#include #i..
阅读全文
posted @ 2013-11-02 20:41
HackerVirus
阅读(256)
推荐(0)
posted @ 2013-11-02 20:25
HackerVirus
阅读(1)
推荐(0)
摘要:
Quartz.net2.2初体验简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作。相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上档次了。目前最新版本是2.2,新的版本里面有些方法名发生了变化,从之前的版本用过来的人应该会有体会.这里我使用最常用,也是最稳定的方式--Windows服务里面使用Quartz.net,并且使用配置的方式来设置触发器。步骤:1.定义使用的job:就是我们具体要执行的操作.namespace Quartz.MyJobs{ public class Hello...
阅读全文
posted @ 2013-11-02 12:29
HackerVirus
阅读(279)
推荐(0)
摘要:
数据库行级锁问题引言 本篇文章只是工作当中的一个简单记录,尽管这次遇到的问题从技术上来讲并不算是特别高深的问题,但是在面临着多方压力的情况下,问题的解决还是有着不小的难度。因此这里LZ就简单的描述一下整个问题从出现到解决所采取的一系列措施,如果有对此经验丰富的猿友,不妨指点一二。倘若是新手猿友,尚未遇到过此类问题,也算是一个小小的引导吧。东窗事发 9月27号的一天中午,LZ正在悠闲的听着音乐,exception happy的写着增删改查的代码。忽然之间,狂风大作,通讯工具疯狂弹窗,打破了LZ的闲情逸致。消息当中显示,某业务部门在顷刻之间,整个华北地区的营业部的业务无法进行。在问题出现后的半..
阅读全文
posted @ 2013-11-02 12:13
HackerVirus
阅读(2817)
推荐(0)
摘要:
[算法][LeetCode]Search a 2D Matrix——二维数组的二分查找题目要求Write an efficient algorithm that searches for a value in anmxnmatrix. This matrix has the following properties:Integers in each row are sorted from left to right.The first integer of each row is greater than the last integer of the previous row.For exa
阅读全文
posted @ 2013-11-01 22:43
HackerVirus
阅读(964)
推荐(0)