软件工程
分布式系统与一致性 豆瓣
作者: 陈东明 2021 - 6
一致性是非常重要的分布式技术。众所周知,分布式系统有很多特性,如可用性、可靠性等,这些特性多多少少会与一致性产生关系,受到一致性的影响。要全面研究、掌握分布式技术,一致性是绕不开的一个话题,也是最难解决的一个问题。本书主要介绍GFS、HDFS、BigTable、MongoDB、RabbitMQ、ZooKeeper、Spanner、CockroachDB系统与一致性有关的实现细节,以及非常重要的Paxos、Raft、Zab分布式算法;本书还介绍了事务一致性与隔离级别、顺序一致性、线性一致性与强一致性相关内容,以及架构设计中的权衡等。
从分布式技术的角度来说,本书讲解了分布式领域比较高阶的内容,但是从分布式一致性的角度来说,本书仍然是一致性的入门书。
2021年6月26日 已读
微信读书借阅 过了一遍框架和protocol。其实学一下6.824就都有更深入的理解。
2021 IT 软件工程 分布式
云原生服务网格Istio:原理、实践、架构与源码解析 豆瓣
作者: 张超盟,章鑫,徐中虎,徐飞 2019 - 7
本书分为原理篇、实践篇、架构篇和源码篇,由浅入深地将Istio项目庖丁解牛并呈现给读者。
原理篇介绍了服务网格技术与Istio项目的技术背景、设计理念与功能原理,能够帮助读者了解服务网格这一云原生领域的标志性技术,掌握Istio流量治理、策略与邀测和安全功能的使用方法。
实践篇从零开始搭建Istio运行环境并完成一个真实应用的开发、交付、上线监控与治理的完整过程,能够帮助读者熟悉Istio的功能并加深对Istio的理解。
架构篇剖析了Istio项目的三大核心子项目Pilot、Mixer、Citadel的详细架构,帮助读者熟悉Envoy、Galley、Pilot-agent等相关项目,并挖掘Istio代码背后的设计与实现思想。
源码篇对Istio各个项目的代码结构、文件组织、核心流程、主要数据结构及各主要代码片段等关键内容都进行了详细介绍,读者只需具备一定的Go语言基础,便可快速掌握Istio各部分的实现原理,并根据自己的兴趣深入了解某一关键机制的完整实践。
本书提供源代码下载,参见 http://github.com/cloudnativebooks/cloud-native-istio。
无论是对于刚入门Istio的读者,还是对于已经在产品中使用Istio的读者,本书都极具参考价值。
2021年6月26日 想读 讲挺好,理清Istio vs Spring Cloud, 以及Istio相对的优点 #IstioCon2021 <Best practice from Spring Cloud to Istio> 265 views Mar 10, 2021
软件工程 IT 微服务
Staff Engineer 豆瓣
Staff Engineer: Leadership beyond the management track
作者: Will Larson Will Larson 2021 - 1
At most technology companies, you'll reach Senior software engineer, the career level for software engineers, in five to eight years. At the career level, your company's career ladder won't require that you work towards the next promotion; being promoted further is an exception rather than expected. This is also when many engineers are first given an opportunity to move into engineering management. Over the past few years, we've seen a flurry of books unlocking the engineering management career path, like Camille Fournier's The Manager's Path, Julie Zhuo's The Making of a Manager, Lara Hogan's Resilient Management, and even my own An Elegant Puzzle. The engineering management career isn't an easy one, but there are maps available to help navigate it. What if you want to advance your career without becoming an engineering manager? The technical leadership path remains relatively undocumented, hard to navigate, and inconsistent across companies. Staff Engineer is your guide to building your career towards a Staff engineering role, receiving the title, and succeeding within the role.
软件困局 豆瓣
The Problem With Software: Why Smart Engineers Write Bad Code
作者: [美] 亚当·巴尔(Adam Barr) 译者: 桥海燕 / 曾烈康 2019 - 11
在外行看来,程序员们是一群聪明的工程师。他们整日思考复杂深奥的工程问题,编写逻辑缜密的程序代码,开发可靠易用的用户软件。然而,在内行看来,在软件工程这件事上,程序员们的工作往往不尽人意。为什么聪明的工程师们写不出聪明的代码呢?针对这个问题,作者结合多年的职业生涯经历,从多个角度进行了分析和讨论,涉及范围包括程序员的大学教育,软件开发的生命周期,软件工程的复杂性,程序设计语言发展历史,软件工程方法演变历程,等等。本书行文幽默风趣,将经典翔实的史料和形象生动的例子娓娓道来,不仅对软件工程的本质进行了深入的探讨,还为软件工程的从业者提出了实用的建议。
2021年6月23日 想读 “软件工程其实并没有多少’工程‘的成分,这已经是公开的秘密了。自计算机诞生以来,特别是20世纪60年代大批软件问世之后,围绕软件的种种问题一直伴随且困扰着从事软件生产和研究的人们。本书对这些问题做了深入细致的分析和探讨,并提出了诸多实用且可行的建议。”
IT 软件工程
软件架构设计 豆瓣
作者: 余春龙 电子工业出版社 2019 - 2
《软件架构设计:大型网站技术架构与业务架构融合之道》围绕软件架构设计,系统化地梳理技术架构与业务架构的方法论与实践。《软件架构设计:大型网站技术架构与业务架构融合之道》内容分为5 大部分,第1 部分定义架构的概念和范畴;第2 部分从编程语言、操作系统、网络、数据库、框架、中间件等方面入手,介绍架构学的基础知识;第3 部分从高并发、高可用与稳定性、一致性、CAP 理论等角度,分析技术架构知识;第4 部分从业务架构思维、技术架构与业务架构的融合角度,阐述业务架构知识;第5 部分从个人素质、团队能力两大方面,诠释从技术到管理的转变方法。通过本书,读者可以对业务软件的架构方法学有全局的认识,同时对软件架构的核心能力有深刻的理解,对个人的技术成长起到一定的借鉴作用。
《软件架构设计:大型网站技术架构与业务架构融合之道》不仅适合工程师、架构师阅读,也适合企业系统开发人员在内的软件开发从业人员阅读。
Spring Cloud 豆瓣
作者: 杨开振 2020 - 5
《Spring Cloud微服务和分布式系统实践》从企业的真实需求出发,理论结合实际,深入讲解Spring Cloud微服务和分布式系统的知识。书中既包括Spring Cloud微服务的各类常用组件的讲解,又包括分布式系统的常用知识的介绍。Spring Cloud组件方面主要讲解服务注册和服务发现(Eureka)、服务调用(Ribbon和OpenFeign)、断路器(Hystrix和Resilience4j)、网关(Zuul和Gateway)、配置(Config)、全链路追踪(Sleuth)、微服务的监控(Admin)等;分布式系统方面主要讲解分布式数据库、分布式缓存、会话和权限以及发号机制等。本书的实践部分通过Apache Thrift讲解了远程过程调用(RPC)在分布式系统中的应用,并且分析了处理高并发的一些常用方法,最后还通过一个简单的实例讲解了微服务系统的搭建。
本书适合想要学习Spring Cloud微服务、分布式系统开发的各类Java开发人员阅读,包括初学者和开发工程师。本书对架构师也有一定的帮助。
Design Patterns for Cloud Native Applications: Patterns in Practice Using APIs, Data, Events, and Streams 豆瓣
O'Reilly Media Inc. 2021 - 6
With the immense cost savings and scalability the cloud provides, the rationale for building cloud native applications is no longer in question. The real issue is how. With this practical guide, developers will learn about the most commonly used design patterns for building cloud native applications using APIs, data, events, and streams in both greenfield and brownfield development.
You'll learn how to incrementally design, develop, and deploy large and effective cloud native applications that you can manage and maintain at scale with minimal cost, time, and effort. Authors Kasun Indrasiri and Sriskandarajah Suhothayan highlight use cases that effectively demonstrate the challenges you might encounter at each step.
Learn the fundamentals of cloud native applications
Explore key cloud native communication, connectivity, and composition patterns
Learn decentralized data management techniques
Use event-driven architecture to build distributed and scalable cloud native applications
Explore the most commonly used patterns for API management and consumption
Examine some of the tools and technologies you'll need for building cloud native systems
Deep Learning for Coders with fastai and PyTorch Goodreads 豆瓣
作者: Sylvain Gugger / Jeremy Howard O'Reilly Media 2020 - 2
Deep learning has the reputation as an exclusive domain for math PhDs. Not so. With this book, programmers comfortable with Python will learn how to get started with deep learning right away.
Using PyTorch and the fastai deep learning library, you’ll learn how to train a model to accomplish a wide range of tasks—including computer vision, natural language processing, tabular data, and generative networks. At the same time, you’ll dig progressively into deep learning theory so that by the end of the book you’ll have a complete understanding of the math behind the library’s functions.
2021年6月1日 在读
Jeremy的学习思路很赞,类似Bidirectional BFS。先学一点model from scratch (simple 3-layer NN) & fastai lib (transfer ResNet34), 然后bottom-up & top-down,同时深入学习,当交汇的时候就说明完整掌握了。
全书就是 Jupyter Notebook: github.com/fastai/fastbook/clean/. 直接在 Colab打开 (runtime改为GPU即可, 利用transfer learning, 所以免费instance即可)
课程见https://course.fast.ai/ 有2020版part 1
AI学术界很多Jargon,写成code就通俗易懂了。
AI 计算机科学 软件工程
Coding Places 豆瓣
作者: Yuri Takhteyev MIT Press 2012 - 9
Software development would seem to be a quintessential example of today's Internet-enabled "knowledge work"--a global profession not bound by the constraints of geography. In Coding Places, Yuri Takhteyev looks at the work of software developers who inhabit two contexts: a geographical area--in this case, greater Rio de Janeiro--and a "world of practice," a global system of activities linked by shared meanings and joint practice. The work of the Brazilian developers, Takhteyev discovers, reveals a paradox of the world of software: it is both diffuse and sharply centralized. The world of software revolves around a handful of places--in particular, the San Francisco Bay area--that exercise substantial control over both the material and cultural elements of software production. Takhteyev shows how in this context Brazilian software developers work to find their place in the world of software and to bring its benefits to their city. Takhteyev's study closely examines Lua, an open source programming language developed in Rio but used in such internationally popular products as World of Warcraft and Angry Birds. He shows that Lua had to be separated from its local origins on the periphery in order to achieve success abroad. The developers, Portuguese speakers, used English in much of their work on Lua. By bringing to light the work that peripheral practitioners must do to give software its seeming universality, Takhteyev offers a revealing perspective on the not-so-flat world of globalization.
图解HTTP 豆瓣 Goodreads
HTTPの教科書
8.0 (49 个评分) 作者: [日] 上野宣 译者: 于均良 人民邮电出版社 2014 - 4
图解HTTP》对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,**后延伸到Web安全、**新技术动向等方面。《图解HTTP》的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过《图解HTTP》快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。
《图解HTTP》适合Web开发工程师,以及对HTTP协议感兴趣的各层次读者。
程序员面试金典(第6版) 豆瓣
Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions
9.0 (8 个评分) 作者: Gayle Laakmann McDowell 译者: 刘博楠 / 赵鹏飞 人民邮电出版社 2019 - 9
本书是原谷歌资深面试官的经验之作,层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。内容主要涉及面试流程解析,面试官的幕后决策及可能提出的问题,面试前的准备工作,对面试结果的处理,以及出自微软、苹果、谷歌等多家知名公司的189道编程面试题及详细解决方案。第6版修订了上一版中一些题目的解法,为各章新增了介绍性内容,加入了更多的算法策略,并增添了对所有题目的提示信息。
Kubernetes源码剖析 豆瓣
作者: 郑东旭 2020 - 6
《Kubernetes源码剖析 》主要分析了Kubernetes核心功能的实现原理,是一本帮助读者了解Kubernetes架构设计及内部原理实现的书。由于Kubernetes代码量较大,源码不容易理解,所以本书将梳理相关知识点,帮助读者快速学习。 本书共分为8章,第1章简要介绍了Kubernetes架构的核心组件,以及每个核心组件在架构中的作用;第2章主要介绍了Kubernetes构建过程中的源码实现;第3章主要介绍了Kubernetes的核心数据结构定义及围绕资源展开的核心功能;第4章主要介绍了kubectl命令行交互工具的实现机制;第5章主要介绍了client-go编程式交互工具的实现机制;第6章主要介绍了Etcd存储的核心实现;第7章主要介绍了kube-apiserver组件的核心实现;第8章主要介绍了kube-scheduler组件的核心实现。
Apache Kafka源码剖析 豆瓣
作者: 徐郡明 2017 - 5
《Apache Kafka源码剖析》以Kafka 0.10.0版本源码为基础,针对Kafka的架构设计到实现细节进行详细阐述。《Apache Kafka源码剖析》共5章,从Kafka的应用场景、源码环境搭建开始逐步深入,不仅介绍Kafka的核心概念,而且对Kafka生产者、消费者、服务端的源码进行深入的剖析,最后介绍Kafka常用的管理脚本实现,让读者不仅从宏观设计上了解Kafka,而且能够深入到Kafka的细节设计之中。在源码分析的过程中,还穿插了笔者工作积累的经验和对Kafka设计的理解,希望读者可以举一反三,不仅知其然,而且知其所以然。
《Apache Kafka源码剖析》旨在为读者阅读Kafka源码提供帮助和指导,让读者更加深入地了解Kafka的运行原理、设计理念,让读者在设计分布式系统时可以参考Kafka的优秀设计。《Apache Kafka源码剖析》的内容对于读者全面提升自己的技术能力有很大帮助。
Netty源码剖析与应用 豆瓣
作者: 刘耀林 2020 - 11
Netty涉及多线程技术、复杂数据结构与内存管理模型,它运用了各种设计模式及一些TCP的底层技术。本书对这些难点一一进行攻破,让读者能快速掌握相关知识。
《Netty源码剖析与应用》包含大量的分布式底层架构的编写,涉及多线程、负载均衡算法、性能调优、线上问题紧急处理等内容。本书通过非常简易的代码来讲解Netty在企业中的实际用法,通过对实例进行调试的方式对Netty源码进行了详细的剖析,力图使读者通过实际操作快速入门,并深入了解Netty底层的各个组件。
本书适合有一定Java基础的架构师、设计师、开发工程师、测试工程师,以及对Java NIO框架、Netty感兴趣的相关人士阅读。
架构整洁之道 豆瓣 Goodreads
Clean Architecture
9.4 (13 个评分) 作者: 【美】Robert C. Martin(罗伯特 C. 马丁) 电子工业出版社 2018 - 9
《架构整洁之道》是创造“Clean神话”的Bob大叔在架构领域的登峰之作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。《架构整洁之道》分为6部分,第1部分纲领性地提出软件架构设计的终极目标,描述软件架构设计的重点与模式;第2~4部分从软件开发中三个基础编程范式的定义和特征出发,进一步描述函数、组件、服务设计与实现的定律,以及它们是如何有效构建软件系统的整体架构的;第5部分从整洁架构的定义开始,详细阐述软件架构设计过程中涉及的方方面面,包括划分内部组件边界、应用常见设计模式、避开错误、降低成本、处理特殊情况等,并以实战案例将内容有机整合起来;第6部分讲述具体实现细节;附录则透过作者数十年的软件从业经历再次印证《架构整洁之道》的观点。
对于每一位软件研发从业人员——无论从事的是具体编码实现、架构设计,还是软件研发管理,《架构整洁之道》都是不可或缺的。
Netty、Redis、Zookeeper高并发实战 豆瓣
作者: 尼恩 2019 - 8
本书为了让读者扎稳高性能基础,浅显易懂地剖析高并发IO的底层原理,细致细腻地解析Reactor高性能模式,图文并茂地介绍Java异步回调模式。掌握这些基础原理,能够帮助读者解决Java后台开发的一些实际问题。
本书共12章,主要介绍高性能通信框架Netty,并详尽介绍Netty的EventLoop、Handler、Pipeline、ByteBuf、Decoder、Encoder等重要组件,然后介绍单体IM的实战设计和模块实现。本书对ZooKeeper、 Curator API、Redis、Jedis API的使用也进行详尽的介绍,让读者具备高并发、可扩展系统的设计和开发能力。
2021年5月5日 在读 epoll, Reactor. Redis使用单线程Reactor模型 vs kafka主从Reactor模型。
软件工程
高性能架构之道 豆瓣
作者: 易哥 2021 - 3
本书是一本理论联系实际的软件架构设计指导书,旨在帮助读者完成高性能软件系统的架构设计工作。书中涉及分布式、并发编程、数据库调优、缓存、IO、前端性能优化等方面的理论知识,并在理论知识的基础上推导其实践技巧。本书最后还运用书中知识完成了一个实际软件项目的架构设计工作。本书适合软件架构师、工程师、学生阅读,以帮助其完善软件开发知识体系和提升其软件架构设计能力。
深入Java虚拟机:JVM G1GC的算法与实现 豆瓣
徹底解剖「G1GC」 アルゴリズム編+徹底解剖「G1GC」実装編
作者: [日]中村成洋 译者: 吴炎昌 / 杨文轩 人民邮电出版社 2020
本书深入Java虚拟机底层原理,对JVM内存管理中的垃圾回收算法G1GC进行了详细解读。全书分为“算法篇”和“实现篇”两大部分:前一部分主要介绍G1GC的算法原理,内容包括G1GC的并发标记、转移功能、软实时性的实现和分代G1GC模式;后一部分聚焦算法篇中没有详细讲解的实现部分,基于HotSpotVM源码,讲解对象管理功能、内存分配器的机制、线程管理方法和G1GC的具体实现。
本书以图配文,通俗易懂,既系统介绍了G1GC的基础算法,又贴近现实,剖析了实用JVM中的G1GC实现,同时还包含了作者对G1GC的研究成果和独到见解,是深入理解JVM和G1GC机制的佳作。
Learning Go 豆瓣
作者: Jon Bodner O'Reilly Media, Inc. 2021 - 5
Go is rapidly becoming the preferred language for building web services. There are plenty of tutorials available that teach Go’s syntax to developers with experience in other programming languages. But tutorials aren’t enough. They don’t teach Go’s idioms, so developers end up recreating patterns that don’t make sense in a Go context. This practical guide provides the essential background you need to write clear and idiomatic Go.
No matter your level of experience, you'll learn how to think like a Go developer. Author Jon Bodner explains the rationale behind the Go team’s design decisions and reveals design patterns that experienced Go developers have adopted. You’ll learn how to structure your project and choose the proper tools and libraries to create successful software.
Learn how to write idiomatic code in Go and design a Go project
Understand the reasons for the design decisions in Go
Set up a Go development environment for a solo developer or team
Explore which libraries to select when solving problems
Learn how Go’s features allow the language to run efficiently
Know which Go features you should use sparingly, or not at all
Cloud Native Go 豆瓣
作者: Matthew A. Titmus O'Reilly Media, Inc. 2021 - 5
## Book Description
What do Docker, Kubernetes, and Prometheus have in common? All of these cloud native technologies are written in the Go programming language. This practical book shows you how to use Go’s strengths to develop cloud native services that are scalable and resilient, even in an unpredictable environment. You’ll explore the composition and construction of these applications, from lower-level features of Go to mid-level design patterns to high-level architectural considerations.
Each chapter builds on the lessons of the last, walking intermediate to advanced developers through Go to construct a simple but fully featured distributed key-value store. You’ll learn best practices for adopting Go as your cloud native development language for solving cloud native management and deployment issues.
Learn how cloud native applications differ from other software architectures
Understand how Go can solve the challenges of designing scalable, distributed services
Leverage Go’s lower-level features, such as channels and goroutines, to implement a reliable cloud native service
Explore what "service reliability" is and what it has to do with "cloud native"
Apply a variety of patterns, abstractions, and tooling to build and manage complex distributed systems