计算机软件开发学习路线是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机软件开发学习路线是啥?相关的知识,希望对你有一定的参考价值。

计算机软件开发学习路线是什么?

Java零基础的小伙伴,我建议看Java的在线教程去学习。
第一:先学习Java的核心库(JavaSE)
JavaSE的内容包括:环境搭建、基础语法、面向对象、数组、集合、常用类、IO流、反射机制、网络编程……..
第二:mysql数据库
搞定一门数据库相关的课程,例如:MySQL、Oracle,搞定一个就可以了,目前互联网公司,例如:京东、阿里等,他们都在使用MySQL,所以建议大家学习MySQL数据库,小巧轻盈,免费。
由于互联网公司的项目访问量比较大,所以一般会搭建数据库的集群,可以一个数据库不够,所以需要搭建数据库集群,为了应付高并发。(搭建的比较多的时候,免费就很重要了。)
第三:WEB前端
以后从事Java开发,从事JavaEE开发,主要开发的系统结构是B/S结构的,B指的是Browser,S指的是Server。要开发这种系统,B端要会,S端也要精通。WEB前端的学习就是学习B端技术。
包括:html 、CSS、javascript(JS)、jQuery框架(底层对JS进行了封装)…
第四:JavaWEB
WEB后端其实可以是很多种不同的编程语言,例如:php、C、C++、Java,他们都可以进行WEB后端的开发,我们既然选择了比较火爆的Java,那么我们学习的后端一定是基于Java语言实现的。
包括:Servlet、Filter、Jsp、EL、JSTL、MVC架构模式、数据库连接池(阿里巴巴的Druid连接池)、代理模式(动态代理)。另外后端学习了之后,还要学习一个异步编程技术AJAX。(完成网页的局部刷新,AJAX其实不属于后端,是前端浏览器上的程序。)
学习到这里为止,表示Java基本/基础的技术已经学完了。但是这些最基层的技术在实际的开发中不会使用的,一般为了开发效率,都会使用大量的提前封装好的框架。
第五:最好能够停留下来,做一个项目。
这个项目最好能将之前所学全部串起来。(对以前的知识点进行巩固。)
这个项目最好是基于:Servlet + Jsp+AJAX+jQuery+MySQL….
在这个项目的开发过程中:大家一定要记住,目前比较好的项目自动构建工具:Maven是一定要精通的。还有一个就是团队协作开发:Git/SVN是一定要会用的。(目前使用Git比较多一些。)
第六:学习高级框架
Spring、SpringMVC、MyBatis(持久层框架,这个框架互联网公司使用比较多,因为互联网项目需要进行SQL优化,MyBatis的SQL优化很方便,所以大部分都是使用MyBatis)
Struts2(很少使用了,使用这个的肯定是很老的项目)、Hibernate(传统企业,还有政府等可能会使用Hibernate。)
SpringBoot(新项目大部分使用的都是boot了。所以在项目中遇到还在使用SSM的一般都是遗留项目。)
当你走到这里之后,基本上你可以出山了。(去找工作应该问题不大,但前提是你学得好。学习的深度够了,广度够了。)
第七:最好能有一个大型项目是使用框架来完成的。
SpringBoot做一个项目。
Spring SpringMVC MyBatis做一个项目。
这个项目最好是找几个人搭伙做一下。体验一下团队协作。(尤其是使用一些协作的工具。怎么沟通,怎么写日报,怎么开会,怎么使用Git,等等….)
第八:如果你的薪资想达到15K的话,你可能需要还要学习一些分布式相关的一些技术。
能够应付高并发的一些技术,例如:分布式框架Dubbo、SpringCloud、MQ、nginx、Redis…..
最后在啰嗦一下,一定要形成自己的编程思想。
编程思想的形成很难。需要大量代码的堆积才可以。怎么形成编程思想呢?
千万别死抄代码。不要像行尸走肉般的抄代码,没有用。只能提高指法速度,无法形成编程思路。
1、打好基础是重中之重
基础部分可能很枯燥,但是一定要耐心坚持下去。因为打基础好比是在造轮子造汽车,没有打好基础在后面的学习就好比走路,可以说后面遇到的百分之七八十的问题都是基础没学好造成的。
2、多看官方文档多读源码
一定要看JDK相关类库、常用框架各种功能的源码,去了解其底层实现的原理。总的来说这个也是在打基础的部分,Java基础非常扎实才能看懂,在我们学习一个类的源码时,肯定会衍生出其他各种各样的问题,供我们来了解和学习,这也就是我们下一步学习的目标和方向。慢慢的,我们就会学习更多的知识,并积累更多的经验。
3、系统性学习,循序渐进
不要急于求成,每个知识点都要看,并且每个知识点都要勤加练习。有的同学在学习过程中觉得这个知识点简单,就跳着学习,其实这是个很大的问题,知识点细节必须要了解。我们学习Java需要循序渐进,一步一步来,不能操之过急。
4、遇到问题
遇到不会做的问题,当然不能置之不理。先在网上查,目前网络上针对很多问题都有完美的解决方案,如果网上没有类似的问题,那可能是你犯了什么小错误。也不要在这个问题上花费太多时间,这需要一定的学习技巧。Java中的知识有很强的相关性,有不懂的地方,可以用其他周边相关知识再回过头来理解,这样既不会耽误学习进度,又能理解自己不懂的地方
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好的jvm(s),整合成一个统一的openjdk。
2)java是典型的oop语言,其执行效率的优化,最早就是lars bak等人从smalltalk等长期优化的经验中总结出来并apply到hotspot上去滴,而smalltalk在早期apple机上搞出了那种拖拖拽拽就开发出app的做法,后来vc,delphi之类的其实都是抄袭或者说借鉴apple的smalltalk的做法,jobs说微软从头到尾都在抄袭apple是空穴来风,这里空穴来风跟王垠使用的空穴来风是一个意思,有趣的是,java的gui并没有继承这种搞法,反而对这种拖拖拽拽就作出app的做法批判有加,到今天,其实java的gui都还不能真正做到拖拖拽拽就作出来,问题很多,个人建议对于纯java的gui开发,还是以写代码为主。
3)jee也是一个或者说是一堆标准,知乎上有些人把maven,jenkins都算做jee是不对滴,jee的标准核心是ejb,其实就是一个xml配置化的java文件,这个标准在4的时候,达到了顶峰状态,几乎所有的挨踢大厂都主动支持该标准,之后开始走下坡路,支持的厂越来越少。
4)java和javascript的关系比很多人认为的要密切,javascript里面的java这四个字母可不是白叫的,比如js的版权和商标都控制在oracle手里,oracle对于js的支持甚至超过其对java的支持,并且喜欢捆绑销售,比如jvm里面就有一个js引擎。
5)jvm里面除了js engine以外还有一个浏览器排版引擎webkit,就是apple safari和google chrome用的那个那个。
6)java支持绝大多数脚本语言,你能叫得上名字的脚本语言,几乎都可以在jvm上执行,比如常见的js,ruby,python,甚至php,lua,只不过除了js以外你需要找到相关的脚本引擎。
7)spring的版权被控制在vmware手里,其实spring的那一大堆东西,本质上是一个非标准的jee实现,比如在jee里面用的inject,在spring里面就是autowire,当然spring曾经深刻滴影响了jee,所以有些东西比如di标准,是spring影响下制定出来的,所以spring的做法会比较特例一点。
8)maven上的jars数量前两天突破800万,其他语言的类库,排名第二的是npm,大概数量是maven的十分之一,也就是几十万,不知道现在突破100万没有,然后是gem,也就是ruby那个,大概是十几万,下来是python的module,大概数量级是几万,没突破十万。
9)java的标准是由一个叫做jcp的组织制定的,所有标准需要经过jcp的执行委员会通过方可执行,jcp几乎包括了你所知道的绝大多数知名挨踢公司和组织,比如google,apple,ibm,intel,arm,red hat,twitter等,还有一些教育机构,比如我国的北京大学,阿里最近一次申请jcp执行委员会成员资格,似乎投票不通过,最近一次执行委员会新增两个成员是arm和jetbrains。
10)微软也曾经是jcp甚至是java的主要贡献者,但是利益驱使下,想扩展java,从而破坏java跨平台的特性,所以跟sun闹翻,其本质原因就是想让客户写的java代码跟windows绑定,sun坚决不同意,闹翻,今天回头看这个结果,只能说:双输,sun挂了,微软的ria也离挂不太远了,silverlight已经放弃了,比起当年ie自带有jvm的支持来说,那完全就是两回事。
11)除了微软以外,jcp还缺少一个重要组织apache,因为apache跟oracle也闹翻了,oracle似乎并不在乎开源组织,而更在意商业公司的支持。
12)java曾经有一个内置的数据库,9之后被剥离。
13)j2me是j2se的子集。
14)vert.x作者tim fox最早在vmware做spring时候看到了node.js,萌生出了制作支持多核的node.x的想法,并在离开vmware后加入red hat将其实现,vmware看到后开始耍无赖,claim node.x后来改叫vert.x的版权,不惜跟red hat打官司,后来各方妥协,将其交给eclipse foundation。
15)oracle在收购bea之前,一开始的目标并不是bea和bea的weblogic,而是jboss,但是jboss表现出了极为有种的一面,在oracle收购成功之前,投入了red hat的怀抱,因为都是开源组织,从此jboss成了red hat的一个子部门,oracle收购jboss失败之后,转向bea,庄思浩气死了,但是没用,最后还是被恶意收购。
16)sun在玩不下去之前最早尝试接触的目标是ibm,ibm嫌太贵,放弃之后,被转手给了oracle。(Java学习交流QQ群:589809992 我们一起学Java!)
17)vert.x的作者tim fox在离开red hat之前曾经发过twitter抱怨,外人比如我们,猜测是因为red hat内部已经有了一个jboss,所以跟vert.x在应用上有了重叠,所以导致tim fox的出走,但是出走之后,red hat答应对vert.x做持续性的战略投入,所以vert.x core的几个developers,其实拿的是red hat的工资,但是vert.x的版权并不在red hat手里,而在eclipse foundation手里。
18)vert.x的几个核心开发人员都是google summer of code的导师,每年年初时候会招收在校大学生搞项目。
19)教育机构相关:scala的作者马丁是德国人,eth的博导,groovy的主要领导人是法国人,jruby背后是东京大学,jboss的作者是法国大学校x的校友,x就是伽罗瓦考不进去的那所大学,伽罗瓦进不了x,所以改读巴黎高师,tim fox毕业于帝国理工,主席去的那个,netty作者trustin lee是acm银牌,现在line工作,毕业于sky里面的延世大学,kotlin是毛子公司jetbrains的作品,看linkedin,很多人毕业自圣彼得堡大学,spring作者rod johnson是悉尼大学的音乐博士,hibernate作者gavin king是澳洲莫那什大学的数学本科毕业生,james gosling这种cmu和calgory的估计烂大街了,sun是斯坦福大学网络的意思,夹带两个私货,aspectj有一个维护小组在mcgill,hbase跟waterloo关系密切。
20)java早期被人认为慢,跟java坚持不用硬件加速渲染有关,死活就是不肯接入directx和opengl,7之后总算开窍,搞了一个图形引擎接入了directx/opengl。
21)casssandra是facebook做失败的项目,被贡献给了apache之后老树开花。
22)groovy被贡献给了apache,现在叫做apache groovy,ceylon被贡献给了eclipse,现在叫做eclipse ceylon。
23)netflix现在是java shop,之前是用.net的。
先想到这么多,有空再写。
参考技术A 软件开发的内容是:需求、设计、编程和测试!
需求:不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据……为了清楚地知道这些需求,你经常要和客户、项目经理等交流。

