How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk. 0201633612B07092001
W. Richard Stevens, Bill Fenner, Andrew M. Rudoff
* *Previous editions sold over 160,000 units! Second Edition (1998) sold over 53,000 in retail alone! *Updates coverage of programming standards, debugging techniques, and covers Operating Systems including Red Hat 9, Solaris 9, HP-UX, Free BSD 4.8/5.0, AIX 5.x, and Mac OS X. *Bill Fenner (AT/T Labs) and Andrew Rudoff (SUN) carry on the tradition of this great work.
Maurice Herlihy, Nir Shavit
Multiprocessor machines, or Multicores, as they are known in the industry, are quickly taking over every aspect of computing. This volume provides a presentation of the guiding principles and algorithmic techniques necessary for effective multiprocessor programming.
Robert Sedgewick, Kevin Daniel Wayne
The standard algorithm guide for working programmers -- now fully updated, broadened, and available again in a popular single-volume format • •The #1 practical resource for everyone seeking to run programs faster or solve larger problems. •Surveys today's most useful algorithms, with copious illustrations and examples. •Contains many new examples, ranging from physics, biology, and engineering to data compression and web search. •Contains real (not psuedocode) implementations, with detailed performance insights. Robert Sedgewick's Algorithm's has long been the definitive practical guide to using algorithms: the book that professionals and students in programming, science, and engineering rely on to solve real-world problems. Now, Sedgewick has thoroughly updated this classic to reflect today's latest, most powerful algorithms - and we've returned to the popular single-volume format our readers have been asking for. Sedgewick brings together an indispensable body of knowledge for improving computer performance and solving larger problems. In this edition, he adds: • •Many powerful new algorithms. •A broader perspective with more science and engineering applications. •New illustrations and examples throughout. •An attractive new two-color design, and more The algorithms Sedgewick presents are crucial in areas ranging from physics simulation to genetic sequencing, architectural modeling to aircraft simulation, database management to Internet search. He covers abstract data types, sorting algorithms, searching algorithms, graph processing, string processing, and geometric algorithms. Algorithms provides all the information readers need to confidently implement, debug, and apply each algorithm in any computational environment. For each, Sedgewick presents real implementations, as well as detailed insights into performance. All examples are written in Java, in a style that can be rapidly and easily translated to other languages.
Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte
This much-anticipated revision, written by the ultimate group of top security experts in the world, features 40 percent new content on how to find security holes in any operating system or application New material addresses the many new exploitation techniques that have been discovered since the first edition, including attacking "unbreakable" software packages such as McAfee's Entercept, Mac OS X, XP, Office 2003, and Vista Also features the first-ever published information on exploiting Cisco's IOS, with content that has never before been explored The companion Web site features downloadable code files
John L. Hennessy, David A. Patterson
This best-selling title, considered for over a decade to be essential reading for every serious student and practitioner of computer design, has been updated throughout to address the most important trends facing computer designers today. In this edition, the authors bring their trademark method of quantitative analysis not only to high performance desktop machine design, but also to the design of embedded and server systems. They have illustrated their principles with designs from all three of these domains, including examples from consumer electronics, multimedia and web technologies, and high performance computing. The book retains its highly rated features: Fallacies and Pitfalls, which share the hard-won lessons of real designers; Historical Perspectives, which provide a deeper look at computer design history; Putting it all Together, which present a design example that illustrates the principles of the chapter; Worked Examples, which challenge the reader to apply the concepts, theories and methods in smaller scale problems; and Cross-Cutting Issues, which show how the ideas covered in one chapter interact with those presented in others. In addition, a new feature, Another View, presents brief design examples in one of the three domains other than the one chosen for Putting It All Together. The authors present a new organization of the material as well, reducing the overlap with their other text, Computer Organization and Design: A Hardware/Software Approach 2/e, and offering more in-depth treatment of advanced topics in multithreading, instruction level parallelism, VLIW architectures, memory hierarchies, storage devices and network technologies. Also new to this edition, is the adoption of the MIPS 64 as the instruction set architecture. In addition to several online appendixes, two new appendixes will be printed in the book: one contains a complete review of the basic concepts of pipelining, the other provides solutions a selection of the exercises. Both will be invaluable to the student or professional learning on her own or in the classroom. Hennessy and Patterson continue to focus on fundamental techniques for designing real machines and for maximizing their cost/performance. * Presents state-of-the-art design examples including: * IA-64 architecture and its first implementation, the Itanium * Pipeline designs for Pentium III and Pentium IV * The cluster that runs the Google search engine * EMC storage systems and their performance * Sony Playstation 2 * Infiniband, a new storage area and system area network * SunFire 6800 multiprocessor server and its processor the UltraSPARC III * Trimedia TM32 media processor and the Transmeta Crusoe processor * Examines quantitative performance analysis in the commercial server market and the embedded market, as well as the traditional desktop market. Updates all the examples and figures with the most recent benchmarks, such as SPEC 2000. * Expands coverage of instruction sets to include descriptions of digital signal processors, media processors, and multimedia extensions to desktop processors. * Analyzes capacity, cost, and performance of disks over two decades. Surveys the role of clusters in scientific computing and commercial computing. * Presents a survey, taxonomy, and the benchmarks of errors and failures in computer systems. * Presents detailed descriptions of the design of storage systems and of clusters. * Surveys memory hierarchies in modern microprocessors and the key parameters of modern disks. * Presents a glossary of networking terms.
W. Richard Stevens, Gary R. Wright
An indispensable resource for anyone working with TCP/IP, Volume 2 is the only one to cover the de facto standard implementation from the 4.4BSD-Lite release. Combining more than 500 illustrations with 15,000 lines of working code, the book uses a teach-by-example approach to help you master TCP/IP implementation. You will learn about such topics as the relationship between the sockets API and the protocol suite and the differences between a host implementation and a router. In addition, the book covers the newest features of the 4.4BSD-Lite release, including multicasting, long fat pipe support, window scale, timestamp options, and protection against wrapped sequence numbers.
Designed to be easy to read and understand although the topic itself is complicated, this book explains that algorithms are the procedures that software programs use to manipulate data structures. Besides clear and simple example programs, Lafore includes a workshop as a small demonstration program executable on a Web browser.
A manual on the Java 1.2 virtual machine. This new edition contains a new chapter providing a tutorial on using native methods with the JNI (Java Native Interface) specification. The CD-ROM contains source code examples from the book, interactive illustrations, Java Development Kit, and a resources Web site.
Imperfect C++ C++, although a marvelous language, isn't perfect. Matthew Wilson has been working with it for over a decade, and during that time he has found inherent limitations that require skillful workarounds. In this book, he doesn't just tell you what's wrong with C++, but offers practical techniques and tools for writing code that's more robust, flexible, efficient, and maintainable. He shows you how to tame C++'s complexity, cut through its vast array of paradigms, take back control over your code--and get far better results. If you're a long-time C++ developer, this book will help you see your programming challenges in new ways--and illuminate powerful techniques you may never have tried. If you're newer to C++, you'll learn principles that will make you more effective in all of your projects. Along the way, you'll learn how to: Overcome deficiencies in C++'s type system Enforce software design through constraints, contracts, and assertions Handle behavior ignored by the standard-- including issues related to dynamic libraries, static objects, and threading Achieve binary compatibility between dynamically loading components Understand the costs and disadvantages of implicit conversions--and the alternatives Increase compatibility with diverse compilers, libraries, and operating environments Help your compiler detect more errors and work more effectively Understand the aspects of style that impact reliability Apply the Resource Acquisition Is Initialization mechanism to a wide variety of problem domains Manage the sometimes arcane relationship between arrays and pointers Use template programming to improve flexibility and robustness Extend C++: including fast string concatenation, a true NULL-pointer, flexible memory buffers, Properties, multidimensional arrays, and Ranges The CD-ROM contains a valuable variety of C++ compilers, libraries, test programs, tools, and utilities, as well as the author's related journal articles. New and updated imperfections, along with software libraries and example code are available online at http: //imperfectcplusplus.com. (c) Copyright Pearson Education. All rights reserved.
This book is about coding interview question of software and Internet companies. It covers five key factors which determine performance of candidates: (1) the basics of programming languages, data structures and algorithms, (2) approaches to writing code with high quality, (3) tips to solve difficult problems, (4) methods to optimize code, (5) soft skills required in interviews. The basics of languages, algorithms and data structures are discussed as well as questions that explore how to write robust solutions after breaking down problems into manageable pieces. It also includes examples to focus on modeling and creative problem solving. Interview questions from the most popular companies in the IT industry are taken as examples to illustrate the five factors above. Besides solutions, it contains detailed analysis, how interviewers evaluate solutions, as well as why they like or dislike them. Readers will improve their interview performance after reading this book. It will be beneficial for them even after they get offers, because its topics, such as approaches to analyzing difficult problems, writing robust code and optimizing, are all essential for high-performing coders. What you’ll learn Necessary knowledge for coding interviews, including programming languages, algorithms and data structures Tips to write complete and robust code Approaches to simplifying and solving difficult problems, with examples, figures and discussion Methods to optimizing memory and space efficiency Tips to demonstrate communication skills and learning skills during interviews Standards in interviewers’ minds to evaluate candidates’ performance Who this book is for Targeted audiences of this book include students who are interested in programming-related careers, as well as developers with less-than-three-year experience who are looking for more career opportunities.
C# Deconstructed answers a seemingly simply question: Just what is going on, exactly, when you run C# code on the .NET Framework? To answer this question we will dig ever deeper into the structure of the C# language and the onion-skin abstraction layers of the .NET Framework that underpins it. We’ll follow the execution thread downwards, first to MSIL (Microsoft Intermediate Language) then down through just-in-time compilation into Machine Code before finally seeing the results executed at the hardware level. The aim of this deep-dive is to provide you with a much more rounded knowledge of the environment within which you code exists. As a managed language, it’s best-practice to let the Framework deal with device interaction but you’ll find the experience of taking the cover off once in a while a very rewarding one that will greatly enrich your appreciate of the C# language and the way in which in functions. What you’ll learn Understand how C# handles your filesystem requests and passes them down to hard disks and memory Learn how RAM works and how programs map to address spaces Discover the C# compilation sequence in detail and follow it down from abstract code to actual function See how your device’s micro-processor executes Machine Code and just-in-time compilation provides it when it’s needed Learn how the Common Language Runtime (CLR) determines the execution of your code and handles Threading and Scheduling for your instructions Who this book is for This book is ideal for anyone who works with C# and has ever wondered what happens after they press F5. Table of Contents Anatomy of the C# compilation stack Data Access, Files and Storage Understanding Memory Usage The C# Compilation Sequence From CIL to Machine Code Execution through the CLR Execution Model II