软件工程
Principles of Distributed Database Systems 豆瓣
作者: M. Tamer Özsu / Patrick Valduriez Springer 2020 - 1
The fourth edition of this classic textbook provides major updates. This edition has completely new chapters on Big Data Platforms (distributed storage systems, MapReduce, Spark, data stream processing, graph analytics) and on NoSQL, NewSQL and polystore systems. It also includes an updated web data management chapter that includes RDF and semantic web discussion, an integrated database integration chapter focusing both on schema integration and querying over these systems. The peer-to-peer computing chapter has been updated with a discussion of blockchains. The chapters that describe classical distributed and parallel database technology have all been updated.
The new edition covers the breadth and depth of the field from a modern viewpoint. Graduate students, as well as senior undergraduate students studying computer science and other related fields will use this book as a primary textbook. Researchers working in computer science will also find this textbook useful.
This textbook has a companion web site that includes background information on relational database fundamentals, query processing, transaction management, and computer networks for those who might need this background. The web site also includes all the figures and presentation slides as well as solutions to exercises (restricted to instructors).
Python工匠 豆瓣
8.8 (13 个评分) 作者: 朱雷(@piglei) 图灵|人民邮电出版社
◎ 编辑推荐
☆本书基于作者的开源GitHub图书,广受读者喜爱,市面上难得的原创Python进阶图书。
☆写作方式别具一格,核心知识点通过三大板块来阐述:基础知识、案例故事、编程建议。
其中基础知识帮助大家快速回顾Python基础;案例故事由作者经历的编程项目与案 例改编而来,兼具实战性与趣味性;编程建议以大家喜闻乐见的条目式知识点呈现,短小精悍,可直接应用于自己的编程实践中。
◎ 内容简介
本书基于广受好评的“Python工匠”系列开源文章。
全书从工程实践角度出发,通过剖析核心知识、展示典型案例与总结实用技巧,帮助大家系统进阶Python,写好工程代码,做好实践项目。
本书共计13章,分为五大部分:变量与基础类型、语法结构、函数与装饰器、面向对象编程、总结与延伸,涵盖Python编程的方方面面。
Designing Data-Intensive Applications 豆瓣 Goodreads
9.4 (22 个评分) 作者: Martin Kleppmann O'Reilly Media 2017 - 4
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords?
In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications.
Peer under the hood of the systems you already use, and learn how to use and operate them more effectively
Make informed decisions by identifying the strengths and weaknesses of different tools
Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity
Understand the distributed systems research upon which modern databases are built
Peek behind the scenes of major online services, and learn from their architectures
MySQL是怎样运行的 豆瓣 Goodreads
小孩子4919
作者: 小孩子4919 People Post Press 2020 - 11
《MySQL是怎样运行的:从根儿上理解 MySQL》采用诙谐幽默的表达方式,对MySQL的底层运行原理进行了介绍,内容涵盖了使用MySQL的同学在求职面试和工作中常见的一些核心概念。
《MySQL是怎样运行的:从根儿上理解 MySQL》总计22 章,划分为4个部分。第1部分介绍了MySQL入门的一些知识,比如MySQL的服务器程序和客户端程序有哪些、MySQL的启动选项和系统变量,以及使用的字符集等。第2部分是本书后续章节的基础,介绍了MySQL的一些基础知识,比如记录、页面、索引、表空间的结构和用法等。第3部分则与大家在工作中经常遇到的查询优化问题紧密相关,介绍了单表查询、连接查询的执行原理,MySQL基于成本和规则的优化具体指什么,并详细分析了Explain语句的执行结果。第4部分则是与MySQL中的事务和锁相关,介绍了事务概念的来源,MySQL是如何实现事务的,包括redo日志、undo日志、MVCC、各种锁的细节等。
尽管《MySQL是怎样运行的:从根儿上理解 MySQL》在写作时参考的MySQL源代码版本是5.7.22,但是大部分内容与具体的版本号并没有多大关系。无论是很早之前就已身居MySQL专家的人员,还是希望进一步提升技能的DBA,甚至是三五年后才会入行的“萌新”,本书都是他们彻底了解MySQL运行原理的优秀图书。
PostgreSQL技术内幕:事务处理深度探索 豆瓣
作者: 张树杰 2021 - 7
事务是关系型数据库实现的核心内容,它具有原子性、一致性、隔离性和持久性等特点,是数据库实现并发控制和故障恢复的基础。
《PostgreSQL技术内幕:事务处理深度探索》首先分析了PostgreSQL数据库事务的实现机制,包括事务的基本概念、两阶段锁的原理及实现方法、多版本并发控制的原理及实现方法、故障恢复的实现方法等,然后通过介绍物理复制、逻辑复制、Zheap引擎的原理及实现、SSI的实现、两阶段提交的原理及实现,使读者获得了对事务更深入的理解,从而使读者既能了解事务的原理,也能清楚事务的实现细节。
《PostgreSQL技术内幕:事务处理深度探索》适合数据库内核开发及相关领域的研究人员、数据库DBA、高等院校相关专业的本科生或者研究生阅读。
PostgreSQL技术内幕:查询优化深度探索 豆瓣
作者: 张树杰 2018 - 6
查询优化器是数据库中很重要的模块之一,只有掌握好查询优化的方法且了解查询优化的细节,在对数据库调优的过程中才能有的放矢,否则调优的过程就如无本之木、无源之水,虽上下求索而不得其法。
《PostgreSQL技术内幕:查询优化深度探索》揭示了PostgreSQL数据库中查询优化的实现技术细节,首先对子查询提升、外连接消除、表达式预处理、谓词下推、连接顺序交换、等价类推理等逻辑优化方法进行了详细描述,然后结合统计信息、选择率、代价对扫描路径创建、路径搜索方法、连接路径建立、Non-SPJ路径建立、执行计划简化与生成等进行了深度探索,使读者对PostgreSQL数据库的查询优化器有深层次的了解。
《PostgreSQL技术内幕:查询优化深度探索》适合数据库内核开发人员及相关领域的研究人员、数据库DBA、高等院校相关专业的本科生或者研究生阅读。
Flink内核原理与实现 豆瓣
作者: 冯飞 / 崔鹏云 2020 - 9
《Flink内核原理与实现》是一本机械工业出版社的图书,作者是冯飞、崔鹏云、陈冠华三位大数据专家,从系统整体视角出发,既讲解了Flink的入门、安装、流计算开发入门、监控运维等基础知识,又讲解了Flink的时间概念、Window的实现原理及其代码解析,Flink的容错机制原理,容错的关键设计、代码实现分析,作业从源码到执行整个过程的解析, 作业的调度策略、资源管理、类型和序列化系统、内存管理、类数据交换的关键设计和代码实现分析,RPC通信框架等深度内容。
《Flink内核原理与实现》适合对实时计算感兴趣的大数据开发、运维领域的从业人员阅读,此外对机器学习工程技术人员也有所帮助。
The Missing README 豆瓣
作者: Chris Riccomini / Dmitriy Ryaboy No Starch Press 2021 - 8
For new software engineers, knowing how to program is only half the battle. You’ll quickly find that many of the skills and processes key to your success are not taught in any school or bootcamp. The Missing README fills in that gap—a distillation of workplace lessons, best practices, and engineering fundamentals that the authors have taught rookie developers at top companies for more than a decade.
Early chapters explain what to expect when you begin your career at a company. The book’s middle section expands your technical education, teaching you how to work with existing codebases, address and prevent technical debt, write production-grade software, manage dependencies, test effectively, do code reviews, safely deploy software, design evolvable architectures, and handle incidents when you’re on-call. Additional chapters cover planning and interpersonal skills such as Agile planning, working effectively with your manager, and growing to senior levels and beyond.
You’ll learn:
How to use the legacy code change algorithm, and leave code cleaner than you found it
How to write operable code with logging, metrics, configuration, and defensive programming
How to write deterministic tests, submit code reviews, and give feedback on other people’s code
The technical design process, including experiments, problem definition, documentation, and collaboration
What to do when you are on-call, and how to navigate production incidents
Architectural techniques that make code change easier
Agile development practices like sprint planning, stand-ups, and retrospectives
This is the book your tech lead wishes every new engineer would read before they start. By the end, you’ll know what it takes to transition into the workplace–from CS classes or bootcamps to professional software engineering.
labuladong的算法小抄 豆瓣
作者: 付东来(@labuladong) 电子工业出版社
《labuladong的算法小抄》专攻算法刷题,训练算法思维,应对算法笔试。注重用套路和框架思维解决问题,以不变应万变。  第1章列举了几个最常见的算法类型及对应的解题框架思路,包括动态规划、回溯、广度优先搜索及双指针、滑动窗口等算法技巧。  第2章用动态规划的通用思路框架解决了十几道经典的动态规划问题,例如,正则表达式、背包问题,同时还介绍了如何写状态转移方程、如何进行状态压缩等技巧。  第3章介绍了数据结构相关的算法,例如,二叉树相关题目的解法,也包括LRU、LFU这种面试常考的算法原理。  第4章介绍了回溯算法、广度优先搜索算法等核心套路在算法题中的运用,巩固对算法框架的理解。  第5章讲解了一些高频题目,每道题目可能会结合多种算法思路进行讲解,也可能有多种解法,读完这一章,你就可以独自遨游题海啦!
2021年8月28日 已读
3个星期过了一遍,作者这种总结的习惯很好!虽然cover的有些偏颇,例如DP过多,而Graph则没有太涉及,且代码并不一定最优,有的会TLE,例如设计计算器。可以在理解后参考forum high votes的帖子,例如 lee215大神的回答。
计算机科学 算法 软件工程
剑指Offer(专项突破版):数据结构与算法名企面试题精讲 豆瓣
作者: 何海涛 2021 - 8
《剑指Offer(专项突破版):数据结构与算法名企面试题精讲》全面、系统地总结了在准备程序员面试过程中必备的数据结构与算法。本书首先详细讨论整数、数组、链表、字符串、哈希表、栈、队列、二叉树、堆和前缀树等常用的数据结构,然后深入讨论二分查找、排序、回溯法、动态规划和图搜索等算法。除了介绍相应的基础知识,每章还通过大量的高频面试题系统地总结了各种数据结构与算法的应用场景及解题技巧。
《剑指Offer(专项突破版):数据结构与算法名企面试题精讲》适合所有正在准备面试的程序员阅读。无论是计算机相关专业的应届毕业生还是初入职场的程序员,本书总结的数据结构和算法的基础知识及解题经验都不仅可以帮助他们提高准备面试的效率,还可以增加他们通过面试的成功率。
黑客与画家 豆瓣 谷歌图书
Hackers and Painters: Big Ideas from the Computer Age
8.6 (247 个评分) 作者: 保罗·格雷厄姆 译者: 阮一峰 人民邮电出版社 2011 - 4
本书是硅谷创业之父Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代,迫使读者独立思考。
本书适合所有程序员和互联网创业者,也适合一切对计算机行业感兴趣的读者。
2021年8月3日 已读
应该一早就读的,作者作为黑客,本科先读的哲学,研究生学计算机人工智能方向,能很本质的思考编程,乃至于将编程作为方法来作用于自我外在的世界。黑客更偏向于艺术家而不是科学家,这一思维方式解决了很多问题,例如如何学习编程,如何思考软件,如何提供服务,怎样平衡有趣的程序vs挣钱的项目,etc。
互联网 创业 计算机科学 软件工程 思维
会说话的代码 豆瓣
作者: 王洪亮 2013 - 8
写得不好的代码有各种各样的问题,会给读者带来不好的阅读体验,并且如果代码写得不够好,文档和代码不一致,注释和代码不一致,那么对维护人员来说,理解代码和进入项目组都是有困难的。如果代码写得不够好,就需要扩展功能,修改Bug时所需要花费的时间也较长。
自表达代码是一种采用接近于自然语言的方式书写代码的主张。
代码可读性、可扩展性、可测试性是关联代码质量的重要参考指标。本书从各个角度来分析产生劣质代码的原因,并从代码的命名、注释、风格、结构、架构等方面着手,对提高设计能力、熟悉开发环境、了解编程语言、提高英语能力等诸多方面提出了具体的改善建议。
Spark技术内幕 豆瓣
作者: 张安站 2015 - 9
Spark是不断壮大的大数据分析解决方案家族中备受关注的新增成员。它不仅为分布式数据集的处理提供一个有效框架,而且以高效的方式处理分布式数据集。它支持实时处理、流处理和批处理,提供了AllinOne的统一解决方案,使得Spark极具竞争力。
本书以源码为基础,深入分析Spark内核的设计理念和架构实现,系统讲解各个核心模块的实现,为性能调优、二次开发和系统运维提供理论支持;本文最后以项目实战的方式,系统讲解生产环境下Spark应用的开发、部署和性能调优。
Hadoop技术内幕 豆瓣
作者: 董西成 2013 - 11
本书从应用角度系统讲解了YARN的基本库和组件用法、应用程序设计方法、YARN上流行的各种计算框架(MapReduce、Tez、Storm、Spark),以及多个类YARN的开源资源管理系统(Corona和Mesos);从源代码角度深入分析YARN的设计理念与基本架构、各个组件的实现原理,以及各种计算框架的实现细节。
全书共四部分13章:第一部分(第1~2章)主要介绍了如何获取、阅读和调试Hadoop的源代码,以及YARN的设计思想、基本架构和工作流程;第二部分(第3~7章)结合源代码详细剖析和讲解了YARN的第三方开源库、底层通信库、服务库、事件库的基本使用和实现细节,详细讲解了YARN的应用程序设计方法,深入讲解和分析了ResourceManager、资源调度器、NodeManager等组件的实现细节;第三篇(第8~10章)则对离线计算框架MapReduce、DAG计算框架Tez、实时计算框架Storm和内存计算框架Spark进行了详细的讲解;第四部分(第11~13章)首先对Facebook Corona和Apache Mesos进行了深入讲解,然后对YARN的发展趋势进行了展望。附录部分收录了YARN安装指南、YARN配置参数以及Hadoop Shell命令等非常有用的资料。
Practical Foundations for Programming Languages 豆瓣
作者: Robert Harper Cambridge University Press 2016 - 4
This text develops a comprehensive theory of programming languages based on type systems and structural operational semantics. Language concepts are precisely defined by their static and dynamic semantics, presenting the essential tools both intuitively and rigorously while relying on only elementary mathematics. These tools are used to analyze and prove properties of languages and provide the framework for combining and comparing language features. The broad range of concepts includes fundamental data types such as sums and products, polymorphic and abstract types, dynamic typing, dynamic dispatch, subtyping and refinement types, symbols and dynamic classification, parallelism and cost semantics, and concurrency and distribution. The methods are directly applicable to language implementation, to the development of logics for reasoning about programs, and to the formal verification language properties such as type safety. This thoroughly revised second edition includes exercises at the end of nearly every chapter and a new chapter on type refinements.
凤凰架构 豆瓣 Goodreads
9.0 (8 个评分) 作者: 周志明 机械工业出版社 2021 - 6
这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。
全书共16章,分为演进中的架构、架构师的视角、分布式的基石、不可变基础设施和技术方法论五部分。
第一部分 演进中的架构(第1章)
着重介绍了软件开发历史中多种主流架构风格出现的契机、解决的问题以及带来的新缺陷。
第二部分 架构师的视角(第2~5章)
总结了一名架构师应该在架构设计时思考哪些问题,有哪些主流的解决方案和行业标准做法,各种方案有什么优缺点,不同的解决方法会带来什么不同的影响,等等。
第三部分 分布式的基石(第6~10章)
重点讨论了“不同架构风格是应该在技术规范上统一,还是由应用系统自行解决”这个问题,给出了解决思路、方法和常见工具。
第四部分 不可变基础设施(第11~15章)
重点讲解了基础设施不变性的目的、原理与实现途径,包括虚拟化容器、容器间网络、持久化存储、资源与调度、服务网格等内容。
第五部分 技术方法论(第16章)
面向技术决策者集中讨论了与分布式、微服务、架构等相关的理论话题,将解决问题的能力归纳、总结、升华为方法论。
全书以实践为导向,一个案例贯穿全书,同时给出了基于Spring Boot、Spring Cloud、Kubernetes、Istio、AWS Lambda 五种架构风格的样例工程。
2021年7月2日 在读 微信读书ing。 复杂可靠性软件系统是如何可实现的?springboot k8s istio
2021 软件工程
跃迁 豆瓣
作者: 朱赟 电子工业出版社·博文视点 2018 - 4
近年来,毫不逊色于国力攀升的,是中国互联网业的蓬勃发展。而身在其中者,感受到的是业务复杂度、团队规模的迅猛增长,对创新与项目迭代频率的极限追求。
当内部成长与自我提升的速度难以与之匹配,就亟需走出去、向外看——本书就是这样一条来自硅谷的极具观摩与借鉴价值的优质轨迹,更因凝结作者从工程师到管理者的全程实景与心路而无比鲜活。
全书分为技术管理、技术实践、硅谷文化、个人成长及杂谈几个部分,非常适于新晋技术管理者、视野开阔的一线IT业者,以及广大期望供职于全球互联网巨头的有志之士。
重学Java设计模式(全彩) 豆瓣
付政委
作者: 付政委 2021 - 5
《重学Java设计模式》是一本基于互联网真实案例编写的Java设计模式实践图书。全书以解决方案为核心,从实际开发业务中抽离出交易、营销、规则引擎、中间件、框架源码等22个真实场景,对设计模式进行全面、彻底的分析。帮助读者灵活地使用各种设计模式,从容应对复杂变化的业务需求,编写出易维护、可扩展的代码结构。本书融合了生动有趣的动画插图和实践开发的类结构图,让读者不仅能体会设计模式的概念和原理,更能清楚地知晓落地方法。此外,本书还介绍了DDD四层架构、RPC中间件设计、分布式领域驱动设计和设计模式的结合使用等内容。
《重学Java设计模式》适合计算机相关行业的研发人员、高等院校计算机专业的学生阅读。无论是初学者,还是中、高级研发人员都能从本书中有所获益。
2021年6月28日 在读
微信读书ing。终于有个举的例子是pragmatic的了。
Java 软件工程
Microservices with Spring Boot and Spring Cloud, 2nd Edition 豆瓣
作者: Magnus Larsson Packt Publishing 2021 - 7
A step-by-step guide to creating and deploying production-quality microservices-based applications
Key Features
Build cloud-native production-ready microservices with this comprehensively updated guide
Understand the challenges of building large-scale microservice architectures
Learn how to get the best out of Spring Cloud, Kubernetes, and Istio in combination
Book Description
With this book, you'll learn how to efficiently build and deploy microservices. This new edition has been updated for the most recent versions of Spring, Java, Kubernetes, and Istio, demonstrating faster and simpler handling of Spring Boot, local Kubernetes clusters, and Istio installation. The expanded scope includes native compilation of Spring-based microservices, support for Windows & Mac, and an introduction to Helm 3 for packaging and deployment. A revamped security chapter now follows the OAuth 2.1 specification and makes use of the newly launched Spring Authorization Server from the Spring team.
Starting with a set of simple cooperating microservices, you'll add persistence and resilience, make your microservices reactive, and document their APIs using Swagger/OpenAPI.
You’ll understand how fundamental design patterns are applied to add important functionality, such as service discovery with Netflix Eureka and edge servers with Spring Cloud Gateway. You’ll learn how to deploy your microservices using Kubernetes and adopt Istio. You'll explore centralized log management using the Elasticsearch, Fluentd, and Kibana (EFK) stack and monitor microservices using Prometheus and Grafana.
By the end of this book, you'll be confident in building microservices that are scalable and robust using Spring Boot and Spring Cloud.
What you will learn
Build reactive microservices using Spring Boot
Develop resilient and scalable microservices using Spring Cloud
Use OAuth 2.1/OIDC and Spring Security to protect public APIs
Implement Docker to bridge the gap between development, testing, and production
Deploy and manage microservices with Kubernetes
Apply Istio for improved security, observability, and traffic management
Write and run manual and automated microservice tests with JUnit, testcontainers, Gradle, and bash
Who This Book Is For
This book is intended for Java and Spring developers and architects who want to learn how to build microservice landscapes from the ground up and deploy them either on-premises or in the cloud, using Kubernetes as a container orchestrator and Istio as a service mesh.
No familiarity with microservices architecture is required to get started with this book.