设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。

编程:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。

测试:目的是让你知道,什么时候算是完成了。如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。

软件开发中,客户和开发人员都有自己的基本权利和义务。

客户:

定义每个用户需求的商业优先级;
制订总体计划,包括用多少投资、经过多长时间、达到什么目的;
在项目开发过程中的每个工作周,都能让投资获得最大的收益;
通过重复运行你所指定的功能测试,准确地掌握项目进展情况;
能随时改变需求、功能或优先级,同时避免昂贵的再投资;能够根据各种变化及时调整项目计划;
能够随时取消项目;项目取消时,以前的开发工作不是一堆垃圾,已开发完的功能是合乎要求的,正在进行或未完成的的工作则应该是不难接手的。
参考技术B 软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。

现在做网页前端的学习路线是啥

最基本的HTML,Jquery就不说了. 我想知道的是nodejs,ractjs,seajs,anuglarjs,webpack 这些东西.还有现在一线城市的前端开发模式是怎么样的,都用了什么技术?

  初学者必看干货web前端学习路线图,随着移动互联网的发展,web前端逐渐受到企业的重视,前端开发人员的薪资也水涨船高,越来越多的人看好前端行业的发展,想要转行加入。下面,给大家分享一份web前端学习路线图,希望对初学者有所帮助。


  Web前端行业的发展,让前端人员能完成比以前更多的职责范围,所以未来前端可以宽口径就业,前景非常好。除此之外,目前web前端工程师日均岗位缺口超50000,平均薪资10820元/月。


  对于零基础的人而言,要怎么学习web前端呢?


  1、前端页面重构。主要内容为PC端网站布局、Photoshop工具及切图、H5移动端网页布局、HTML5+CSS3新特性与交互。学习目标是完成PC端网站布局,可实现响应式布局,一套代码适配PC端、移动端、平板设备等。


  2、前后端网页交互。主要内容为JavaScript语法全面进阶、ES6到ES10新语法实践、jQuery应用及插件使用、设计模式及插件编写、封装JS工具库及WebAPIS、AJAX+PHP+MySQL前后端交互、前端工程化与模块化应用以及PC端全栈开发项目等。学习目标是可以掌握前端工程化工具,如git、gulp、webpack等,搭建项目及开发项目。


  3、Node.js+前端框架。主要内容为Node.js全面进阶、Koa2+MongoDB搭建服务、Vue.js框架、React.js框架、小程序云开发与小程序框架、原生APP与混合APP、数据可视化与桌面应用等。学习目标是掌握桌面应用及可视化大数据,实现复杂数据展示类项目,能够独立完成前后台相关功能,胜任HTML5全栈开发工程师职位。


  很多学习web前端的朋友都希望在学成后能找到一份满意的工作,所以我们在学习过程中一定要注意实战经验的积累,如果你所学的东西对企业没有用,那你所做的一切都是无用功。

