软件开发
搞定系统设计:面试敲开大厂的门 豆瓣
作者: Alex Xu 译者: 徐江 电子工业出版社 2023 - 11
系统设计面试被认为是所有技术面试中难度最大的面试,因为面试题的范围都非常广且模糊,其答案也是开放的,不存在标准答案或正确答案。本书是专门为准备系统设计面试的读者而撰写的,重点讨论了分布式系统中的常用组件和大型Web 应用的系统架构,涵盖了几类常见的典型应用,包括聊天系统、视频流系统、文件存储系统(云盘)、支付系统等,旨在帮助读者掌握构建一个可扩展的系统所需的基础知识,为面试做好充分准备。
作为过来人,作者提出了应对面试题的“四步法”,即确定问题范围→总体设计→细节设计→总结,书中的案例基本上都是按照这个步骤进行解析的。这种独特的呈现方式,直接针对面试者在面试过程中可能遇到的问题,帮助他们厘清思路,有条不紊地作答。
通过本书,读者可以了解不同Web 应用的系统设计方案的要点及采用的技术,据此查漏补缺,补齐自己知识体系中的短板,为面试成功增添更多的可能。而对于已经是架构师的读者而言,书中的案例将为他们提供新的思路和灵感,有助于他们在面试中更加从容地展现自己的设计思路和实践经验。
C++新经典 豆瓣
作者: 王健伟 清华大学出版社 2020 - 8
本书是一部C/C++编程语言书,定位在C/C++语言本身的讲解上面。本书包含纸质图书以及教学源代码文件。
本书共分为三部分:第1部分为C/C++语言概述(第1章),主要介绍了C和C++语言的起源、市场需求、就业形势及如何搭建语言开发环境等内容。第2部分为C语言(第2~12章),主要介绍C语言的各种开发知识,包括基础知识,如常量、变量、表达式、程序结构、数组、函数等,也包括高级知识,如指针、结构、位运算、文件等,本部分的学习正是为后面的学习打下基础。第3部分C++语言(第13~20章),主要介绍C++语言的各种开发知识,包括基础知识比如面向对象编程、命名空间、容器、迭代器,也包括类的详细介绍、模板与泛型的详细介绍;高级知识比如智能指针详细介绍、并发与多线程详细介绍;扩展知识比如内存高级话题、STL标准模板库大局观,C++11新标准比如可调用对象、万能引用、函数模板类型推断、引用折叠、完美转发、auto推断、decltype、lambda表达式、初始化列表、类型萃取等。
本书以择业为导向,涵盖90%的C/C++语言常用开发知识,通俗易懂、范例众多,对于希望从事C/C++开发的读者极具实用价值,本书是一本不可多得的、值得珍藏并能够陪伴读者数年甚至数十年的参考书。
本书主要适合以下几类读者:
(1)C/C++语言初学者或者其他计算机语言转到C/C++语言的程序员。
(2)从事C/C++开发多年的程序员,希望能够详细地复习一下基础的C/C++知识,把整个知识线串一串,形成一个比较完整的学习体系。
(3)已经掌握C++98标准,但是需要进一步学习C++11/14/17新标准的程序员。
2025年2月21日 已读
对自己来说有些简单,有些地方
C++ 软件开发
软件随想录 豆瓣
More Joel on Software
8.5 (26 个评分) 作者: Joel Spolsky 译者: 阮一峰 人民邮电出版社 2009
本书是一部关于软件技术、人才、创业和企业管理的随想文集,作者以诙谐幽默的笔触将自己在软件行业的亲身感悟娓娓道来,观点新颖独特,内容简洁实用。全书分为36讲,每一讲都是一个独立的专题。 本书从不同侧面满足了软件开发人员、设计人员、管理人员及从事软件相关工作的人员的学习与工作需要。
代码大全(第2版) 豆瓣 Goodreads
Code Complete
9.9 (18 个评分) 作者: [美] 史蒂夫·迈克康奈尔 译者: 金戈 / 汤凌 电子工业出版社 2006 - 3
第2版的《代码大全》是著名IT畅销书作者史蒂夫·迈克康奈尔11年前的经典著作的全新演绎:第2版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。
重构 豆瓣
Refactoring: Improving the Design of Existing Code
8.4 (5 个评分) 作者: Martin Fowler 译者: 熊节 中国电力出版社 2003 - 8
Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。《重构:改善既有代码的设计》(中文版)解释重构的原理(principles)和最佳实践方式(best practices),并指出何时何地你应该开始挖掘你的代码以求改善。《重构:改善既有代码的设计》(中文版)的核心是一份完整的重构名录(catalog of refactoring),其中每一项都介绍一种经过实证的代码变换手法(code transformation)的动机和技术。某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。点击进入该书更多详细信息。
程序员修炼之道 豆瓣
The Pragmatic Programmer
7.2 (10 个评分) 作者: Andrew Hunt / David Thomas 译者: 马维达 电子工业出版社 2005 - 1
《程序员修炼之道》由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。
Java编程思想 (第4版) 豆瓣 Goodreads
Thinking in Java
8.9 (18 个评分) 作者: [美] Bruce Eckel 译者: 陈昊鹏 机械工业出版社 2007 - 6
本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。
从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。
第4版特点:
适合初学者与专业人员的经典的面向对象叙述方式,为更新的Java SE5/6增加了新的示例和章节。
 测验框架显示程序输出。
