zoukankan      html  css  js  c++  java
  • 分享我收集的计算机内功修炼的经典资源

    大家好,我在本文中分享了我收集的计算机内功修炼的经典资源,希望对大家提升内功有所帮助,谢谢~

    算法

    leetcode

    一个在线刷题的算法题库,题目分了简单、中等、困难,每道题几乎都有很多人的答案和多种解法。

    总题数在不断增加中,我以前刷的时候有500+的题。

    我只是把简单的题刷了,感觉对我的算法能力的提高有很大的帮助。

    另外需要面试的同学也可以刷下题。

    在线链接

    设计

    《计算机程序的构造和解释》

    本书就是大名鼎鼎的SICP,使用Lisp语言,从程序设计思想的角度介绍了构造过程抽象、构造数据抽象、面向对象设计和并发和流等内容,给出了若干设计实例。

    本书是一本介绍设计思想的书,重点介绍了抽象的思维,是一本好书啊!能大幅提高抽象能力!

    第1章:构造过程抽象。
    本章讲解了面向过程设计的思想。
    第2章:构造数据抽象。
    本章介绍了模块化、层次化思想。
    第3章:模块化、对象和状态
    本章介绍了对象的结构实现、并发、流等内容。

    我只看了本书前3章,并参考网上资料做了1遍前3章的习题(3.5流的习题没做。“流”这部分我只学习了下思想,没有掌握)。
    第1章很简单,第二章有难度,第三章简单(流的习题没做,有一定难度)。

    本书让我加深了对程序设计的理解,并学习了递归的使用。
    建议大家把前3章的习题做了,网上有详细的答案。

    《冒号课堂:编程范式与OOP思想》

    通过老师与学生对话的方式,非常生动地讲解了面向对象的思想。

    作为新手第一本学习面向对象思想的书,是很合适的。

    《设计模式之禅》

    讲了5大设计原则和23个设计模式,并给出了多种设计模式的组合使用。

    全书非常通俗易懂,书中的案例也非常生动,适合大家上手学习设计模式。

    《领域驱动设计》

    本书提出了模型驱动设计,围绕领域建模来展开论述。
    本书是一本经典书,对提高设计能力很有帮助!

    第1-3章提出了领域建模的注意事项。
    第5章介绍了模型的组成部分:Entity、Value Object、Service、Module。
    第6章介绍了聚合体AGGREGATE、存储库REPOSITORY、工厂。
    第7章介绍了对初步的领域模型进行重构细化的过程,展示了将领域模型细化为详细架构的过程。
    第8章展示了初步的领域模型的演化直到获得突破的过程。
    第9章讲解了如何实现深层建模,以及将业务规则提出来的思想(提出了SPECIFICATION规格模式)。
    第10章提出了一些原则、启发,参考这些模式能获得柔性设计。
    第四部分从较高的范围来展开论述。
    第14章提出了上下文BOUNDED CONTEXT、持续集成、上下文之间如何联系起来CONTEXT MAP、BOUNDED CONTEXT之间的关系(共享内核、客户/供应商等关系)、选择上下文的策略以及如何转换BOUNDED CONTEXT之间关系。
    第15章讲解了如何提炼出核心模型CORE DOMAIN。
    第16章讲解了大比例结构。包括进化迭代的思想来重构大比例结构、系统隐喻、分层、KNOWLEDGE LEVEL、可插入式组件框架PLUGGABLE COMPONRNY FRAMEWORK。

    通过阅读该书,我了解了领域模型的重要性。领域模型不只是用来转化为数据库表,也与实际的架构模型应该对应。也获得了设计的相关启示(风格与《敏捷》有点像)。

    《软件架构设计(第二版)》 (作者:温昱 )

    本书系统梳理了架构设计的知识,让我对架构设计有了更深入的理解,是一本很好的架构设计的参考资料。

    书中一共有三个部分,分别讲解了软件架构的概念,架构设计的方法、过程及步骤,模块划分等专题。

    书中的第2部分,介绍了整个架构从需求到设计的流程,并对每个流程展开说明,并给出了实例。

    书中的第3部分,介绍了架构师的关键技能:模块划分。包括水平划分(分层)、垂直划分(子系统)、用例驱动设计(自底向上)等内容。这部分可以结合《敏捷软件开发原则、模式与实践》中的包设计部分来理解消化。

    《一线架构师实践指南》 (作者:温昱 )

    本书重实践,《软件架构设计》重理论。
    本书给出了一些实践经验,以及具体的实例,可以作为《软件架构设计》在实践方面的补充!

    建议设计架构时,参考《软件架构设计》和本书!

    工程

    《重构:改善既有代码的设计》

    重构领域的经典书籍。每一小节讲了一个重构手法,基本覆盖了重构的各个方面。

    如果你想要你的代码更加可读、易于维护,建议阅读本书。

    《代码整洁之道》

    有些内容与《重构》的思想相似,也是讲解如何改进代码的书。

    《修改代码的艺术》

    本书讲解了处理遗留代码的技术,其中包含了测试的相关讨论(如测试私有方法)。

    如果你正在接手或重构别人的代码,或者正在你之前的项目上继续开发,本书就是你需要看的。

    《测试驱动的Javascript开发》

    如果你要开发大型软件,自动化测试非常重要。虽然前期编写测试时会花双倍的开发时间,但是越到后期,越能保证代码质量,减少修改bug的时间。

    本书讲解了如何在开发产品代码之前,就先写测试,用测试来驱动开发。

    这样做的好处之一是可以从用户的角度,来审视代码。通过明确代码的输入输出,来提高代码的设计。

    当然,并不是所有地方都适合测试驱动,我觉得像 实现算法、代码相对稳定明确(如不是在实现demo的时候) 的地方可以使用测试驱动。

    《敏捷软件开发原则、模式与实践(C#版)》

    本书讲解了敏捷设计、类设计原则和包设计原则、UML、设计模式、薪水项目的设计与实现以及打包等内容,对我学习迭代开发和设计很有帮助,不愧是经典书籍。

    以下章节对我帮助很大:
    第6章(采用TDD开发保龄球比赛程序(C#))、第20章(咖啡机的面向对象设计与实现)、第26章(薪水项目的面向对象设计的过程与思路)、第28章(包和组件的设计原则)、第30章(薪水项目的包分析)、第37章(测试数据层)

    《xUnit测试模式:测试码重构》

    本书是一本关于如何解决测试中遇到的问题的实战经验书籍,给出了测试相关的概念、术语、经验、味道以及模式和实例。

    第1部分总体介绍了测试的模式和相关知识,包括测试的味道、目标、基本观点、原则、策略,以及提出夹具的管理、结果验证、测试替身、组织测试、数据库测试等内容。

    第2部分介绍了三大类测试味道:代码味道、行为味道、项目味道,对每种味道进行了详细分析,并介绍了解决方案模式。

    第3部分介绍了测试的模式。对应第1部分,给出了具体实例,是对第1部分的补充。

    本书内容组织的方式类似于《重构》一书,同样也应用于实战,来源于实战。

    阅读本书后,在实际应用中如果遇到测试相关的问题,可以迅速地知道该问题在该书中对应的术语、模式以及解决方案。

    因为我有一些测试的实战经验,所以看本书时就比较顺利,同时也深入了我对平时遇到的测试问题的理解。

    所以建议先积累一些实战经验,然后再看该书,然后再应用于实战中。

    开发经验

    《人月神话》

    本书讲了一些实际开发软件的经验,如 :
    增加更多的人来开发,并不能提高开发速度,反而有可能会下降。因为人越多,沟通成本就越高;
    没有银弹,没有能通吃一切应用场景的解决方案;
    避免陷入焦油坑;

    《软件随想录》

    本书适合要做项目管理的同学,讲解了发布软件的经济学分析等内容,其中项目管理的知识(如“循证式日程规划”)很有启发。

    《创业必经的那些事 1》

    讲解了为什么创业失败,企业发展的三个阶段,如何经营企业等内容,对学习创业的思想很有帮助。

    《创业必经的那些事 2》

    本书是该系列的第2本书,与第1本书有些相同的观念,如三种角色(国王、管理者、技师),创新、量化、统一等。

    本书的核心观念就是:作为管理者,要像企业家那样,把公司当成自己的公司,强调要有自我意识,注重换位思考。

    本书强调要管理系统,而不是管理人,因为人是不可管理的,因此需要创建一个愿景,一套流程,每个人都能在流程中快速上手,认同企业文化。

    “创业”系列书籍的观点与众不同,耐人寻味,在创业之前需要认真品读。

    《程序员修炼之道》

    本书讲解了如何成为更好的程序员,涉及到了成为优秀程序员的方方面面,注重实践经验。

    本书让我更加了解了如何成为优秀的程序员,学习了一些最佳实践。

    《高效程序员的45个习惯:敏捷开发修炼之道》

    本书讲解了敏捷开发的最佳实践,从态度、学无止境、交互用户想要的软件、敏捷反馈、敏捷编码、敏捷调试、敏捷协作、走向敏捷 这些方面来展开论述,展示了敏捷开发的过程、实现、方法,使我对“如何成为高校的敏捷人员”有了更深入的认识。

    下面是对我启发较大的内容:

    1. 第4章-15 提早实现自动化部署。
      提出了一开始就自动化部署应用,如:使用户可以在线看到我们的演示系统。
    2. 第5章-21 不同环境,就有不同的问题。
      提到了“持续集成”。可以用一个持续集成工具,周期性地从源代码控制系统中取得代码,并运行代码。如果有任何测试失败了,它会通知相关的开发者。
    3. 第5章-22 自动验收测试。
      提到了FIT,即集成测试框架。它可以更容易地使用HTML表格定义测试用例,并比较测试结果数据。
      使用FIT,客户可以定义带有新功能的使用样本。客户、测试人员和开发人员(根据样本)都可以创建表格,为代码描述可能的输入和输出值。开发人员会参照样本编写测试代码。测试结果成功或者失败,都会显示在HTML页面中,用户可以很方便地查阅。

    底层原理

    《HTTP权威指南》

    本书是HTTP及其相关核心Web技术方面的权威著作,适合所有想了解HTTP和Web底层结构的人阅读。
    本书包含21章,分为5个逻辑部分(每部分都是一个技术专题),以及8个很有用的附录,这些附录包含了参考资料,以及对相关技术的介绍。
    第一部分 HTTP:Web的基础
    第二部分 HTTP结构
    第三部分 识别、认证与安全
    第四部分 实体、编码和国际化
    第五部分 内容发布与分发
    第六部分 附录
    第一部分用4章的篇幅描述了Web的基础构件与HTTP的核心技术。
    第1章简要介绍了HTTP。
    第2章详细阐述了统一资源定位符(Uniform Resource Locator,URL)的格式, 以及URL在因特网上命名的各种类型的资源,还介绍了统一资源名(Uniform Resource Name,URN)的演变过程。
    第3章详细介绍了HTTP报文是如何传送Web内容的。
    第4章解释了HTTP连接管理过程中一些经常会引起误解且少有文档说明的规则和行为。
    第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。(当然,Web浏览器也是一种构造块,但在本书的第一部分已经对其进行过很详细的介绍了。)第二部分包含以下6章。
    第5章简要介绍了Web服务器结构。
    第6章深入研究了HTTP代理服务器,HTTP代理服务器是作为HTTP服务与控制平台使用的中间服务器。
    第7章深入研究了Web缓存的问题。缓存是通过保存常用文档的本地副本来提高性能、减少流量的设备。
    第8章探讨了网关和应用服务器的概念,通过它们,HTTP就可以与使用不同协议(包括SSL加密协议)的软件进行通信了。
    第9章介绍了Web上的各种客户端类型,包括无处不在的浏览器、机器人和网络蜘蛛以及搜索引擎。
    第10章讲述了仍在研究之中的HTTP协议:HTTP-NG协议。
    第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。包含下列4章。
    第11章讨论了一些识别用户的技术,以便向用户提供私人化的内容服务。
    第12章重点介绍了一些验证用户身份的基本方式。这一章还对HTTP认证机制与数据库的接口问题进行了研究。
    第13章详述了摘要认证,它是对HTTP的建议性综合增强措施,可以大幅度提高其安全性。
    第14章说明了因特网的密码体系、数字证书以及SSL。
    第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。第四部分包含以下3章。
    第15章介绍了HTTP内容的结构。
    第16章探讨了一些Web标准,通过这些标准,全球范围内的用户都可以交换以不同语言和字符集表示的内容。
    第17章解释了一些用于协商可接受内容的机制。
    第五部分介绍了发布和传播Web内容的技巧。包括以下4章。
    第18章讨论了在现代的网站托管环境中布署服务器的方式以及HTTP对虚拟网站托管的支持。
    第19章探讨了一些创建Web内容,并将其装载到Web服务器中去的技术。
    第20章介绍了能够将输入Web流量分散到一组服务器上去的一些工具和技术。
    第21章介绍了一些日志格式和常见问题。
    第六部分是一些很有用的参考附录,以及相关技术的教程。

    本书知识点较多,内容广而浅,没有难度,可以帮助读者全面了解Web底层结构。

    《深入理解计算机系统》

    本书从程序员的角度介绍了计算机系统,概述了计算机整个系统的实现,帮助读者建立一个层次性的计算机系统模型。

    第1章:计算机系统漫游
    大概介绍了整个计算机系统
    第2章:信息的表示和处理
    介绍了存储单位、整数和浮点数的表示及运算
    第3章:程序的机器级表示
    介绍了汇编语言
    第4章:处理器体系结构
    介绍了处理器硬件的设计,介绍了指令集、逻辑电路、指令处理的5个阶段(取指、译码、执行、访存、写回),介绍了指令流水线原理,以及使用暂停、转发等技术处理流水线的数据相关和控制相关。
    第5章:优化程序性能
    介绍了程序优化策略,优化循环的关键路径,包括:
    消除连续的函数调用
    将计算移到循环外
    消除不必要的存储器引用(引入临时变量保存中间结果)
    展开循环(增大循环步长)
    通过使用如多格累积变量利用并行执行
    重新结合
    用功能的风格重写条件操作,使得编译采用条件数据传送
    第6章:存储器层次结构
    介绍了高速缓存SRAM、主存DRAM、磁盘的实现原理,介绍了存储器层次结构。
    第7章:链接
    介绍了
    链接器的主要任务(符号解析和重定位)
    静态链接
    静态库
    动态链接
    第8章:异常控制流
    介绍了4种类型的中断,用户模式与内核模式的切换,进程控制和进程间信号通信,非本地跳转。
    第9章:虚拟存储器
    介绍了虚拟存储器,地址翻译,CPU、MMU和缓存、磁盘之间的页命中、缺页的执行过程,动态存储器分配(堆)等内容。
    第10章:系统级I/O
    介绍了文件的操作,描述符表->打开文件表->v-node表。
    第11章:网络编程
    介绍了集线器、网关、路由等,介绍了套接字操作,实现了简单的web服务器
    第12章:并发编程
    介绍了进程、I/O多路复用、线程这三种不同的构建并发程序的机制,并扩展了一个并发网络服务器。
    介绍了互斥,介绍了生产者-消费者和读者-写者模型,介绍了线程不安全函数和竞争、死锁。

    该书介绍了系统底层实现,为我整体理解计算机很有帮助。

  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/chaogex/p/11262509.html
Copyright © 2011-2022 走看看