软件工程
Soft Skills 豆瓣 Goodreads
8.4 (5 个评分) 作者: John Sonmez Manning Publications 2014 - 12
Soft Skills: The software developer's life manual is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer. In it, developer and life coach John Sonmez addresses a wide range of important "soft" topics, from career and productivity to personal finance and investing, and even fitness and relationships, all from a developer-centric viewpoint.
聊聊架构 豆瓣
作者: 王概凯 2017 - 5
我们总是喜欢借鉴别人的架构实践,参考别人的架构图,但体会过的人都知道,由于各家公司的行业背景、发展情况、人力资源都不同,所以真正意义上的架构借鉴难度很大。 《聊聊架构》希望揭开事物的外在“表皮”,再现架构深层之理,向读者揭示最本质的架构之道。
架构是如何运作并影响人们的日常生活的,在软件行业中架构是如何运作的?架构又是如何指导代码编写的,如何把架构应用在软件工程实践上?带着这些疑问,《聊聊架构》通过大量的实例一步一步揭示出架构背后的原理,以及架构在软件行业的发展,并通过企业实例来展示软件架构的实际应用。《聊聊架构》没有高深的词汇,不仅适合IT 从业人员阅读,也适合其他行业的人士阅读。尤其对于想从事架构工作的人而言,是一本不可多得的参考材料。
Spark内核设计的艺术 豆瓣
作者: 耿嘉安 2018 - 1
多位专家联袂推荐,360大数据专家撰写,基于Spark 2.1.0剖析架构与实现精髓。细化到方法级,提炼出多个流程图,立体呈现架构、环境、调度、存储、计算、部署、API七大核心设计。本书一共有10章内容,主要包括以下部分。
准备部分(第1~2章):简单介绍了Spark的环境搭建和基本原理。本部分通过详尽的描述,有效降低了读者进入Spark世界的门槛,同时能对Spark背景知识及整体设计有宏观的认识。
基础部分(第3~5章):介绍Spark的基础设施(包括配置、RPC、度量等)、SparkContext的初始化、Spark执行所需要的环境等内容。经过此部分的学习,将能够对RPC框架的设计、执行环境的功能有深入的理解,这也是对核心内容了解的前提。
核心部分(第6~9章):为Spark最核心的部分,包括存储体系、调度系统、计算引擎、部署模式等。通过本部分的学习,读者将充分了解Spark的数据处理体系细节,能够对Spark核心功能进行扩展、性能优化以及对线上问题进行精准排查。
API部分(第10章):这部分主要对Spark的新老API进行对比,对新API进行简单介绍。
Pthreads Programming 豆瓣
作者: Bradford Nichols / Dick Buttlar O'Reilly Media 1996 - 9
POSIX threads, or pthreads, allow multiple tasks to run concurrently within the same program. They can share a single CPU as processes do, or take advantage of multiple CPUs when available. In either case, they provide a clean way to divide the tasks of a program while sharing data. This book thoroughly covers the POSIX threads standard, which is supported by the Distributed Computer Environment (DCE), as well as Solaris, OSF/1, AIX, and several other UNIX-based operating systems. In this book you will learn not only what the pthread calls are, but when it is a good idea to use threads and how to make them efficient (which is the whole reason for using threads in the first place). The authors delves into performance issues, comparing threads to processes, contrasting kernel threads to user threads, and showing how to measure speed. He also clearly describes all the advanced features and how threads interact with the rest of the UNIX system.
Streaming Systems 豆瓣
作者: Tyler Akidau / Slava Chernyak O'Reilly Media 2017 - 10
Streaming data is a big deal in big data these days. As more and more businesses seek to tame the massive unbounded data sets that pervade our world, streaming systems have finally reached a level of maturity sufficient for mainstream adoption. With this practical guide, data engineers, data scientists, and developers will learn how to work with streaming data in a conceptual and platform-agnostic way.
Expanded from Tyler Akidau’s popular blog posts "Streaming 101" and "Streaming 102", this book takes you from an introductory level to a nuanced understanding of the what, where, when, and how of processing real-time data streams. You’ll also dive deep into watermarks and exactly-once processing with co-authors Slava Chernyak and Reuven Lax.
You’ll explore:
How streaming and batch data processing patterns compare
The core principles and concepts behind robust out-of-order data processing
How watermarks track progress and completeness in infinite datasets
How exactly-once data processing techniques ensure correctness
How the concepts of streams and tables form the foundations of both batch and streaming data processing
The practical motivations behind a powerful persistent state mechanism, driven by a real-world example
How time-varying relations provide a link between stream processing and the world of SQL and relational algebra
Refactoring to Patterns 豆瓣
作者: Joshua Kerievsky Addison-Wesley Professional 2004 - 8
In 1994, Design Patterns changed the landscape of object-oriented development by introducing classic solutions to recurring design problems. In 1999, Refactoring revolutionized design by introducing an effective process for improving code. With the highly anticipated Refactoring to Patterns, Joshua Kerievsky has changed our approach to design by forever uniting patterns with the evolutionary process of refactoring. This book introduces the theory and practice of pattern-directed refactorings: sequences of low-level refactorings that allow designers to safely move designs to, towards, or away from pattern implementations. Using code from real-world projects, Kerievsky documents the thinking and steps underlying over two dozen pattern-based design transformations. Along the way he offers insights into pattern differences and how to implement patterns in the simplest possible ways. Coverage includes: * A catalog of twenty-seven pattern-directed refactorings, featuring real-world code examples * Descriptions of twelve design smells that indicate the need for this book's refactorings * General information and new insights about patterns and refactoring * Detailed implementation mechanics: how low-level refactorings are combined to implement high-level patterns * Multiple ways to implement the same pattern-and when to use each * Practical ways to get started even if you have little experience with patterns or refactoring Refactoring to Patterns reflects three years of refinement and the insights of more than sixty software engineering thought leaders in the global patterns, refactoring, and agile development communities. Whether you're focused on legacy or "greenfield" development, this book will make you a better software designer by helping you learn how to make important design changes safely and effectively.
Implementation Patterns 豆瓣
作者: Kent Beck Addison-Wesley Professional 2007 - 11
“Many teams have a master developer who makes a rapid stream of good decisions all day long. Their code is easy to understand, quick to modify, and feels safe and comfortable to work with. If you ask how they thought to write something the way they did, they always have a good reason. This book will help you become the master developer on your team. The breadth and depth of topics will engage veteran programmers, who will pick up new tricks and improve on old habits, while the clarity makes it accessible to even novice developers.”
by Russ Rufer, Silicon Valley Patterns Group
“Many people don't realize how readable code can be and how valuable that readability is. Kent has taught me so much, I'm glad this book gives everyone the chance to learn from him.”
by Martin Fowler, chief scientist, ThoughtWorks
“Code should be worth reading, not just by the compiler, but by humans. Kent Beck distilled his experience into a cohesive collection of implementation patterns. These nuggets of advice will make your code truly worth reading.”
by Gregor Hohpe, author of Enterprise Integration Patterns
“In this book Kent Beck shows how writing clear and readable code follows from the application of simple principles. Implementation Patterns will help developers write intention revealing code that is both easy to understand and flexible towards future extensions. A must read for developers who are serious about their code.”
by Sven Gorts
“Implementation Patterns bridges the gap between design and coding. Beck introduces a new way of thinking about programming by basing his discussion on values and principles.”
by Diomidis Spinellis, author of Code Reading and Code Quality
Software Expert Kent Beck Presents a Catalog of Patterns Infinitely Useful for Everyday Programming, Great code doesn't just function: it clearly and consistently communicates your intentions, allowing other programmers to understand your code, rely on it, and modify it with confidence. But great code doesn't just happen. It is the outcome of hundreds of small but critical decisions programmers make every single day. Now, legendary software innovator Kent Beck—known worldwide for creating Extreme Programming and pioneering software patterns and test-driven development–focuses on these critical decisions, unearthing powerful “implementation patterns” for writing programs that are simpler, clearer, better organized, and more cost effective.
Beck collects 77 patterns for handling everyday programming tasks and writing more readable code. This new collection of patterns addresses many aspects of development, including class, state, behavior, method, collections, frameworks, and more. He uses diagrams, stories, examples, and essays to engage the reader as he illuminates the patterns. You'll find proven solutions for handling everything from naming variables to checking exceptions.
This book covers:
The value of communicating through code and the philosophy behind patterns
How and when to create classes, and how classes encode logic
Best practices for storing and retrieving state
Behavior: patterns for representing logic, including alternative paths
Writing, naming, and decomposing methods
Choosing and using collections
Implementation pattern variations for use in building frameworks
Implementation Patterns will help programmers at all experience levels, especially those who have benefited from software patterns or agile methods. It will also be an indispensable resource for development teams seeking to work together more efficiently and build more maintainable software. No other programming book will touch your day-to-day work more often.
A Philosophy of Software Design 豆瓣 谷歌图书 Goodreads
8.8 (12 个评分) 作者: John Ousterhout Yaknyam Press 2018 - 4
This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process, and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly
Refactoring 豆瓣 Goodreads
作者: Martin Fowler / Kent Beck Addison-Wesley Professional 1999 - 7
Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works The book is written using Java as its principle language, but the ideas are applicable to any OO language.
Database System Concepts 豆瓣
8.4 (5 个评分) 作者: Abraham Silberschatz / Henry F. Korth McGraw-Hill Education 2010 - 3
"Database System Concepts" by Silberschatz, Korth and Sudarshan is now in its 6th edition and is one of the cornerstone texts of database education. It presents the fundamental concepts of database management in an intuitive manner geared toward allowing students to begin working with databases as quickly as possible. The text is designed for a first course in databases at the junior/senior undergraduate level or the first year graduate level. It also contains additional material that can be used as supplements or as introductory material for an advanced course. Because the authors present concepts as intuitive descriptions, a familiarity with basic data structures, computer organization, and a high-level programming language are the only prerequisites. Important theoretical results are covered, but formal proofs are omitted. In place of proofs, figures and examples are used to suggest why a result is true.
用Mesos框架构建分布式应用 豆瓣
作者: 【美】David Greenberg 译者: 崔婧雯 2017 - 1
Apache Mesos是先进的集群管理器,既可以作为灵活的部署系统,也可以作为强大的执行平台。它不仅为分布式应用程序提供了良好的资源隔离,而且突破性地实现了资源的灵活共享,极大地提高了资源的整体利用率。
《用Mesos框架构建分布式应用》深入浅出,首先介绍了Mesos的基础知识,随后重点介绍Mesos的两种开源框架(Marathon和Chronos)。以实际程序样例为线索,一步步讲解如何配置,如何交互,以及如何构建深度集成。接着详细介绍如何为Mesos构建自定义的框架,如何构建核心Mesos API。最后深入研究Mesos的一些高级特性,比如和Docker的集成、其内部架构,以及一些最先进的API,包括数据库的持久化磁盘管理和框架预约系统。
重构 豆瓣
Refactoring: Improving the Design of Existing Code
8.5 (20 个评分) 作者: Martin Fowler 译者: 熊节 人民邮电出版社 2010
重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。
本书凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。
自己动手写Java虚拟机 豆瓣
作者: 张秀宏 2016 - 6
Java虚拟机非常复杂,要想真正理解它的工作原理,最好的方式就是自己动手编写一个!
本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!
本书摒弃了传统的以解读枯燥的Java虚拟机规范文档和分析繁琐的Java虚拟机源代码的方式来讲解Java虚拟机,取而代之的是,以实践的方式,引导读者如何从零开始构建和实现一个Java虚拟机,整个过程不仅能让读者做到对Java虚拟机知其然而且知其所以然,还能屏蔽大量不必要的繁琐细节,体会到实现过程中的成就感,让学习过程更加轻松、愉悦和高效。更重要的是,这种方式能引导读者更深入地认识和掌握Java虚拟机的工作原理。
The Architecture of Open Source Applications 豆瓣 Goodreads
7.7 (6 个评分) 作者: Amy Brown lulu.com 2012 - 3
Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.
This book's goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think.
If you are a junior developer, and want to learn how your more experienced colleagues think, this book is the place to start. If you are an intermediate or senior developer, and want to see how your peers have solved hard design problems, this book can help you too.
NoSQL Distilled 豆瓣 Goodreads
作者: Pramod J. Sadalage / Martin Fowler Addison-Wesley Professional 2012 - 8
The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational "NoSQL" databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program. NoSQL Distilled is a concise but thorough introduction to this rapidly emerging technology. Pramod J. Sadalage and Martin Fowler explain how NoSQL databases work and the ways that they may be a superior alternative to a traditional RDBMS. The authors provide a fast-paced guide to the concepts you need to know in order to evaluate whether NoSQL databases are right for your needs and, if so, which technologies you should explore further. The first part of the book concentrates on core concepts, including schemaless data models, aggregates, new distribution models, the CAP theorem, and map-reduce. In the second part, the authors explore architectural and design issues associated with implementing NoSQL. They also present realistic use cases that demonstrate NoSQL databases at work and feature representative examples using Riak, MongoDB, Cassandra, and Neo4j. In addition, by drawing on Pramod Sadalage's pioneering work, NoSQL Distilled shows how to implement evolutionary design with schema migration: an essential technique for applying NoSQL databases. The book concludes by describing how NoSQL is ushering in a new age of Polyglot Persistence, where multiple data-storage worlds coexist, and architects can choose the technology best optimized for each type of data access.