参考技术A

学习HTML5,可以了解HTML5课程大纲,分阶段学习,详细的阶段学习课程如下:

第一阶段:PCterminal

PC端页面重构

1、认知行业、岗位、部分专业术语,就业趋势与行业未来展望;

2、HTML5核心元素及布局应用;

3、CSS3核心属性及布局应用;

4、图形、图像软件的使用(PS,FW,AI);

5、浏览器兼容及解决方案;

6、图片整合、滑动门及宽高自适应等高级应用技术;

7、初步接触JS。

PC端交互开发(原生JS)

1、javascript基础语法和变量、控制语句、循环语句、函数、事件处理、数组、常见排序算法;

2、DOM操作和BOM操作;

3、定时器、Cookie本地存储、内置对象、正则表达式、闭包、JS面向对象语法、JSON、堆栈结构;

4、Ajax动态读取数据、异步操作、与DOM、JSON的结合使用;

5、各种主流浏览器兼容性处理;

6、单例、工厂、代理、观察者等设计模式;

7、ECMA6.0新特性介绍。

PC端交互开发 (JQuery)
1、初识jQuery、jQuery的优势、jQuery框架核心功能、最容易混淆的几个概念。
2、jQuery各种选择器的使用,及选择器的应用优化;
3、Dom节点操作、插入、删除、复制、移动节点等操作;
4、事件处理、事件处理模型、事件处理机制、jQuery事件封装机制、jQuery事件应用;
5、jQuery中的动画、动画时间的概念、基本动画方法、复杂动画方法、停止动画与参数说明、jQuery动画的队列问题;
6、表单开发,设计可用性表单、表单验证、增强型表单;
7、Ajax、XMLHttpRequest 基础、jQuery Ajax、工具函数、缓存;
8、在jQuery中编写插件、插件扩展、插件应用、jQuery.pagination分页、jQuery.qtip信息提示、 jQuery.artDialog弹出层、jQuery.jscrollpane滚动条;
9、理解模块式开发,以及requirejs插件的使用。

