网格安装(Globus toolkit 4),详细将GT4的安装步骤列出,适合刚刚接触网格开发的用户。
postgresql-10.5-1-windows-x64.exe
• Table of Contents • Index • Reviews • Reader Reviews • Errata • Academic Python Cookbook, 2nd Edition By David Ascher, Alex Martelli, Anna Ravenscroft Publisher : O'Reilly Pub Date : March 2005 ISBN : 0-596-00797-3 Pages : 844 Copyright Preface The Design of the Book The Implementation of the Book Using the Code from This Book Audience Organization Further Reading Conventions Used in This Book How to Contact Us Safari® Enabled Acknowledgments Chapter 1. Text Introduction Recipe 1.1. Processing a String One Character at a Time Recipe 1.2. Converting Between Characters and Numeric Codes Recipe 1.3. Testing Whether an Object Is String-like Recipe 1.4. Aligning Strings Recipe 1.5. Trimming Space from the Ends of a String Recipe 1.6. Combining Strings Recipe 1.7. Reversing a String by Words or Characters Recipe 1.8. Checking Whether a String Contains a Set of Characters Recipe 1.9. Simplifying Usage of Strings' translate Method Recipe 1.10. Filtering a String for a Set of Characters Recipe 1.11. Checking Whether a String Is Text or Binary Recipe 1.12. Controlling Case Recipe 1.13. Accessing Substrings Recipe 1.14. Changing the Indentation of a Multiline String Recipe 1.15. Expanding and Compressing Tabs Recipe 1.16. Interpolating Variables in a String Recipe 1.17. Interpolating Variables in a Stringin Python 2.4 Recipe 1.18. Replacing Multiple Patterns in a Single Pass Recipe 1.19. Checking a String for Any of Multiple Endings Recipe 1.20. Handling International Text with Unicode Recipe 1.21. Converting Between Unicode and Plain Strings Recipe 1.22. Printing Unicode Charactersto Standard Output Recipe 1.23. Encoding Unicode Data for XML and HTML Recipe 1.24. Making Some Strings Case-Insensitive Recipe 1.25. Converting HTML Documents to Texton a Unix Terminal Chapter 2. Files Introduction Recipe 2.1. Reading from a File Recipe 2.2. Writing to a File Recipe 2.3. Searching and Replacing Text in a File Recipe 2.4. Reading a Specific Line from a File Recipe 2.5. Counting Lines in a File Recipe 2.6. Processing Every Word in a File Recipe 2.7. Using Random-Access Input/Output Recipe 2.8. Updating a Random-Access File Recipe 2.9. Reading Data from zip Files Recipe 2.10. Handling a zip File Inside a String Recipe 2.11. Archiving a Tree of Files into a Compressed tar File Recipe 2.12. Sending Binary Data to Standard Output Under Windows Recipe 2.13. Using a C++-like iostream Syntax Recipe 2.14. Rewinding an Input File to the Beginning Recipe 2.15. Adapting a File-like Object to a True File Object Recipe 2.16. Walking Directory Trees Recipe 2.17. Swapping One File Extension for Another Throughout a Directory Tree Recipe 2.18. Finding a File Given a Search Path Recipe 2.19. Finding Files Given a Search Path and a Pattern Recipe 2.20. Finding a File on the Python Search Path Recipe 2.21. Dynamically Changing the PythonSearch Path Recipe 2.22. Computing the Relative Path from One Directory to Another Recipe 2.23. Reading an Unbuffered Character in a Cross-Platform Way Recipe 2.24. Counting Pages of PDF Documents on Mac OS X Recipe 2.25. Changing File Attributes on Windows Recipe 2.26. Extracting Text from OpenOffice.org Documents Recipe 2.27. Extracting Text from Microsoft Word Documents Recipe 2.28. File Locking Using a Cross-Platform API Recipe 2.29. Versioning Filenames Recipe 2.30. Calculating CRC-64 Cyclic Redundancy Checks Chapter 3. Time and Money Introduction Recipe 3.1. Calculating Yesterday and Tomorrow Recipe 3.2. Finding Last Friday Recipe 3.3. Calculating Time Periods in a Date Range Recipe 3.4. Summing Durations of Songs Recipe 3.5. Calculating the Number of Weekdays Between Two Dates Recipe 3.6. Looking up Holidays Automatically Recipe 3.7. Fuzzy Parsing of Dates Recipe 3.8. Checking Whether Daylight Saving Time Is Currently in Effect Recipe 3.9. Converting Time Zones Recipe 3.10. Running a Command Repeatedly Recipe 3.11. Scheduling Commands Recipe 3.12. Doing Decimal Arithmetic Recipe 3.13. Formatting Decimals as Currency Recipe 3.14. Using Python as a Simple Adding Machine Recipe 3.15. Checking a Credit Card Checksum Recipe 3.16. Watching Foreign Exchange Rates Chapter 4. Python Shortcuts Introduction Recipe 4.1. Copying an Object Recipe 4.2. Constructing Lists with List Comprehensions Recipe 4.3. Returning an Element of a List If It Exists Recipe 4.4. Looping over Items and Their Indices in a Sequence Recipe 4.5. Creating Lists of Lists Without Sharing References Recipe 4.6. Flattening a Nested Sequence Recipe 4.7. Removing or Reordering Columnsin a List of Rows Recipe 4.8. Transposing Two-Dimensional Arrays Recipe 4.9. Getting a Value from a Dictionary Recipe 4.10. Adding an Entry to a Dictionary Recipe 4.11. Building a Dictionary Without Excessive Quoting Recipe 4.12. Building a Dict from a List of Alternating Keys and Values Recipe 4.13. Extracting a Subset of a Dictionary Recipe 4.14. Inverting a Dictionary Recipe 4.15. Associating Multiple Values with Each Key in a Dictionary Recipe 4.16. Using a Dictionary to Dispatch Methods or Functions Recipe 4.17. Finding Unions and Intersections of Dictionaries Recipe 4.18. Collecting a Bunch of Named Items Recipe 4.19. Assigning and Testing with One Statement Recipe 4.20. Using printf in Python Recipe 4.21. Randomly Picking Items with Given Probabilities Recipe 4.22. Handling Exceptions Within an Expression Recipe 4.23. Ensuring a Name Is Defined in a Given Module Chapter 5. Searching and Sorting Introduction Recipe 5.1. Sorting a Dictionary Recipe 5.2. Sorting a List of Strings Case-Insensitively Recipe 5.3. Sorting a List of Objects by an Attribute of the Objects Recipe 5.4. Sorting Keys or Indices Basedon the Corresponding Values Recipe 5.5. Sorting Strings with Embedded Numbers Recipe 5.6. Processing All of a List's Items in Random Order Recipe 5.7. Keeping a Sequence Ordered as Items Are Added Recipe 5.8. Getting the First Few Smallest Items of a Sequence Recipe 5.9. Looking for Items in a Sorted Sequence Recipe 5.10. Selecting the nth Smallest Element of a Sequence Recipe 5.11. Showing off quicksort in Three Lines Recipe 5.12. Performing Frequent Membership Tests on a Sequence Recipe 5.13. Finding Subsequences Recipe 5.14. Enriching the Dictionary Type with Ratings Functionality Recipe 5.15. Sorting Names and Separating Them by Initials Chapter 6. Object-Oriented Programming Introduction Recipe 6.1. Converting Among Temperature Scales Recipe 6.2. Defining Constants Recipe 6.3. Restricting Attribute Setting Recipe 6.4. Chaining Dictionary Lookups Recipe 6.5. Delegating Automatically as an Alternative to Inheritance Recipe 6.6. Delegating Special Methods in Proxies Recipe 6.7. Implementing Tuples with Named Items Recipe 6.8. Avoiding Boilerplate Accessors for Properties Recipe 6.9. Making a Fast Copy of an Object Recipe 6.10. Keeping References to Bound Methods Without Inhibiting Garbage Collection Recipe 6.11. Implementing a Ring Buffer Recipe 6.12. Checking an Instance for Any State Changes Recipe 6.13. Checking Whether an Object Has Necessary Attributes Recipe 6.14. Implementing the State Design Pattern Recipe 6.15. Implementing the "Singleton" Design Pattern Recipe 6.16. Avoiding the "Singleton" Design Pattern with the Borg Idiom Recipe 6.17. Implementing the Null Object Design Pattern Recipe 6.18. Automatically Initializing Instance Variables from _ _init_ _ Arguments Recipe 6.19. Calling a Superclass _ _init_ _ Method If It Exists Recipe 6.20. Using Cooperative Supercalls Concisely and Safely Chapter 7. Persistence and Databases Introduction Recipe 7.1. Serializing Data Using the marshal Module Recipe 7.2. Serializing Data Using the pickle and cPickle Modules Recipe 7.3. Using Compression with Pickling Recipe 7.4. Using the cPickle Module on Classes and Instances Recipe 7.5. Holding Bound Methods in a Picklable Way Recipe 7.6. Pickling Code Objects Recipe 7.7. Mutating Objects with shelve Recipe 7.8. Using the Berkeley DB Database Recipe 7.9. Accesssing a MySQL Database Recipe 7.10. Storing a BLOB in a MySQL Database Recipe 7.11. Storing a BLOB in a PostgreSQL Database Recipe 7.12. Storing a BLOB in a SQLite Database Recipe 7.13. Generating a Dictionary Mapping Field Names to Column Numbers Recipe 7.14. Using dtuple for Flexible Accessto Query Results Recipe 7.15. Pretty-Printing the Contents of Database Cursors Recipe 7.16. Using a Single Parameter-Passing Style Across Various DB API Modules Recipe 7.17. Using Microsoft Jet via ADO Recipe 7.18. Accessing a JDBC Database from a Jython Servlet Recipe 7.19. Using ODBC to Get Excel Data with Jython Chapter 8. Debugging and Testing Introduction Recipe 8.1. Disabling Execution of Some Conditionals and Loops Recipe 8.2. Measuring Memory Usage on Linux Recipe 8.3. Debugging the Garbage-Collection Process Recipe 8.4. Trapping and Recording Exceptions Recipe 8.5. Tracing Expressions and Comments in Debug Mode Recipe 8.6. Getting More Information from Tracebacks Recipe 8.7. Starting the Debugger Automatically After an Uncaught Exception Recipe 8.8. Running Unit Tests Most Simply Recipe 8.9. Running Unit Tests Automatically Recipe 8.10. Using doctest with unittest in Python 2.4 Recipe 8.11. Checking Values Against Intervals in Unit Testing Chapter 9. Processes, Threads, and Synchronization Introduction Recipe 9.1. Synchronizing All Methods in an Object Recipe 9.2. Terminating a Thread Recipe 9.3. Using a Queue.Queue as a Priority Queue Recipe 9.4. Working with a Thread Pool Recipe 9.5. Executing a Function in Parallel on Multiple Argument Sets Recipe 9.6. Coordinating Threads by Simple Message Passing Recipe 9.7. Storing Per-Thread Information Recipe 9.8. Multitasking Cooperatively Without Threads Recipe 9.9. Determining Whether Another Instanceof a Script Is Already Running in Windows Recipe 9.10. Processing Windows Messages Using MsgWaitForMultipleObjects Recipe 9.11. Driving an External Process with popen Recipe 9.12. Capturing the Output and Error Streams from a Unix Shell Command Recipe 9.13. Forking a Daemon Process on Unix Chapter 10. System Administration Introduction Recipe 10.1. Generating Random Passwords Recipe 10.2. Generating Easily Remembered Somewhat-Random Passwords Recipe 10.3. Authenticating Users by Means of a POP Server Recipe 10.4. Calculating Apache Hits per IP Address Recipe 10.5. Calculating the Rate of Client Cache Hits on Apache Recipe 10.6. Spawning an Editor from a Script Recipe 10.7. Backing Up Files Recipe 10.8. Selectively Copying a Mailbox File Recipe 10.9. Building a Whitelist of Email Addresses From a Mailbox Recipe 10.10. Blocking Duplicate Mails Recipe 10.11. Checking Your Windows Sound System Recipe 10.12. Registering or Unregistering a DLL on Windows Recipe 10.13. Checking and Modifying the Set of Tasks Windows Automatically Runs at Login Recipe 10.14. Creating a Share on Windows Recipe 10.15. Connecting to an Already Running Instance of Internet Explorer Recipe 10.16. Reading Microsoft Outlook Contacts Recipe 10.17. Gathering Detailed System Informationon Mac OS X Chapter 11. User Interfaces Introduction Recipe 11.1. Showing a Progress Indicator on a Text Console Recipe 11.2. Avoiding lambda in Writing Callback Functions Recipe 11.3. Using Default Values and Bounds with tkSimpleDialog Functions Recipe 11.4. Adding Drag and Drop Reordering to a Tkinter Listbox Recipe 11.5. Entering Accented Characters in Tkinter Widgets Recipe 11.6. Embedding Inline GIFs Using Tkinter Recipe 11.7. Converting Among Image Formats Recipe 11.8. Implementing a Stopwatch in Tkinter Recipe 11.9. Combining GUIs and Asynchronous I/Owith Threads Recipe 11.10. Using IDLE's Tree Widget in Tkinter Recipe 11.11. Supporting Multiple Values per Row in a Tkinter Listbox Recipe 11.12. Copying Geometry Methods and Options Between Tkinter Widgets Recipe 11.13. Implementing a Tabbed Notebook for Tkinter Recipe 11.14. Using a wxPython Notebook with Panels Recipe 11.15. Implementing an ImageJ Plug-in in Jython Recipe 11.16. Viewing an Image from a URL with Swing and Jython Recipe 11.17. Getting User Input on Mac OS Recipe 11.18. Building a Python Cocoa GUI Programmatically Recipe 11.19. Implementing Fade-in Windows with IronPython Chapter 12. Processing XML Introduction Recipe 12.1. Checking XML Well-Formedness Recipe 12.2. Counting Tags in a Document Recipe 12.3. Extracting Text from an XML Document Recipe 12.4. Autodetecting XML Encoding Recipe 12.5. Converting an XML Document into a Tree of Python Objects Recipe 12.6. Removing Whitespace-only Text Nodes from an XML DOM Node's Subtree Recipe 12.7. Parsing Microsoft Excel's XML Recipe 12.8. Validating XML Documents Recipe 12.9. Filtering Elements and Attributes Belonging to a Given Namespace Recipe 12.10. Merging Continuous Text Events with a SAX Filter Recipe 12.11. Using MSHTML to Parse XML or HTML Chapter 13. Network Programming Introduction Recipe 13.1. Passing Messages with Socket Datagrams Recipe 13.2. Grabbing a Document from the Web Recipe 13.3. Filtering a List of FTP Sites Recipe 13.4. Getting Time from a Server via the SNTP Protocol Recipe 13.5. Sending HTML Mail Recipe 13.6. Bundling Files in a MIME Message Recipe 13.7. Unpacking a Multipart MIME Message Recipe 13.8. Removing Attachments from an Email Message Recipe 13.9. Fixing Messages Parsed by Python 2.4 email.FeedParser Recipe 13.10. Inspecting a POP3 Mailbox Interactively Recipe 13.11. Detecting Inactive Computers Recipe 13.12. Monitoring a Network with HTTP Recipe 13.13. Forwarding and Redirecting Network Ports Recipe 13.14. Tunneling SSL Through a Proxy Recipe 13.15. Implementing the Dynamic IP Protocol Recipe 13.16. Connecting to IRC and Logging Messages to Disk Recipe 13.17. Accessing LDAP Servers Chapter 14. Web Programming Introduction Recipe 14.1. Testing Whether CGI Is Working Recipe 14.2. Handling URLs Within a CGI Script Recipe 14.3. Uploading Files with CGI Recipe 14.4. Checking for a Web Page's Existence Recipe 14.5. Checking Content Type via HTTP Recipe 14.6. Resuming the HTTP Download of a File Recipe 14.7. Handling Cookies While Fetching Web Pages Recipe 14.8. Authenticating with a Proxy for HTTPS Navigation Recipe 14.9. Running a Servlet with Jython Recipe 14.10. Finding an Internet Explorer Cookie Recipe 14.11. Generating OPML Files Recipe 14.12. Aggregating RSS Feeds Recipe 14.13. Turning Data into Web Pages Through Templates Recipe 14.14. Rendering Arbitrary Objects with Nevow Chapter 15. Distributed Programming Introduction Recipe 15.1. Making an XML-RPC Method Call Recipe 15.2. Serving XML-RPC Requests Recipe 15.3. Using XML-RPC with Medusa Recipe 15.4. Enabling an XML-RPC Server to Be Terminated Remotely Recipe 15.5. Implementing SimpleXMLRPCServer Niceties Recipe 15.6. Giving an XML-RPC Server a wxPython GUI Recipe 15.7. Using Twisted Perspective Broker Recipe 15.8. Implementing a CORBA Server and Client Recipe 15.9. Performing Remote Logins Using telnetlib Recipe 15.10. Performing Remote Logins with SSH Recipe 15.11. Authenticating an SSL Client over HTTPS Chapter 16. Programs About Programs Introduction Recipe 16.1. Verifying Whether a String Represents a Valid Number Recipe 16.2. Importing a Dynamically Generated Module Recipe 16.3. Importing from a Module Whose Name Is Determined at Runtime Recipe 16.4. Associating Parameters with a Function (Currying) Recipe 16.5. Composing Functions Recipe 16.6. Colorizing Python Source Using the Built-in Tokenizer Recipe 16.7. Merging and Splitting Tokens Recipe 16.8. Checking Whether a String Has Balanced Parentheses Recipe 16.9. Simulating Enumerations in Python Recipe 16.10. Referring to a List Comprehension While Building It Recipe 16.11. Automating the py2exe Compilation of Scripts into Windows Executables Recipe 16.12. Binding Main Script and Modules into One Executable on Unix Chapter 17. Extending and Embedding Introduction Recipe 17.1. Implementing a Simple Extension Type Recipe 17.2. Implementing a Simple Extension Type with Pyrex Recipe 17.3. Exposing a C++ Library to Python Recipe 17.4. Calling Functions from a Windows DLL Recipe 17.5. Using SWIG-Generated Modules in a Multithreaded Environment Recipe 17.6. Translating a Python Sequence into a C Array with the PySequence_Fast Protocol Recipe 17.7. Accessing a Python Sequence Item-by-Item with the Iterator Protocol Recipe 17.8. Returning None from a Python-Callable C Function Recipe 17.9. Debugging Dynamically Loaded C Extensions with gdb Recipe 17.10. Debugging Memory Problems Chapter 18. Algorithms Introduction Recipe 18.1. Removing Duplicates from a Sequence Recipe 18.2. Removing Duplicates from a Sequence While Maintaining Sequence Order Recipe 18.3. Generating Random Samples with Replacement Recipe 18.4. Generating Random Samples Without Replacement Recipe 18.5. Memoizing (Caching) the Return Values of Functions Recipe 18.6. Implementing a FIFO Container Recipe 18.7. Caching Objects with a FIFO Pruning Strategy Recipe 18.8. Implementing a Bag (Multiset) Collection Type Recipe 18.9. Simulating the Ternary Operator in Python Recipe 18.10. Computing Prime Numbers Recipe 18.11. Formatting Integers as Binary Strings Recipe 18.12. Formatting Integers as Strings in Arbitrary Bases Recipe 18.13. Converting Numbers to Rationals via Farey Fractions Recipe 18.14. Doing Arithmetic with Error Propagation Recipe 18.15. Summing Numbers with Maximal Accuracy Recipe 18.16. Simulating Floating Point Recipe 18.17. Computing the Convex Hulls and Diameters of 2D Point Sets Chapter 19. Iterators and Generators Introduction Recipe 19.1. Writing a range-like Function with Float Increments Recipe 19.2. Building a List from Any Iterable Recipe 19.3. Generating the Fibonacci Sequence Recipe 19.4. Unpacking a Few Items in a Multiple Assignment Recipe 19.5. Automatically Unpacking the Needed Number of Items Recipe 19.6. Dividing an Iterable into n Slices of Stride n Recipe 19.7. Looping on a Sequence by Overlapping Windows Recipe 19.8. Looping Through Multiple Iterables in Parallel Recipe 19.9. Looping Through the Cross-Product of Multiple Iterables Recipe 19.10. Reading a Text File by Paragraphs Recipe 19.11. Reading Lines with Continuation Characters Recipe 19.12. Iterating on a Stream of Data Blocks as a Stream of Lines Recipe 19.13. Fetching Large Record Sets from a Database with a Generator Recipe 19.14. Merging Sorted Sequences Recipe 19.15. Generating Permutations, Combinations, and Selections Recipe 19.16. Generating the Partitions of an Integer Recipe 19.17. Duplicating an Iterator Recipe 19.18. Looking Ahead into an Iterator Recipe 19.19. Simplifying Queue-Consumer Threads Recipe 19.20. Running an Iterator in Another Thread Recipe 19.21. Computing a Summary Report with itertools.groupby Chapter 20. Descriptors, Decorators,and Metaclasses Introduction Recipe 20.1. Getting Fresh Default Values at Each Function Call Recipe 20.2. Coding Properties as Nested Functions Recipe 20.3. Aliasing Attribute Values Recipe 20.4. Caching Attribute Values Recipe 20.5. Using One Method as Accessorfor Multiple Attributes Recipe 20.6. Adding Functionality to a Class by Wrapping a Method Recipe 20.7. Adding Functionality to a Class by Enriching All Methods Recipe 20.8. Adding a Method to a Class Instance at Runtime Recipe 20.9. Checking Whether Interfaces Are Implemented Recipe 20.10. Using _ _new_ _ and _ _init_ _ Appropriately in Custom Metaclasses Recipe 20.11. Allowing Chaining of Mutating List Methods Recipe 20.12. Using Cooperative Super calls with Terser Syntax Recipe 20.13. Initializing Instance Attributes Without Using _ _init_ _ Recipe 20.14. Automatic Initialization of Instance Attributes Recipe 20.15. Upgrading Class Instances Automatically on reload Recipe 20.16. Binding Constants at Compile Time Recipe 20.17. Solving Metaclass Conflicts Colophon Index
PostgreSQL数据库是比较流行的一种数据库,本文件是通过解压,然后执行cmd命令进行安装使用的。
EnterpriseDB是PostgreSQL的一个分支,在PostgreSQL基础上,针对企业级应用进行了专门的优化,同时,增加了一系列如动态 性能调优(DynaTune)、EDB Loader、高效批量SQL处理等高级特性;在众多功能亮点中,EnterpriseDB的兼容性技术尤为惹眼,可实现Oracle等主流DBMS数据平滑迁移,并显著降低企业运营费用。 本程序系EnterpriseDB核心数据库安装包,不包含企业管理器、数据安全、迁移等扩展工具,安装完毕后即可独立运行。推荐在本网站搜索并下载下列扩展工具: edb postgres studio --EnterpriseDB和PostgreSQL的数据库企业管理器,推荐使用 edb connectors --为EnterpriseDB提供odbc及c#等开发环境的数据库访问接口 edb migration studio --从其他主流DBMS将数据平滑迁移至EnterpriseDB的强大工具 edb edbplus --EnterpriseDB完全兼容Oracle sqlplus的脚本界面,需先安装jre
MySQL中文参考手册.chm449kb0 译者序 1 MySQL的一般的信息1.1 什么是MySQL? 1.2 关于本手册1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5 MySQL稳定性? 1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 2.4 在邮件列表上回答问题的指南 3 MySQL的许可证和技术支持3.1 MySQL的许可证政策 3.2 MySQL 使用的版权3.2.1 可能的未来版权改变 3.3 MySQL商业性分发 3.4 许可证实例3.4.1 销售使用 MySQL的产品 3.4.2 销售MySQL相关的服务 3.4.3 ISP MySQL服务 3.4.4 运营一个使用MySQL的Web服务器 3.5 MySQL的许可证和技术支持费用3.5.1 付款信息 3.5.2 联系信息 3.6 商业性支持的类型3.6.1 基本的电子邮件支持 3.6.2 扩展的电子邮件支持 3.6.3 登录支持 3.6.4 扩展的登录支持 4 安装 MySQL 4.1 怎样获得MySQL 4.2 MySQL支持的操作系统 4.3 使用MySQL哪个版本 4.4 怎样和何时发布更新版本 4.5 安装布局 4.6 安装MySQL二进制代码分发4.6.1 Linux RPM注意事项 4.6.2 构造客户程序 4.6.3 系统特定的问题4.6.3.1 Linux 注意事项 4.6.3.2 HP-UX 注意事项 4.7 安装 MySQL源代码分发4.7.1 快速安装概述 4.7.2 运用补丁 4.7.3 典型的configure选项 4.8 编译问题? 4.9 MIT-pthreads 注意事项 4.10 Perl 安装说明4.10.1 在Unix操作系统上安装 Perl 4.10.2 在 Win32上安装 ActiveState Perl 4.10.3 在 Win32 上安装 MySQL Perl 分发 4.10.4 使用 Perl DBI/DBD接口遇到的问题 4.11 系统特定的问题4.11.1 Solaris注意事项 4.11.2 Solaris 2.7 注意事项 4.11.3 Solaris x86 注意事项 4.11.4 SunOS 4 注意事项 4.11.5 Linux (所有的Linux版本)注意事项4.11.5.1 Linux-x86 注意事项 4.11.5.2 RedHat 5.0 注意事项 4.11.5.3 RedHat 5.1 注意事项 4.11.5.4 Linux-SPARC 注意事项 4.11.5.5 Linux-Alpha 注意事项 4.11.5.6 MkLinux 注意事项 4.11.5.7 Qube2 Linux 注意事项 4.11.6 Alpha-DEC-Unix 注意事项 4.11.7 Alpha-DEC-OSF1 注意事项 4.11.8 SGI-Irix 注意事项 4.11.9 FreeBSD 注意事项 4.11.10 NetBSD 注意事项 4.11.11 BSD/OS 注意事项4.11.11.1 BSD/OS 2.x 注意事项 4.11.11.2 BSD/OS 3.x 注意事项 4.11.11.3 BSD/OS 4.x 注意事项 4.11.12 SCO 注意事项 4.11.13 SCO Unixware 7.0 注意事项 4.11.14 IBM-AIX 注意事项 4.11.15 HP-UX 注意事项 4.12 Win32 注意事项4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win32与Unix MySQL 比较 4.13 OS/2 注意事项 4.14 TcX 二进制代码 4.15 安装后期(post-installation)的设置与测试4.15.1 运行mysql_install_db 的问题 4.15.2 启动 MySQL 服务器的问题 4.15.3 自动启动和停止 MySQL 4.15.4 选项文件 4.16 升级和降级(downgrading)时有什么特别要做的事情吗?4.16.1 从一个 3.22 版本升级到 3.23 4.16.2 从一个 3.21 版本升级到 3.22 4.16.3 从一个 3.20 版本升级到 3.21 4.16.4 升级到其他的体系结构 5 MySQL 与标准的兼容性?5.1 MySQL对ANSI SQL92 的扩充 5.2 以ANSI模式运行 MySQL 5.3 MySQL相比ANSI SQL92的差别 5.4 MySQL 缺乏的功能5.4.1 子选择(Sub-selects) 5.4.2 SELECT INTO TABLE 5.4.3 事务(Transactions) 5.4.4 存储过程和触发器 5.4.5 外键(Foreign Keys)5.4.5.1 不使用外键的理由 5.4.6 视图(Views) 5.4.7 '--'作为一个 注解的开始 5.5 MySQL 遵循什么标准? 5.6 怎样处理没有提交/回卷(COMMIT / ROLLBACK) 6 MySQL 存取权限系统6.1 权限系统做什么 6.2 MySQL用户名和口令 6.3 与MySQL服务器连接 6.4 使你的口令安全 6.5 MySQL 提供的权限 6.6 权限系统工作原理 6.7 存取控制,阶段1:连接证实 6.8 存取控制,阶段2:请求证实 6.9 权限更改何时生效 6.10 建立初始的 MySQL权限 6.11 向MySQL增加新用户权限 6.12 怎样设置口令 6.13 存取拒绝(Access Denied)错误的原因 6.14 怎样使MySQL安全以对抗解密高手(cracker) 7 MySQL 语言参考7.1 文字:怎样写字符串和数字7.1.1 字符串 7.1.2 数字 7.1.3 十六进制值 7.1.4 NULL值 7.1.5 数据库,表,索引,列和别名的命名7.1.5.1 名字的大小写敏感性 7.2 用户变量 7.3 列类型7.3.1 列类型的存储要求 7.3.5 数字类型 7.3.6 日期和时间类型7.3.6.1 问题和日期类型 7.3.6.2 DATETIME,DATE和TIMESTAMP类型 7.3.6.3 TIME类型 7.3.6.4 YEAR类型 7.3.7 字符串类型7.3.7.1 CHAR和VARCHAR类型 7.3.7.2 BLOB和TEXT类型 7.3.7.3 ENUM类型 7.3.7.4 SET类型 7.3.8 为列选择正确的类型 7.3.9 列索引 7.3.10 多列索引 7.3.11 使用来自其他数据库引擎的列类型 7.4 用在SELECT和WHERE子句的函数7.4.1 分组函数 7.4.2 常用的算术运算 7.4.3 位函数 7.4.4 逻辑运算 7.4.5 比较运算符 7.4.6 字符串比较函数 7.4.7 类型转换运算符 7.4.8 控制流函数 7.4.9 数学函数 7.4.10 字符串函数 7.4.11 日期和时间函数 7.4.12 其他函数 7.4.13 与GROUP BY子句一起使用的函数 7.5 CREATE DATABASE (创建数据库)句法 7.6 DROP DATABASE (抛弃数据库)句法 7.7 CREATE TABLE (创建表)句法7.7.1 隐含(silent)的列指定变化 7.8 ALTER TABLE (改变表)句法 7.9 OPTIMIZE TABLE (优化表) 句法 7.10 DROP TABLE (抛弃表)句法 7.11 DELETE (删除)句法 7.12 SELECT (精选)句法 7.13 JOIN (联接)句法 7.14 INSERT (插入)句法 7.15 REPLACE (替换)句法 7.16 LOAD DATA INFILE (装载数据到文件)句法 7.17 UPDATE (更新)句法 7.18 USE (使用)句法 7.19 FLUSH (清除缓存)句法 7.20 KILL (杀灭)句法 7.21 SHOW (显示)句法(得到关于表,列等的信息) 7.22 EXPLAIN (解释)句法(得到关于SELECT的信息) 7.23 DESCRIBE (描述)句法(得到列的信息) 7.24 LOCK TABLES/UNLOCK TABLES (锁定表/解锁表)句法 7.25 SET OPTION (设置选项)句法 7.26 GRANT (授权)和REVOKE (撤回)句法 7.27 CREATE INDEX (创建索引)句法 7.28 DROP INDEX (抛弃索引)句法 7.29 注释句法 7.30 CREATE FUNCTION/DROP FUNCTION (创建函数/抛弃函数)句法 7.31 MySQL对保留字很挑剔吗? 8 MySQL 教程8.1 联接和断开服务器 8.2 输入查询 8.3 常用查询的例子8.3.1 列的最大值 8.3.2 拥有某个列的最大值的行 8.3.3 列的最大值:按组:只有值 8.3.4 拥有某个字段的组间最大值的行 8.3.5 使用外键 8.4 创建并使用一个数据库8.4.1 创建并选用一个数据库 8.4.2 创建一个数据库表 8.4.3 将数据装入数据库表 8.4.4 从一个数据库表检索信息8.4.4.1 选择所有数据 8.4.4.2 选择特定行 8.4.4.3 选择特定列 8.4.4.4 排序行 8.4.4.5 日期计算 8.4.4.6 NULL值操作 8.4.4.7 模式匹配 8.4.4.8 行计数 8.4.5 使用多个数据库表 8.5 获得数据库和表的信息 8.6 以批处理模式使用mysql 8.7 从"双胞项目"中查询8.7.1 找出所有非独处的双胞胎 8.7.2 显示关于双胞胎近况的表 9 MySQL 服务器功能9.1 MySQL 支持哪些语言?9.1.1 用于数据和排序的字符集 9.1.2 增加一个新的字符集 9.1.3 多字节字符支持 9.2 更新日志 9.3 MySQL数据库表可以有多大? 9.4 MySQL数据库表类型 10 从 MySQL 得到最大的性能10.1 优化概述 10.2 系统/编译时和启动参数的调节10.2.1 编译和链接如何影响 MySQL 的速度 10.2.2 磁盘问题10.2.2.1 为数据库和表格使用符号链接 10.2.3 调节服务器参数 10.2.4 MySQL 怎样打开和关闭数据库表 10.2.5 在同一个数据库中创建大量数据库表的缺点 10.2.6 为什么有这么多打开的表? 10.2.7 MySQL 怎样使用内存 10.2.8 MySQL 怎样锁定数据库表 10.2.9 数据库表级锁定的问题 10.3 使你的数据尽可能小 10.4 MySQL 索引的使用 10.5 存取或更新数据的查询速度10.5.1 估计查询性能 10.5.2 SELECT 查询的速度 10.5.3 MySQL 怎样优化WHERE子句 10.5.4 MySQL 怎样优化LEFT JOIN 10.5.5 MySQL 怎样优化LIMIT 10.5.6 INSERT查询的速度 10.5.7 UPDATE查询的速度 10.5.8 DELETE查询的速度 10.6 选择一种表类型10.6.1 静态(定长)表的特点 10.6.2 动态表的特点 10.6.3 压缩表的特点 10.6.4 内存(In-memory table)表的特点 10.7 其他优化技巧 10.8 使用你自己的基准测试 10.9 设计选择 10.10 MySQL 设计局限/折衷 10.11 可移植性 10.12 我们已将MySQL用在何处? 11 MySQL 基准套件 12 MySQL 实用程序12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 MySQL 压缩只读表生成器 13 维护 MySQL 安装13.1 使用myisamchk进行表维护和崩溃恢复13.1.1 myisamchk的调用语法 13.1.2 myisamchk的内存使用 13.2 13.2 建立一个数据库表维护规范 13.3 获得关于一个表的信息 13.4 使用myisamchk进行崩溃恢复13.4.1 怎样检查表的出错 13.4.2 怎样修复表 13.4.3 表优化 13.5 日志文件维护 14 为MySQL增加新函数14.1 增加一个新的用户定义函数14.1.1 UDF调用顺序 14.1.2 参数处理 14.1.3 返回值和出错处理 14.1.4 编译并安装用户定义函数 14.2 增加一个新的原生(native)函数 15 为MySQL增加新过程15.1 analyse过程 15.2 编写一个过程 16 MySQL对 ODBC 支持16.1 MyODBC 支持的操作系统 16.2 怎样报告 MyODBC的问题 16.3 已知可用 MyODBC一起工作的程序 16.4 怎样填写 ODBC 管理程序的各种域 16.5 怎样在ODBC中获得一个AUTO_INCREMENT列的值 16.6 报告 MyODBC 的问题 17 与一些常用程序一起使用MySQL17.1 与 Apache一起使用 MySQL 18 问题和常见的错误18.1 如果 MySQL总是崩溃怎么办 18.2 使用 MySQL 时一些常见错误18.2.1 MySQL server has gone away错误 18.2.2 Can't connect to [local] MySQL server错误 18.2.3 Host '...' is blocked错误 18.2.4 Out of memory错误 18.2.5 Packet too large错误 18.2.6 The table is full错误 18.2.7 Commands out of sync in client错误 18.2.8 Ignoring user错误 18.2.9 Table 'xxx' doesn't exist错误 18.3 MySQL 怎样处理一个溢出的磁盘 18.4 怎样从一个文本文件运行SQL命令 18.5 MySQL 在哪儿存储临时文件 18.6 怎样保护"/tmp/mysql.sock"不被删除 18.7 Access denied 出错 18.8 怎样作为一个一般用户运行 MySQL 18.9 怎样重新设置一个忘记的口令 18.10 文件许可权限问题 18.11 文件没找到 18.12 使用DATE列的问题 18.13 时区问题 18.14 在搜索中的大小写敏感性 18.15 NULL值问题 18.16 alias问题 18.17 从相关的表中删除行 18.18 解决没有匹配行的问题 18.19 ALTER TABLE问题 18.20 怎样改变一个表中列的次序 19 解决MySQL 一些常见的问题19.1 数据库复制 19.2 数据库备份 19.3 在同一台机器上运行多个 MySQL 服务器 20 MySQL 客户工具和 API20.1 MySQL C API 20.2 C API数据类型 20.3 C API函数概述 20.4 C API函数描述20.4.1 mysql_affected_rows () 20.4.2 mysql_close () 20.4.3 mysql_connect () 20.4.4 mysql_change_user () 20.4.5 mysql_create_db () 20.4.6 mysql_data_seek () 20.4.7 mysql_debug () 20.4.8 mysql_drop_db () 20.4.9 mysql_dump_debug_info () 20.4.10 mysql_eof () 20.4.11 mysql_errno () 20.4.12 mysql_error () 20.4.13 mysql_escape_string () 20.4.14 mysql_fetch_field () 20.4.15 mysql_fetch_fields () 20.4.16 mysql_fetch_field_direct () 20.4.17 mysql_fetch_lengths () 20.4.18 mysql_fetch_row () 20.4.19 mysql_field_count () 20.4.20 mysql_field_seek () 20.4.21 mysql_field_tell () 20.4.22 mysql_free_result () 20.4.23 mysql_get_client_info () 20.4.24 mysql_get_host_info () 20.4.25 mysql_get_proto_info () 20.4.26 mysql_get_server_info () 20.4.27 mysql_info () 20.4.28 mysql_init () 20.4.29 mysql_insert_id () 20.4.30 mysql_kill () 20.4.31 mysql_list_dbs () 20.4.32 mysql_list_fields () 20.4.33 mysql_list_processes () 20.4.34 mysql_list_tables () 20.4.35 mysql_num_fields () 20.4.36 mysql_num_rows () 20.4.37 mysql_options () 20.4.38 mysql_ping () 20.4.39 mysql_query () 20.4.40 mysql_real_connect () 20.4.41 mysql_real_query () 20.4.42 mysql_reload () 20.4.43 mysql_row_seek () 20.4.44 mysql_row_tell () 20.4.45 mysql_select_db () 20.4.46 mysql_shutdown () 20.4.47 mysql_stat () 20.4.48 mysql_store_result () 20.4.49 mysql_thread_id () 20.4.50 mysql_use_result () 20.4.51 为什么在mysql_query()返回成功后mysql_store_result()有时返回NULL? 20.4.52 我能从查询得到什么结果? 20.4.53 我怎样才能获得最后插入的行的唯一ID? 20.4.54 链接 C API的问题 20.4.55 怎样制作一个线程安全(thread-safe)的客户 20.5 MySQL Perl API20.5.1 DBI与DBD::mysql 20.5.2 DBI接口 20.5.3 更多的DBI/DBD信息 20.6 MySQL Eiffel 包装 20.7 MySQL Java 连接(JDBC) 20.8 MySQL PHP API 20.9 MySQL C++ API 20.10 MySQL Python API 20.11 MySQL TCL API 21 怎样对比MySQL与其他数据库21.1 怎样对比MySQL和mSQL 21.1.1 怎样将mSQL工具转换到MySQL 21.1.2 mSQL和MySQL的 客户机/服务器通讯协议有何不同 21.1.3 mSQL 2.0 SQL句法与MySQL有何不同 21.2 怎样对比MySQL与PostgreSQL A 一些 MySQL 用户 B 贡献的程序 C MySQL贡献者 D MySQL 变迁的历史记录 E MySQL中已知的错误和设计缺限 F 我们想要在未来加入到MySQL 的计划表( TODO ) G 对移植到其他系统的说明 H MySQL 正则表达式句法的描述 I 什么是 Unireg? J 针对非微软操作系统的 MySQL 服务器许可证 K 针对微软操作系统的 MySQL 许可证 SQL命令,类型和函数索引 概念索引
第1章 文本 1 引言 1 1.1 每次处理一个字符 6 1.2 字符和字符值之间的转换 7 1.3 测试一个对象是否是类字符串 8 1.4 字符串对齐 10 1.5 去除字符串两端的空格 11 1.6 合并字符串 11 1.7 将字符串逐字符或逐词反转 14 1.8 检查字符串中是否包含某字符集合中的字符 15 1.9 简化字符串的translate方法的使用 18 1.10 过滤字符串中不属于指定集合的字符 20 1.11 检查一个字符串是文本还是二进制 23 1.12 控制大小写 25 1.13 访问子字符串 26 1.14 改变多行文本字符串的缩进 29 1.15 扩展和压缩制表符 31 1.16 替换字符串中的子串 33 1.17 替换字符串中的子串-Python 2.4 34 1.18 一次完成多个替换 36 1.19 检查字符串中的结束标记 39 1.20 使用Unicode来处理国际化文本 40 1.21 在Unicode和普通字符串之间转换 43 1.22 在标准输出中打印Unicode字符 45 1.23 对Unicode数据编码并用于XML和HTML 46 1.24 让某些字符串大小写不敏感 49 1.25 将HTML文档转化为文本显示到UNIX终端上 52 第2章 文件 55 引言 55 2.1 读取文件 59 2.2 写入文件 62 2.3 搜索和替换文件中的文本 64 2.4 从文件中读取指定的行 65 2.5 计算文件的行数 66 2.6 处理文件中的每个词 68 2.7 随机输入/输出 70 2.8 更新随机存取文件 71 2.9 从zip文件中读取数据 73 2.10 处理字符串中的zip文件 74 2.11 将文件树归档到一个压缩的tar文件 76 2.12 将二进制数据发送到Windows的标准输出 77 2.13 使用C++的类iostream语法 78 2.14 回退输入文件到起点 80 2.15 用类文件对象适配真实文件对象 83 2.16 遍历目录树 84 2.17 在目录树中改变文件扩展名 85 2.18 从指定的搜索路径寻找文件 86 2.19 根据指定的搜索路径和模式寻找文件 87 2.20 在Python的搜索路径中寻找文件 88 2.21 动态地改变Python搜索路径 89 2.22 计算目录间的相对路径 91 2.23 跨平台地读取无缓存的字符 93 2.24 在Mac OS X平台上统计PDF文档的页数 94 2.25 在Windows平台上修改文件属性 95 2.26 从OpenOffice.org文档中提取文本 96 2.27 从微软Word文档中抽取文本 97 2.28 使用跨平台的文件锁 98 2.29 带版本号的文件名 100 2.30 计算CRC-64循环冗余码校验 102 第3章 时间和财务计算 105 引言 105 3.1 计算昨天和明天的日期 111 3.2 寻找上一个星期五 112 3.3 计算日期之间的时段 114 3.4 计算歌曲的总播放时间 115 3.5 计算日期之间的工作日 116 3.6 自动查询节日 118 3.7 日期的模糊查询 121 3.8 检查夏令时是否正在实行 123 3.9 时区转换 124 3.10 反复执行某个命令 125 3.11 定时执行命令 127 3.12 十进制数学计算 129 3.13 将十进制数用于货币处理 130 3.14 用Python实现的简单加法器 133 3.15 检查信用卡校验和 136 3.16 查看汇率 137 第4章 Python技巧 139 引言 139 4.1 对象拷贝 140 4.2 通过列表推导构建列表 144 4.3 若列表中某元素存在则返回之 146 4.4 循环访问序列中的元素和索引 147 4.5 在无须共享引用的条件下创建列表的列表 148 4.6 展开一个嵌套的序列 149 4.7 在行列表中完成对列的删除和排序 152 4.8 二维阵列变换 154 4.9 从字典中取值 155 4.10 给字典增加一个条目 157 4.11 在无须过多援引的情况下创建字典 158 4.12 将列表元素交替地作为键和值来创建字典 159 4.13 获取字典的一个子集 161 4.14 反转字典 163 4.15 字典的一键多值 164 4.16 用字典分派方法和函数 166 4.17 字典的并集与交集 167 4.18 搜集命名的子项 169 4.19 用一条语句完成赋值和测试 171 4.20 在Python中使用printf 174 4.21 以指定的概率获取元素 174 4.22 在表达式中处理异常 176 4.23 确保名字已经在给定模块中被定义 178 第5章 搜索和排序 180 引言 180 5.1 对字典排序 185 5.2 不区分大小写对字符串列表排序 185 5.3 根据对象的属性将对象列表排序 187 5.4 根据对应值将键或索引排序 189 5.5 根据内嵌的数字将字符串排序 192 5.6 以随机顺序处理列表的元素 193 5.7 在增加元素时保持序列的顺序 195 5.8 获取序列中最小的几个元素 197 5.9 在排序完毕的序列中寻找元素 199 5.10 选取序列中最小的第n个元素 200 5.11 三行代码的快速排序 203 5.12 检查序列的成员 206 5.13 寻找子序列 208 5.14 给字典类型增加排名功能 210 5.15 根据姓的首字母将人名排序和分组 214 第6章 面向对象编程 217 引言 217 6.1 温标的转换 223 6.2 定义常量 225 6.3 限制属性的设置 227 6.4 链式字典查询 229 6.5 继承的替代方案-自动托管 231 6.6 在代理中托管特殊方法 234 6.7 有命名子项的元组 237 6.8 避免属性读写的冗余代码 239 6.9 快速复制对象 240 6.10 保留对被绑定方法的引用且支持垃圾回收 243 6.11 缓存环的实现 245 6.12 检查一个实例的状态变化 249 6.13 检查一个对象是否包含某种必要的属性 252 6.14 实现状态设计模式 255 6.15 实现单例模式 257 6.16 用Borg惯用法来避免“单例”模式 259 6.17 Null对象设计模式的实现 263 6.18 用_ _init_ _参数自动初始化实例变量 266 6.19 调用超类的_ _init_ _方法 267 6.20 精确和安全地使用协作的超类调用 270 第7章 持久化和数据库 273 引言 273 7.1 使用marshal模块序列化数据 275 7.2 使用pickle和cPickle模块序列化数据 277 7.3 在Pickling的时候压缩 280 7.4 对类和实例使用cPickle模块 281 7.5 Pickling被绑定方法 284 7.6 Pickling代码对象 286 7.7 通过shelve修改对象 288 7.8 使用Berkeley DB数据库 291 7.9 访问MySQL数据库 294 7.10 在MySQL数据库中储存BLOB 295 7.11 在PostgreSQL中储存BLOB 296 7.12 在SQLite中储存BLOB 298 7.13 生成一个字典将字段名映射为列号 300 7.14 利用dtuple实现对查询结果的灵活访问 302 7.15 打印数据库游标的内容 304 7.16 适用于各种DB API模块的单参数传递风格 306 7.17 通过ADO使用Microsoft Jet 308 7.18 从Jython Servlet访问JDBC数据库 310 7.19 通过Jython和ODBC获得Excel数据 313 第8章 调试和测试 315 引言 315 8.1 阻止某些条件和循环的执行 316 8.2 在Linux上测量内存使用 317 8.3 调试垃圾回收进程 318 8.4 捕获和记录异常 320 8.5 在调试模式中跟踪表达式和注释 322 8.6 从traceback中获得更多信息 324 8.7 当未捕获异常发生时自动启用调试器 327 8.8 简单的使用单元测试 328 8.9 自动运行单元测试 330 8.10 在Python 2.4中使用doctest和unittest 331 8.11 在单元测试中检查区间 334 第9章 进程、线程和同步 336 引言 336 9.1 同步对象中的所有方法 339 9.2 终止线程 342 9.3 将Queue.Queue用作优先级队列 344 9.4 使用线程池 346 9.5 以多组参数并行执行函数 349 9.6 用简单的消息传递协调线程 351 9.7 储存线程信息 353 9.8 无线程的多任务协作 357 9.9 在Windows中探测另一个脚本实例的运行 359 9.10 使用MsgWaitForMultipleObjects处理Windows消息 360 9.11 用popen驱动外部进程 363 9.12 获取UNIX Shell命令的输出流和错误流 364 9.13 在UNIX中fork一个守护进程 367 第10章 系统管理 370 引言 370 10.1 生成随机密码 371 10.2 生成易记的伪随机密码 372 10.3 以POP服务器的方式验证用户 375 10.4 统计Apache中每个IP的点击率 376 10.5 统计Apache的客户缓存的命中率 378 10.6 在脚本中调用编辑器 379 10.7 备份文件 381 10.8 选择性地复制邮箱文件 383 10.9 通过邮箱创建一个邮件地址的白名单 384 10.10 阻塞重复邮件 386 10.11 检查你的Windows声音系统 388 10.12 在Windows中注册和反注册DLL 388 10.13 检查并修改Windows自动运行任务 390 10.14 在Windows中创建共享 391 10.15 连接一个正在运行的Internet Explorer实例 392 10.16 读取Microsoft Outlook Contacts 393 10.17 在Mac OS X中收集详细的系统信息 396 第11章 用户界面 400 引言 400 11.1 在文本控制台中显示进度条 402 11.2 避免在编写回调函数时使用lambda 404 11.3 在tkSimpleDialog函数中使用默认值和区间 405 11.4 给Tkinter列表框增加拖曳排序能力 406 11.5 在Tkinter部件中输入一个重音字符 408 11.6 在Tkinter中嵌入内联的GIF 410 11.7 转换图片格式 412 11.8 在Tkinter中实现一个秒表 415 11.9 用线程实现GUI和异步I/O 的结合 417 11.10 在Tkinter中使用IDLE的 Tree部件 421 11.11 在Tkinter Listbox中支持单行多值 423 11.12 在Tkinter部件之间复制Geometry方法和选项 427 11.13 在Tkinter中实现一个带标签的记事本 429 11.14 使用wxPython实现带面板的记事本 431 11.15 在Jython中实现一个ImageJ插件 433 11.16 用Swing和Jython来通过URL查看图片 434 11.17 在Mac OS中获得用户输入 434 11.18 程序化地创建Python Cocoa GUI 437 11.19 用IronPython实现淡入窗口 439 第12章 XML处理 441 引言 441 12.1 检查XML的格式完好性 443 12.2 计算文档中标签的个数 444 12.3 获得XML文档中的文本 445 12.4 自动探测XML的编码 447 12.5 将一个XML文档转化成Python对象树 449 12.6 从XML DOM节点的子树中删除仅有空白符的文本节点 451 12.7 解析Microsoft Excel的XML 452 12.8 验证XML文档 454 12.9 过滤属于指定命名空间的元素和属性 455 12.10 用SAX合并连续的文本事件 458 12.11 使用MSHTML来解析XML或HTML 461 第13章 网络编程 462 引言 462 13.1 通过Socket数据报传输消息 464 13.2 从Web抓取文档 466 13.3 过滤FTP站点列表 467 13.4 通过SNTP协议从服务器获取时间 468 13.5 发送HTML邮件 469 13.6 在MIME消息中绑入文件 471 13.7 拆解一个分段MIME消息 474 13.8 删除邮件消息中的附件 475 13.9 修复Python 2.4的email.FeedParser 解析的消息 477 13.10 交互式地检查POP3邮箱 479 13.11 探测不活动的计算机 482 13.12 用HTTP监视网络 487 13.13 网络端口的转发和重定向 489 13.14 通过代理建立SSL隧道 492 13.15 实现动态IP协议 495 13.16 登录到IRC并将消息记录到磁盘 498 13.17 访问LDAP服务 500 第14章 Web编程 502 引言 502 14.1 测试CGI是否在工作 503 14.2 用CGI脚本处理URL 506 14.3 用CGI上传文件 507 14.4 检查web页面的存在 509 14.5 通过HTTP检查内容类型 510 14.6 续传HTTP下载文件 512 14.7 抓取Web页面时处理Cookie 513 14.8 通过带身份验证的代理进行HTTPS导航 516 14.9 用Jython实现Servlet 517 14.10 寻找Internet Explorer的cookie 519 14.11 生成OPML文件 521 14.12 聚合RSS Feed 524 14.13 通过模板将数据放入Web页面 527 14.14 在Nevow中呈现任意对象 530 第15章 分布式编程 534 引言 534 15.1 实现一个XML-RPC方法调用 536 15.2 服务XML-RPC请求 537 15.3 在Medusa中使用XML-RPC 539 15.4 允许XML-RPC服务被远程终止 541 15.5 SimpleXMLRPCServer的一些细节 542 15.6 给一个XML-RPC服务提供一个wxPython GUI 544 15.7 使用Twisted的Perspective Broker 546 15.8 实现一个CORBA服务和客户 549 15.9 使用telnetlib执行远程登录 551 15.10 使用SSH执行远程登录 554 15.11 通过HTTPS验证一个SSL客户端 557 第16章 关于程序的程序 559 引言 559 16.1 验证字符串是否代表着一个合法的数字 564 16.2 导入一个动态生成的模块 565 16.3 导入一个名字在运行时被确定的模块 567 16.4 将参数和函数联系起来 568 16.5 组合函数 571 16.6 使用内建的Tokenizer给Python源码上色 572 16.7 合并和拆解Token 575 16.8 检查字符串是否有平衡的圆括号 577 16.9 在Python中模拟枚举 580 16.10 在创建列表推导时引用它自身 583 16.11 自动化py2exe将脚本编译成Windows可执行文件的过程 585 16.12 在UNIX中将主脚本和模块绑成一个可执行文件 587 第17章 扩展和嵌入 590 引言 590 17.1 实现一个简单的扩展类型 592 17.2 用Pyrex实现一个简单的扩展类型 597 17.3 在Python中使用C++库 598 17.4 调用Windows DLL的函数 601 17.5 在多线程环境中使用SWIG生成的模块 603 17.6 用PySequence_Fast将Python序列转为 C数组 604 17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入的C扩展 613 17.10 调试内存问题 614 第18章 算法 616 引言 616 18.1 消除序列中的重复 619 18.2 在保留序列顺序的前提下消除其中的重复 621 18.3 生成回置采样 625 18.4 生成无回置的抽样 626 18.5 缓存函数的返回值 627 18.6 实现一个FIFO容器 629 18.7 使用FIFO策略来缓存对象 631 18.8 实现一个Bag(Multiset)收集类型 634 18.9 在Python模拟三元操作符 637 18.10 计算素数 640 18.11 将整数格式化为二进制字符串 642 18.12 以任意数为基将整数格式化为字符串 644 18.13 通过法雷分数将数字转成有理数 646 18.14 带误差传递的数学计算 648 18.15 以最大精度求和 651 18.16 模拟浮点数 653 18.17 计算二维点集的凸包和直径 656 第19章 迭代器和生成器 660 引言 660 19.1 编写一个类似range的浮点数递增的函数 663 19.2 从任意可迭代对象创建列表 665 19.3 生成Fibonacci序列 667 19.4 在多重赋值中拆解部分项 669 19.5 自动拆解出需要的数目的项 670 19.6 以步长n将一个可迭代对象切成n片 672 19.7 通过重叠窗口循环序列 674 19.8 并行地循环多个可迭代对象 678 19.9 循环多个可迭代对象的矢量积 680 19.10 逐段读取文本文件 683 19.11 读取带有延续符的行 685 19.12 将一个数据块流处理成行流 687 19.13 用生成器从数据库中抓取大记录集 688 19.14 合并有序序列 690 19.15 生成排列、组合以及选择 694 19.16 生成整数的划分 696 19.17 复制迭代器 697 19.18 迭代器的前瞻 701 19.19 简化队列消费者线程 703 19.20 在另一个线程中运行迭代器 705 19.21 用itertools.groupby来计算汇总报告 706 第20章 描述符、装饰器和元类 710 引言 710 20.1 在函数调用中获得常新的默认值 712 20.2 用嵌套函数来编写property属性 715 20.3 给属性值起别名 717 20.4 缓存属性值 719 20.5 用同一个方法访问多个属性 722 20.6 封装一个方法来给类增加功能 723 20.7 增强所有方法来给类增加功能 726 20.8 在运行时给一个类实例添加方法 728 20.9 检查接口的实现 730 20.10 在自定义元类中正确地使用_ _new_ _和_ _init_ _ 732 20.11 允许对List的可变方法的链式调用 734 20.12 通过更紧凑的语法使用协作的超类调用 736 20.13 不使用_ _init_ _来初始化实例属性 738 20.14 实例属性的自动初始化 740 20.15 重新加载时自动更新类实例 743 20.16 在编译时绑定常量 747 20.17 解决元类冲突 752
EDB是基于postgresql的基础上的数据库,但是可以兼容oracle语法。
一、IDE 1、对IDE的高DPI支持,涵盖了最新的4k+显示器,整个字体和图标更干净、更清晰。 2、多显示器和多窗口改进:在多个窗口中同时设计和编辑同一个表单的代码 3、完全重建的欢迎页,具有原生的外观和感觉,以及适合IDE的UI,并可自定义布局和内容 4、C++代码格式化器。使用clang-format自动布局你的C++代码 5、改进了对VCL和IDE的远程桌面支持 6、FireMonkey设计时指南。通过可视化的线条和增强的边距和填充支持更快地进行原型设计 二、VCL 1、丰富的编辑组件更新删除了XP的依赖性,并为TRichEdit控件引入了新的功能。 2、VCL样式增加了设计时支持:通过在设计时立即看到你的样式表格和控件在运行时的样子,使时尚的UI原型更快。 3、增加了对TreeViews中CheckBoxes的支持,每个节点都支持3种状态(部分、变暗、排除)以帮助定制UI。 4、新的TDBLabeledEdit组件提供了TLabelEdit的数据感知版本,以加快原型设计。 5、大量的VCL改进,包括默认的表格大小和字体,例外对话框的复制按钮,备忘录和RichEdit的边距等等。 三、FMX 1、改进了对Windows和桌面的FMX高DPI支持,桌面UI明显优越 2、在WebBrowser组件中支持微软的WebView 2控件(Edge Chromium)。 3、支持最新的Android 30 API和最新的计费API,并迁移到使用AndroidX库 4、Android支持多个classes.dex文件,简化了对外部Android依赖的整合 四、Platforms 1、Delphi macOS 64位ARM编译器和工具链,包括为Intel/Arm AppStore提交构建通用二进制文件 2、Delphi语言支持二进制小数和数字分离器 3、改进了C++工具链,对C++类型的RTTI进行了大修,包括在Delphi类型上使用typeid。 4、为Delphi类型改进了C++风格的RTTI 5、在Win32和Win64上改进了CMake的质量并大大改进了异常处理。 五、RTL 1、RTL质量重点。TZipFile、大数据结构的64位改进、蓝牙LE 2、System.DateUtils中TDateTime的记录帮助器 3、System.SysUtils中TCurrency的Record Helper使货币的工作更加简单和容易。 4、C++ RTL的改进包括在Delphi类中使用make_shared和make_unique,对Delphi字符串的string_view支持,以及Delphi/C++字符串的简单转换。 六、LSP 1、使用Visual Studio Code来编辑Delphi源代码,并具有完整的代码完成功能 2、LSP对Include文件的认识 3、自动重新启动LSP服务器 4、用Tab键自动完成代码 5、支持类辅助工具 6、赋值数组时的数组建议 七、Data 1、新版本中的FireDAC为PostgreSQL、Oracle和Firebird数据库提供了具体的改进。 2、HTTP和REST客户端库已经扩展了超时机制,支持HTTP/2、TLS 1.3、Base64 URL编码。 3、新组件TRESTRequestDataSetAdapter简化了向服务器上传数据集的过程 4、新的低流量RAD Server Lite允许无限制地部署您的多层解决方案,以及完全可扩展的Server引擎。 5、对于DataSnap,REST URL映射逻辑现在是完全可配置的