事务处理:概念与技术(英文版)
2推荐 收藏
4.7K阅读
图灵原版计算机科学系列

事务处理:概念与技术(英文版)

Jim Gray , Andreas Reuter (作者)
终止销售
图灵奖得主巨著!
本书从系统的角度全面阐述事务处理的概念和技术,其中涉及终端上的表示管理、通信子系统、操作系统、数据库、程序设计语言的运行时系统以及应用开发环境等。本书重点放在事务处理的基本概念上,主要阐述事务概念是如何用于解决分布式系统问题的,以及利用这些概念如何能够在有限的资金和风险范围内建立高性能、高可用性的应用系统。全书重点讲述了事务处理基础、容错基础知识、面向事务的计算、并发控制、恢复、事务型文件系统、系统概览等7个主题,介绍了事务的ACID特性、并发的理论和实践、事务管理和恢复技术等方面的内容,最后还介绍了一个非常重要的资源管理器的实现。
本书主要面向计算机及相关专业的高年级本科生和研究生,适合作为事务处理导论、数据库系统、分布式系统、操作系统等课程的辅助教材,需要了解事务处理系统的开发人员也可将其作为基本参考书。
纸质书
¥138.00

其他购买方式?

出版信息

  • 书  名事务处理:概念与技术(英文版)
  • 系列书名图灵原版计算机科学系列
  • 执行编辑关于本书的内容有任何问题,请联系 傅志红
  • 出版日期2009-03-30
  • 书  号978-7-115-19586-9
  • 定  价138.00 元
  • 页  数1104
  • 开  本16开
  • 出版状态终止销售
  • 原书名Transaction Processing: Concepts and Techniques
  • 原书号978-15586-0190-1

同系列书

目录

