驱动入门初识

1.操作系统对于驱动的好处:
更好的完成多任务并发
提供了内存管理机制
2.设备驱动的分类
字符设备:以串行顺序依次进行访问的设备,如触摸屏,磁带驱动器,鼠标等
块设备:以任意顺序进行访问的,以块为单位进行操作 如硬盘 软驱等 块设备比字符设备更复杂
网络设备
3.Linux内核主要是由进程调度(SCHED),内存管理(MM),虚拟文件系统(VFS),网络接口(NET)和进程通信(IPC)
在设备驱动编程中,当请求的资源不能得到满足时,驱动一般会调度其他进程执行,其对应的进程进入睡眠状态,直到他请求的资源被释放,才会被唤醒而进入就绪状态。其中启动内核线程的函数为:
int kernel_thread(int (*fn)(void *),void * arg, unsigned long flags);
一般情况Linux每个进程享有4GB的内存空间,0~3属于用户空间,3~4GB属于内核空间
ARM处理器有七种工作模式
用户模式(usr):大多数应用程序运行在用户模式下
快速中断模式(fiq):用于高速数据传输和通道处理
外部中断模式(irq):用于通用的中断处理
管理模式(svc)
数据访问终止模式(abt)
系统模式(sys)
未定义指令中止模式(und)
X86处理器包括四个不同的特权级,称为Ring0~Ring3下,可以执行特权级指令,对任何IO设备都有访问权等,而Ring3则有很多操作限制,但是在Linux系统中内核可以进行任何操作,而应用程序则被禁止对硬件的直接访问和对内存的未授权访问。
Linux系统只能通过系统调用和硬件中断完成从用户空间到内核空间的控制转移
4.内核的编译
安装modutils
安装module- init- tool
解压缩内核源代码,然后执行以下指令
ln –s linux-2.6.15.5 linux (将 Linux 符号连接映射到 linux-2.6.15.5)
执行make mrproper
配置内核:最常用的就是make menuconfig,然后会生成一个config配置文件(隐藏在顶层的makefile中),主要是记录了哪些部分被编译进内核,哪些部分被编译为内核模块
编译内核,并且将映像复制到相应的目录
make bzImage (生成使用 gzip 压缩的内核,生成的文件位于 /usr/src/linux/arch/i386/boot 目录)
make modules modules_install (编译内核模块并安装到/lib/modules/2.6.15.5 目录)
cd /usr/src/linux
mv arch/i386/boot/bzImage /boot/bzImage2.6.15.5
mv System.map /boot/System.map-2.6.15.5
cd /boot
mv System.map oldSystem.map
ln –s System.map-2.6.15.5 System.map (创建相应的 System.map 符号链接)
针对更新前后版本的差异修改脚本和配置文件
Initrd bootloader初始化的内存盘
内核配置系统由以下三个部分组成
makefile
Kconfig
配置工具:Tcl/TK,Per
4.makefile
目标定义用来定义哪些内容要作为模块编译,哪些要编译并且连接进内核
多文件模块的定义
目录的层次迭代

5.Kconfig
菜单入口,“config”:关键字定义新的配置选项,配置的选项属性包括类型,数据范围,输入提示,依赖关系,帮助信息以及默认值等
菜单结构
6.x86上pc从上电/复位到运行Linux用户空间的初始化进程的流程
当系统上电或复位时,cpu会将pc的指针赋值作为一个特定的地址0xFFFF0,并且执行该地址处的指令
BIOS运行时安装CMOS的设置定义的启动设备顺序来搜索处于活动状态,并且可以引导的设备
主引导加载程序查找并且加载次引导加载程序
次引导加载程序加载Linux内核和可选的初始RAM磁盘,将控制权交给Linux内核源代码
运行被加载的内核,并启动用户空间应用程序
7.GNU C和ANSI C
GNU C允许使用零长度数组,在定义变长对象的头结构的时候,这个特性非常有用
Case 范围
语句表达式
Typeof 的关键字
可变参数的宏
标号元素:在GNU C中,通过指定索引或着结构体成员名,允许初始化值以任意顺序出现。
当前函数名
特殊属性声明
在声明的后面添加__attribute(属性说明)__
Aligned 属性用于变量,结构体和联合体的对界方式
Packed属性作用于变量和类型
内建函数,不属于库函数,以__builtin开始

