Team-Fly® Table of Content

Total Page:16

File Type:pdf, Size:1020Kb

Team-Fly® Table of Content Modern C++ Design: Generic Programming and Design Patterns Applied By Andrei Alexandrescu Publisher : Addison Wesley Pub Date : February 01, 2001 ISBN : 0-201-70431-5 Table of Contents Pages : 352 Modern C++ Design is an important book. Fundamentally, it demonstrates 'generic patterns' or 'pattern templates' as a powerful new way of creating extensible designs in C++--a new way to combine templates and patterns that you may never have dreamt was possible, but is. If your work involves C++ design and coding, you should read this book. Highly recommended.-Herb Sutter What's left to say about C++ that hasn't already been said? Plenty, it turns out.-From the Foreword by John Vlissides In Modern C++ Design, Andrei Alexandrescu opens new vistas for C++ programmers. Displaying extraordinary creativity and programming virtuosity, Alexandrescu offers a cutting-edge approach to design that unites design patterns, generic programming, and C++, enabling programmers to achieve expressive, flexible, and highly reusable code. This book introduces the concept of generic components-reusableY design templates that produce boilerplate code for compiler consumption-allL within C++. Generic components enable an easier and more seamless transition from design to application code, generate code that better expresses the original designF intention, and support the reuse of design structures with minimal recoding. M The author describes the specificA C++ techniques and features that are used in building generic components and goes on to implement industrial strength generic components for real-world applications. RecuE rring issues that C++ developers face in their day-to-day activity are discussedT in depth and implemented in a generic way. These include: • Policy-based design for flexibility • Partial template specialization • Typelists-powerful type manipulation structures • Patterns such as Visitor, Singleton, Command, and Factories • Multi-method engines For each generic component, the book presents the fundamental problems and design options, and finally implements a generic solution. In addition, an accompanying Web site, http://www.awl.com/cseng/titles/0-201-70431-5, makes the code implementations available for the generic components in the book and provides a free, downloadable C++ library, called Loki, created by the author. Loki provides out-of-the-box functionality for virtually any C++ project. Team-Fly® Table of Content Table of Content .................................................................................................................. i Copyright............................................................................................................................. vi Foreword............................................................................................................................ vii Foreword............................................................................................................................. ix Preface................................................................................................................................. x Audience......................................................................................................................... xi Loki.................................................................................................................................. xi Organization.................................................................................................................. xii Acknowledgments ...........................................................................................................xiii Part I: Techniques................................................................................................................... 1 Chapter 1. Policy-Based Class Design........................................................................... 2 1.1 The Multiplicity of Software Design ...................................................................... 2 1.2 The Failure of the Do-It-All Interface .................................................................... 3 1.3 Multiple Inheritance to the Rescue? ..................................................................... 4 1.4 The Benefit of Templates ....................................................................................... 5 1.5 Policies and Policy Classes ................................................................................... 6 1.6 Enriched Policies ..................................................................................................... 9 1.7 Destructors of Policy Classes.............................................................................. 10 1.8 Optional Functionality Through Incomplete Instantiation ................................ 11 1.9 Combining Policy Classes.................................................................................... 12 1.10 Customizing Structure with Policy Classes..................................................... 13 1.11 Compatible and Incompatible Policies............................................................. 14 1.12 Decomposing a Class into Policies .................................................................. 16 1.13 Summary .............................................................................................................. 17 Chapter 2. Techniques .................................................................................................... 19 2.1 Compile-Time Assertions ..................................................................................... 19 2.2 Partial Template Specialization........................................................................... 22 2.3 Local Classes......................................................................................................... 23 2.4 Mapping Integral Constants to Types ................................................................ 24 2.5 Type-to-Type Mapping.......................................................................................... 26 2.6 Type Selection ....................................................................................................... 28 2.7 Detecting Convertibility and Inheritance at Compile Time .............................. 29 2.8 A Wrapper Around type_info.......................................................................... 32 2.9 NullType and EmptyType ................................................................................ 34 2.10 Type Traits ........................................................................................................... 34 2.11 Summary .............................................................................................................. 40 Chapter 3. Typelists ......................................................................................................... 42 3.1 The Need for Typelists.......................................................................................... 42 3.2 Defining Typelists .................................................................................................. 43 3.3 Linearizing Typelist Creation ............................................................................... 45 3.4 Calculating Length................................................................................................. 45 3.5 Intermezzo.............................................................................................................. 46 3.6 Indexed Access ..................................................................................................... 47 3.7 Searching Typelists............................................................................................... 48 3.8 Appending to Typelists ......................................................................................... 49 3.9 Erasing a Type from a Typelist............................................................................ 50 3.10 Erasing Duplicates .............................................................................................. 51 3.11 Replacing an Element in a Typelist .................................................................. 52 3.12 Partially Ordering Typelists................................................................................ 53 3.13 Class Generation with Typelists........................................................................ 56 3.14 Summary .............................................................................................................. 65 3.15 Typelist Quick Facts ...................................................................................... 66 ii Chapter 4. Small-Object Allocation................................................................................ 68 4.1 The Default Free Store Allocator ........................................................................ 68 4.2 The Workings of a Memory Allocator ................................................................. 69 4.3 A Small-Object Allocator ...................................................................................... 70 4.4 Chunks ................................................................................................................... 71 4.5 The Fixed-Size Allocator ...................................................................................... 74 4.6 The SmallObjAllocator Class...................................................................... 77 4.7 A Hat Trick.............................................................................................................
Recommended publications
  • Why ODF?” - the Importance of Opendocument Format for Governments
    “Why ODF?” - The Importance of OpenDocument Format for Governments Documents are the life blood of modern governments and their citizens. Governments use documents to capture knowledge, store critical information, coordinate activities, measure results, and communicate across departments and with businesses and citizens. Increasingly documents are moving from paper to electronic form. To adapt to ever-changing technology and business processes, governments need assurance that they can access, retrieve and use critical records, now and in the future. OpenDocument Format (ODF) addresses these issues by standardizing file formats to give governments true control over their documents. Governments using applications that support ODF gain increased efficiencies, more flexibility and greater technology choice, leading to enhanced capability to communicate with and serve the public. ODF is the ISO Approved International Open Standard for File Formats ODF is the only open standard for office applications, and it is completely vendor neutral. Developed through a transparent, multi-vendor/multi-stakeholder process at OASIS (Organization for the Advancement of Structured Information Standards), it is an open, XML- based document file format for displaying, storing and editing office documents, such as spreadsheets, charts, and presentations. It is available for implementation and use free from any licensing, royalty payments, or other restrictions. In May 2006, it was approved unanimously as an International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC) standard. Governments and Businesses are Embracing ODF The promotion and usage of ODF is growing rapidly, demonstrating the global need for control and choice in document applications. For example, many enlightened governments across the globe are making policy decisions to move to ODF.
    [Show full text]
  • Supported File Types
    MyFax Supported File Formats Document Type Versions Extensions Adobe Portable Document Format (PDF) All Versions PDF Adobe Postscript All Versions PS Adobe Photoshop v. 3.0 and above PSD Amiga Interchange File Format (IFF) Raster Bitmap only IFF CAD Drawing Exchange Format (DXF) All AutoCad compatible versions DXF Comma Separated Values Format All Versions CSV Compuserve Graphics Interchange Format GIF87a, GIF89a GIF Corel Presentations Slide Show v. 96 and above SHW Corel Word Perfect v. 5.x. 6, 7, 8, 9 WPD, WP5, WP6 Encapsulated Postscript All Versions EPS Hypertext Markup Language HTML only with base href tag required HTML, HTM JPEG Joint Photography Experts Group All Versions JPG, JPEG Lotus 1-2-3 v. 2, 3, 4, 5, 96, 97, 9.x 123, WK1, WK3, WK4 Lotus Word Pro v. 96, 97, 9.x LWP Microsoft Excel v. 5, 95, 97, 2000, 2003, 2007 XLS, XLSX Microsoft PowerPoint v. 4 and above PPT, PPTX Microsoft Publisher v. 98, 2000, 2002, 2003, 2007 PUB Microsoft Windows Write All Versions WRI Microsoft Word Win: v. 97, 2000, 2003, 2007 Mac: v. 4, 5.x, 95, 98 DOC, DOCX Microsoft Word Template Win: v. 97, 2000, 2003, 2007 Mac: v. 4, 5.x, 95, 98 DOT, DOTX Microsoft Works Word Processor v. 4.x, 5, 6, 7, 8.x, 9 WPS OpenDocument Drawing All Versions ODG OpenDocument Presentation All Versions ODP OpenDocument Spreadsheet All Versions ODS OpenDocument Text All Versions ODT PC Paintbrush Graphics (PCX) All Versions PCX Plain Text All Versions TXT, DOC, LOG, ERR, C, CPP, H Portable Network Graphics (PNG) All Versions PNG Quattro Pro v.
    [Show full text]
  • Server Administration Manual Release Latest
    Nextcloud Server Administration Manual Release latest The Nextcloud developers Oct 01, 2021 CONTENTS 1 Introduction 1 1.1 Videos and blogs.............................................1 1.2 Target audience..............................................1 2 Release notes 3 3 Maintenance and release schedule5 3.1 Major releases..............................................5 3.2 Maintenance releases...........................................5 3.3 Older versions..............................................6 4 Installation and server configuration7 4.1 System requirements...........................................7 4.2 Deployment recommendations......................................9 4.3 Installation on Linux...........................................9 4.4 Installation wizard............................................ 17 4.5 Installing from command line...................................... 21 4.6 Supported apps.............................................. 22 4.7 SELinux configuration.......................................... 24 4.8 NGINX configuration.......................................... 27 4.9 Hardening and security guidance.................................... 36 4.10 Server tuning............................................... 40 4.11 Example installation on Ubuntu 20.04 LTS............................... 42 4.12 Example installation on CentOS 8.................................... 44 4.13 Example installation on OpenBSD.................................... 48 5 Nextcloud configuration 53 5.1 Warnings on admin page........................................
    [Show full text]
  • Dynamic Operator Overloading in a Statically Typed Language Olivier L
    Dynamic Operator Overloading in a Statically Typed Language Olivier L. Clerc and Felix O. Friedrich Computer Systems Institute, ETH Z¨urich, Switzerland [email protected], [email protected] October 31, 2011 Abstract Dynamic operator overloading provides a means to declare operators that are dispatched according to the runtime types of the operands. It allows to formulate abstract algorithms operating on user-defined data types using an algebraic notation, as it is typically found in mathematical languages. We present the design and implementation of a dynamic operator over- loading mechanism in a statically-typed object-oriented programming lan- guage. Our approach allows operator declarations to be loaded dynam- ically into a running system, at any time. We provide semantical rules that not only ensure compile-time type safety, but also facilitate the im- plementation. The spatial requirements of our approach scale well with a large number of types, because we use an adaptive runtime system that only stores dispatch information for type combinations that were encoun- tered previously at runtime. On average, dispatching can be performed in constant time. 1 Introduction Almost all programming languages have a built-in set of operators, such as +, -, * or /, that perform primitive arithmetic operations on basic data types. Operator overloading is a feature that allows the programmer to redefine the semantics of such operators in the context of custom data types. For that purpose, a set of operator implementations distinguished by their signatures has to be declared. Accordingly, each operator call on one or more custom-typed arguments will be dispatched to one of the implementations whose signature matches the operator's name and actual operand types.
    [Show full text]
  • Ada User Journal, Apply to Ada-Europe At: -Europe.Org/Join ADA Volume 41 USER Number 4 December 2020
    To receive the Ada User Journal, apply to Ada-Europe at: http://www.ada -europe.org/join ADA Volume 41 USER Number 4 December 2020 JOURNAL Contents Page Editorial Policy for Ada User Journal 192 Editorial 193 Quarterly News Digest 195 Conference Calendar 224 Forthcoming Events 232 Special Contribution P. Rogers “From Ada to Platinum SPARK: A Case Study” 235 Proceedings of the "HILT 2020 Workshop on Safe Languages and Technologies for Structured and Efficient Parallel and Distributed/Cloud Computing" T. Taft “A Layered Mapping of Ada 202X to OpenMP” 251 J. Verschelde “Parallel Software to Offset the Cost of Higher Precision” 255 Puzzle J. Barnes “Shrinking Squares and Colourful Cubes” 261 In memoriam: William Bail 263 Ada-Europe Associate Members (National Ada Organizations) 264 Ada-Europe Sponsors Inside Back Cover Ada User Journal Volume 41, Number 4, December 2020 195 Quarterly News Digest Alejandro R. Mosteo Centro Universitario de la Defensa de Zaragoza, 50090, Zaragoza, Spain; Instituto de Investigación en Ingeniería de Aragón, Mariano Esquillor s/n, 50018, Zaragoza, Spain; email: [email protected] as far as when Ada prototypes had - A layered mapping of Ada 202X parallel parentheses for subprograms without constructs to OpenMP (Tucker Taft), Contents arguments. - Experience integrating FAA's NextGen To conclude, during this period also took ERAM (mostly Ada) with SWIM Preface by the News Editor 195 place the Advent of Code, a scored (Mixed languages) (Brian Kleinke, Ada-related Events 195 competition in which a programming Leidos) Ada and Education 196 puzzle a day is presented for you to solve Ada-related Resources 196 - A highly parallel multiple double in your favorite language.
    [Show full text]
  • File Format Guidelines for Management and Long-Term Retention of Electronic Records
    FILE FORMAT GUIDELINES FOR MANAGEMENT AND LONG-TERM RETENTION OF ELECTRONIC RECORDS 9/10/2012 State Archives of North Carolina File Format Guidelines for Management and Long-Term Retention of Electronic records Table of Contents 1. GUIDELINES AND RECOMMENDATIONS .................................................................................. 3 2. DESCRIPTION OF FORMATS RECOMMENDED FOR LONG-TERM RETENTION ......................... 7 2.1 Word Processing Documents ...................................................................................................................... 7 2.1.1 PDF/A-1a (.pdf) (ISO 19005-1 compliant PDF/A) ........................................................................ 7 2.1.2 OpenDocument Text (.odt) ................................................................................................................... 3 2.1.3 Special Note on Google Docs™ .......................................................................................................... 4 2.2 Plain Text Documents ................................................................................................................................... 5 2.2.1 Plain Text (.txt) US-ASCII or UTF-8 encoding ................................................................................... 6 2.2.2 Comma-separated file (.csv) US-ASCII or UTF-8 encoding ........................................................... 7 2.2.3 Tab-delimited file (.txt) US-ASCII or UTF-8 encoding .................................................................... 8 2.3
    [Show full text]
  • Open Document Formats As an Enabler of Interoperability
    OPEN DOCUMENT FORMATS AS AN ENABLER OF INTEROPERABILITY COMPARISON OF THE OASIS OPENDOCUMENT FORMAT AND MICROSOFT OFFICE OPEN XML PC productivity applications (PPAs), including word processing, spreadsheet, and presentation software, represent the most important applications to PC users today. Most documents today are created with a word processor, spreadsheet or a presentations application. Therefore, for the purposes of ensuring that the documents can be freely exchanged between users, and that they are accessible not only now but also in the future, it is important that the format the documents are saved in is one that can be fully supported by the widest possible range of applications. Only a fully open cross-platform format can allow for full interoperability between PPAs, and ensure that users' data is not locked-in to specific applications and platforms. OpenDocument Format and Microsoft Office Open XML The OpenDocument Format (ODF) was created to meet the demand for such a format. It was developed as an application-independent file format by a vendor-neutral standards developing organization OASIS, with the participation of multiple office application vendors. On 4 May 2006, the Joint Technical Committee for Information Technology Standards (JTC-1) of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) approved ODF as international standard ISO/IEC JTC 1 26300.1 ODF is supported by various PPAs, including OpenOffice,2 StarOffice 83 Google Docs & Spreadsheets,4 IBM Productivity
    [Show full text]
  • Thinking in C++ Volume 2 Annotated Solution Guide, Available for a Small Fee From
    1 z 516 Note: This document requires the installation of the fonts Georgia, Verdana and Andale Mono (code font) for proper viewing. These can be found at: http://sourceforge.net/project/showfiles.php?group_id=34153&release_id=105355 Revision 19—(August 23, 2003) Finished Chapter 11, which is now going through review and copyediting. Modified a number of examples throughout the book so that they will compile with Linux g++ (basically fixing case- sensitive naming issues). Revision 18—(August 2, 2003) Chapter 5 is complete. Chapter 11 is updated and is near completion. Updated the front matter and index entries. Home stretch now. Revision 17—(July 8, 2003) Chapters 5 and 11 are 90% done! Revision 16—(June 25, 2003) Chapter 5 text is almost complete, but enough is added to justify a separate posting. The example programs for Chapter 11 are also fairly complete. Added a matrix multiplication example to the valarray material in chapter 7. Chapter 7 has been tech-edited. Many corrections due to comments from users have been integrated into the text (thanks!). Revision 15—(March 1 ,2003) Fixed an omission in C10:CuriousSingleton.cpp. Chapters 9 and 10 have been tech-edited. Revision 14—(January ,2003) Fixed a number of fuzzy explanations in response to reader feedback (thanks!). Chapter 9 has been copy-edited. Revision 13—(December 31, 2002) Updated the exercises for Chapter 7. Finished rewriting Chapter 9. Added a template variation of Singleton to chapter 10. Updated the build directives. Fixed lots of stuff. Chapters 5 and 11 still await rewrite. Revision 12—(December 23, 2002) Added material on Design Patterns as Chapter 10 (Concurrency will move to Chapter 11).
    [Show full text]
  • Phonetic Classification Using Controlled Random Walks
    Phonetic Classification Using Controlled Random Walks Katrin Kirchhoff Andrei Alexandrescuy Department of Electrical Engineering Facebook University of Washington, Seattle, WA, USA [email protected] [email protected] Abstract a given node. When building a graph representing a speech Recently, semi-supervised learning algorithms for phonetic database, the neighbourhood sizes and entropies often exhibit classifiers have been proposed that have obtained promising re- large variance, due to the uneven distribution of phonetic classes sults. Often, these algorithms attempt to satisfy learning criteria (e.g. vowels are more frequent than laterals). MAD offers a that are not inherent in the standard generative or discriminative unified framework for accommodating such effects without the training procedures for phonetic classifiers. Graph-based learn- need for downsampling or upsampling the training data. In the ers in particular utilize an objective function that not only max- past, MAD has been applied to class-instance extraction from imizes the classification accuracy on a labeled set but also the text [10] but it has to our knowledge not been applied to speech global smoothness of the predicted label assignment. In this pa- classification tasks before. In this paper we contrast MAD to per we investigate a novel graph-based semi-supervised learn- the most widely used graph-based learning algorithm, viz. label ing framework that implements a controlled random walk where propagation. different possible moves in the random walk are controlled by probabilities that are dependent on the properties of the graph 2. Graph-Based Learning itself. Experimental results on the TIMIT corpus are presented In graph-based learning, the training and test data are jointly that demonstrate the effectiveness of this procedure.
    [Show full text]
  • Iterators Must Go
    Iterators Must Go Andrei Alexandrescu c 2009 Andrei Alexandrescu 1/52 This Talk • The STL • Iterators • Range-based design • Conclusions c 2009 Andrei Alexandrescu 2/52 What is the STL? c 2009 Andrei Alexandrescu 3/52 Yeah, what is the STL? • A good library of algorithms and data structures. c 2009 Andrei Alexandrescu 4/52 Yeah, what is the STL? • A ( good|bad) library of algorithms and data structures. c 2009 Andrei Alexandrescu 4/52 Yeah, what is the STL? • A ( good|bad|ugly) library of algorithms and data structures. c 2009 Andrei Alexandrescu 4/52 Yeah, what is the STL? • A ( good|bad|ugly) library of algorithms and data structures. • iterators = gcd(containers, algorithms); c 2009 Andrei Alexandrescu 4/52 Yeah, what is the STL? • A ( good|bad|ugly) library of algorithms and data structures. • iterators = gcd(containers, algorithms); • Scrumptious Template Lore • Snout to Tail Length c 2009 Andrei Alexandrescu 4/52 What the STL is • More than the answer, the question is important in the STL • “What would the most general implementations of fundamental containers and algorithms look like?” • Everything else is aftermath • Most importantly: STL is one answer, not the answer c 2009 Andrei Alexandrescu 5/52 STL is nonintuitive c 2009 Andrei Alexandrescu 6/52 STL is nonintuitive • Same way the theory of relativity is nonintuitive • Same way complex numbers are nonintuitive (see e.g. xkcd.com) c 2009 Andrei Alexandrescu 6/52 Nonintuitive • “I want to design the most general algorithms.” • “Sure. What you obviously need is something called iterators. Five of ’em, to be precise.” c 2009 Andrei Alexandrescu 7/52 Nonintuitive • “I want to design the most general algorithms.” • “Sure.
    [Show full text]
  • Peoplesoft Enterprise HRMS 8.9 Application Fundamentals Reports
    PeopleSoft Enterprise HRMS 8.9 Application Fundamentals Reports April 2005 PeopleSoft Enterprise HRMS 8.9 Application Fundamentals Reports SKU HRCS89MP1HAF-R 0405 Copyright © 1988-2005 PeopleSoft, Inc. All rights reserved. All material contained in this documentation is proprietary and confidential to PeopleSoft, Inc. (“PeopleSoft”), protected by copyright laws and subject to the nondisclosure provisions of the applicable PeopleSoft agreement. No part of this documentation may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, including, but not limited to, electronic, graphic, mechanical, photocopying, recording, or otherwise without the prior written permission of PeopleSoft. This documentation is subject to change without notice, and PeopleSoft does not warrant that the material contained in this documentation is free of errors. Any errors found in this document should be reported to PeopleSoft in writing. The copyrighted software that accompanies this document is licensed for use only in strict accordance with the applicable license agreement which should be read carefully as it governs the terms of use of the software and this document, including the disclosure thereof. PeopleSoft, PeopleTools, PS/nVision, PeopleCode, PeopleBooks, PeopleTalk, and Vantive are registered trademarks, and Pure Internet Architecture, Intelligent Context Manager, and The Real-Time Enterprise are trademarks of PeopleSoft, Inc. All other company and product names may be trademarks of their respective owners. The information contained herein is subject to change without notice. Open Source Disclosure PeopleSoft takes no responsibility for its use or distribution of any open source or shareware software or documentation and disclaims any and all liability or damages resulting from use of said software or documentation.
    [Show full text]
  • Linux 多线程服务端编程- 使用muduo C++
    Linux 多线程服务端编程 使用 muduo C++ 网络库 陈硕 ([email protected]) 最后更新 2012-09-30 封面文案 示范在多核时代采用现代 C++ 编写 多线程 TCP 网络服务器的正规做法 内容简介 本书主要讲述采用现代 C++ 在 x86-64 Linux 上编写多线程 TCP 网络服务程序的 主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即 one loop per thread。这是在 Linux 下以 native 语言编写用户态高性能网络程序最成熟的模 式,掌握之后可顺利地开发各类常见的服务端网络应用程序。本书以 muduo 网络库 为例,讲解这种编程模型的使用方法及注意事项。 本书的宗旨是贵精不贵多。掌握两种基本的同步原语就可以满足各种多线程同步 的功能需求,还能写出更易用的同步设施。掌握一种进程间通信方式和一种多线程网 络编程模型就足以应对日常开发任务,编写运行于公司内网环境的分布式服务系统。 作者简介 陈硕,北京师范大学硕士,擅长 C++ 多线程网络编程和实时分布式系统架构。 曾在摩根士丹利 IT 部门工作 5 年,从事实时外汇交易系统开发。现在在美国加州硅 谷某互联网大公司工作,从事大规模分布式系统的可靠性工程。编写了开源 C++ 网 络库 muduo,参与翻译了《代码大全(第 2 版)》和《C++ 编程规范(繁体版)》,整 理了《C++ Primer (第 4 版)(评注版)》,并曾多次在各地技术大会演讲。 电子工业出版社 封底文案 看完了 W. Richard Stevens 的传世经典《UNIX 网络编程》,能照着例子用 Sockets API 编 写 echo 服务,却仍然对稍微复杂一点的网络编程任务感到无从下手?学习网络编程有哪些好 的练手项目?书中示例代码把业务逻辑和 Sockets 调用混在一起,似乎不利于将来扩展?网络 编程中遇到一些具体问题该怎么办?例如: • 程序在本机测试正常,放到网络上运行就 • 要处理成千上万的并发连接,似乎《UNIX 经常出现数据收不全的情况? 网 络 编 程》 介 绍 的 传 统 fork() 模 型 应 • TCP 协议真的有所谓的“粘包问题”吗? 付不过来,该用哪种并发模型呢?试试 该如何设计消息帧的协议?又该如何编码 select(2)/poll(2)/epoll(4) 这种 IO 复 实现分包才不会掉到陷阱里? 用模型吧,又感觉非阻塞 IO 陷阱重重,怎 • 带外数据(OOB)、信号驱动 IO 这些高级 么程序的 CPU 使用率一直是 100%? 特性到底有没有用? • 要不改用现成的 libevent 网络库吧,怎么 • 网络消息格式该怎么设计?发送 C struct 查询一下数据库就把其他连接上的请求给 会有对齐方面的问题吗?对方不用 C/C++ 耽误了? 怎么通信?将来服务端软件升级,需要在 消息中增加一个字段,现有的客户端就必 • 再用个线程池吧。万一发回响应的时候对 须强制升级? 方已经断开连接了怎么办?会不会串话? 读过《UNIX 环境高级编程》,想用多线程来发挥多核 CPU 的性能潜力,但对程序该用哪 种多线程模型感到一头雾水?有没有值得推荐的适用面广的多线程 IO 模型?互斥器、条件变 量、读写锁、信号量这些底层同步原语哪些该用哪些不该用?有没有更高级的同步设施能简化 开发?《UNIX 网络编程(第 2 卷)》介绍的那些琳琅满目的进程间通信(IPC)机制到底用哪 个才能兼顾开发效率与可伸缩性? 网络编程和多线程编程的基础打得差不多,开始实际做项目了,更多问题扑面而来: • 网上听人说服务端开发要做到 7 × 24 运 •
    [Show full text]