PC项目实训

1、了解项目需求,项目流程;

2、了解项目管理,模块分配,项目时间预估;

3、了解产品周期,参与团队协作;

4、综合运用HTML+CSS,JS,JQ,JQUERY UI, jquery easyui等技术,完成大型PC端项目开发。

第二阶段:Mobile terminal

HTML5+CSS3新添特性

1、HTML5概述,新增的元素和废除的元素、全局属性;

2、HTML5基础:新增文档结构元素(Article、section、nav)智能表单、文件API(FileList对象和File对象、FileReader接口)、拖放API;

3、CSS3基础:新增的后代选择器、伪类选择器、文本阴影、圆角、盒阴影、变形处理(transform)、动画(transitions)、帧定义(key-frames)、旋转(rotate)、 animation;

4、HTML5多媒体audio音频元素、Video视频元素、视频回调事件;

5、本地存储web storage、本地缓存;

6、定位基础知识以及原理,结合google(高德)地图定位;

7、响应式布局概念以及语法(@media)、web网页和mobile网页的区别、样式继承;

8、Canvas标签基础知识、绘制矩形、绘制圆形、使用路径、图像裁剪、保存为文件、创建动画。

WebAPP项目开发及实训

1、angular.js、backbone.js;

2、数据交互,ajax与DOM交互应用;

