自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (14)
  • 收藏
  • 关注

转载 [转】 spyder-python在windows下的安装

原文地址: http://www.phperz.com/article/15/0106/44862.html1.安装工具pip:https://pip.pypa.io/en/latest/installing.html下载 get-pip.py.运行cmd:"python get-pip.py"。注:Python 2.7.9 和 3.4 以后的版本已

2016-08-20 05:45:48 9023

原创 OpenCV3.1+numpy1.10.4+ubuntu14.04 x86_64:

OpenCV3.1+ubuntu14.04 x86_64:cmake -DPYTHON_INCLUDE_DIR2=/usr/include/python2.7 \-DPYTHON_INCLUDE_DIR2=/usr/include/x86_64-linux-gnu/python2.7 \-DPYTHON_LIBRARY=/usr/lib/python2.7/config-x86

2016-01-29 14:13:44 812

转载 ubuntu14安装gstreamer[转]

参考http://www.th7.cn/system/lin/201503/97145.shtmlsudo add-apt-repository ppa:mc3man/trusty-mediasudo apt-get updatesudo apt-get install gstreamer0.10-ffmpeg

2016-01-28 15:25:04 2832

转载 【转】鏡頭校正(Lens Shading Correction)

本文来自:我爱研发网(52RD.com) - R&D大本营详细出处:http://www.52rd.com/bbs/Dispbbs.asp?BoardID=86&ID=115525  鏡頭校正(Lens Shading Correction) 分類:小相機的愛戀物語2006/09/03 21:44今天來談小相機的鏡頭校正,因為小相機真的很小,相對的鏡頭就不需太大,約M6~M12

2016-01-06 10:58:16 5021

转载 虚拟视频驱动程序vivi.c源码分析[转]

原文地址:http://blog.chinaunix.net/uid-26765074-id-3546104.html  虚拟视频驱动程序vivi.c源码分析以下先把上一篇文章中的最后一段,放在这里利于程序源码的分析:vivi.c 虚拟视频驱动程序----- 此代码模拟一个真正的视频设备V4L2 API (位于drivers/media/video目录下)入口:+int

2016-01-05 14:52:07 1178

转载 升级scipy

原文:http://blog.sina.com.cn/s/blog_a046022d0102v0jf.html在Ubuntu下安装Python模块通常可以使用apt-get和pip命令。apt-get命令是Ubuntu自带的包管理命令,而pip则是Python安装扩展模块的工具,通常pip会下载扩展模块的源代码并编译安装(另一个类似的命令是easy_install)。Ubu

2015-10-28 14:14:45 5205

转载 [转]在Ubuntu中安装Python科学计算环境

http://blog.chinaunix.net/uid-23100982-id-3252291.html原文地址:在Ubuntu中安装Python科学计算环境 作者:HyryStudio在Ubuntu下安装Python模块通常可以使用apt-get和pip命令。apt-get命令是Ubuntu自带的包管理命令,而pip则是Python安装扩展模块的工具,通常pip会下载扩展

2015-09-03 21:16:11 529

转载 【转】USB的描述符介绍

USB是个通用的总线,端口都是统一的。但是USB设备却各种各样,例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的设备的呢?这就要依赖于描述符了。    USB的描述符主要有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,HID描述符,报告描述符等等。关于报告描述符,请看我以前写的:《USB HID报告及报告描述符简介 》     一个

2013-09-03 09:54:05 741

转载 [转]配置VIM语法高亮及自动缩进

1 、配置文件的位置在目录 /etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc ”。例如,/root目录下,通常已经存在一个. vimrc文件。如果不知道配置文件及脚本的位置,可以在vim中使用命令:scriptnames,将显示如下路径/etc/vimrc

2013-06-19 22:17:50 570

转载 [转]Uboot的Makefile

http://blog.csdn.net/kuangreng/article/details/6469112 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////U-BOOT是一个LINUX下

2013-06-13 15:41:32 579

转载 [转]uboot中的延迟处理

u-boot很多地方用到了延时操作,主要是cpu下面的interrupts.c文件中的udelay和get_timer函数get_timer_masked函数以及表示当前时间的全局变量timestamp和上一次访问定时器的时间lastdec实现的。1 实现延时要用到一个定时器,u-boot采用查询定时器TC的方法得到当前的时间点,所以需要根据定时器原理实现READ_TIMER宏,从代码ge

2013-06-09 14:38:27 6142 1

转载 [转]关于uboot的main_loop

http://www.linuxidc.com/Linux/2011-12/49044.htmhttp://blog.chinaunix.net/uid-23670869-id-2391643.html ////////////////////////////////////////////////////////////////////////////////////////////

2013-06-09 13:17:39 1703 1

转载 【转】移植uboot

http://www.linuxidc.com/Linux/2011-02/32772p2.htmSmdk2410可以编译通过之后,即可进入2440的移植了。2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下以smdk2410为模板建立自己目标板的项目,取名叫smdk2440。(代码中的修改用红色表示)一、首先建立目标板文件#cp -

2013-06-08 15:55:34 975

转载 [转]u-boot移植资料整理

原文地址 : http://blog.sina.com.cn/s/blog_68f2b9e20100iyx3.html//////////////////////////////////////////////////////////////////////////////////////////////1 首先,了解一下bootloader。bootloader是系统加电后运行的第一

2013-06-08 14:01:54 1154

转载 [转] uboot201106rc3的arm的board.c的board_init_f函数的注释

原帖 : http://blog.mcuol.com/User/pclli/Article/55554_1.htm/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2013-06-06 09:47:37 3866

转载 [转]U-BOOT移植心得

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////原帖地址 : http://www.5

2013-06-05 15:05:58 1097

FAQ Poynton (PDF)

This FAQ is intended to clarify aspects of color that are important to color image coding, computer graphics, image processing, video, and the transfer of digital images to print. I assume that you are familiar with intensity, luminance (CIE Y), lightness (CIE L*), and the nonlinear relationship between CRT voltage and intensity (gamma). To learn more about these topics, please read the companion Frequently Asked Questions about Gamma before starting this. This document is available on the Internet from Toronto at <http://www.poynton.com/PDFs/ColorFAQ.pdf> In video, computer graphics and image processing the gamma symbol g represents a numerical parameter that describes the nonlinearity of intensity reproduction. Having a good understanding of the theory and practice of gamma will enable you to get good results when you create, process and display pictures. This document is available on the Internet from Toronto at:<http:// www.poynton.com>

2016-01-07

TM-04-406.pdf

Stephen Wolf about CCM for digital still and video imaging system. NTIA Technical Memorandum TM-04-406 December 2003

2016-01-07

Making Games with Python & PyGame.pdf(with code)

T ABLE OF C ONTENTS Who is this book for? ........................................................................................................................ i About This Book .............................................................................................................................. ii Chapter 1 – Installing Python and Pygame ...................................................................................... 1 What You Should Know Before You Begin ................................................................................ 1 Downloading and Installing Python ............................................................................................. 1 Windows Instructions .................................................................................................................. 1 Mac OS X Instructions ................................................................................................................. 2 Ubuntu and Linux Instructions .................................................................................................... 2 Starting Python............................................................................................................................. 2 Installing Pygame......................................................................................................................... 3 How to Use This Book ................................................................................................................. 4 The Featured Programs ................................................................................................................ 4 Downloading Graphics and Sound Files ...................................................................................... 4 Line Numbers and Spaces ............................................................................................................ 4 Text Wrapping in This Book ....................................................................................................... 5 Checking Your Code Online ........................................................................................................ 6 More Info Links on http://invpy.com ........................................................................................... 6 Chapter 2 – Pygame Basics .............................................................................................................. 7 GUI vs. CLI ................................................................................................................................. 7 Source Code for Hello World with Pygame ................................................................................ 7 Setting Up a Pygame Program ..................................................................................................... 8 Game Loops and Game States ................................................................................................... 10 pygame.event.Event Objects ........................................................................................... 11 The QUIT Event and pygame.quit() Function .................................................................. 12 Pixel Coordinates ....................................................................................................................... 13iv http://inventwithpython.com/pygame A Reminder About Functions, Methods, Constructor Functions, and Functions in Modules (and the Difference Between Them) .................................................................................................. 14 Surface Objects and The Window ............................................................................................. 15 Colors ......................................................................................................................................... 16 Transparent Colors ..................................................................................................................... 17 pygame.Color Objects .......................................................................................................... 18 Rect Objects ............................................................................................................................... 18 Primitive Drawing Functions ..................................................................................................... 20 pygame.PixelArray Objects .............................................................................................. 23 The pygame.display.update() Function ...................................................................... 24 Animation .................................................................................................................................. 24 Frames Per Second and pygame.time.Clock Objects ....................................................... 27 Drawing Images with pygame.image.load() and blit() ............................................ 28 Fonts ........................................................................................................................................... 28 Anti-Aliasing.............................................................................................................................. 30 Playing Sounds........................................................................................................................... 31 Summary .................................................................................................................................... 32 Chapter 3 – Memory Puzzle .......................................................................................................... 33 How to Play Memory Puzzle ..................................................................................................... 33 Nested for Loops ..................................................................................................................... 33 Source Code of Memory Puzzle ................................................................................................ 34 Credits and Imports .................................................................................................................... 42 Magic Numbers are Bad ............................................................................................................ 42 Sanity Checks with assert Statements ................................................................................... 43 Telling If a Number is Even or Odd .......................................................................................... 44 Crash Early and Crash Often! .................................................................................................... 44 Making the Source Code Look Pretty ........................................................................................ 45 Using Constant Variables Instead of Strings ............................................................................. 46 Making Sure We Have Enough Icons ........................................................................................ 47 Tuples vs. Lists, Immutable vs. Mutable ................................................................................... 47 Email questions to the author: al@inventwithpython.comAbout This Book v One Item Tuples Need a Trailing Comma ................................................................................. 48 Converting Between Lists and Tuples ....................................................................................... 49 The global statement, and Why Global Variables are Evil.................................................... 49 Data Structures and 2D Lists ..................................................................................................... 51 The ―Start Game‖ Animation ..................................................................................................... 52 The Game Loop ......................................................................................................................... 52 The Event Handling Loop .......................................................................................................... 53 Checking Which Box The Mouse Cursor is Over ..................................................................... 54 Handling the First Clicked Box ................................................................................................. 55 Handling a Mismatched Pair of Icons ........................................................................................ 56 Handling If the Player Won ....................................................................................................... 56 Drawing the Game State to the Screen ...................................................................................... 57 Creating the ―Revealed Boxes‖ Data Structure ......................................................................... 58 Creating the Board Data Structure: Step 1 – Get All Possible Icons ......................................... 58 Step 2 – Shuffling and Truncating the List of All Icons ............................................................ 59 Step 3 – Placing the Icons on the Board .................................................................................... 59 Splitting a List into a List of Lists.............................................................................................. 60 Different Coordinate Systems .................................................................................................... 61 Converting from Pixel Coordinates to Box Coordinates ........................................................... 62 Drawing the Icon, and Syntactic Sugar ...................................................................................... 63 Syntactic Sugar with Getting a Board Space’s Icon’s Shape and Color .................................... 64 Drawing the Box Cover ............................................................................................................. 64 Handling the Revealing and Covering Animation ..................................................................... 65 Drawing the Entire Board .......................................................................................................... 66 Drawing the Highlight ............................................................................................................... 67 The ―Start Game‖ Animation ..................................................................................................... 67 Revealing and Covering the Groups of Boxes ........................................................................... 68 The ―Game Won‖ Animation .................................................................................................... 68 Telling if the Player Has Won ................................................................................................... 69vi http://inventwithpython.com/pygame Why Bother Having a main() Function? ................................................................................ 69 Why Bother With Readability? .................................................................................................. 70 Summary, and a Hacking Suggestion ........................................................................................ 74 Chapter 4 – Slide Puzzle ................................................................................................................ 77 How to Play Slide Puzzle ........................................................................................................... 77 Source Code to Slide Puzzle ...................................................................................................... 77 Second Verse, Same as the First ................................................................................................ 85 Setting Up the Buttons ............................................................................................................... 86 Being Smart By Using Stupid Code .......................................................................................... 87 The Main Game Loop ................................................................................................................ 88 Clicking on the Buttons ............................................................................................................. 89 Sliding Tiles with the Mouse ..................................................................................................... 90 Sliding Tiles with the Keyboard ................................................................................................ 90 ―Equal To One Of‖ Trick with the in Operator ........................................................................ 91 WASD and Arrow Keys ............................................................................................................ 91 Actually Performing the Tile Slide ............................................................................................ 92 IDLE and Terminating Pygame Programs ................................................................................. 92 Checking for a Specific Event, and Posting Events to Pygame’s Event Queue ........................ 92 Creating the Board Data Structure ............................................................................................. 93 Not Tracking the Blank Position ................................................................................................ 94 Making a Move by Updating the Board Data Structure ............................................................ 94 When NOT to Use an Assertion ................................................................................................ 95 Getting a Not-So-Random Move ............................................................................................... 96 Converting Tile Coordinates to Pixel Coordinates .................................................................... 97 Converting from Pixel Coordinates to Board Coordinates ........................................................ 97 Drawing a Tile ........................................................................................................................... 97 The Making Text Appear on the Screen .................................................................................... 98 Drawing the Board ..................................................................................................................... 99 Drawing the Border of the Board ............................................................................................... 99 Email questions to the author: al@inventwithpython.comAbout This Book vii Drawing the Buttons ................................................................................................................ 100 Animating the Tile Slides ........................................................................................................ 100 The copy() Surface Method ................................................................................................. 101 Creating a New Puzzle ............................................................................................................. 103 Animating the Board Reset ...................................................................................................... 104 Time vs. Memory Tradeoffs .................................................................................................... 105 Nobody Cares About a Few Bytes ........................................................................................... 106 Nobody Cares About a Few Million Nanoseconds .................................................................. 107 Summary .................................................................................................................................. 107 Chapter 5 – Simulate .................................................................................................................... 108 How to Play Simulate .............................................................................................................. 108 Source Code to Simulate .......................................................................................................... 108 The Usual Starting Stuff .......................................................................................................... 114 Setting Up the Buttons ............................................................................................................. 115 The main() Function ............................................................................................................. 115 Some Local Variables Used in This Program .......................................................................... 116 Drawing the Board and Handling Input ................................................................................... 117 Checking for Mouse Clicks ..................................................................................................... 118 Checking for Keyboard Presses ............................................................................................... 118 The Two States of the Game Loop .......................................................................................... 119 Figuring Out if the Player Pressed the Right Buttons .............................................................. 119 Epoch Time .............................................................................................................................. 121 Drawing the Board to the Screen ............................................................................................. 122 Same Old terminate() Function ....................................................................................... 122 Reusing The Constant Variables .............................................................................................. 123 Animating the Button Flash ..................................................................................................... 123 Drawing the Buttons ................................................................................................................ 126 Animating the Background Change ......................................................................................... 126 The Game Over Animation ...................................................................................................... 127viii http://inventwithpython.com/pygame Converting from Pixel Coordinates to Buttons ........................................................................ 129 Explicit is Better Than Implicit ................................................................................................ 129 Chapter 6 – Wormy ...................................................................................................................... 131 How to Play Wormy ................................................................................................................ 131 Source Code to Wormy ............................................................................................................ 131 The Grid ................................................................................................................................... 137 The Setup Code ........................................................................................................................ 137 The main() Function ............................................................................................................. 138 A Separate runGame() Function .......................................................................................... 139 The Event Handling Loop ........................................................................................................ 139 Collision Detection .................................................................................................................. 140 Detecting Collisions with the Apple ........................................................................................ 141 Moving the Worm .................................................................................................................... 142 The insert() List Method................................................................................................... 142 Drawing the Screen .................................................................................................................. 143 Drawing ―Press a key‖ Text to the Screen ............................................................................... 143 The checkForKeyPress() Function ................................................................................ 143 The Start Screen ....................................................................................................................... 144 Rotating the Start Screen Text ................................................................................................. 145 Rotations Are Not Perfect ........................................................................................................ 146 Deciding Where the Apple Appears ........................................................................................ 147 Game Over Screens .................................................................................................................. 147 Drawing Functions ................................................................................................................... 148 Don’t Reuse Variable Names ................................................................................................... 151 Chapter 7 - Tetromino .................................................................................................................. 153 How to Play Tetromino ............................................................................................................ 153 Some Tetromino Nomenclature ............................................................................................... 153 Source Code to Tetromino ....................................................................................................... 154 The Usual Setup Code ............................................................................................................. 166 Email questions to the author: al@inventwithpython.comAbout This Book ix Setting up Timing Constants for Holding Down Keys ............................................................ 166 More Setup Code ..................................................................................................................... 166 Setting Up the Piece Templates ............................................................................................... 168 Splitting a ―Line of Code‖ Across Multiple Lines ................................................................... 171 The main() Function ............................................................................................................. 172 The Start of a New Game ......................................................................................................... 173 The Game Loop ....................................................................................................................... 174 The Event Handling Loop ........................................................................................................ 174 Pausing the Game .................................................................................................................... 174 Using Movement Variables to Handle User Input ................................................................... 175 Checking if a Slide or Rotation is Valid .................................................................................. 175 Finding the Bottom .................................................................................................................. 178 Moving by Holding Down the Key.......................................................................................... 179 Letting the Piece ―Naturally‖ Fall ............................................................................................ 182 Drawing Everything on the Screen .......................................................................................... 182 makeTextObjs() , A Shortcut Function for Making Text .................................................. 183 The Same Old terminate() Function ................................................................................ 183 Waiting for a Key Press Event with the checkForKeyPress() Function ........................ 183 showTextScreen() , A Generic Text Screen Function ..................................................... 184 The checkForQuit() Function .......................................................................................... 185 The calculateLevelAndFallFreq() Function .......................................................... 185 Generating Pieces with the getNewPiece() Function ....................................................... 188 Adding Pieces to the Board Data Structure ............................................................................. 189 Creating a New Board Data Structure ...................................................................................... 189 The isOnBoard() and isValidPosition() Functions ............................................... 190 Checking for, and Removing, Complete Lines ........................................................................ 192 Convert from Board Coordinates to Pixel Coordinates ........................................................... 195 Drawing a Box on the Board or Elsewhere on the Screen ....................................................... 195 Drawing Everything to the Screen ........................................................................................... 196x http://inventwithpython.com/pygame Drawing the Score and Level Text .......................................................................................... 196 Drawing a Piece on the Board or Elsewhere on the Screen ..................................................... 197 Drawing the ―Next‖ Piece ........................................................................................................ 197 Summary .................................................................................................................................. 198 Chapter 8 – Squirrel Eat Squirrel ................................................................................................. 200 How to Play Squirrel Eat Squirrel............................................................................................ 200 The Design of Squirrel Eat Squirrel ......................................................................................... 200 Source Code to Squirrel Eat Squirrel ....................................................................................... 201 The Usual Setup Code ............................................................................................................. 211 Describing the Data Structures ................................................................................................ 212 The main() Function ............................................................................................................. 213 The pygame.transform.flip() Function .................................................................... 214 A More Detailed Game State than Usual ................................................................................. 214 The Usual Text Creation Code................................................................................................. 215 Cameras ................................................................................................................................... 215 The ―Active Area‖ ................................................................................................................... 217 Keeping Track of the Location of Things in the Game World ................................................ 218 Starting Off with Some Grass .................................................................................................. 219 The Game Loop ....................................................................................................................... 219 Checking to Disable Invulnerability ........................................................................................ 219 Moving the Enemy Squirrels ................................................................................................... 219 Removing the Far Away Grass and Squirrel Objects .............................................................. 221 When Deleting Items in a List, Iterate Over the List in Reverse ............................................. 221 Adding New Grass and Squirrel Objects ................................................................................. 223 Camera Slack, and Moving the Camera View ......................................................................... 223 Drawing the Background, Grass, Squirrels, and Health Meter ................................................ 224 The Event Handling Loop ........................................................................................................ 226 Moving the Player, and Accounting for Bounce ...................................................................... 228 Collision Detection: Eat or Be Eaten ....................................................................................... 229 Email questions to the author: al@inventwithpython.comAbout This Book xi The Game Over Screen ............................................................................................................ 231 Winning ................................................................................................................................... 232 Drawing a Graphical Health Meter .......................................................................................... 232 The Same Old terminate() Function ................................................................................ 232 The Mathematics of the Sine Function .................................................................................... 233 Backwards Compatibility with Python Version 2 .................................................................... 236 The getRandomVelocity() Function .............................................................................. 237 Finding a Place to Add New Squirrels and Grass .................................................................... 237 Creating Enemy Squirrel Data Structures ................................................................................ 238 Flipping the Squirrel Image ..................................................................................................... 239 Creating Grass Data Structures ................................................................................................ 239 Checking if Outside the Active Area ....................................................................................... 240 Summary .................................................................................................................................. 241 Chapter 9 – Star Pusher ................................................................................................................ 242 How to Play Star Pusher .......................................................................................................... 242 Source Code to Star Pusher ...................................................................................................... 242 The Initial Setup ....................................................................................................................... 256 Data Structures in Star Pusher ................................................................................................. 271 The ―Game State‖ Data Structure ............................................................................................ 271 The ―Map‖ Data Structure ....................................................................................................... 271 The ―Levels‖ Data Structure .................................................................................................... 272 Reading and Writing Text Files ............................................................................................... 272 Text Files and Binary Files ...................................................................................................... 272 Writing to Files ........................................................................................................................ 273 Reading from Files ................................................................................................................... 274 About the Star Pusher Map File Format .................................................................................. 274 Recursive Functions ................................................................................................................. 280 Stack Overflows ....................................................................................................................... 281 Preventing Stack Overflows with a Base Case ........................................................................ 283xii http://inventwithpython.com/pygame The Flood Fill Algorithm ......................................................................................................... 284 Drawing the Map ..................................................................................................................... 285 Checking if the Level is Finished ............................................................................................ 287 Summary .................................................................................................................................. 288 Chapter 10 – Four Extra Games ................................................................................................... 289 Flippy, an ―Othello‖ Clone ...................................................................................................... 290 Source Code for Flippy ............................................................................................................ 292 Ink Spill, a ―Flood It‖ Clone .................................................................................................... 305 Source Code for Ink Spill ........................................................................................................ 305 Four-In-A-Row, a ―Connect Four‖ Clone ................................................................................ 317 Source Code for Four-In-A-Row ............................................................................................. 317 Gemgem, a ―Bejeweled‖ Clone ............................................................................................... 327 Source Code for Gemgem ........................................................................................................ 327 Summary .................................................................................................................................. 340 Glossary ....................................................................................................................................... 342 About the Author ......................................................................................................................... 347

2015-10-29

USB protocol

关于mass storage/printer/uvc的英文版USB protocol,pdf

2015-05-12

USB_MassStorage_Printer_UVC

英文版USB MassStorage/Printer/UVC协议,pdf

2015-05-12

数据库系统基础教程(第3版).pdf

扫描版,算是比较清晰的版本,分享给大家 数据库系统基础教程(原书第3版) 基本信息 原书名: First Course in Database Systems, A (3rd Edition) 原出版社: Prentice Hall 作者: (美)Jeffrey D. Ullman Jennifer Widom 译者: 岳丽华 金培权 万寿红 丛书名: 计算机科学丛书 出版社:机械工业出版社 ISBN:9787111268284 上架时间:2009-8-11 出版日期:2009 年8月 开本:16开 页码:332 版次:3-1 内容简介    本书由斯坦福大学知名计算机科学家jeffrey ullman和jennifer widom合作编写。本书首先介绍流行的关系数据库和对象关系数据库内容,涉及关系数据模型、e/r模型、uml模型以及对象模型等高级数据模型。然后介绍了有关半结构化数据组织管理中比较流行的xml等内容,既包括了数据组织模型的内容,也给出了相关编程语言,如xpath、xquery、xslt等。.    本书举例丰富翔实,既可用作大学本科、研究生计算机及相关专业数据库课程的教科书,也可用作数据库领域技术人员的参考书。    本书特点    全面改版的组织结构。    uml数据库模型的新内容。    包括3nf综合算法在内的操作依赖新算法的引入。..    更多的3nf,包括3nf综合算法。    扩展的sql触发讨论。    新增的索引选择和物化视图。    新增的三层体系结构。    新增的php。    新增的olap和sql立方体算子介绍。    扩展的xml内容,包括xml模式、xpath、xquery和xslt。... 作译者   Jennifer Widom 美国康奈尔大学计算机科学博士,现为斯坦福大学计算机科学与电子工程系教授,研究非传统的数据管理。她是ACM会士、Guggenheim会士.Guggenheim会士和美国国家工程院成员,并且是多个编辑委员会.程序委员会和顾问委员会成员.她在2007年获得了ACM SIGMOD Edgar F. Codd 发明奖.   Jeffrey D. Ullman 斯坦福大学计算机科学系Stanford W. Ascherman教授,数据库技术专家。他独立或与人合作出版了15本著作,发表了170多篇技术论文。他的研究兴趣包括数据库理论、数据库集成、数据挖掘和利用信息基础设施进行教育。他是美国国家工程院成员,曾获得Knuth奖、SIGMOD贡献奖、Karlstrom杰出教育家奖和Edgar F. Codd发明奖。 目录 封面 -13 封底 -12 扉页 -11 版权 -10 前言 -9 目录 -7 第1章 数据库系统世界 1 1.1 数据库系统的发展 1 1.1.1 早期的数据库管理系统 1 1.1.2 关系数据库系统 2 1.1.3 越来越小的系统 2 1.1.4 越来越大的系统 2 1.1.5 信息集成 3 1.2 数据库管理系统概述 3 1.2.1 数据定义语言命令 3 1.2.2 查询处理概述 4 1.2.3 存储器和缓冲区管理器 5 1.2.4 事务处理 5 1.2.5 查询处理器 6 1.3 本书概述 6 1.4 参考文献 7 第一部分 关系数据库模型 9 第2章 关系数据模型 9 2.1 数据模型概述 9 2.1.1 什么是数据模型 9 2.1.2 一些重要的数据模型 9 2.1.3 关系模型简介 10 2.1.4 半结构化模型简介 10 2.1.5 其他数据模型 11 2.1.6 几种建模方法的比较 11 2.2 关系模型基础 12 2.2.1 属性 12 2.2.2 模式 12 2.2.3 元组 12 2.2.4 域 12 2.2.5 关系的等价描述 13 2.2.6 关系实例 13 2.2.7 关系上的键 13 2.2.8 数据库模式示例 14 2.2.9 习题 15 2.3 在SQL中定义关系模式 16 2.3.1 SQL中的关系 16 2.3.2 数据类型 16 2.3.3 简单的表定义 17 2.3.4 修改关系模式 18 2.3.5 默认值 18 2.3.6 键的声明 19 2.3.7 习题 20 2.4 代数查询语言 21 2.4.1 为什么需要一种专门的查询语言 21 2.4.2 什么是代数 21 2.4.3 关系代数概述 21 2.4.4 关系上的集合操作 21 2.4.5 投影 23 2.4.6 选择 23 2.4.7 笛卡儿积 24 2.4.8 自然连接 24 2.4.9 q连接 25 2.4.10 组合操作构成查询 26 2.4.11 命名和重命名 27 2.4.12 操作之间的联系 27 2.4.13 代数表达式的线性符号 28 2.4.14 习题 29 2.5 关系上的约束 32 2.5.1 作为约束语言的关系代数 32 2.5.2 引用完整性约束 33 2.5.3 键约束 33 2.5.4 其他约束举例 34 2.5.5 习题 35 2.6 小结 35 2.7 参考文献 36 第3章 关系数据库设计理论 37 3.1 函数依赖 37 3.1.1 函数依赖的定义 37 3.1.2 关系的键 38 3.1.3 超键 39 3.1.4 习题 40 3.2 函数依赖的规则 40 3.2.1 函数依赖的推导 40 3.2.2 分解/结合规则 40 3.2.3 平凡函数依赖 41 3.2.4 计算属性的闭包 42 3.2.5 闭包算法为何有效 43 3.2.6 传递规则 44 3.2.7 函数依赖的闭包集合 45 3.2.8 投影函数依赖 45 3.2.9 习题 47 3.3 关系数据库模式设计 48 3.3.1 异常 48 3.3.2 分解关系 49 3.3.3 Boyce-Codd范式 50 3.3.4 分解为BCNF 50 3.3.5 习题 52 3.4 分解的优劣 53 3.4.1 从分解中恢复信息 53 3.4.2 无损连接的chase检验 55 3.4.3 为什么chase检验有效 56 3.4.4 依赖的保持 57 3.4.5 习题 58 3.5 第三范式 58 3.5.1 第三范式的定义 59 3.5.2 3NF模式综合算法 59 3.5.3 为什么3NF综合算法有效 60 3.5.4 习题 60 3.6 多值依赖 61 3.6.1 属性独立及随之产生的冗余 61 3.6.2 多值依赖的定义 61 3.6.3 多值依赖的推导 62 3.6.4 第四范式 64 3.6.5 分解为第四范式 64 3.6.6 范式间的联系 65 3.6.7 习题 65 3.7 MVD的发现算法 66 3.7.1 闭包和chase 66 3.7.2 将chase扩展到MVD 67 3.7.3 chase为何对MVD有效 69 3.7.4 投影MVD 69 3.7.5 习题 70 3.8 小结 70 3.9 参考文献 71 第4章 高级数据库模型 73 4.1 E/R模型 73 4.1.1 实体集 73 4.1.2 属性 74 4.1.3 联系 74 4.1.4 实体-联系图 74 4.1.5 E/R图实例 75 4.1.6 二元E/R联系的多样性 75 4.1.7 多路联系 76 4.1.8 联系中的角色 77 4.1.9 联系的属性 78 4.1.10 多路联系到二元联系的转换 79 4.1.11 E/R模型中的子类 80 4.1.12 习题 81 4.2 设计原则 82 4.2.1 忠实性 82 4.2.2 避免冗余 83 4.2.3 简单性 83 4.2.4 选择正确的联系 83 4.2.5 选择正确的元素种类 84 4.2.6 习题 86 4.3 E/R模型中的约束 87 4.3.1 E/R模型中的键 87 4.3.2 E/R模型中键的表示 87 4.3.3 引用完整性 88 4.3.4 度约束 89 4.3.5 习题 89 4.4 弱实体集 89 4.4.1 弱实体集的来源 89 4.4.2 弱实体集的要求 90 4.4.3 弱实体集的符号 91 4.4.4 习题 91 4.5 从E/R图到关系设计 92 4.5.1 实体集到关系的转化 92 4.5.2 E/R联系到关系的转化 92 4.5.3 关系组合 94 4.5.4 处理弱实体集 95 4.5.5 习题 96 4.6 子类结构到关系的转化 97 4.6.1 E/R方式转化 97 4.6.2 面向对象方法 98 4.6.3 使用空值组合关系 99 4.6.4 各种方法的比较 99 4.6.5 习题 100 4.7 统一建模语言 101 4.7.1 UML类 101 4.7.2 UML类的键 101 4.7.3 关联 101 4.7.4 自关联 102 4.7.5 关联类 103 4.7.6 UML中的子类 103 4.7.7 聚集与组合 104 4.7.8 习题 105 4.8 UML图到关系的转化 105 4.8.1 UML到关系的基础知识 105 4.8.2 从UML子类到关系 106 4.8.3 从聚集与组合到关系 106 4.8.4 UML与弱实体集的类比 107 4.8.5 习题 108 4.9 对象定义语言 108 4.9.1 类声明 108 4.9.2 ODL中的属性 108 4.9.3 ODL中的联系 109 4.9.4 反向联系 109 4.9.5 联系的多重性 110 4.9.6 ODL中的类型 110 4.9.7 ODL中的子类 112 4.9.8 在ODL中声明键 113 4.9.9 习题 113 4.10 从ODL设计到关系设计 114 4.10.1 从ODL类到关系 114 4.10.2 类中的复杂属性 114 4.10.3 值集合类型属性的表示 115 4.10.4 其他类型构建器的表示 116 4.10.5 ODL中联系的表示 117 4.10.6 习题 117 4.11 小结 118 4.12 参考文献 119 第二部分 关系数据库程序设计 121 第5章 代数和逻辑查询语言 121 5.1 包上的关系操作 121 5.1.1 为什么采用包 121 5.1.2 包的并、交、差 122 5.1.3 包上的投影操作 123 5.1.4 包上的选择操作 123 5.1.5 包的笛卡儿积 124 5.1.6 包的连接 124 5.1.7 习题 125 5.2 关系代数的扩展操作符 125 5.2.1 消除重复 126 5.2.2 聚集操作符 126 5.2.3 分组 127 5.2.4 分组操作符 127 5.2.5 扩展的投影操作符 128 5.2.6 排序操作符 129 5.2.7 外连接 129 5.2.8 习题 130 5.3 关系逻辑 131 5.3.1 谓词和原子 131 5.3.2 算术原子 131 5.3.3 Datalog规则和查询 132 5.3.4 Datalog规则的意义 133 5.3.5 扩展谓词和内涵谓词 134 5.3.6 Datalog规则应用于包 135 5.3.7 习题 136 5.4 关系代数与Datalog 136 5.4.1 布尔操作 136 5.4.2 投影 137 5.4.3 选择 137 5.4.4 积 138 5.4.5 连接 139 5.4.6 用Datalog模拟多重操作 139 5.4.7 Datalog与关系代数的比较 140 5.4.8 习题 141 5.5 小结 141 5.6 参考文献 142 第6章 数据库语言SQL 143 6.1 SQL中的简单查询 143 6.1.1 SQL中的投影 145 6.1.2 SQL中的选择 146 6.1.3 字符串比较 147 6.1.4 SQL中的模式匹配 147 6.1.5 日期和时间 148 6.1.6 空值和涉及空值的比较 149 6.1.7 布尔值UNKNOWN 149 6.1.8 输出排序 151 6.1.9 习题 151 6.2 多关系查询 152 6.2.1 SQL中的积和连接 153 6.2.2 消除属性歧义 153 6.2.3 元组变量 154 6.2.4 多关系查询的解释 155 6.2.5 查询的并、交、差 156 6.2.6 习题 157 6.3 子查询 158 6.3.1 产生标量值的子查询 159 6.3.2 关系的条件表达式 160 6.3.3 元组的条件表达式 160 6.3.4 关联子查询 161 6.3.5 FROM子句中的子查询 162 6.3.6 SQL的连接表达式 163 6.3.7 自然连接 164 6.3.8 外连接 164 6.3.9 习题 165 6.4 全关系操作 167 6.4.1 消除重复 167 6.4.2 并、交、差中的重复 168 6.4.3 SQL中的分组和聚集 168 6.4.4 聚集操作符 168 6.4.5 分组 169 6.4.6 分组、聚集和空值 170 6.4.7 HAVING子句 171 6.4.8 习题 171 6.5 数据库更新 172 6.5.1 插入 172 6.5.2 删除 174 6.5.3 修改 174 6.5.4 习题 175 6.6 SQL中的事务 175 6.6.1 可串行化 175 6.6.2 原子性 177 6.6.3 事务 177 6.6.4 只读事务 178 6.6.5 读脏数据 179 6.6.6 其他隔离层次 180 6.6.7 习题 181 6.7 小结 182 6.8 参考文献 183 第7章 约束与触发器 184 7.1 键和外键 184 7.1.1 外键约束声明 184 7.1.2 维护引用完整性 185 7.1.3 延迟约束检查 186 7.1.4 习题 188 7.2 属性和元组上的约束 188 7.2.1 非空值约束 189 7.2.2 基于属性的CHECK约束 189 7.2.3 基于元组的CHECK约束 190 7.2.4 基于元组和基于属性的约束的比较 191 7.2.5 习题 191 7.3 修改约束 192 7.3.1 给约束命名 192 7.3.2 修改表上的约束 193 7.3.3 习题 193 7.4 断言 194 7.4.1 创建断言 194 7.4.2 使用断言 194 7.4.3 习题 195 7.5 触发器 196 7.5.1 SQL中的触发器 196 7.5.2 触发器设计的选项 197 7.5.3 习题 199 7.6 小结 200 7.7 参考文献 201 第8章 视图与索引 202 8.1 虚拟视图 202 8.1.1 视图定义 202 8.1.2 视图查询 203 8.1.3 属性重命名 203 8.1.4 习题 204 8.2 视图更新 204 8.2.1 视图删除 204 8.2.2 可更新视图 204 8.2.3 视图中的替换触发器 206 8.2.4 习题 207 8.3 SQL中的索引 207 8.3.1 建立索引的动机 208 8.3.2 索引的声明 208 8.3.3 习题 209 8.4 索引的选择 209 8.4.1 简单代价模型 209 8.4.2 一些有用的索引 209 8.4.3 计算最佳索引 211 8.4.4 索引的自动选择 213 8.4.5 习题 213 8.5 物化视图 214 8.5.1 物化视图的维护 214 8.5.2 物化视图的定期维护 215 8.5.3 利用物化视图重写查询 216 8.5.4 物化视图的自动创建 217 8.5.5 习题 218 8.6 小结 218 8.7 参考文献 219 第9章 服务器环境下的SQL 220 9.1 三层体系结构 220 9.1.1 Web服务器层 220 9.1.2 应用层 221 9.1.3 数据库层 222 9.2 SQL环境 222 9.2.1 环境 222 9.2.2 模式 223 9.2.3 目录 223 9.2.4 SQL环境中的客户和服务器 224 9.2.5 连接 224 9.2.6 会话 225 9.2.7 模块 225 9.3 SQL/宿主语言接口 225 9.3.1 阻抗不匹配问题 226 9.3.2 SQL与宿主语言连接 227 9.3.3 DECLARE节 227 9.3.4 使用共享变量 227 9.3.5 单元组选择语句 228 9.3.6 游标 229 9.3.7 游标更新 231 9.3.8 避免并发修改 231 9.3.9 动态SQL 232 9.3.10 习题 233 9.4 存储过程 234 9.4.1 创建PSM函数和过程 234 9.4.2 PSM中的简单语句格式 234 9.4.3 分支语句 235 9.4.4 PSM中的查询 236 9.4.5 PSM中的循环 237 9.4.6 for循环 238 9.4.7 PSM中的异常处理 239 9.4.8 使用PSM函数和过程 241 9.4.9 习题 241 9.5 使用调用层接口 242 9.5.1 SQL/CLI简介 242 9.5.2 进程语句 244 9.5.3 从查询结果中取数据 244 9.5.4 向查询传递参数 246 9.5.5 习题 247 9.6 JDBC 247 9.6.1 JDBC简介 247 9.6.2 JDBC中的创建语句 248 9.6.3 JDBC中的游标操作 249 9.6.4 参数传递 249 9.6.5 习题 250 9.7 PHP 250 9.7.1 PHP基础 250 9.7.2 数组 251 9.7.3 PEAR DB库 251 9.7.4 使用DB创建数据库连接 251 9.7.5 执行SQL语句 251 9.7.6 PHP中的游标操作 252 9.7.7 PHP中的动态SQL 252 9.7.8 习题 253 9.8 小结 253 9.9 参考文献 254 第10章 关系数据库的新课题 255 10.1 SQL中的安全机制和用户认证 255 10.1.1 权限 255 10.1.2 创建权限 256 10.1.3 检查权限的过程 257 10.1.4 授权 257 10.1.5 授权图 258 10.1.6 收权 259 10.1.7 习题 262 10.2 SQL中的递归 262 10.2.1 在SQL中定义递归关系 262 10.2.2 有问题的递归SQL表达式 264 10.2.3 习题 266 10.3 对象关系模型 267 10.3.1 从关系到对象关系 267 10.3.2 嵌套关系 267 10.3.3 引用 268 10.3.4 面向对象与对象关系的比较 269 10.3.5 习题 270 10.4 SQL中的用户定义类型 270 10.4.1 在SQL中定义类型 270 10.4.2 用户定义类型中的方法声明 271 10.4.3 方法定义 272 10.4.4 用UDT声明关系 272 10.4.5 引用 272 10.4.6 为表生成对象标识符 273 10.4.7 习题 274 10.5 对象关系数据上的操作 274 10.5.1 引用的跟随 274 10.5.2 访问UDT类型的元组分量 275 10.5.3 生成器和转换器函数 276 10.5.4 UDT上联系的排序 277 10.5.5 习题 278 10.6 联机分析处理 279 10.6.1 OLAP和数据仓库 279 10.6.2 OLAP应用 279 10.6.3 OLAP数据的多维视图 280 10.6.4 星型模式 280 10.6.5 切片和切块 281 10.6.6 习题 283 10.7 数据立方体 283 10.7.1 立方体算子 284 10.7.2 SQL中的立方体算子 285 10.7.3 习题 286 10.8 小结 286 10.9 参考文献 287 第三部分 半结构化数据的建模和程序设计 289 第11章 半结构化数据模型 289 11.1 半结构化数据 289 11.1.1 为何需要半结构化数据模型 289 11.1.2 半结构化数据表示 290 11.1.3 信息集成与半结构化数据 291 11.1.4 习题 292 11.2 XML 292 11.2.1 语义标签 292 11.2.2 有模式和无模式的XML 292 11.2.3 格式规范的XML 292 11.2.4 属性 294 11.2.5 连接元素的属性 294 11.2.6 命名空间 295 11.2.7 XML和数据库 295 11.2.8 习题 296 11.3 文档类型定义 296 11.3.1 DTD的格式 296 11.3.2 使用DTD 299 11.3.3 属性列表 299 11.3.4 标识符和引用 299 11.3.5 习题 300 11.4 XML模式 301 11.4.1 XML模式的格式 301 11.4.2 元素 301 11.4.3 复杂类型 302 11.4.4 属性 303 11.4.5 受限的简单类型 304 11.4.6 XML模式中的键 305 11.4.7 XML模式中的外键 306 11.4.8 习题 308 11.5 小结 308 11.6 参考文献 309 第12章 XML程序设计语言 310 12.1 XPath 310 12.1.1 XPath数据模型 310 12.1.2 文档节点 311 12.1.3 路径表达式 311 12.1.4 相对路径表达式 312 12.1.5 路径表达式中的属性 312 12.1.6 轴 312 12.1.7 表达式的上下文 313 12.1.8 通配符 313 12.1.9 路径表达式中的条件 314 12.1.10 习题 315 12.2 XQuery 316 12.2.1 XQuery基础 317 12.2.2 FLWR表达式 318 12.2.3 通过变量的值置换变量 320 12.2.4 XQuery中的连接 321 12.2.5 XQuery比较操作符 322 12.2.6 消除重复 323 12.2.7 XQuery中的量词 323 12.2.8 聚集 324 12.2.9 XQuery表达式中的分支 324 12.2.10 查询结果排序 324 12.2.11 习题 325 12.3 扩展样式表语言 326 12.3.1 XSLT基础 326 12.3.2 模板 326 12.3.3 从XML数据中获取值 327 12.3.4 模板的递归应用 328 12.3.5 XSLT中的迭代 329 12.3.6 XSLT中的条件 330 12.3.7 习题 331 12.4 小结 332 12.5 参考文献 332 译者序   数据库已是当今信息社会须臾不可脱离的重要工具,数据库的教学也就成为计算机科学与技术专业的一门必修课程。.   Jeffrey D.Ullman教授是斯坦福大学计算机系的资深教授,自1980年编写了其第一本数据库教材《数据库系统原理》以来,已出版过多本数据库系统方面的教材。该书是他在斯坦福大学计算机系对大学生教授的第一门数据库课程(CS145)中使用的教材,Ullman教授在第2版出版4年后,对其作了更新又出版了第3版。与第2版相比,第3版不仅重新组织了章节从而使这本书的系统性更强,而且内容作了大幅度增加,包括了有关索引的介绍和目前XML数据库技术发展的新内容。   数据库技术发展到现在,其一个很大的变化是,数据库不仅要管理结构化的数据,而且要管理更多的半结构化的数据。本书正是从这个观点出发,将内容分成两大部分:首先仍然是流行的关系数据库和对象关系数据库内容,介绍了关系数据模型、E/R模型、UML模型以及对象模型等高级数据模型。然后介绍了有关半结构化数据组织管理中比较流行的XML等内容,既包括了数据组织模型的内容,也给出了相关编程语言,如XPath、XQuery、XSLT等。..   该版本仍然保留了本教材的主要特点,举例丰富翔实,便于教师教学和自学者学习。书中在每一节后都给出了大量的练习题,并且标注了习题的难易程度,既便于教学安排,又便于学生循序渐进地掌握教学内容。另外,在Jeffrey D.Ullman教授的主页(http://infolab.stanford.edu/~ullman/fcdb.html)上还有关于该课程实验的内容,这对于本课程的实验教学有很大帮助。   本书由岳丽华负责翻译审校了第1~7章,金培权负责翻译审校了第8~10章,万寿红负责翻译审校了第11~12章。另外,参加翻译工作的还有刘沾沾、向小岩、田明辉、赵旭剑、秦富童、卢科、孙逸雪、陈艳等。   限于水平,译文中难免有错误与不足之处,欢迎读者批评指正。...   译者   2009年5月    前言   在斯坦福大学,因为实行的是一年四学期制,所以数据库引论课被分为两门课程。第一门课程是CS145,该课程只要求学生学会使用数据库系统,而不要求知道DBMS实现的内容。CS145是CS245的预修课,CS245介绍DBMS实现。学生若想进一步学习数据库方面的课程,可以学习CS345(此课是理论课)、CS346(此课是DBMS实现实验课)以及CS347(此课介绍事务处理及分布式数据库)课程。.   从1997年开始,我们已经出版了两本配套教材。《数据库系统基础教程》是为CS145课程编写的。《数据库系统实现》是为CS245课程以及部分CS346课程编写的。由于很多学校实行学期制,或者是将这两门数据库引论课组合成一门引论课,因此,我们感到有必要将上述两本书合成一本《数据库系统全书》。   然而,更多的学生是要学会如何使用数据库系统,而不是如何实现数据库系统,所以我们继续将《数据库系统全书》的前半部分作为《数据库系统基础教程》出版。在第3版中,介绍了很多新内容,并且对编写思路有所调整。当前,数据库系统有两个重要模型:关系模型和半结构模型(XML)。因此,我们决定将面向对象数据库从原来的单独一章改为设计和对象关系系统章节中的内容。   第3版结构   在简短的第1章介绍之后,第2~4章中讨论关系模型。第4章讨论高级模型,除了E/R模型之外,还讨论UML(统一建模语言)。第4章中还包括ODL的简单介绍,主要是将它用作关系数据库模式的设计语言。在本书的Web站点上有更多有关ODL和OQL的介绍。   本版更新了函数依赖和多值依赖的内容,并作为第3章的主题。这里,假定函数依赖在其右部有一组属性集。另外还给出了一些算法,包括“chase”,该算法允许对依赖进行操作。第3章对3NF作了进一步讨论,包括3NF综合算法,以明确3NF和BCNF之间的区别是什么。   第5章除了讨论上一版的关系代数内容外,还增加了上一版第10章中的Datalog部分内容。有关Datalog中的递归内容,或者放入网站,或者放入了本版第10章中有关SQL的递归中讨论。   第6~10章讨论SQL程序设计的有关内容,是由上一版第6、7、8章及部分第10章内容重新组织而成的。有关索引和视图的内容单独组织为第8章,并且讨论了一些重要的新课题,包括物化视图和索引的自动选择等。   第9章基于上一版的第8章(嵌入式SQL),并新增加了有关三层体系结构一节。另外,还扩展了对JDBC的讨论,并加入了新的PHP内容。   第10章收集了一些有关SQL的高级课题。除涵盖上一版第8章中有关授权的内容和第10章中有关SQL的递归的内容外,大部分内容是有关嵌套关系模型(上一版的第4章)和SQL的对象关系特征(上一版的第9章)的。   第11章和第12章讨论XML以及基于XML的系统。除了包括上一版第4章最后的部分内容外,其他内容都是新的。第11章讨论建模,包括DTD以及XML模式。第12章讨论程序设计,包括XPath、XQuery和XSLT等。   如何使用本书   本书的内容很适合一学期(半学年)有关数据库建模和程序设计的课程。如果只有四分之一学年的时间,那么需要省略某些内容。我们认为第2~7章是核心内容。虽然我们认为每一个学生都应该从第9章的一节中学会如何在宿主语言中嵌入SQL语句,但是剩余的5章可以按照意愿进行选择。   若如同我们在CS145课程中所做的那样,你想给学生一个真实的数据库应用设计和实现课程作业,则应该对本书的讲解顺序做某些调整,较早开始对SQL的介绍。虽然学生在做数据库设计时需要规范化知识,但可以推迟有关函数依赖的介绍。   预备知识   我们曾经将此书作为本科生和一年级研究生所修课程的教材。正常情况下,该课程是二年级课程,在此之前已学习过:(1)数据结构、算法、离散数学,(2)软件系统、软件工程和程序设计语言等。最重要的是学生至少要对如下内容有基本的理解:代数表达式和代数定律,逻辑,基本的数据结构,面向对象程序设计概念和程序设计环境。可是,我们认为最好修完标准的计算机科学专业三年级课程后再使用本书作教材。   习题   本书几乎在每一节都包括大量的习题,我们用感叹号对难题做了标记,对最难的习题用双感叹号做了标记。   网上支持   本书的网址是:.. .  http://infolab.stanford.edu/~ullman/fcdb.html   该网站包括勘误表及支持材料。这里还有我们每次教授CS145课程的笔记,包括相关的作业、课程实验及考卷等。另外,我们还把第3版中没有出现的第2版的材料放在网站上。   致谢   我们感谢与Donald Kossmann的讨论,特别是有关XML及其相关的程序设计系统内容的讨论。我们还要感谢Bobbie Cochrane帮助我们理解上一版中有关触发器的语义。   有很多人曾帮助过我们,他们或是提供了本书及早期版本内容的最初材料,或是提供了本书或其他网上材料的勘误表等。对所有帮助过我们的人表示感谢,他们是:   Marc Abromowitz, Joseph H. Adamski, Brad Adelberg, Gleb Ashimov, Donald Aingworth, Teresa Almeida, Brian Babcock, Bruce Backer, Yunfan Bao, Jonathan Becker, Margaret Bentiez, Eberhard Bertsch, Larry Bonham, Phillip Bonnet, David Brokaw, Ed Burns, Alex Butler, Karen Butler, Mike Carey, Christopher Chan, Sudarshan Chawathe。   Per Christensen, Ed Chang, Surajit Chaudhuri, Ken Chen, Rada Chirkova, Nitin Chopra, Lewis Church, Jr., Bobbie Cochrane, Michael Cole, Alissa Cooper, Arturo Crespo, Linda DeMichiel, Matthew F. Dennis, Tom Dienstbier, Pearl D'Souza, Oliver Duschka, Xavier Faz, Greg Fichtenholtz, Bart Fisher, Simon Frettloeh, Jarl Friis。   John Fry, Chiping Fu, Tracy Fujieda, Prasanna Ganesan, Suzanne Garcia, Mark Gjol, Manish Godara, Seth Goldberg, Jeff Goldblat, Meredith Goldsmith, Luis Gravano, Gerard Guillemette, Himanshu Gupta, Petri Gynther, Jon Heggland, Rafael Hernandez, Masanori Higashihara, Antti Hjelt, Ben Holtzman, Steve Huntsberry。   Sajid Hussain, Leonard Jacobson, Thulasiraman Jeyaraman, Dwight Joe, Brian Jorgensen, Mathew P. Johnson, Sameh Kamel, Seth Katz, Pedram Keyani, Victor Kimeli, Ed Knorr, Yeong-Ping Koh, David Koller, Gyorgy Kovacs, Phillip Koza, Brian Kulman, Bill Labiosa, Sang Ho Lee, Younghan Lee, Miguel Licona。   Olivier Lobry, Chao-Jun Lu, Waynn Lue, John Manz, Arun Marathe, Philip Minami, Le-Wei Mo, Fabian Modoux, Peter Mork, Mark Mortensen, Ramprakash Narayanaswami, Hankyung Na, Mor Naaman, Mayur Naik, Marie Nilsson, Torbjorn Norbye, Chang-Min Oh, Mehul Patel, Soren Peen, Jian Pei。   Xiaobo Peng, Bert Porter, Limbek Reka, Prahash Ramanan, Nisheeth Ranjian, Suzanne Rivoire, Ken Ross, Tim Roughgarten, Mema Roussopoulos, Richard Scherl, Loren Shevitz, June Yoshiko Sison, Man Cho A. So, Elizabeth Stinson, Qi Su, Ed Swierk, Catherine Tornabene, Anders Uhl, Jonathan Ullman, Mayank Upadhyay。   Anatoly Varakin, Vassilis Vassalos, Krishna Venuturimilli, Vikram Vijayaraghavan, Terje Viken, Qiang Wang, Mike Wiacek, Kristian Widjaja, Janet Wu, Sundar Yamunachari, Takeshi Yokukawa, Bing Yu, Min-Sig Yun, Torben Zahle, Sandy Zhang。...   J.D.U.   J.W.   2007年7月于斯坦福

2014-01-07

Windows网络编程

第一部分 传统网络API 第1章 NetBIOS 1 1.1 Microsoft NetBIOS 2 1.1.1 LANA编号 2 1.1.2 NetBIOS名字 4 1.1.3 NetBIOS特性 6 1.2 NetBIOS编程基础 7 1.3 常规NetBIOS例程 8 1.3.1 会话服务器:异步回调模型 15 1.3.2 会话服务器:异步事件模型 20 1.3.3 NetBIOS会话客户机 24 1.4 数据报的工作原理 28 1.5 其他NetBIOS命令 40 1.5.1 适配器状态 40 1.5.2 查找名字 42 1.5.3 将传送协议同LANA编号对应起来 43 1.6 平台问题 43 1.6.1 Windows CE 44 1.6.2 Windows 9x 44 1.6.3 常规问题 44 1.7 小结 44 第2章 重定向器 45 2.1 通用命名规范 45 2.2 多UNC提供者 47 2.3 网络提供者 47 2.4 重定向器简介 48 2.5 服务器消息块 48 2.6 安全问题 49 2.6.1 安全描述符 49 2.6.2 访问令牌 51 2.7 网络安全 51 2.8 一个实例 52 2.9 小结 53 第3章 邮槽 54 3.1 邮槽实施细节 54 3.1.1 邮槽的名字 54 3.1.2 消息的长度 55 3.1.3 应用程序的编译 56 3.1.4 错误代码 57 3.2 基本客户机/服务器 57 3.2.1 邮槽服务器的详情 57 3.2.2 邮槽客户机的详情 59 3.3 其他邮槽API 61 3.4 平台和性能问题 62 3.4.1 8.3字符名字限制 62 3.4.2 不能取消“凝结”的I/O请求 62 3.4.3 超时引起的内存废弃 64 3.5 小结 65 第4章 命名管道 66 4.1 命名管道的实施细节 66 4.1.1 命名管道命名规范 67 4.1.2 字节模式及消息模式 67 4.1.3 应用程序的编译 67 4.1.4 错误代码 68 4.2 客户机与服务器的基础 68 4.2.1 服务器的细节 68 4.2.2 高级服务器的细节 74 4.2.3 客户机的细节 81 4.3 其他API调用 83 4.4 平台和性能问题 86 4.5 小结 87 第二部分 Winsock API 第5章 网络原理和协议 89 5.1 协议的特征 89 5.1.1 面向消息 89 5.1.2 面向连接和无连接 91 5.1.3 可靠性和次序性 91 5.1.4 从容关闭 92 5.1.5 广播数据 92 5.1.6 多播数据 92 5.1.7 服务质量 92 5.1.8 部分消息 93 5.1.9 路由选择的考虑 93 5.1.10 其他特征 93 5.2 支持的协议 93 5.2.1 支持的Win32网络协议 93 5.2.2 Windows CE网络协议 94 5.3 Winsock 2协议信息 94 5.4 Windows套接字 97 5.5 具体平台的问题 99 5.6 选择适当的协议 100 5.7 小结 100 第6章 地址家族和名字解析 102 6.1 IP 102 6.1.1 TCP 102 6.1.2 UDP 102 6.1.3 定址 102 6.1.4 创建套接字 105 6.1.5 名字解析 105 6.2 红外线套接字 107 6.2.1 定址 107 6.2.2 名字解析 108 6.2.3 红外线设备列举 108 6.2.4 查询IAS 110 6.2.5 创建套接字 111 6.2.6 套接字选项 112 6.3 IPX/SPX 112 6.3.1 编址 112 6.3.2 创建套接字 112 6.4 NetBIOS 115 6.4.1 定址 115 6.4.2 创建套接字 116 6.5 AppleTalk 117 6.5.1 定址 117 6.5.2 AppleTalk名的注册 118 6.5.3 AppleTalk名的解析 119 6.5.4 创建套接字 124 6.6 ATM 124 6.6.1 定址 125 6.6.2 创建套接字 128 6.6.3 把套接字和SAP绑定在一起 129 6.6.4 名字解析 130 6.7 Winsock 2支持的其他函数 130 6.8 小结 131 第7章 Winsock基础 132 7.1 Winsock的初始化 132 7.2 错误检查和控制 134 7.3 面向连接的协议 134 7.3.1 服务器API函数 134 7.3.2 客户机API函数 138 7.3.3 数据传输 140 7.3.4 流协议 144 7.3.5 中断连接 146 7.3.6 综合分析 147 7.4 无连接协议 155 7.4.1 接收端 155 7.4.2 发送端 156 7.4.3 基于消息的协议 157 7.4.4 释放套接字资源 158 7.4.5 综合分析 158 7.5 其他API函数 165 7.6 Windows CE 168 7.7 其他地址家族 169 7.7.1 AppleTalk 169 7.7.2 IrDA 169 7.7.3 NetBIOS 170 7.7.4 IPX/SPX 170 7.7.5 ATM 171 7.8 小结 171 第8章 Winsock I/O方法 172 8.1 套接字模式 172 8.1.1 锁定模式 173 8.1.2 非锁定模式 175 8.2 套接字I/O模型 176 8.2.1 select模型 176 8.2.2 WSAAsyncSelect 179 8.2.3 WSAEventSelect 183 8.2.4 重叠模型 188 8.2.5 完成端口模型 198 8.3 I/O模型的问题 206 8.4 小结 206 第9章 套接字选项和I/O控制命令 207 9.1 套接字选项 207 9.1.1 SOL_SOCKET选项级别 208 9.1.2 SOL_APPLETALK选项级别 215 9.1.3 SOL_IRLMP选项级别 218 9.1.4 IPPROTO_IP选项级 222 9.1.5 IPPROTO_TCP选项级别 227 9.1.6 NSPROTO_IPX选项级别 227 9.2 IOCTLSOCKET和WSAIOCTL 231 9.2.1 标准I/O控制命令 232 9.2.2 其他I/O控制命令 233 9.2.3 安全套接字层的I/O控制命令 239 9.2.4 ATM I/O控制命令 241 9.3 小结 242 第10章 名字注册和解析 243 10.1 背景知识 243 10.2 名字空间模型 243 10.3 服务的注册 245 10.3.1 安装服务类 245 10.3.2 服务的注册 248 10.3.3 服务注册示例 251 10.4 服务的查询 254 10.4.1 怎样对服务进行查询 255 10.4.2 查询DNS 257 10.5 小结 260 第11章 多播 261 11.1 多播的含义 261 11.2 IP多播 264 11.2.1 Internet网关管理协议 264 11.2.2 IP叶节点 265 11.2.3 IP多播的实施 266 11.3 ATM多播 266 11.3.1 ATM叶节点 267 11.3.2 ATM根节点 267 11.4 多播与Winsock 268 11.4.1 Winsock 1多播 268 11.4.2 Winsock 2多播 274 11.4.3 常用的Winsock选项 288 11.4.4 拨号网络多播的一处限制 290 11.5 小结 291 第12章 常规服务质量 292 12.1 背景知识 292 12.1.1 资源预约协议 292 12.1.2 网络组件 293 12.1.3 应用组件 294 12.1.4 策略组件 296 12.2 QoS和Winsock 296 12.2.1 QoS结构 297 12.2.2 QoS调用函数 299 12.3 QoS中止 303 12.4 QoS编程 311 12.4.1 RSVP和套接字类型 312 12.4.2 QoS通知 314 12.4.3 QoS模板 316 12.5 示例 318 12.5.1 单播TCP 318 12.5.2 单播UDP 336 12.5.3 多播UDP 337 12.6 ATM和QoS 338 12.7 小结 339 第13章 原始套接字 340 13.1 原始套接字的创建 340 13.2 Internet控制消息协议 341 13.2.1 Ping示例 342 13.2.2 Traceroute示例 351 13.3 Internet组管理协议 352 13.4 IP_HDRINCL的使用 354 13.5 小结 362 第14章 Winsock 2服务提供者接口 363 14.1 SPI基础 363 14.1.1 SPI命名规则 364 14.1.2 Winsock 2 API和SPI函数之间的映 射 364 14.2 传输服务提供者 364 14.2.1 WSPStartup 365 14.2.2 参数 366 14.2.3 实例计数 369 14.2.4 套接字句柄 369 14.2.5 Winsock I/O模型支持 371 14.2.6 扩展函数 380 14.2.7 传输服务提供者的安装 381 14.3 命名空间服务提供者 386 14.3.1 名字空间的安装 386 14.3.2 名字空间的实施 387 14.3.3 名字空间提供者示范 392 14.4 Winsock SPI函数的调试追踪 396 14.5 小结 396 第15章 微软Visual Basic Winsock控件 397 15.1 属性 397 15.2 方法 398 15.3 事件 399 15.4 UDP示例 400 15.4.1 UDP消息的发送 403 15.4.2 UDP消息的接收 404 15.4.3 获取Winsock信息 404 15.4.4 运行UDP示例 405 15.4.5 UDP状态 405 15.5 TCP示例 406 15.5.1 TCP服务器 412 15.5.2 TCP客户机 413 15.5.3 获取Winsock信息 414 15.5.4 运行TCP示例 414 15.5.5 TCP状态 415 15.6 存在的局限 415 15.7 常见错误 416 15.8 Windows CE的Winsock控件 417 15.8.1 Windows CE Winsock示例 417 15.8.2 已知的问题 421 15.9 小结 422 第三部分 远程访问服务 第16章 RAS客户机 423 16.1 编译和链接 424 16.2 数据结构和平台兼容问题 424 16.3 DUN 1.3升级和Windows 95 425 16.4 RASDIAL 425 16.4.1 同步模式 427 16.4.2 异步模式 428 16.4.3 状态通知 432 16.4.4 关闭连接 432 16.5 电话簿 433 16.5.1 电话簿条目的增添 440 16.5.2 电话簿条目的重命名 442 16.5.3 电话簿条目的删除 442 16.5.4 电话簿条目的列举 443 16.5.5 用户凭据的管理 443 16.5.6 多链接电话簿的子条目 445 16.6 连接管理 446 16.7 小结 450 第四部分 附录录录 附录A NetBIOS命令索引 451 附录B IP助手函数 464 附录C Winsock错误代码 481

2012-08-29

windows95系统程序设计大奥秘.pdf

第1章 透視 Windows 95 本章溫習 Win32 作業系統(Windows NT、Win32s 和 Windows 95)的歷史背景。你可 以得知每㆒個作業系統的優點與弱點,以及其他 Win32 環境如 OS/2 Warp 和 Phar Lap 公司的 TNT DOS extender。 第2章 Windows 95 有些什麼新東西 你將從這㆒章獲得廣泛的 Windows 95 架構概觀,以及為什麼 Windows 95 從Windows 3.1 演化而來,而不是㆒個全新系統的原因。本章也談到了高階主題如記憶體管理、執 行緒同步化控制、視窗系統的改善等等。 第3章 模組、行程、執行緒 檢驗 Windows 95 的模組、行程、執行緒之後,你就可以解開 KERNEL32 用來實現其 資料結構之謎。本章的 Win32 函式虛擬碼完全依賴這些資料結構。此外,你還會讀到 thread local storage 和structured exception handling 兩項主題。 第4章 USER 和 GDI 子系統 微軟把 Windows 3.1 的視窗系統、訊息系統、繪圖系統重新整修,放在Windows 95 之 ㆗。為了更瞭解它們,你必須學習 32 位元的 USER 和 GDI heaps,以及16 位元USER heap ㆗的新資料結構對於所謂 free system resource 的影響。 第5章 記憶體管理 Windows 95 的 32 位元記憶體管理是相當複雜的㆒個領域。在這重量級的㆒章裡,你 可以探索以分頁為基礎(paged-based)的虛擬記憶體、分離位址空間、共享記憶體。每 ㆒個 Win32 記憶體管理函式也以虛擬碼描述出來。 Windows 95 系統程式設計大奧秘(Windows 95 System Programming SECRETS) xii 第6章 VWINKERNEL32386 Windows 95 有㆔個非常基礎的核心元件: 16 位元的 KRNL386 、32 位元的 KERNEL32 、以及 ring0 的 VWIN32.VXD。如果你把它們放在㆒起, 就得到了 VWINKERNEL32386。檢驗㆔者之間的關係時,你會同時發現許多有用的函式 -- 雖然 其㆗有㆒些是未公開函式。 第7章  Win16 的 Module 和 Task 千萬不要忽略了 Windows 95 的 16 位元核心資料結構。雖然 Windows 95 是㆒個 32 位元作業系統,它的許多資料結構早在 Windows 3.1 之㆗就出現了,包括 task database 以及16 位元的 module database。這也顯示了 Windows 95 內部的紛亂狀態。 第8章 PE 與 COFF OBJ 檔案格式 如果要充份瞭解 Windows 95,你就必須瞭解 Portable Executable(PE) 檔案格式 -- 那 是 Windows 95 和 Windows NT 的可執行檔格式。本章還告訴你 COFF OBJ 和 COFF LIB -- 聯結器用它們來製造 PE 可執行檔。 第9章 尋幽訪勝靠自己 如果你真正想進入 Windows 95 的核心,第9章告訴你怎麼做。你會學到如何使用檔案 傾印(dumping)工具和 API 刺探(spying)工具,以及如何檢驗反組譯碼,找出諸如 區域變數、函式參數、if 句型...等等東西。本章最後以㆒些頗有用處的經驗提示收尾。 第10 章 寫一個 Win32 API Spy 以前數章知識為基礎,本章告訴你如何產生㆒個可擴充的 API 刺探工具(spying tool)。 這個spy 工具可以記錄API 函式的運轉過程,以及它們的參數。

2012-08-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除