修改代码的艺术 豆瓣 Goodreads
Working Effectively with Legacy Code
作者: Michael Feathers 译者: 刘未鹏 人民邮电出版社 2007 - 9
我们都知道,即使是最训练有素的开发团队,也不能保证始终编写出清晰高效的代码。如果不积极地修改、挽救,随着时间流逝,所有软件都会不可避免地渐渐变得复杂、难以理解,最终腐化、变质。因此,理解并修改已经编写好的代码,是每一位程序员每天都要面对的工作,也是开发程序新特性的基础。然而,与开发新代码相比,修改代码更加令人生畏,而且长期以来缺乏文献和资料可供参考。
本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。
Linux/UNIX系统编程手册 豆瓣
The Linux Programming Interface: A Linux and UNIX System Programming Handbook
作者: Michael Kerrisk 译者: 孙剑 许从年 董健 / 孙余强 郭光伟 陈舸 人民邮电出版社 2014 - 1
《linux/unix系统编程手册(上、下册)》是介绍linux与unix编程接口的权威著作。linux编程资深专家michael kerrisk在书中详细描述了linux/unix系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《linux/unix系统编程手册(上、下册)》涵盖了逾500个系统调用及库函数,并给出逾200个程序示例,另含88张表格和115幅示意图。
《linux/unix系统编程手册(上、下册)》总共分为64章,主要讲解了高效读写文件,对信号、时钟和定时器的运用,创建进程、执行程序,编写安全的应用程序,运用posix线程技术编写多线程程序,创建和使用共享库,运用管道、消息队列、共享内存和信号量技术来进行进程间通信,以及运用套接字api编写网络应用等内容。
《linux/unix系统编程手册(上、下册)》在汇聚大批 linux专有特性(epoll、inotify、/proc)的同时,还特意强化了对unix标准(posix、sus)的论述,彻底达到了“鱼与熊掌,二者得兼”的效果,这也堪称本书的最大亮点。
《linux/unix系统编程手册(上、下册)》布局合理,论述清晰,说理透彻,尤其是作者对示例代码的构思巧妙,独具匠心,仔细研读定会受益良多。本书适合从事linux/unix系统开发、运维工作的技术人员阅读,同时也可作为高校计算机专业学生的参考研习资料。
深度探索C++对象模型 豆瓣
Inside the C++ Object Model
作者: [美] Stanley B. Lippman 译者: 侯捷 电子工业出版社 2012 - 1
作者Lippman参与设计了全世界第一套C++编译程序cfront,这本书就是一位伟大的C++编译程序设计者向你阐述他如何处理各种explicit(明确出现于C++程序代码中)和implicit(隐藏于程序代码背后)的C++语意。
本书专注于C++面向对象程序设计的底层机制,包括结构式语意、临时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这本书让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。Lippman澄清了那些关于C++额外负荷与复杂度的各种错误信息和迷思,但也指出其中某些成本和利益交换确实存在。他阐述了各式各样的实现模型,指出它们的进化之道及其本质因素。书中涵盖了C++对象模型的语意暗示,并指出这个模型是如何影响你的程序的。
对于C++底层机制感兴趣的读者,这必然是一本让你大呼过瘾的绝妙好书。
左耳听风 豆瓣
8.5 (8 个评分) 作者: 陈皓 电子工业出版社 2024 - 1
本书是IT与互联网世界知名技术人陈皓生前文章精粹,既囊括程序员从起步到进阶直至迈向卓越的优选路径及实现方法,也覆盖工程师从开启职业生涯到走向管理岗位直至创办公司的能力突破与细节修炼,更完整描绘了作者其人的独特经历、个性主张、人生趣味与技术理念。内容包含如何通过理解编程本质和范式、优质代码与架构成为有竞争力的程序员,如何通过注重高效沟通、研发效率、科学管理、合理考核、有效招聘、工程师文化来打造技术领导力,以及如何通过正确面对三观、技术变化、中年危机、他人评价、人生选择、时间管理、有效学习来实现持续成长。程序员可用此书来完成快速入门与境界提升,理工科学生及技术从业者可参照此书设计职业生涯,大众亦可从此书中觅得人生启迪与内心观照。
软技能 豆瓣
Soft Skills: The software developer's life manual
8.6 (40 个评分) 作者: [美] John Z. Sonmez 译者: 王小刚 人民邮电出版社 2016 - 7
这是一本真正从“人”(而非技术也非管理)的角度关注软件开发人员自身发展的书。书中论述的内容既涉及生活习惯,又包括思维方式,凸显技术中“人”的因素,全面讲解软件行业从业人员所需知道的所有“软技能”。本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程到精耕细作出一份杀手级简历,从创建大受欢迎的博客到打造你,从提高自己工作效率到与如何与“拖延症”做斗争,甚至包括如何投资不动产,如何关注自己的健康。本书共分为职业篇、自我营销篇、学习篇、生产力篇、理财篇、健身篇、精神篇等七篇,概括了软件行业从业人员所需的“软技能”。通过阅读本书,软件工程人员、编程人员和其他技术人员能够积极思考自己的职业生涯,丰富自己的生活,让自己更接近成功。
程序员修炼之道(第2版) 豆瓣 Goodreads
The Pragmatic Programmer: From Journeyman to Master
9.3 (18 个评分) 作者: [美] David Thomas / [美] Andrew Hunt 译者: 云风 电子工业出版社 2020 - 4
本书之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特定语言、框架和方法。时隔20年的新版,经过全面的重新选材、组织和编写,覆盖哲学、方法、工具、设计、解耦、并发、重构、需求、团队等务实话题的最佳实践及重大陷阱,以及易于改造、复用的架构技术。本书极具洞察力与趣味性,适合从初学者到架构师的各阶层读者潜心研读或增广见闻。
程序员修炼之道――从小工到专家(20周年纪念版)(第2版)(英文版) 豆瓣
作者: 【美】David Thomas / Andrew Hunt 2020 - 4
《程序员修炼之道》之所以在全球范围内广泛传播,被一代代开发者奉为圭臬,盖因它可以创造出真正的价值:或编写出更好的软件,或探究出编程的本质,而所有收获均不依赖于特定语言、框架和方法。时隔 20 年的新版,经过全面的重新选材、组织和编写,覆盖哲学、方法、工具、设计、解耦、并发、重构、需求、团队等务实话题的最佳实践及重大陷阱,以及易于改造、复用的架构技术。本书极具洞察力与趣味性,适合从初学者到架构师的各阶层读者潜心研读或增广见闻。
深入理解计算机系统(原书第3版) 豆瓣 Goodreads
Computer Systems: A Programmer's Perspective (3rd Edition)
9.5 (21 个评分) 作者: Randal E.Bryant / David O'Hallaron 译者: 龚奕利 / 贺莲 机械工业出版社 2016 - 11
和第2版相比,本版内容上*大的变化是,从以IA32和x86-64为基础转变为完全以x86-64为基础。主要更新如下:
基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。
处理器体系结构修改为支持64位字和操作的设计。
引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠。
扩充关于用GOT和PLT创建与位置无关代码的讨论,描述了更加强大的链接技术(比如库打桩)。
增加了对信号处理程序更细致的描述,包括异步信号安全的函数等。
采用新函数,更新了与协议无关和线程安全的网络编程。