8.Linux的文件操作
创建: int creat(const char *filename, mode_t mode); mode指定新建文件的存取权限,usmak代表了文件创建时需要去掉的一些存取权限 Int umask(int newmask);
打开
读写
定位
关闭
9.设备文件系统:udev取代了devfs
Udev完全时在用户态工作,在热插拔时,设备的详细信息会由内核输出到位于/sys 的sysfs文件系统
Linux应该在设备被发现的时候加载驱动模块,而不是他被访问的时候。
10.sysfs文件系统
Linux 2.6开始引入sysfs这个虚拟的文件系统,可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似
Syses的一个目的就是展示设备驱动模型中各组件的层次关系
11.kobject内核对象
这个截个图使得所有设备在底层都具有统一的接口,kobject提供了基本的对象管理能力,时构成Linux2.6设备模型的核心结构,每个在内核注册的kobject对象都对应于sysfs文件系统中的一个目录
和kobject不同的是,属性在sysfs中呈现为一个文件,而kobject则呈现为sysfs中的目录
12.kset内核对象的集合
Kobject通常通过kset组织成层次化的结构,kset是具有相同类型的kobject的集合
每个kset必须属于某个subsystem
13.subsystem内核对象子系统
Subsystem是一系列kset的集合,他描述系统中某一类设备仔细听吧
每一个挂接到同一subsystem的kset共享一个rwsem信号量,用于同步访问kset中的链表