PART ONE--The Basics of Transaction Processing 3
1 INTRODUCTION 3
1.1 Historical Perspective 9 5
1.2 What Is a TransacUon Processing System.
1.2.1 The End User's View of a Transaction Processing System 8
1.2.2 The Administrator/Operator's View of a TP System 9
1.2.3 Application Designer's View of a TP System 12
1.2.4 The Resource Manager's View of a TP System 18
1.2.5 TP System Core Services 21
1.3 A Transaction Processing System Feature List 22
1.3.1 Application Development Features 22
1.3.2 Repository Features 23
1.3.3 TP Monitor Features 26
1.3.4 Data Communications Features 29
1.3.5 Database Features 33
1.3.6 Operations Features 39
1.3.7 Education and Testing Features 40
1.3.8 Feature Summary
41
1.4 Summary 42
1.5 Historical Notes
43
Exercises 44
Answers 46
2 BASIC COMPUTER SCIENCE TERMINOLOGY 47
2.1 Introduction 47
2.1.1 Units , 47
2.2 Basic Hardware 48
2.2.1 Memories 49
2.2.2 Processors 57
2.2.3 Communications Hardware 58
2.2.4 Hardware Architectures 59
2.3 Basic Software---Address Spaces, Processes, Sessions 62
2.3.1 Address Spaces 62
2.3.2 Processes, Protection Domains, and Threads 63
2.3.3 Messages and Sessions 66
2.4 Generic System Issues 67
2.4.1 Clients and Servers 67
2.4.2 Naming 69
2.4.3 Authentication 70
2.4.4 Authorization 71
2.4.5 Scheduling and Performance 72
2.4.6 Summary 74
2.5 Files 74
2.5.1 File Operations 74
2.5.2 File Organizations 75
2.5.3 Distributed Files 77
2.5.4 SQL 78
2.6 Software Performance 78
2.7 Transaction Processing Standards 80
2.7.1 Portability versus Interoperability Standards 80
2.7.2 APIs and FAPs 80
2.7.3 LU6.2, a de facto Standard 82
2.7.4 OSI-TP with X/Open DTP, a de jure Standard 83
2.8 Summary 85
Exercises 86
Answers 88
PART TWO---The Basics of Fault Tolerance
3 FAULT TOLERANCE 93
3.1 Introduction 93
3.1.1 A Crash Course in Simple Probability 93
3.1.2 An External View of Fault Tolerance 95
3.2 Definitions 98
3.2.1 Fault, Failure, Availability, Reliability 98
3.2.2 Taxonomy of Fault Avoidance and Fault Tolerance 99
3.2.3 Repair, Failfast, Modularity, Recursive Design 100
3.3 Empirical Studies
3.3.1 Outages Are Rare Events 100
3.3.2 Studies of Conventional Systems 101
3.3.3 A Study of a Fault-Tolerant System 103
3.4 Typical Module Failure Rates 105
3.5 Hardware Approaches to Fault Tolerance 109
3.5.1 The Basic N-Plex Idea: How to Build Failfast Modules 109
3.5.2 Failfast versus Failvote Voters in an N-Plex 109
3.5.3 N-Plex plus Repair Results in High Availability 112
3.5.4 The Voter's Problem 113
3.5.5 Summary 115
3.6 Software Is the Problem 115
3.6.1 N-Version Programming and Software Fault Tolerance 116
3.6.2 Transactions and Software Fault Tolerance 117
3.6.3 Summary 119
3.7 Fault Model and Software Fault Masking 119
3.7.1 An Overview of the Model 120
3.7.2 Building Highly Available Storage 122
3.7.3 Highly Available Processes 128
3.7.4 Reliable Messages via Sessions and Process Pairs 138
3.7.5 Summary of the Process-Message-Storage Model 147
3.8 General Principles 148
3.9 A Cautionary Tale---System Delusion 149
3.10 Summary 150
3.11 Historical Notes 151
Exercises 152
Answers 155
PART THREE--Transaction-Oriented Computing
4 TRANSACTION MODELS 159
4.1 Introduction 159
4.1.1 About this Chapter 160
4.2 Atomic Actions and Flat Transactions 160
4.2.1 Disk Writes as Atomic Actions 161
4.2.2 A Classification of Action Types 163
4.2.3 Flat Transactions 165
4.2.4 Limitations of Flat Transactions 171
4.3 Spheres of Control 174
4.3.1 Definition of Spheres of Control 174
4.3.2 Dynamic Behavior of Spheres of Control 176
4.3.3 Summary 180
4.4 A Notation for Explaining Transaction Models 180
4.4.1 What Is Required to Describe Transaction Models? 181
4.4.2 Elements of the Notation 183
4.4.3 Defining Transaction Models by a Set of Simple Rules 184
4.5 Flat Transactions with Savepoints 187
4.5.1 About Savepoints 187
4.5.2 Developing the Rules for the Savepoint Model 189
4.5.3 Persistent Savepoints 190
4.6 Chained Transactions 192
4.7 Nested Transactions 195
4.7.1 Definition of the Nesting Structure 195
4.7.2 Using Nested Transactions 198
4.7.3 Emulating Nested Transactions by Savepoints 200
4.8 Distributed Transactions 202
4.9 Multi-Level Transactions 203
4.9.1 The Role of a Compensating Transaction 204
4.9.2 The Use of Multi-Level Transactions 206
4.10 Open Nested Transactions 210
4.11 Long-Lived Transactions 210
4.11.1 Transaction Processing Context 212
4.11.2 The Mini-Batch215
4.11.3 Sagas217
4,.12 Exotics 219
4.13 Summary 221
4.14 Historical Notes222
Exercises 225
5 TRANSACTION PROCESSING MONITORS---An Overview 239
5.1 Introduction 239
5.2 The Role of TP Monitors in Transaction Systems 239
5.2.1 The Transaction-oriented Computing Style 241
5.2.2 The Transaction Processing Services 249
5.2.3 TP System Process Structure 252
5.2.4 Summary 258
5.3 The Structure of a TP Monitor 259
5.3.1 The TP Monitor Components 260
5.3.2 Components of the Transaction Services 263
5.3.3 TP Monitor Support for the Resource Manager Interfaces 266
5.4 Transactional Remote Procedure Calls. The Bas c Idea 267
5.4.1 Who Participates in Remote Procedure Calls? 267
5.4.2 Address Space Structure Required for RPC Handling 268
5.4 3 The Dynamics of Remote Procedure Calls 270
5.4.4 Summary 273
5.5 Examples of the Transaction-Oriented Programming Style 274
5.5.1 The Basic Processing Loop 275
5.5.2 Attaching Resource Managers to Transactions: The Simple Cases 276
5.5.3 Attaching Resource Managers to Transactions: The Sophisticated Case 282
5.5.4 Using Persistent Savepoints 284
5.6 Terminological Wrap-Up 285
5.7 Historical Notes 286
Exercises 288
Answers 289
6 TRANSACTION PROCESSING MONITORS 293
6.1 Introduction 293
6.2 Transactional Remote Procedure Calls 295
6.2.1 The Resource Manager Interface 297
6.2.2 What the Resource Manager Has to Do in Support of Transactions 299
6.2.3 Interfaces between Resource Managers and the TP Monitor 301
6.2.4 Resource Manager Calls versus Resource Manager Sessions 304
6.2.5 Summary 312
6.3 Functional Principles of the TP Monitor 312
6.3.1 The Central Data Structures of the TPOS 313
6.3.2 Data Structures Owned by the TP Monitor 318
6.3.3 A Guided Tour Along the TRPC Path 324
6.3.4 Aborts Racing TRPCs 331
6.3.5 Summary 332
6.4 Managing Request and Response Queues 333
6.4.1 Short-Term Queues for Mapping Resource Manager Invocations 335
6.4.2 Durable Request Queues for Asynchronous Transaction Processing 336
6.4.3 Summary 347
6.5 Other Tasks of the TP Monitor 347
6.5.1 Load Balancing 347
6.5.2 Authentication and Authorization 354
6.5.3 Restart Processing 360
6.6 Summary 362
6.7 Historical Notes 364
Exercises 366
Answers 368
PART FOUR--Concurrency Control
7 ISOLATION CONCEPTS 375
7.1 Overview 375
7.2 Introduction to Isolation 375
7.3 The Dependency Model of Isolation 378
7.3.1 Static versus Dynamic Allocation 378
7.3.2 Transaction Dependencies 379
7.3.3 The Three Bad Dependencies 380
7.3.4 The Case for a Formal Model of Isolation 381
7.4 Isolation: The Application Programmer's View 382
7.5 Isolation Theorems 383
7.5.1 Actions and Transactions 383
7.5.2 Well-Formed and Two-Phased Transactions 385
7.5.3 Transaction Histories 385
7.5.4 Legal Histories and Lock Compatibility 386
7.5.5 Versions, Dependencies, and the Dependency Graph 387
7.5.6 Equivalent and Isolated Histories: BEFORE, AFTER, and Wormholes 388
7.5.7 Wormholes Are Not Isolated 389
7.5.8 Summary of Definitions 390
7.5.9 Summary of the Isolation Theorems 396
7.6 Degrees of Isolation 397
7.6.1 Degrees of Isolation Theorem 398
7.6.2 SQL and Degrees of Isolation 398
7.6.3 Pros and Cons of Low Degrees of Isolation 400
7.6.4 Exotic SQL Isolation---Read-Past and Notify Locks 402
7.7 Phantoms and Predicate Locks 403
7.7.1 The Problem with Predicate Locks 405
7.8 Granular Locks 406
7.8.1 Tree Locking and Intent Lock Modes
7.8.2 Update Mode Locks 409
7.8.3 Granular Locking Summary 410
7.8.4 Key-Range Locking 411
7.8.5 Dynamic Key-Range Locks: Previous-Key and Next-Key Locking 412
7.8.6 Key-Range Locks Need DAG Locking 414
7.8.7 The DAG Locking Protocol 415
7.8.8 Formal Definition of Granular Locks on a DAG 417
7.9 Locking Heuristics 419
7.10 Nested Transaction Locking 421
7.11 Scheduling and Deadlock 422
7.11.1 The Convoy Phenomenon 423
7.11.2 Deadlock Avoidance versus Toleration 424
7.11.3 The Wait-for Graph and a Deadlock Detector 425
7.11.4 Distributed Deadlock 426
7.11.5 Probability of Deadlock 428
7.12 Exotics 429
7.12.1 Field Calls 430
7.12.2 Escrow Locking and Other Field Call Refinements 432
7.12.3 Optimistic and Timestamp Locking 434
7.12.4 Time Domain Addressing 435
7.13 Summary 437
7.14 Historical Notes 438
Exercises 440
Answers 442
8 LOCK IMPLEMENTATION 449
8.1 Introduction 449
8.1.1 About This Chapter 449
8.1.2 The Need for Parallelism within the Lock Manager 449
8.1.3 The Resource Manager and Lock Manager Address Space 450
8.2 Atomic Machine Instructions 452
8.3 Semaphores 454
8.3.1 Exclusive Semaphores 454
8.3.2 Crabbing: Traversing Shared Data Structures 456
8.3.3 Shared Semaphores 458
8.3.4 Allocating Shared Storage 461
8.3.5 Semaphores and Exceptions 462
8.4 Lock Manager 464
8.4.1 Lock Names 464
8.4.2 Lock Queues and Scheduling 465
8.4.3 Lock Duration and Lock Counts 467
8.4.4 Lock Manager Interface and Data Structures 469
8.4.5 Lock Manager Internal Logic 471
8.4.6 Lock Escalation and Generic Unlock, Notify Locks 477
8.4.7 Transaction Savepoints, Commit, and Rollback 478
8.4.8 Locking at System Restart 479
8.4.9 Phoenix Transactions 480
8.4.10 Lock Manager Configuration and Complexity 481
8.4.11 Lock Manager Summary 481
8.5 Deadlock Detection 481
8.6 Locking for Parallel and Parallel Nested Transactions 483
8.7 Summary 484
8.8 Historical Notes 485
Exercises 485
Answers 488
PART FIVE Recovery
9 LOG MANAGER 493
9.1 Introduction 493
9.1.1 Uses of the Log 493
9.1.2 Log Manager Overview 494
9.1.3 The Log Manager's Relationship to Other Services 495
9.1.4 Why Have a Log Manager? 496
9.2 Log Tables 496
9.2.1 Mapping the Log Table onto Files 497
9.2.2 Log Sequence Numbers 499
9.3 Public Interface to the Log 500
9.3.1 Authorization to Access the Log Table 500
9.3.2 Reading the Log Table 500
9.3.3 Writing the Log Table 502
9.3.4 Summary 503
9.4 Implementation Details of Log Reads and Writes 504
9.4.1 Reading the Log 504
9.4.2 Log Anchor 505
9.4.3 Transaction Related Anchors 505
9.4.4 Log Insert 506
9.4.5 Allocate and Flush Log Daemons 507
9.4.6 Careful Writes: Serial or Ping-Pong 508
9.4.7 Group Commit, Batching, Boxcarring 509
9.4.8 WADS Writes 510
9.4.9 Multiple Logs per Transaction Manager 511
9.4.10 Summary511
9.5 Log Restart Logic511
9.5.1 Saving the Transaction Manager Anchor 512
9.5.2 Preparing for Restart: Careful Writes of the Log Anchor 512
9.5.3 Finding the Anchor and Log End at Restart 513
9.6 Archiving the Log 514
9.6.1 How Much of the Log Table Should Be Online? 514
9.6.2 Low-Water Marks for Rollback, Restart, Archive 515
9.6.3 Dynamic Logs: Copy Aside versus Copy Forward 516
9.6.4 Archiving the Log Without Impacting Concurrent Transactions 517
9.6.5 Electronic Vaulting and Change Accumulation 518
9.6.6 Dealing with Log Manager-Archive Circularity 519
9.7 Logging in a Client-Server Architecture 519
9.8 Summary 520
9.9 Historical Notes 521
Exercises 521
Answers 523
10 TRANSACTION MANAGER CONCEPTS 529
10.1 Introduction 529
10.2 Transaction Manager Interfaces 529
10.2.1 The Application Interface to Transactions 531
10.2.2 The Resource Manager Interface to Transactions 534
10.2.3 Transaction Manager Functions 536
10.3 Transactional Resource Manager Concepts 538
10.3.1 The DO-UNDO-REDO Protocol 538
10.3.2 The Log Table and Log Records 540
10.3.3 Communication Session Recovery 541
10.3.4 Value Logging 545
10.3.5 Logical Logging 546
10.3.6 Physiological Logging 548
10.3.7 Physiological Logging Rules: FIX, WAL, and Force-Log-at-commit 550
10.3.8 Compensation Log Records 558
10.3.9 Idempotence of Physiological REDO 560
10.3.10 SummarY561
10.4 Two-Phase Commit: Making Computations Atomic 562
10.4.1 Two-Phase Commit in a Centralized System 563
10.4.2 Distributed Transactions and Two-Phase Commit 567
10.5 Summary 573
10.6 Historical Notes 574
Exercises 576
Answers 578
11 TRANSACTION MANAGER STRUCTURE 585
11.1 Introduction585
11.2 Normal Processing 585
11.2.1 Transaction Identifiers 586
11.2.2 Transaction Manager Data Structures 586
11.2.3 MyTrid(), Status_Transaction(), Leave_Transaction(),R esu me_T ran sactio n () 590
11.2.4 Savepoint Log Records 591
11.2.5 Begin Work()592
11.2.6 Local CommiLWork(). 593
11.2.7 Remote Commit_Work(): Prepare() and Commit() 596
11.2.8 Save_Work() and Read_Context() 599
11.2.9 Rollback_Work() 601
11.3 Checkpoint 604
11.3.1 Sharp Checkpoints 605
11.3.2 Fuzzy Checkpoints 606
11.3.3 Transaction Manager Checkpoint 607
11.4 System Restart 609
11.4.1 Transaction States at Restart 610
11.4.2 Transaction Manager Restart Logic 610
11.4.3 Resource Manager Restart Logic, Identify() 613
11.4.4 Summary of the Restart Design 616
11.4.5 Independent Resource Managers 616
11.4.6 The Two-Checkpoint Approach: A Different Strategy 616
11.4.7 Why Restart Works 618
11.4.8 Distributed Transaction Resolution: Two-Phase Commit at Restart 620
11.4.9 Accelerating Restart 620
11.4.10 Other Restart Issues 621
11.5 Resource Manager Failure and Restart 622
11.6 Archive Recovery 622
11.7 Configuring the Transaction Manager 624
11.7.1 Transaction Manager Size and Complexity 624
11.8 Summary 624
Exercises 625
Answers 626
12 ADVANCED TRANSACTION MANAGER TOPICS 631
12.1 Introduction631
12.2 Heterogeneous Commit Coordinators 631
12.2.1 Closed versus Open Transaction Managers 632
12.2.2 Interoperating with a Closed Transaction Manager 632
12.2.3 Writing a Gateway to an Open Transaction Manager 635
12.2.4 Summary of Transaction Gateways 638
12.3 Highly Available (Non-Blocking) Commit Coordinators 638
12.3.1 Heuristic Decisions Resolve Blocked Transaction Commit 640
12.4 Transfer-of-Commit 641
12.50ptimizations of Two-Phase Commit 643
12.5.1 Read-Only Commit Optimization 644
12.5.2 Lazy Commit Optimization 645
12.5.3 Linear Commit Optimization 645
12.6 Disaster Recovery at a Remote Site 646
12.6.1 System Pair Takeover 648
12.6.2 Session Switching at Takeover 649
12.6.3 Configuration Options: 1-Safe, 2-Safe, and Very Safe 651
12.6.4 Catch-up After Failure 652
12.6.5 Summary of System Pair Designs 653
12.7 Summary 654
12.8 Historical Notes 654
Exercises 655
Answers 656
PART SIX--Transactional File System:A Sample Resource Manager
13 FILE AND BUFFER MANAGEMENT 661
13.1 Introduction 661
13.2 The File System as a Basis for Transactional Durable Storage 662
13.2.1 External Storage versus Main Memory 662
13.2.2 The External Storage Model Used in this Book 668
13.2.3 Levels of Abstraction in a Transactional File and Database Manager 671
13.3 Media and File Management 673