3、HTML5+CSS3在实际项目中的应用;

4、项目管理,模块分配,项目时间预估;

5、产品周期,团队协作;

6、微信场景开发;

7、微信平台互动开发。

第三阶段:混合应用开发及实训

混合应用开发及综合实训

1、混合开发原理;

2、APP与webAPP;

3、混合应用与HTML页面交互;

4、通过客户端传递数据;

5、项目的版本迭代;

6、项目打包与应用,生成APK。

参考技术B

前端学习路线

阶段1.前端核心基础

阶段2.HTML5 + CSS3 + 移动端核心

阶段3.移动端

阶段4.服务器端

阶段5.JavaScript高级

阶段6.前端必备

阶段7.高级框架

阶段8.小程序

参考技术C 分享一份完整的前端学习路线,包括每阶段需要掌握的知识点,可以参考下。
1、PC端页面制作与动画特效
学习HTML+CSS搭建网页、CSS动画特效、PhotoShop切图等基础知识,获得初级Web前端工程师技能,主要进行PC端网页制作与样式设计实现,能够配合UI设计师进行项目开发。
2、移动端页面制作与响应式实现
讲解移动端布局与设备适配、响应式设计与实现等,获得移动端页面适配工程师技能,主要进行移动端网页的布局制作与样式设计实现。可以适配各种手机尺寸,并能利用响应式进行移动端与PC端适配。
3、JavaScript与jQuery开发
同HTML5基础知识一样,JavaScript开发与jQuery开发是职业晋升必备的技能包,获得中级Web开发工程师技能,主要进行页面行为交互,实现网站常见特效,加轮播图,选项卡,拖拽效果等,并能配合UI和后端进行项目开发。
4、HTML5高级框架技术开发
常用的Vue框架开发,React框架开发,Angular框架开发,数据可视化技术。可获得中级Web前端工程师技能,主要适用框架开发企业项目,实现单页面应用开发。可以完成复杂的数据交互应用场景,具备独立开发项目能力。
5、全栈前后端技术开发
Node.JS技术,其他后端技术,如Java或PHP。可获得高级Web前端工程师技能,主要进行前后端全栈样式开发,能独立完成一个中小型项目的前后台,对于网站开发有着非常熟练的编程能力。
可以从零开始,一步步的掌握前端开发的各项相关技能,最终达到企业对初级前端开发工程师、中级前端开发工程师、高级开发工程师等职位的要求。
当然对于有基础某个环节薄弱的同学,可以只学单独一个阶段,加深巩固。
参考技术D Web前端开发入门
- 了解HTML发展史,介绍前端开发涉及范畴
- 前端开发工具介绍(Dreamweaver、Notepad++、Sublime Text、WebStorm)
- 前端调试工具介绍(Chrome浏览器控制台、Charles抓包、Weinre)
- 本地开发环境搭建(PHP、Node)
- HTML基本标签(链接、图片、表格、表单、列表等)
- CSS基础属性(层叠、继承、盒模型、容器、溢出、图片精灵等)

