零基础学软件开发难吗有哪些 初学者必读的零基础学软件开发难吗指南?

软件开发所需要的软件工具有哪些?
登录●免费注册
专业手机App&小程序制作开发公司,免编程轻松制作App&小程序
1、软件开发需要哪些类型的工程师?
软件开发需要多种类型的工程师,包括软件工程师、硬件工程师、网络工程师、数据库工程师、系统分析师、系统架构师和用户界面设计师等等。软件工程师主要负责软件开发的设计、实现、测试和维护等工作;硬件工程师主要负责硬件的开发和维护;网络工程师主要负责网络系统的设计和实施;数据库工程师主要负责数据库的设计和维护;系统分析师主要负责系统的分析和设计;系统架构师主要负责系统架构的设计;用户界面设计师则主要负责用户界面的设计。
2、软件开发需要掌握哪些技术?
软件开发需要掌握计算机基础知识,比如操作系统、网络技术,编程语言,如C,C++,Java,Python,等;框架,如Spring,Hibernate,Struts等;数据库,如MySQL,Oracle,SQL Server等;软件设计,如UML,OOAD,面向对象等;软件测试,如单元测试,集成测试,功能测试,性能测试等;软件开发工具,如Eclipse,Visual Studio等。
3、软件开发所需要的流程是什么?
软件开发所需要的流程包括:需求分析、系统设计、编码实现、软件测试、调试以及维护等几个阶段。需求分析阶段,对软件的需求进行分析,分析需求的细节,并且建立数据库和构建系统架构;系统设计阶段,确定系统的具体结构,将硬件和软件组合;编码实现阶段,采用相应的编程语言进行软件编码;软件测试阶段,对软件进行测试,确保软件功能正常;调试阶段,对软件进行调试,消除软件中的错误;维护阶段,对软件进行维护,保持软件的正常运行。
4、软件开发所需要的软件工具有哪些?
软件开发所需要的软件工具有很多,常用的工具有:操作系统,如Windows,Mac OS,Linux等;编程语言,如C/C++,Java,Python,Perl等;数据库,如MySQL,Oracle,SQL Server等;开发工具,如Eclipse,Microsoft Visual Studio,NetBeans等;软件测试工具,如Selenium,JUnit,TestNG等;构建工具,如Ant,Maven,Gradle等;版本控制工具,如Git,Subversion等;浏览器,如Chrome,Firefox,Internet Explorer等。
5、软件开发中需要注意哪些重要因素?
软件开发中需要注意的重要因素有:1)软件的需求分析要清晰准确,以保证软件的开发质量,完成需求的满足;2)技术架构要合理,以保证软件的可维护性;3)代码的质量要高,以保证软件的稳定性;4)软件的测试要严格,以保证软件的可靠性;5)软件的维护要及时,以保证软件的长期有效性。
6、软件开发过程中存在哪些可能的风险?
软件开发过程中可能存在的风险有:1)技术风险,由于技术上的不熟悉,或者选择了不合适的技术,可能会导致软件开发过程中出现延期、质量问题等;
立即体验免编程制作App
当我刚开始学习软件开发的时候,我根本毫无头绪。我感觉很沮丧。所有的东西我都看不懂,我甚至不认为我可以“掌握”编程。我之所以告诉你这点是因为我觉得既然你选择了我这本书,说明你可能跟我那时的感觉是一样的。不要担心,这很正常。事实上,这根本就是常态。让我来彻底澄清一件事:你不需要是一个天才,甚至智力水平不需要超过平均水平,也能成为一个软件开发者。对于一个刚刚进入软件开发大门的初学者,如果你没有觉得茫然,并感觉自己像是被在脚踝上绑着重物丢进池底的话,你可能是哪里做错了,也可能你压根就不是一个普通人——或者二者皆是。无论如何,你应该清楚刚入门的时候是会感觉困难和混乱的,但是这种 状态不会持续太久的——我向你保我是如何起步的依稀记得当我开始自学编程的时候。那时候并没有像现在这么多的编程资料。事实上,我根本没有任何的资料。我去下载了一个很流行的 MUD 源码(Multi-User Dungeon 多人地下城,你可以将它想像成一个基于文本的魔兽世界,毕竟那是一个使用调制解调器进行拨号上网的时代)。但是我根本搞不懂我看的代码是什么意思。我所知道的只是我想创建一个属于自己的修改版 MUD 并为其添加新的特性,而要达到这个目标的关键就隐藏在这一堆看不懂的神秘文本中。于是我开始瞎搞,我修改了某些变量的值。我试图去寻找控制暴击机率的代码,并对其进行修改,重新编译,然后看看会发生什么。有时候它照我的预想运行了,而有时候它根本编译不起来。在探索代码可以运行和不能运行的过程中,我已经学习到东西了。我依然不懂我所修改的东西,但是经过了一个星期左右的“瞎搞”,我居然真的创建出了一个有我自己添加过功能特性的新版本 MUD。成为一个娴熟的程序员还有很长的路要走,但我已经开始了 —— 所有人都需要一个开始。我讲这个故事是想让你明白,相比直接拿起一本书,相比去大学或者培训机构,相比其它任何事情...这才是入门编程的正确方式。你必须自己熟悉代码,了解哪些方式可以让它工作,而其它方式不行。(我确信这才是学习的最佳方式。请参考我的软技能一书中关于学习的章节。)但是,学习如何编码跟如何进入到软件开发的世界之间还是有很大区别的。没错,你必须先学会编码,但是软件开发并不仅仅是写代码,本章讲的就是关于代码之外的那些技能。了解这职业 首先,你需要了解一些软件开发的知识。它比你想像中要来得容易,也要来得难。本书有一整个小节专门讲述“软件开发所要掌握的技能”,但是我想先要这里做一个快速的综述。软件开发并非只是写代码。编程是其中很大的一部分,但是如果只会编程的话,你可能走不了太远 —— 特别是当你想从工作中脱颖而出的话。软件开发背后的思想是将手动的过程自动化,或者是创造一个新的自动化过程来完成一些无法使用手动完成的工作。想像一下我现在正在使用的文字处理软件。我正在使用 Google Docs 写这篇文章。如果没有 Google Docs 或者其它的文字处理软件,我就必须使用打字机或者手写的方式来写文章。如果我想要对文章进行格式化,我就必须在打印前手动进行排版。如果我想修改一些错误 —— 特别是拼写错误 —— 的时候,我需要在手边放上一瓶涂改液。(可能还需要一瓶威士忌。)当然,现在不仅仅有 Google Docs 可以帮助我完成这些事情。还有很多其它的硬件或者软件可以帮我将手写或者排版的过程自动化,但是我想你已经明白我的意思了。因此,在你上车之前,我需要特别强调一件事,这件事你越早知道越好。在将一件事自动化之前,你必须知道如何手动完成它。 了解需求太多有抱负 —— 同时也是有经验 —— 的开发者在没有完全理解软件功能需求的情况下进行开发。他们一心只想着写代码。(这对于学习编码来说没有问题 —— 就像上面 MUD 的例子 —— 但对于开发一个企业级软件却是行不通的。)当然,你比他们更机智,因为现在在看这本书。弄清楚待解决的问题是所有软件开发过程的第一步。你想实现自动化过程的是什么?针对这个问题,不同的软件开发模式有不同的办法,不过对我们来说,目前那并不重要。现在最重要的是,你需要通过某些方法,去收集需求并在开发真正编码之前理解你需要解决的问题是什么。这件事可以很随意,跟潜在的客户讨论下他想要的软件,以及这个软件有哪些功能。也可以很正式,编写一份标准的文档说明。 设计一旦你明白需求是什么,你就可以开始设计如何使用代码完成这个需求了 —— 再次地,你需要在动手写代码之前完成设计。可以把它视为你的代码架构蓝图。同样的,不同的软件开发模式有不同的方法来解决这个问题,但现阶段最重要的还是你需要在开发编码之前进行某种程度上的设计。这对于不同规模的软件都适用。有些学习过敏捷开发(会在之后的章节中讨论到)的程序员觉得他们不需要任何设计,只需要开始编码就行了。虽然事前设计不是敏捷开发的重要,但是设计仍是必要的。你不可能随随便便就写出一个软件来。 编码只要设计完成后,你就可以开始针对这个软件的功能编写一些测试了(也就是测试驱动开发或 TDD),也可以直接开始写代码了。(我们会在后面的章节讲到 TDD。)编码是一个专门的主题,所以在这里我并不会详细展开,不过我想推荐两本必读的关于如何写出好代码的书。首先,我推荐 Steve McConnell 的《代码大全》,这是一本所有程序员都必读的经典书籍。第二本是 Rober Martin 的《代码整洁之道》,教你如何写出更好代码的另一本经典书籍。用现在的话讲就是,这两本书可以教你如何写出优雅的代码,即有良好的可读性,同时易于维护。这两本书对我的编码技术有非常深远的影响,特别是在于代码的清晰性和设计上。 测试及发布一旦编码完成了,我们就该发布了,不是吗?错!现在进入到了对代码进行测试的流程。还是那句话,不同的开发模式有不同的办法来处理这个问题,但是通常来说,在软件正式发布给用户之前都需要进行某种程度上的测试。比如对于传统的瀑布流开发模式,测试阶段处于整个软件开发过程的末期。但是,在敏捷项目中,在每一个迭代过程中都需要进行测试,每个迭代通常为 2 个星期左右。一旦代码测试完成了,就开始进行发布了,关于发布也有它自己完整独立的流程。我们现在还不会深入到细节中 —— 后面会有一整章专门讨论这个问题 ——,但是发布流程其实就是将开发完成的软件部署到服务器上,在 app store 上架,或者使用其它可以让用户获取到软件的方式。(这个过程可以相当复杂。)在这个过程中,代码可能 —— 好吧,其实是必须 —— 被存放到源码仓库中,这个源码仓库会管理不同版本的代码,并且它在开发过程中的变化都会被存储下来。在某些比较复杂的应用中,会涉及到数据的存储,这里我们还需要用到数据库。数据库通常会用来存储应用的用户数据,或者一些配置信息,而这些数据也都需要跟随代码一起更新。很多软件开发团队会使用某种形式的持续集成环境,它可以在代码被提交的时候自动进行构建。编程不仅仅是写代码最后,别忘了调试。作为一个开发者,你的大部分时间将会花在搞清楚为何你的 —— 或者别人的 —— 代码不能正常工作。如你所见,软件开发可不仅仅是写代码这么简单。在你找到一份真正的程序员工作之前,你需要对所有的这些技术有所了解。更进一步地,但愿你对这其中的某些技术能达到熟练的程度。不要害怕,帮你达到上面的目标就是我写作这本书的目的 —— 或者至少给你指明一个正确的方向。你可能需要自己去学习所有的技术,但是至少我会告诉你如何去学习它们。 制定一个计划好吧,John,现在我已经明白了软件开发不仅仅是写代码,并且我愿意花很多时间去进行调试,但是你还没告诉我如何入门呢?怎么说?唔,是的。我明白你的意思,但是你知道吗?我有一个好消息告诉你:你已经入门了。恭喜。在你拿起一本书,就像这本一样,并且开始理解软件开发不仅仅是写代码时,你已经比其他大多数的开发者有一个更好的开始了。没错,没错,这种说法是有点自我感觉良好,但是它确实是真的。有一天当你成为一个像我一样老成的软件开发时,你也会说同样的话。现在,让我们讲点更实用的,你需要制定一个计划。是的,就是一个计划。一个真正的,不瞎逼逼的计划,它能让你从对软件开发一无所知(或者接近一无所知)成长为一个经验丰富的开发者。你有很多不同的路可以走 —— 我会在后面的章节中一一介绍 —— 但是选哪条路不是最重要的,更加重要的是你要选一条路,并坚持走下去。 整合计划让我们看看你的计划应该是什么样的。首先,你需要对自己当前的水平有一个正确的评估,同时搞清楚需要学习哪些知识。你有任何软件开发的经验吗?你了解任何一门软件开发语言吗?你之前写过任何应用吗,或者你完完全全就是从零开始?我前面提到的其它技能呢?你有没有掌握它们中的任何一项?你对数据库,源码版本控制,测试驱动开发,测试,调试或者软件开发模式有任何的了解吗?同时,问问你自己想做哪个方向的软件开发。很多新手可能都想做游戏开发,但是这现实吗?如果是的话,你要从哪里开始?你有没有做好觉悟,投入大量的时间去应对挑战,去走这条很长并且很孤独的道路?太多的人在没有经过任何的事前思考的情况下就朝着某个方向出发了。花些时间去回答这些问题,这样你就会在开始前有一个合理清晰的计划。不要误解我的意思,我当然会在本书中尽量帮助你解决这些问题,但是我不能代替你做全部的事情。我能够给你提供成为一个好的,甚至是优秀开发者的所有信息,但是你需要自己将这些信息进行整合并制定一个适合自己的计划,然后照着这个计划走。 创建计划一旦你对这些问题有了自己的思考,就到真正创建一个计划的时候了。创建计划的最好方式就是从你想达到的目标进行倒推。相比于“学习如何编程”或者“成为一个软件开发者”,你要对自己想成为哪个方向的开发有更明确的目标。在本书的“你所需要掌握的软件开发知识”小节中,我会介绍不同的软件开发角色与工作类型以供你选择,你也可以自行上网搜索,来决定确定哪个最适合你。你的目标要越具体越好,这样一来,你就可以知道自己需要学习哪些知识,如何制作简历以及作品集,想进入什么学校或者培训机构,甚至是应聘什么样的工作。我知道做出选择和下定决心有多困难,但是关于目标的重要性我再怎么强调也不为过。这个目标越具体,后续的学习就越容易。你会清楚地知道每一步需要学习什么知识,以及如何行动。谁想成为一个“运动员”?思考一下这个问题:假设你的目标是成为一个“运动员”。这个目标就太宽泛了,你要如何训练自己成为一个“运动员”?可能你会去举重和跑步,也有可能去训练游泳。同时,你还会去网球场上练习击球。你会努力地去做所有运动训练,好让自己在最终决定时,可以加入任何一个运动团队。这听起来很荒谬,对不对?这就跟有人想成为“软件开发者”一样 —— 实际上更甚 —— 荒谬。相反地,你需要一开始就选定一项运动。一旦你选定了这项运行,你就可以知道如何针对这项运行进行训练,这会让你活得更轻松 —— 相信我。从目标开始进行倒推来确定达到这个目标所需要的知识和行动。一旦你完成这个步骤,就可以真正开始制定计划了。计划的一开始应该是围绕所有你需要学习的技术。弄清楚所有这些知识的学习顺序,以及如何进行学习是至关重要的。接着,你要弄清楚应聘一个岗位以及找到第一份工作需要准备哪些东西。 最后,你要为获得这份工作定一个确切的计划。你要在哪里找工作?你需要做什么?你申请的是什么样类型的工作?我可能还会为你增加一个计划,那就是在找到第一份工作后,如何继续提升自己的开发能力及学习更多的知识。这里的信息量可能有点多,但不要担心。我写这本书的目的就是为了让所有的这些对你来说都变得更加简单。在接下来的几章中,我会帮你弄清楚你所要掌握的技术以及如何学习这些技术,在更后面的章节中,我会给你描述获得一份工作的所有细节。现在,你可以开始思考你的计划应该是什么样的,以及尝试思考自己想成为哪种类型的软件开发者。 Hey John但是我真的不知道自己想成为哪种类型的开发者?这是一个好问题。如果你是一个初学者,你甚至可能都不知道有哪些选择可以选 —— 除了游戏开发者。幸运的是,这并不是一个很难弄清楚的问题 —— 虽然需要你进行一下网上搜索。在这本书的后面,我会讨论一些软件开发者的类型。大多是在“你所需要掌握的软件开发知识”一节中,但是同时你也需要进行自己的搜索。问一些你认识的软件开发者,他们做的是何种软件开发,以及他们是何种类型的软件开发者。思考一下你对创造哪些东西更感兴趣,并搜索一下这个东西的相关技术及编程语言。对于一个软件开发者来说,现在有太多的技术和相关的细分领域了。你想开发 web 应用程序吗?手机应用呢?你想写代码来控制冰箱的恒温还是想向宇宙中发送宇航员?仔细思考这些问题并进行搜索。如果你的问题是对的,那么答案就不会那么难找了。一个具体的例子我一直都觉得实例会起到很大的作用,所以现在我们来看一个真实的场景,一个想以 Node.js 为主要技术的 web 开发者的计划: 目标:成为一个 Node.js 开发者计划:学习学习 JavaScript 基础学习网页与 web 开发技术,如 HTML 与 CSS学习 Node.js 基础可以使用 Node.js 开发一些简单的 web 应用学习不同的框架以及其它开发者用来开发 Node.js 应用的技术。从上面的搜索中了解一些可以使用的技术及框架。学习 Node.js 支持的某种数据库技术。学习计算机科学基础:算法。数据结构。学习写清晰代码的最佳实践。学习如何设计 Node.js 应用的架构。为找工作做准备开始寻找在自己领域中的 Node.js 开发者的工作要求,并确定公司需要哪些技术。列表出你最有可能获得工作的本地公司列表。开始参加本地的技术分享会。在网络上认识其它的本地 Node.js 开发者。雇一个简历写手来帮助自己写一份好的简历。练习技术面试的相关问题。模拟面试。建立一些 demo 应用的作用集供展示。获得工作联系自己网络上的所有人,让他们知道自己能提供什么样的价值以及我正在寻找哪种工作。开始申请初级或者实习岗位的工作。计划每天至少应聘两个公司。面试后进行复盘,并决定哪些技术需要深入学习。你的计划一开始会很粗糙,但是随着你对需要学习的内容有了更多的了解,就可以在计划中补充更多的细节了。在一开始就准备好计划是相当重要的。你可以随时修改或者调整计划,但是如果你在一开始没有计划,你会像无头苍蝇一样乱撞,这有极大的可能导致沮丧并放弃学习。在公众号界面回复“php”可获得,php入门到精通视频课程喔!
书到用时方恨少,平时多读读书吧~!1《大型网站技术架构 核心原理与案例分析》《大型网站技术架构:核心原理与案例分析》是我非常喜欢的一本书,能够将很多晦涩的概念讲的通俗易懂,全方面阐述如何构建高可用、高性能、高伸缩性和高扩展性的网站系统,并对多个典型的大型网站系统架构设计的案例进行分析,保证让你爱不释手。《大型网站技术架构 核心原理与案例分析》的作者是李智慧,原阿里巴巴技术专家。Java的大多数应用都是用在Web上的,现在只要稍微大型一点的Web应用,都一定是一个分布式系统,那么一个分布式系统用到了哪些技术?一个大型网站是如何从一个小型网站成长起来的?如何保证你的网站安全?分布式系统使用到了缓存,有哪些缓存?缓存的使用有哪些值得注意的事项?关于分布式的知识点,都在这本书里面有体现,只有你想不到,没有他写不到,而且写得非常易懂,基本属于看一两遍,再记一些笔记就知道是怎么一回事儿了。多看几遍,对分布式的理解一定会加深不少。而且里面不仅仅是分布式的知识,还非常接地气地写了如何做一个好的架构师,其实我认为这不仅仅是写给想做架构师的读者看的,就是给读者一些建议,如何更好地提出意见、如何更让别人关注你的声音、如何看到他人的优点,入木三分,让人获益匪浅。2《大型网站系统与Java中间件实践》《大型网站系统与Java中间件实践》作者曾宪杰,是淘宝的技术总监,算起来应该在阿里有至少P8的级别了吧。这本书的部分内容和上面一本李智慧的《大型网站技术架构 核心原理与案例分析》有所重合,像分布式系统的演化、CDN、CAP理论和BASE理论等等,这也更说明这些都是分布式系统或者说是一个大型网站重点关注的内容,当作一次再学习也不错。本书要突出的重点是中间件三个字,中间件是分布式系统中一个非常重要的东西,其最重要的作用应该就是解耦,降低模块与模块之间的强依赖,不同的模块之间的依赖度降低,便可以各自独立地开发自己的功能,这也可以说是软件工程发展的目标和驱动力。因此,本书有一部分的内容就是基于中间件,详细讲解了中间件与JMS的各种知识,适合对分布式系统比较熟悉并且想要往中间件方面有一定研究的读者。3《从Paxos到ZooKeeper 分布式一致性原理与实践》作者倪超,阿里巴巴工程师。这本书是我最近在研读的一本书,和上面的《大型网站系统与Java中间件实践》一样,属于分布式组件的范畴,属于有些深入的内容,当然也是我自己的个人兴趣。当然,如果有志向做一个出色的大型网站架构师、公司的技术总监之类,这些知识当然是必须掌握的。这本书对2PC、3PC 和 Paxos 协议进行了详细的分析与对比,对 Zookeeper 基本概念和技术模型、ZAB 协议以及 Zookeeper 应用场景进行了详细描述,同时提供了大量实践源码(如Zookeeper 安装、Java 客户端 API 使用等),形成一套完整的从理论到实践的体系。理论与实践兼重,强力推荐!4《深入分析Java Web技术内幕》《深入分析Java Web技术内幕》,作者许令波,淘宝工程师。这本书我用一个字概括就是:全。真的非常全,HTTP、DNS、CDN、静态化、Jetty、Tomcat、Servlet、Spring、MyBatis等等,什么都有,涉及知识面非常广,但又不像专门精讲某个知识点的书籍一样讲得非常深入,感觉这本书就是尽量去用短的篇幅讲清楚一些Java Web使用到的技术的内幕,让读者对这些知识点的技术内幕有一个理性的认识。不过,尽管每个知识点的篇幅都不多,但是重点都基本讲到了,是一本让人真正有收获的书。如果想进一步了解这些技术的技术内幕,就要自己去买相关书籍或者自己上网查资料了,有种抛砖引玉,或者说师傅领进门、修行在个人的感觉。5《ActiveMQ in Action》这是关于 ActiveMQ 的书(英文),并且是我目前看到的最好的。从 JMS 开始讲起,到ActiveMQ 的配置与部署架构,再到 ActiveMQ 的高级特性,通俗易懂又非常详细,是学习并使用 ActiveMQ 的首选。另外,我不得不在这说一句,如果你觉得自己英文阅读水平不是很好,想找所谓的《ActiveMQ in Action中文版》,请直接放弃吧!6《Spring源码深度解析》《Spring源码深度解析》,作者郝佳。Spring这个框架做得太好了,功能太强大了,以至于很多开发者都只知Spring,不知什么是工厂、什么是单例、什么是代理(我面试别人的真实体会)。这种功能强大的框架内部一定是很复杂的实现,这就导致一旦你的程序使用Spring,出了问题,可能是Error、可能是Exception、可能是程序运行结果不是你的预期的,出现诸如此类问题的时候,将会让你感到困惑,除了上网查资料或者问别人似乎没有更好的解决办法。研读Spring的源代码不失为一种很好的学习方法,我个人认为这有很多好处:理解框架内部的实现之后,可以主动去解决问题,而不需要依赖别人;Spring框架内部实现用到了很多设计模式,很好的代码设计思路,这将会对你写代码、对你理解设计模式有很大的提高;研究Spring框架将会大大增强你读代码的能力,我相信只要你能研究清楚Spring内部是如何实现的,其他任何一个框架的源代码都难不倒你。总而言之,我认为读代码的能力是一个普通的程序员和一个好的程序员之间最大的差别之一,前者只会把别人写好的东西拿来用,后者不仅能用好,还清楚知道别人写好的东西底层是如何实现的,在出现问题的时候可以轻松解决。Spring源代码,个人推荐《Spring源码深度解析》一书,真要研究透并且写清楚Spring源代码,恐怕三四本书都不够,作者在近400页的篇幅中尽量去讲解Spring源代码是如何实现的,殊为不易,尽管无法讲得完全,但是相信作者的讲解配合上读者自己的研究,一定可以对Spring的实现有更深度的理解。7《Effective Java中文版》《Effective Java中文版》的作者是Joshua Bloch,这个人就很厉害了,他是谷歌的首席架构师,属于超级技术大牛级别了吧,呵呵。从这本书的知名度以及其作者的来头来看(多提一句,这本书也是Java之父James Gosling博士推崇的一本书),我相信这一定是一本值得一看的好书。好的代码是每个Java程序员都应该去追求的,不是说我今天写一段好代码相比写一段烂代码对性能会有多大的提升,更多的应该是提升了代码的可读性以及可以规避许多潜在的、未知的问题,避免代码上线之后出问题而花时间去维护—-无论从时间成本、人力成本还是风险成本来说,这都是非常高的。8《Java并发编程实战》作为一本常常位于Java程序员必读十大书籍排行榜前几名的书,还是一定要推荐给大家的。本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。9《Java多线程编程核心技术》《Java多线程编程核心技术》作者高洪岩。想要学习多线程的朋友,这本书是我大力推荐的。此书和《Java并发编程实战》相反,这本书的特点是大篇幅的代码+小篇幅的精讲解,可能这和中国人写的书比较偏向实用主义的风格有关。本书关于线程安全、synchronized、Reentrant、Timer等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详细讲解到,非常有实践价值。有兴趣的朋友们,我相信只要你们跟着这本书里面的代码敲、运行、思考,三步走,对于多线程的使用与理解一定会进几大步。不过这本书的缺点就是对于Java并发包下的一些类像CountDownLatch、Semphore、CyclicBarrier、Future、Callable等都没有讲到,重点的CAS和AQS也没有触及,重点类的实现原理也没有提。当然,这很深入了,在学习了这本书之后如果能再去对这些知识进行一些学习、研究的话,你一定会慢慢成长为一个很厉害的多线程高手。10《深入理解Java虚拟机(第2版)》评语:本书的亮点在于结合代码讲解各种内存溢出异常及其原理,通过代码实例解释内存分配和回收机制,并详细介绍了几种虚拟机可视化监控工具的使用,理论与实践并重。11《高性能MySQL》Mysql 领域的经典之作,你的书架里必须要有这本书。不要认为掌握了那些基本的用法、能够满足普通工作所需就可以了,这本书将会告诉你你知道的太少了!个人认为这本书不仅仅能让你深度掌握 Mysql 相关知识,你还能从中学到很多思想,而这些思想是可以广泛应用到其他数据库及数据库应用上的。12《实战Java高并发程序设计》来了解下Java并发的技术点吧。这里面包括了并发级别、算法、定律,还有开发包。在过去单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发就显得尤为重要。这本书主要介绍基于Java的并行程序设计基础、思路、方法和实战。在过去单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发就显得尤为重要。13 《分布式Java应用:基础与实践》来自淘宝大牛 bluedavy,推荐作为学习分布式应用入门书籍。阿里巴巴高级研究员林昊早年的书了,这些理论放到今天估计工作一两年的人都耳熟能详了,我个人很早以前就知道此书一直没有找到资源,去年找了电子版通读了一下,里面对于性能调优、分布式部署的实战经验确有可借鉴之处,书很薄,但是知识很重。14 《Head First Java》Head First Java是所有编程或者Java初学者最适合的书籍,我很喜欢轻松和寓教于乐的Head First风格,这应该是最有意思的关于Java的书。无论是初级,中级还是高级都能从中有所收获。学习本书,你可以了解到类,对象,线程,集合等编程知识,还可以了解到泛型,枚举,可变参数和自动装箱等语言特性。本书中还涉及到了Java高级编程中的Swing,网络编程,IO操作等,可以让初学者对Java有比较完整地概念。如果你是一位Java初学者,不要犹豫,这本书最适合你了。15 《Head First 设计模式》Head First设计模式又是一部Head First系列的书籍。作者为Kathy Sierra及其团队。当我在2006年开始读这本书的时候,我对设计模式并不是很了解。设计模式解决什么问题,怎么解决问题,如何使用设计模式,设计模式有什么好处,这些问题我几乎都无法回答出来。但是当我读完这本书的时候,一切都豁然开朗。在本书介绍继承和组合一章,使用简单有趣的例子,一步一步提出问题并解决问题,最终得出最优解。本书中会有很多要点总结,幽默对话,练习题还有有名的单词接龙等帮助你更好地了解设计模式。如果你想了解Java中的设计模式,请带走这本书。16《C++服务器开发精粹》服务器技术的开发涉及的面比较广,包含编程语言的知识,Linux环境下的操作和调试,多线程和资源同步,socket编程,网络故障排查,网络通信协议,Redis等多方面的知识。在市场上很难找到一本囊括所有内容的书。即便有,也是蜻蜓点水,一笔带过。今天6月上市的这本《C++服务器开发精粹》刚好填补了这一块的空白。经过将近4个月的阅读,我终于读完了这本厚重736页的技术书。本书称为“开发精粹”并不为过,里面满满的干货,将服务器这块难啃的骨头拆解得淋淋尽致,恰到好处。开篇作者就讲解了RAII惯用法,并提供代码例子由浅入深地说明使用这种方法的好处。而后将C++11/14/17的新特性做了详细的说明和讲解,比如新的final、override、=default、=delete、auto等关键字的用法以及结构化绑定和智能指针的使用,可见内容详实和丰富的程度。17企业物联网设计主要作者是博世软件部门开发主管和Machina Research创始人。主要介绍了什么是企业物联网、企业物联网的行业用例、物联网实施的方法论和按照该方法论设计的一个实际应用案例。18云中的IoT周洪波老师的著作。对物联网的综合性纲领性的论述。对协议和物联网中间件架构讲解的很好。不过涉及的标准和技术太多,需要在实践中再慢慢理解消化。里面的配图画的棒棒的。例如下图,周老师应该是用章鱼哥表达云计算和其他相关物联网技术之间的关系的先驱。最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的程序员的道路上,我们可以一起学习、一起进步。

我要回帖

更多关于 零基础学软件开发难吗 的文章

 

随机推荐