14.Linux的设备模型组件
系统中的任何一个设备都在设备模型中都由一个device对象描述
15.udev的组成:以三个分割的子计划发展
Namedev
Libsysfs
Udev
Udev 适合内核空间,devfs适合用户空间
15.用Linux2.6中使用cdev结构体描述字符设备
cdev_init()函数用于初始化cdev的成员,并且建立cdev和file_operations之间的连接
cdev_alloc()函数用于动态申请一个cdev的内存
cdev_add()函数和cedv_del()函数分别向系统添加和删除一个cdev,完成字符设备的注册和注销,在调用时cdev_add()函数向系统注册字符设备之前,应该首先调用register_chrdev_region()(已经知道设备号)或者alloc_chrdev_region()(不知道设备号)函数向系统申请设备号
16 file_operation结构体
llseek()函数用来修改一个文件的当前读写位置
mmap()函数将设备内存映射到进程的内存中(帧缓冲)
poll()函数一般用于询问设备是否可以非阻塞地立即读写
aio_read(),aio_write()异步读,异步写
17 Linux字符设备驱动的组成
字符设备驱动模块加载和卸载
字符设备驱动的file_operations,由于内核空间和用户空间不能互相访问需要借助于copy_from_user…
18 globalmem设备驱动
加载和卸载设备驱动
读写函数:主要是让设备结构体的mem[]数组和用户空间交互数据,并且随着访问的字节数变更返回用户的文件读写的偏移位置
seek函数
ioctl函数
使用文件私有数据:将文件的私有数据private_data指向设备结构体
19.并发和竟态
对称多处理器(SMP,多CPU)
解决竟态问题的途径时保证对共享资源的互斥访问
互斥机制:中断屏蔽,原子操作,自旋锁和信号量
中断屏蔽使得中断与进程之间的并发不在发生,而且由于Linux的内核的进程调度等操作都依赖中断来实现,内核抢占进程之间的并发也就得以避免了。但是擦和那个手机屏蔽中断很危险,常常与自旋锁联合使用。==》local_irq_disable, local_irq_enable
原子操作指的是在执行过程中不会被别的代码路径所中断的操作,使用原子变量最多只能被一个进程打开。
自旋锁是一种对临界资源进行互斥访问的典型手段,也是一种原子操作,所以在该操作完成之前其他执行单元不可能访问这个内存变量。有可能受到中断和底半部的影响。只有在占用锁时间极短的情况下使用自旋锁,而且也有可能死锁
定义自旋锁
初始化自旋锁
获得自旋锁
释放自旋锁
顺序锁
读写自旋锁 rwlock
读—-拷贝—-更新。RCU
信号量的使用,在未获得信号量的时候,进程不会原地打转而是进入休眠状态
定义信号量
初始化信号量
获得信号量
释放信号量
信号量用于同步,还有一种比信号量更好的同步机制完成量
信号量是进程级的代表进程来争夺资源的会发生上下文切换,当所要保护的临界区访问时间比较短的时候,用自旋锁非常方便;但是自旋锁的临界区千万不能包含可能引起阻塞的代码,如果需要中断或者软中断,只能选自旋锁。
20.Linux设备驱动的阻塞和非阻塞
等待队列来实现阻塞进程的唤醒
21.轮询操作
22.Linux设备驱动中的异步通知和异步IO
异步通知:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,也可以叫做“信号驱动的异步I/O”
阻塞I/O意味着一直等待设备可访问再访问,非阻塞I/O中使用poll()意味着查询设备是否可访问,而异步通知意味着设备通知自身可访问就可以了。
为了在用户空间能处理一个设备释放的信号,他必须完成以下三项工作
F_SETOWN IO控制命令设置设备文件的拥有者为本进程
F_SETEK IO控制命令设置设备文件支持FASYNC,即异步通知模式
通过signal()函数连接信号和信号处理函数
信号的释放
为了让设备支持异步通知机制,驱动程序中涉及以下三项工作
支持F_SETOWN命令
支持F_SETEL命令的处理
在设备资源可获得的时候,调用kill_fasync()函数激发相应的信号
23.异步IO
Linux系统中最常用的输入输出模型是同步IO,在这个模型中当请求发出之后,应用程序就会阻塞,直到请求满足为止
AIO基本思想就是允许进程发起很多I/O操作,而且不用阻塞或等待任何操作完成
24中断编程
申请和释放中断
1.申请IRQ:也就是要申请的硬件中断号
2.释放IRQ
使能和屏蔽中断
底半部机制
Linux系统实现底半部的机制主要有tasklet,工作队列和软中断、
Tasklet也是基于软中断来实现的
中断共享
内核定时器,也是基于软中断实现的
内核延时
短延迟
长延迟
睡眠延迟
25 大多数嵌入式微控制器并不提供io空间,而仅存在内存空间,内存空间可以通过地址,指针来访问
内存管理单元MMU
提供虚拟地址和物理地址的映射,内存访问权限保护和Cache缓存控制等硬件支持
TLB:转换旁路缓存,是MMU的核心部件,是转换表的cache,因此也经常被称为“快表”
TTW:转换表漫游,需要通过对内存中转换表的访问来获得虚拟地址和物理地址的对应关系
26 DMA
DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。
Cache被用作CPU针对内存的缓存,利用程序的空间局部性和时间局部性原理,达到较高的命中率就可以避免CPU每次都有点远与相对慢速的内存交互数据来提供数据的访问sulv
Cache数据和内存数据的不一致性(由DMA导致的),与主存中的数据一样则具有一致性。
基于DMA的硬件使用总线地址而非物理地址,总线地址是从设备角度上看到的内存地址,物理地址则是从CPU角度上看到的未经转换的内存地址(经过转换的为虚拟地址)
DMA映射包括两个方面的工作:分配一片DMA缓冲区;为这片缓冲区产生设备的可访问地址。
dma_alloc_coherent()申请一片DMA缓冲区,进行地址映射并且保证该缓冲区的cache的一致性,与之对应的释放函数是dma_free_coherent
SG映射属于流式DMA映射
申请资源—映射—访问—去映射—释放资源
27 触摸屏
触摸屏分为四种:电阻式,电容感应式,红外线式,表面声波式
ADC和触摸屏接口可工作于5种模式
普通转换模式
独立X/Y位置转换模式
自动X/Y位置转换模式
等待中断模式
待机模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
*** 注:由于该文件大于60MB,所以得分两个文件上传,敬请谅解!*** ========要下载完两个文件后,同放在一目录下方可解压哦======== Visual Basic 2010入门经典(第6版)完整版 之1/2 下载地址: http://download.csdn.net/detail/zslangma/5313679 基本信息 作 者:(美)威利斯,(美)纽萨姆 著,吴伟敏,李周芳 译 出 版 社:清华大学出版社 定价:78 版 次:1 页 数:573 字 数:993000 印刷时间:2011-11-1 开 本:16开 纸 张:胶版纸 印 次:1 I S B N:9787302270058 包 装:平装 内容简介:   Visual Basic 2010是微软公司较为流行的VB.NET编程语言的最新版本,是Visual Studio 2010环境支持的几种语言之一。Visual Basic 2010的优势在于其易用性和高速度,利用该语言可以轻松、快捷地编写出Windows Forms应用程序、WPF Windows应用程序、Web应用程序、WPF Browser应用程序、移动设备应用程序和Web服务。   本书将全面介绍Visual Basic 2010的各种编程知识,展示如何创建上述应用程序和服务。同时,您也可以学习面向对象的编程技术,掌握创建业务对象和Windows控件的方法。   微软的.NET Framework使Visual Basic 2010程序员能像C#或C++程序员一样创建完全面向对象的各种程序。.NET Framework提供了一套通用的基类,Visual Studio 2010中的所有编程语言都可以使用它们,这样一来,程序员在创建面向对象的程序方面就拥有与C#或C++一样的功能了。   本书将使您在Visual Basic 2010编程方面打下坚实的基础,并给您带来编程的无限乐趣。   0.1 本书读者对象   本书的目的是教您如何尽可能快捷地运用Visual Basic 2010编写有用的程序。   本书适合于以下两类初学者:   ·一类是编程的初学者,他们选择从Visual Basic 2010开始学起。这是个很好的选择!Visual Basic 2010不但易学易用,而且功能强大。   ·另一类是曾用其他语言进行编程,但初次接触.NET编程知识的人员。这类初学者现在选择学习Visual Basic 2010是一个不错的主意。不管您熟悉的语言是Fortran还是VB 6,本书都将帮助您迅速掌握Visual Basic 2010。   0.2 本书主要内容   Visual Basic 2010提供了工具和语言方面的大量功能。当然,一本书不可能包含Visual Basic 2010的所有内容,这些内容要用一个书库来容纳。本书的目的是让您尽快入门,它相当于一个路标,可以指导您的学习。在介绍创建应用程序的基础知识(如创建窗口和控件,如何用代码处理突发事件,什么是面向对象的程序设计以及如何在应用程序中使用它,等等)之余,本书还为您提供了亲自动手的机会。本书的组织结构如下:  目录 第1章 初识visual basic 2010 1.1 事件驱动编程 1.2 安装visual basic 2010 1.3 visual basic 2010集成开发环境 1.4 创建简单的应用程序 1.5 使用帮助系统 1.6 小结 1.7 练习 第2章 .net framework概述 2.1 微软的信心来自于windows 2.2 为windows编写软件 2.3 公共语言运行时 2.4 通用类型系统和公共语言规范 2.5 小结 第3章 编写软件 第1章 初识visual basic 2010 1.1 事件驱动编程 1.2 安装visual basic 2010 1.3 visual basic 2010集成开发环境 1.4 创建简单的应用程序 1.5 使用帮助系统 1.6 小结 1.7 练习 第2章 .net framework概述 2.1 微软的信心来自于windows 2.2 为windows编写软件 2.3 公共语言运行时 2.4 通用类型系统和公共语言规范 2.5 小结 第3章 编写软件 3.1 信息和数据 3.2 变量 3.3 注释和空白 3.4 数据类型 3.5 存储变量 3.6 方法 3.7 小结 3.8 练习 第4章 流程控制 4.1 作出决策 4.2 if语句 4.3 select case语句 4.4 循环 4.5 小结 4.6 练习 第5章 处理数据结构 5.1 数组 5.2 枚举 5.3 常量 5.4 结构 5.5 数组列表 5.6 集合 5.7 使用散列表创建查询表 5.8 高级数组操作 5.9 小结 5.10 练习 第6章 可扩展应用程序标记语言(xaml) 第7章 构建windows应用程序 第8章 显示对话框 第9章 创建菜单 第10章 调试和错误处理 第11章 构建对象 第12章 面向对象的高级技术 第13章 建立类库 第14章 创建windows窗体用户控件 第15章 访问数据库 第16章 使用sql server和ado.net进行数据库编程 第17章 动态数据网站 第18章 asp.net 第19章 visual basic 2010和xml 第20章 部署应用程序 附录a 练习题答案 附录b 如何深入学习
0.基础基础 |-学习WIN64驱动开发的硬件准备 |-配置驱动开发环境 ------------------------------ 1.驱动级HelloWorld |-配置驱动测试环境 |-编译和加载内核HelloWorld ------------------------------ 2.内核编程基础 |-WIN64内核编程的基本规则 |-驱动程序与应用程序通信 |-内核里使用内存 |-内核里操作字符串 |-内核里操作文件 |-内核里操作注册表 |-内核里操作进线程 |-驱动里的其它常用代码 ------------------------------ 3.内核HOOK与UNHOOK |-系统调用、WOW64与兼容模式 |-编程实现突破WIN7的PatchGuard |-系统服务描述表结构详解 |-SSDT HOOK和UNHOOK |-SHADOW SSDT HOOK和UNHOOK |-INLINE HOOK和UNHOOK ------------------------------ 4.无HOOK监控技术 |-无HOOK监控进线程启动和退出 |-无HOOK监控模块加载 |-无HOOK监控注册表操作 |-无HOOK监控文件操作 |-无HOOK监控进线程句柄操作 |-使用对象回调监视文件访问 |-无HOOK监控网络访问 |-无HOOK监视修改时间 ------------------------------ 5.零散内容 |-驱动里实现内嵌汇编 |-DKOM隐藏进程+保护进程 |-枚举和隐藏内核模块 |-强制结束进程 |-强制读写进程内存 |-枚举消息钩子 |-强制解锁文件 |-初步探索PE32+格式文件 ------------------------------ 6.用户态HOOK与UNHOOK |-RING3注射DLL到系统进程 |-RING3的INLINE HOOK和UNHOOK |-RING3的EAT HOOK和IAT HOOK ------------------------------ 7.反回调 |-枚举与删除创建进线程回调 |-枚举与删除加载映像回调 |-枚举与删除注册表回调 |-枚举与对抗MiniFilter |-枚举与删除对象回调
*** 注:由于该文件大于60MB,所以得分两个文件上传,敬请谅解!*** 基本信息 作 者:(美)威利斯,(美)纽萨姆 著,吴伟敏,李周芳 译 •出 版 社:清华大学出版社 •定价:78 •版 次:1 页 数:573 字 数:993000 •印刷时间:2011-11-1 开 本:16开 纸 张:胶版纸 •印 次:1 I S B N:9787302270058 包 装:平装 内容简介:   Visual Basic 2010是微软公司较为流行的VB.NET编程语言的最新版本,是Visual Studio 2010环境支持的几种语言之一。Visual Basic 2010的优势在于其易用性和高速度,利用该语言可以轻松、快捷地编写出Windows Forms应用程序、WPF Windows应用程序、Web应用程序、WPF Browser应用程序、移动设备应用程序和Web服务。   本书将全面介绍Visual Basic 2010的各种编程知识,展示如何创建上述应用程序和服务。同时,您也可以学习面向对象的编程技术,掌握创建业务对象和Windows控件的方法。   微软的.NET Framework使Visual Basic 2010程序员能像C#或C++程序员一样创建完全面向对象的各种程序。.NET Framework提供了一套通用的基类,Visual Studio 2010中的所有编程语言都可以使用它们,这样一来,程序员在创建面向对象的程序方面就拥有与C#或C++一样的功能了。   本书将使您在Visual Basic 2010编程方面打下坚实的基础,并给您带来编程的无限乐趣。   0.1 本书读者对象   本书的目的是教您如何尽可能快捷地运用Visual Basic 2010编写有用的程序。   本书适合于以下两类初学者:   ·一类是编程的初学者,他们选择从Visual Basic 2010开始学起。这是个很好的选择!Visual Basic 2010不但易学易用,而且功能强大。   ·另一类是曾用其他语言进行编程,但初次接触.NET编程知识的人员。这类初学者现在选择学习Visual Basic 2010是一个不错的主意。不管您熟悉的语言是Fortran还是VB 6,本书都将帮助您迅速掌握Visual Basic 2010。   0.2 本书主要内容   Visual Basic 2010提供了工具和语言方面的大量功能。当然,一本书不可能包含Visual Basic 2010的所有内容,这些内容要用一个书库来容纳。本书的目的是让您尽快入门,它相当于一个路标,可以指导您的学习。在介绍创建应用程序的基础知识(如创建窗口和控件,如何用代码处理突发事件,什么是面向对象的程序设计以及如何在应用程序中使用它,等等)之余,本书还为您提供了亲自动手的机会。本书的组织结构如下:  目录 第1章 初识visual basic 2010 1.1 事件驱动编程 1.2 安装visual basic 2010 1.3 visual basic 2010集成开发环境 1.4 创建简单的应用程序 1.5 使用帮助系统 1.6 小结 1.7 练习 第2章 .net framework概述 2.1 微软的信心来自于windows 2.2 为windows编写软件 2.3 公共语言运行时 2.4 通用类型系统和公共语言规范 2.5 小结 第3章 编写软件 第1章 初识visual basic 2010 1.1 事件驱动编程 1.2 安装visual basic 2010 1.3 visual basic 2010集成开发环境 1.4 创建简单的应用程序 1.5 使用帮助系统 1.6 小结 1.7 练习 第2章 .net framework概述 2.1 微软的信心来自于windows 2.2 为windows编写软件 2.3 公共语言运行时 2.4 通用类型系统和公共语言规范 2.5 小结 第3章 编写软件 3.1 信息和数据 3.2 变量 3.3 注释和空白 3.4 数据类型 3.5 存储变量 3.6 方法 3.7 小结 3.8 练习 第4章 流程控制 4.1 作出决策 4.2 if语句 4.3 select case语句 4.4 循环 4.5 小结 4.6 练习 第5章 处理数据结构 5.1 数组 5.2 枚举 5.3 常量 5.4 结构 5.5 数组列表 5.6 集合 5.7 使用散列表创建查询表 5.8 高级数组操作 5.9 小结 5.10 练习 第6章 可扩展应用程序标记语言(xaml) 第7章 构建windows应用程序 第8章 显示对话框 第9章 创建菜单 第10章 调试和错误处理 第11章 构建对象 第12章 面向对象的高级技术 第13章 建立类库 第14章 创建windows窗体用户控件 第15章 访问数据库 第16章 使用sql server和ado.net进行数据库编程 第17章 动态数据网站 第18章 asp.net 第19章 visual basic 2010和xml 第20章 部署应用程序 附录a 练习题答案 附录b 如何深入学习
第一部分  NoSQL入门 第1章  NoSQL的概念及适用范围 2 1.1  定义和介绍 3 1.1.1  背景与历史 3 1.1.2  大数据 5 1.1.3  可扩展性 7 1.1.4  MapReduce 8 1.2  面向列的有序存储 9 1.3  键/值存储 11 1.4  文档数据库 14 1.5  图形数据库 15 1.6  小结 16 第2章  NoSQL上手初体验 17 2.1  第一印象——两个简单的例子 17 2.1.1  简单的位置偏好数据集 17 2.1.2  存储汽车品牌和型号数据 22 2.2  使用多种语言 30 2.2.1  MongoDB驱动 30 2.2.2  初识Thrift 33 2.3  小结 34 第3章  NoSQL接口与交互 36 3.1  没了SQL还剩什么 36 3.1.1  存储和访问数据 37 3.1.2  MongoDB数据存储与访问 37 3.1.3  MongoDB数据查询 41 3.1.4  Redis数据存储与访问 43 3.1.5  Redis数据查询 47 3.1.6  HBase数据存储与访问 50 3.1.7  HBase数据查询 52 3.1.8  Apache Cassandra数据存储与访问 54 3.1.9  Apache Cassandra数据查询 55 3.2  NoSQL数据存储的语言绑定 56 3.2.1  Thrift 56 3.2.2  Java 56 3.2.3  Python 58 3.2.4  Ruby 59 3.2.5  PHP 59 3.3  小结 60 第二部分  NoSQL基础 第4章  理解存储架构 62 4.1  使用面向列的数据库 63 4.1.1  使用关系型数据库中的表格和列 63 4.1.2  列数据库对比RDBMS 65 4.1.3  列数据库当做键/值对的嵌套映射表 67 4.1.4  Webtable布局 70 4.2  HBase分布式存储架构 71 4.3  文档存储内部机制 73 4.3.1  用内存映射文件存储数据 74 4.3.2  MongoDB集合和索引使用指南 75 4.3.3  MongoDB的可靠性和耐久性 75 4.3.4  水平扩展 76 4.4  键/值存储Memcached和Redis 78 4.4.1  Memcached的内部结构 78 4.4.2  Redis的内部结构 79 4.5  最终一致性非关系型数据库 80 4.5.1  一致性哈希 81 4.5.2  对象版本 82 4.5.3  闲话协议和提示移交 83 4.6  小结 83 第5章  执行CRUD操作 84 5.1  创建记录 84 5.1.1  在以文档为中心的数据库中创建记录 85 5.1.2  面向列数据库的创建操作 91 5.1.3  键/值映射表的创建操作 93 5.2  访问数据 96 5.2.1  用MongoDB访问文档 96 5.2.2  用HBase访问数据 97 5.2.3  查询Redis 98 5.3  更新和删除数据 98 5.3.1  使用MongoDB、HBase和Redis更新及修改数据 98 5.3.2  有限原子性和事务完整性 99 5.4  小结 100 第6章  查询NoSQL存储 101 6.1  SQL与MongoDB查询功能的相似点 101 6.1.1  加载MovieLens数据 103 6.1.2  MongoDB中的MapReduce 108 6.2  访问HBase等面向列数据库中的数据 111 6.3  查询Redis数据存储 113 6.4  小结 116 第7章  修改数据存储及管理演进 117 7.1  修改文档数据库 117 7.1.1  弱schema的灵活性 120 7.1.2  MongoDB的数据导入与导出 121 7.2  面向列数据库中数据schema的演进 124 7.3  HBase数据导入与导出 125 7.4  键/值存储中的数据演变 126 7.5  小结 126 第8章  数据索引与排序 127 8.1  数据库索引的基本概念 127 8.2  MongoDB的索引与排序 128 8.3  MongoDB里创建和使用索引 131 8.3.1  组合与嵌套键 136 8.3.2  创建唯一索引和稀疏索引 138 8.3.3  基于关键字的搜索和多重键 139 8.4  CouchDB的索引与排序 140 8.5  Apache Cassandra的索引与排序 141 8.6  小结 143 第9章  事务和数据完整性的管理 144 9.1  RDBMS和ACID 144 9.2  分布式ACID系统 147 9.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值