第4章 锁 xv6 运行在多处理器上,即计算机上有多个单独执行代码的 CPU。这些 CPU 操作同一片地址空间并分享其中的数据结构;xv6 必须建立一种合作机制防止它们互相干扰。即使是在单个处理器上,xv6 也必须使用某些机制来防止中断处理程序与非中断代码之间互相干扰。xv6 为这两种情况使用了相同的低层概念:锁。锁提供了互斥功能,保证某个时间点只有一个 CPU 能持有锁。如果 xv6 只能在持有
一 引子 在说Hase是个啥家伙之前,首先我们来看看两个概念,面向行存储和面向列存储。面向行存储,我相信大伙儿应该都清楚,我们熟悉的RDBMS就是此种类型的,面向行存储的数据库主要适合于事务性要求严格场合,或者说面向行存储的存储系统适合OLTP,但是根据CAP理论(参考:CAP理论参考),传统的RDBMS,为了实现强一致性,通过严格的ACID事务来进行同步,这就造成了系统的可用性和伸缩性方面大大折
Apache Sqoop(SQL-to-Hadoop) 项目旨在协助 RDBMS 与 Hadoop 之间进行高效的大数据交流。用户可以在 Sqoop 的帮助下,轻松地把关系型数据库的数据导入到 Hadoop 与其相关的系统 (如HBase和Hive)中;同时也可以把数据从 Hadoop 系统里抽取并导出到关系型数据库里。除了这些主要的功能外,Sqoop 也提供了一些诸如查看数据库表等实用的小工具。
一 Hive介绍 即使像Hadoop这样强大的工具,也不能满足每个人的需求,许多项目如雨后春笋般涌现出来,为特定的扩展了Hadoop,那些比较突出的并且得到很好维护的项目已经正式成为Apache Hadoop项目下的子项目. Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hado
在第二章中,我们定位了在使用回调表达程序异步性和管理并发的两个主要类别的不足:缺乏顺序性和缺乏可靠性。现在我们更亲近地理解了问题,是时候将我们的注意力转向解决它们的模式了。 我们首先想要解决的是 控制倒转 问题,信任是如此脆弱而且是如此的容易丢失。 回想一下,我们将我们的程序的延续包装进一个回调函数中,将这个回调交给另一个团体(甚至是潜在的外部代码),并双手合十祈祷它会做正确的事情并调用这个回调。
array、string、和 number 是任何程序的最基础构建块,但是 JavaScript 在这些类型上有一些或使你惊喜或使你惊讶的独特性质。 让我们来看几种 JS 内建的值类型,并探讨一下我们如何才能更加全面地理解并正确地利用它们的行为。 链接 Arrays Strings Numbers 特殊值 值与引用 复习
WEB 开发离不开 Router. 通常 Router 负责对 HTTP Request URL 进行分析, 匹配到对应的处理对象. URL 可以分为三部分 Host, Path, QueryParams. 在官方包提供的 http.Request 对象中有对应的字段. 以前作者没有关注路由具体实现, 只是拿来用. 很偶然发现一个路由评测项目 go-http-routing-benchmark.
第一个控制器是针对路由 /install/ 的. TypePress 是一个博客系统, 绑定到某个 blog 帐户的内部 id (自增数值类型)的页面作为首页是完全可行的. 作为支持站群的博客系统, 绑定顶级域名是必要的. 这样就可以为每个用户设定独立的子域名. 当然预留一些域名也是必要的, 这可以通过配置文件进行设定. 自动建立数据库可以为安装提供很大的方便, 也需要实现. 这就是 instal
Global 用于提供服务器运行期全局化的对象和方法. 这是一个很常见的技术方案. 在 Go 语言可以通过 package global 来做. 全局的当然是要被其他包import的. 因此要注意package global中import的包不能造成循环import. global 当前提供了这几个对象 管理配置 Conf *toml.TomlTree 日志管理 Log MultiLogger h
WP 当然指的是当前最好的博客系统(没有之一)WordPress. 看不看WP数据库描述我心里都知道在表设计上是无法做的比 WP 更好了. 好吧既然没有信心做的更好, 那干脆就简化一下. 数据库表的设计跟WordPress有非常大的相似度. 在这里面贴数据库表结构的代码是枯燥无趣的. 简单提几点. 窄表 窄表就是尽量减少表字段数量, 用数据记录替代增加表字段. 终极形态就是key,value. 当
OOP 的思想, 无疑是非常实用有效的. 事实是, 无论语言是否直接支持面向对象的编程. 程序员在写代码的时候常常会应用 OOP 的思想. 但是 Go 语言下没有类(Class), 没有 this 指针, 没有多态, 只有复合. 应用 OOP 的思想, WEB 应用下控制器常见形式祖先类型的写法(示意代码). type Controller struct { Data interface{
Turandot: Gli enigmi sono tre, la morte una! Caleph: No, no! Gli enigmi sono tre, una la vita! Puccini 将保留字和字符声明为变量名. 1 case=value0 # 引发错误. 2 23skidoo=value1 # 也会有错误. 3 # 以数字开头的变量名是由
特别感谢Matthew N. Dodd, Warner Losh, Bill Paul, Doug Rabson, Mike Smith, Peter Wemm and Scott Long. 本章详细解释了Newbus设备框架。 14.1. 设备驱动程序 14.1.1. 设备驱动程序的目的 设备驱动程序是软件组件,它在内核关于外围设备(例如,磁盘、网络 适配卡)的通用视图和外围设备的实际实现之间
Written by Tom Rhodes. 26.1. 概述 DTrace,也称为动态跟踪,是由 Sun™开发的一个用来在生产和试验性生产系统上找出系统瓶颈的工具。在任何情况下它都不是一个调试工具,而是一个实时系统分析寻找出性能及其他问题的工具。 DTrace 是个特别好的分析工具,带有大量的帮助诊断系统问题的特性。还可以使用预先写好的脚本利用它的功能。用户也可以通过使用 DTrace D 语言
原作 Matteo Riondato. 16.1. 概述 这一章将为您介绍 FreeBSD jail 是什么, 以及如何使用它们。Jail, 有时也被认为是对 chroot 环境的一种增强型替代品, 对于管理员而言是非常强大的工具, 同时,它的一些基本用法, 对高级用户而言也相当有用。 读完这章, 您将了解: jail 是什么, 以及它在您安装的 FreeBSD中所能发挥的作用。 如何联编、 启动