移动Web开发
- HTML5新增元素与属性
- CSS3选择器、位移与变形、过渡动画、关键帧动画、弹性盒模型
- 媒体查询、响应式设计、iconfont字体使用
- 移动端页面设计规范与切图
- meta标签详解、flexbox详解、rem使用
- 移动端页面布局

原生JavaScript开发
- 基本语法、数据类型、变量复制
- 函数、闭包、匿名函数、参数传递
- BOM与DOM、事件类型、AJAX实现
- cookie存储、正则表达式
- 执行环境与作用域、内存泄露常见情况
- 面向对象基础

jQuery介绍与学习
- jQuery框架介绍、插件扩展原理及定制设计
- AJAX(全局ajax事件处理、辅助函数、底层接口)
- 属性、事件、表单、选择器、DOM操作
- 设置和获取元素的CSS相关属性
- 用于针对特定DOM关联任意数据
- 为页面添加动画效果(淡入淡出动画、滑动滑动)
- 常用特效学习(tab页面切换、滑动门、焦点轮播图、导航条菜单、瀑布流、弹出层、倒计时)

Bootstrap介绍与学习
- Bootstrap介绍、入门例子创建、全局CSS样式
- 栅格系统、表单、表格、按钮、图片
- 组件:字体图标、按钮式下拉菜单、导航、分页、警告框、进度条等等
- 插件:过渡效果、滚动监听、标签页、工具提示、弹框提示、折叠收缩等等

微场景与微信小程序开发
- SwiperJS在微信场景项目中的使用
- WeUI介绍、页面布局、交互与动画
- 微信服务号接口(JSSDK)开发
- 微信小程序介绍及分析
- 创建项目、小程序实例及页面
- 框架、组件、API及工具详解
- 微信小程序实战项目开发

新一代前端框架VueJS
- AngularJS,ReactJS,VueJS比较和介绍
- 数据双向绑定、事件处理、组件化开发
- 组件构造器、生命周期、数据绑定
- 使用脚手架工具进行组件化开发
- vue-router、vue-resource、Vuex插件使用
- 基于Vue的SPA开发

前端开发工具大杂烩
- Node, NPM, Grunt, Gulp, Webpack工具介绍
- Git, GitHub使用以及GitHub Pages搭建
- 实时浏览器同步测试工具Browsersync
- Markdown介绍

就业指导
- 职业规划与指导
- 简历的构思整理与制作
- 面试技巧
- 与HR面对面模拟面试

以上是关于计算机软件开发学习路线是啥?的主要内容,如果未能解决你的问题,请参考以下文章

云计算学习路线教程大纲课件:使用自建源

软件测试全套教程,2020年全新软件测试学习路线图

计算机中的了解软件应用是啥意思?具体指的是啥?

Linux学习路线指南

对计算机科学与软件工程见解

3000字《软件测试》从入门到精通全套学习路线整理,零基础必看