13.3.1 Objects and Operations of the Basic File System 67313.3.2 Managing Disk Space 677
13.3.3 Catalog Management for Low-Level File Systems 686
13.4 Buffer Management 688
13.4.1 Functional Principles of the Database Buffer 689
13.4.2 Implementation Issues of a Buffer Manager 697
13.4.3 Logging and Recovery from the Buffer's Perspective 708
13.4.4 Optimizing Buffer Manager Performance 714
13.5 Exotics 723
13.5.1 Side Files 724
13.5.2 Single-Level Storage 732
13.6 Summary 738
13.7 Historical Notes 739Exercises 741Answers 744
14 THE TUPLE-ORIENTED FILE SYSTEM 751
14.1 Introduction751
14.2 Mapping Tuples into Pages 752
14.2.1 Internal Organization of Pages 752
14.2.2 Free Space Administration in a File 757
14.2.3 Tuple Identification 760
14.3 Physical Tuple Management 768
14.3.1 Physical Representation of Attribute Values 769
14.3.2 Physical Representation of Short Tuples 772
14.3.3 Special Aspects of Representing Attribute Values in Tuples 784
14.3.4 Physical Representation of Long Tuples 786
14.3.5 Physical Representation of Complex Tuples and
Very Long Attributes 791
14.4 File Organization 794
14.4.1 Administrative Operations 795
14.4.2 An Abstract View on Different File Organizations via Scans 799
14.4.3 Entry-sequenced Files 80614.4.4 System-Sequenced Files 811
14.4.5 Relative Files81414.4.6 Key-Sequenced Files and Hash Files 817
14.4.7 Summary 818
14.5 Exotics 81914.5.1 Cluster Files81914.5.2 Partitioned Files 820
14.5.3 Using Transactions to Maintain the File System 821
14.5.4 The Tuple-Oriented File System in Current Database Systems 822
14.6 Summary 823Exercises 824Answers 825
15 ACCESS PATHS 831
15.1 Introduction831
15.2 Overview of Techniques to Implement Associative Access Paths 833
15.2.1 Summary 835
15.3 Associative Access By Hashing 835
15.3.1 Folding the Key Value into a Numerical Data Type 836
15.3.2 Criteria for a Good Hash Function 838
15.3.3 Overflow Handling in Hash Files 845
15.3.4 Local Administration of Pages in a Hash File 848
15.3.5 Summary of Associative Access Based on Hashing 848
15.4 B-Trees 851
15.4.1 B-Trees: The Basic Idea 851
15.4.2 Performance Aspects of B-Trees 861
15.4.3 Synchronization on B-Trees: The Page-Oriented View 867
15.4.4 Synchronization on B-Trees: The Tuple-Oriented View 868
15.4.5 Recovering Operations on B-Trees 872
15.5 Sample Implementation of Some Operations on B-Trees 876
15.5.1 Declarations of Data Structures Assumed in All Programs 876
15.5 2 Implementation of the roadkoy Operation on a B-Tree 878
15.5.3 Key-Range Locking in a B-Tree 880
15.5.4 Implementation of the Insert Operation for a B-Tree:
The Simple Case 882
15.5.5 Implementing B-Tree Insert: The Split Case 884
15.5.6 Summary 886
15.6 Exotics 886
15.6.1 Extendible Hashing 887
15.6.2 The Grid File 892
15.6.3 Holey Brick B-Trees 897
15.7 Summary 904
15.8 Historical Notes 905Exercises 909Answers 911
PART SEVEN System Surveys
16 SURVEY OF TP SYSTEMS 917
16.1 Introduction917
16.2 IMS 917
16.2.1 Hardware and Operating System Environment 918
16.2.2 Workflow Model 920
16.2.3 Program Isolation 923
16.2.4 Main Storage Databases and Field Calls 923
16.2.5 Data Sharing 924
16.2.6 Improved Availability and Duplexed Systems 925
16.2.7 DB2 927
16.2.8 Recent Evolution of IMS 928
16.3 CICS and LU6.2 928
16.3.1 CICS Overview928
16.3.2 CICS Services930
16.3.3 CICS Workflow931
16.3.4 CICS Distributed Transaction Processing 932
16.3.5 LU6.2 934
16.4 Guardian 90 937
16.4.1 Guardian: The Operating System and Hardware 938
16.4.2 Pathway, Terminal Context, and Server Class Management 939
16.4.3 Transaction Management 941
16.4.4 Other Interesting Features 947
16.5 DECdta 947
16.5.1 ACMS's Three-Ball Workflow Model of Transaction Processing 948
16.5.2 ACMS Services951
16.5.3 ACMS Summary 952
16.5.4 VMS Transaction Management Support 954
16.5.5 Summary of DECdta 958
16.5.6. Reliable Transaction Router (RTR) 959
16.6 X/Open DTP, OSI-TP, CCR 960
16.6.1 The Local Case 962
16.6.2 The Distributed Case: Services and Servers 964
16.6.3 Summary 964
16.7 Other Systems 965
16.7.1 Universal Transaction Manager (UTM) 965
16.7.2 ADABAS TPF966
16.7.3 Encina 968
16.7.4 Tuxedo 970
16.8 Summary 972
PART EIGHT~Addenda
17 REFERENCES 975
18 DATA STRUCTURES AND INTERFACES 993
19 GLOSSARY 1003
INDEX 1047
  • 现在哪里还能买到这本书?
    littleneko  发表于 2018-12-10 23:25:57
    推荐
    • 出版时间太久,没有库存了。可以找找二手书。

      傅志红  发表于 2018-12-11 08:46:11