更新时间:2019-10-25 11:19:12 来源:极悦 浏览2558次
大道至简,所以扎实有用的方法,其实都是很简单的,难在踏踏实实的执行过程。今天为大家介绍的就是Java学习的8个看起来非常简单的方法,快学起来吧。
为什么要学习Java?
Java是目前最流行的编程语言,主流公司框架基本上都离不开Java的影子,未来还会火很多年。Java应用范围极其广泛,无论在客户端还是在服务端都有。
学习一门语言
语言有很多选择,我已经将它们分成几类,以便更容易做出决定。对于刚开始进入后端开发的初学者,我建议你选择任何脚本语言,因为它们有很多功能,可以让你快速起步。如果你有一些前端知识,你可能会发现Node.js更容易(还有一个很大的就业市场)。
如果你已经是后端开发并了解一些脚本语言,我建议不要选择其他脚本语言,而是从「函数式(Functional)」或「多范式(Multiparadigm)」中选择。例如,如果你已经在使用PHP或Node.js,请不要使用Python或Ruby,而应该尝试使用Erlang或Golang。它一定会帮助你延伸思维,并将你的思想带到新的视野。
练习你学到的东西
没有比实践更好的学习方式了。一旦你选择了语言,并且对这些概念有了基本的了解,就可以使用它们,尽你所能制作尽可能多的小应用。下面是一些让你开始的Idea:
在bash中实现一些你自己使用的命令,比如尝试实现ls;
编写一个获取和保存reddit上/r/programming文章的命令,并保存为JSON;
编写一个以JSON格式列出目录结构的命令,例如jsonifydir-name返回一个带有dir-name内部结构的JSON文件;
编写一个读取从上面的步骤得到的JSON的命令,并创建目录结构;
考虑将每天做的一些任务,并尝试将其自动化。
学习软件包管理器
了解该语言的基础知识并制作了一些示例应用之后,需要了解如何使用该语言的软件包管理器,包管理器可帮助在应用程序中使用外部库,并分发你自己的库供其他人使用。
如果你选择了PHP,你将学习的是Composer,Node.js有NPM或Yarn,Python有Pip,Ruby有RubyGems。无论选择什么,请继续学习如何使用其包管理器。
标准和最佳实践
每种语言都有自己的标准和开发的最佳实践,例如PHP有PHP-FIG和PSR,使用Node.js有许多不同的社区驱动指南,其他语言也有相同的指导。
安全
请务必阅读有关安全的最佳实践,阅读OWASP指南并了解不同的安全问题以及如何以选择的语言避免它们。
实践
你已经掌握了语言、标准和最佳实践的基础知识,安全性以及如何使用软件包管理器。现在开始创建一个包并分发给其他人使用,并确保遵循迄今为止学到的标准和最佳实践。例如,如果您选择了PHP,那么可以在Packagist上发布,如果选择了Node.js,那么可以在Npm上发布,等等。
如果完成了,在Github上搜索一些项目,并在某些项目中提一些PR。下面是一些Idea:
重构并实现学到的最佳实践
查看未解决的issue并尝试解决
添加任何附加功能
了解测试
了解如何在应用程序中编写单元测试和集成测试,另外,了解不同的测试术语,如mocks,stubs等
练习
为目前为止所做的实际任务编写单元测试,尤其是步骤6中所做的练习。还要学习和计算编写的测试的覆盖率。
了解关系数据库
了解如何将数据保存在关系数据库中。在选择要学习的工具之前,请先了解不同的数据库术语,例如键,索引,规范化,元组等。
这里有几个选项,但如果你学习一个,其的应该也是相当容易去学。你想学习的应该是MySQL,MariaDB和PostgreSQL。可以选择MySQL。
PracticalTime
现在是时候把学到的东西拿来用了,使用迄今为止学到的所有内容创建一个简单的应用程序。选择任何一个idea,可以是创建一个简单的博客,并实现其中的以下功能:
用户帐户——注册和登录
注册用户可以创建博客文章
用户应该能够查看他创建的所有博客文章
用户应该能够删除他们的博客文章
确保用户只能看到他的个人博客文章(而不能看其他人的)
编写单元/集成测试
应该为查询应用索引,分析查询以确保索引有作用。
学习框架
根据选择的项目和语言,可能需要也可能不需要框架。每种语言都有几个不同的选项,继续看看选择的语言有哪些选项可供选择,然后选择一个。
如果选择了PHP,我会建议使用Laravel或Symfony以及微架构(Lumen或Slim),如果你选择Node.js,有几种不同的选择,但突出的是Express.js。
PracticalTime
将step10中创建的应用程序转换为使用选择的框架,还要确保移植包括测试在内的所有内容。
学习NoSQL数据库
首先了解它们是什么,它们与关系数据库有什么不同以及为什么需要它们。有几种不同的选择,稍微研究下看看,并比较它们的特点和差异。可以选择的一些常用选项有MongoDB,Cassandra,RethinkDB和Couchbase,如果必须选择一个,请使用MongoDB。
缓存
了解如何在应用程序中实现应用程序级缓存,了解如何使用Redis或Memcached,并在step12中创建的应用程序中使用缓存。
创建RESTfulAPI
了解REST并学习如何制作RESTfulAPI,在RoyFielding的文章中阅读关于REST的部分,如果他们说REST只适用于HTTPAPI,那么确保你能够与他人争论。
了解不同的认证方法
了解不同的认证和认证方法,你应该知道他们是什么,有什么不同以及什么时候使用偏好。
OAuth—OpenAuthentication
BasicAuthentication
TokenAuthentication
JWT—JSONWebTokens
OpenID
消息代理
了解消息代理并了解何时以及为何使用它们。同样有多种选择,但突出的是RabbitMQ和Kafka,如果你想选择一个的话,可以先从RabbitMQ开始。
搜索引擎
随着应用程序的增长,关系数据库或NoSQL数据库的简单查询不能够满足要求,而不得不求助于搜索引擎。
了解如何使用Docker
无论是在复制与生产环境相同的环境,保持操作系统清洁或加快编码、测试或部署,Docker可以在开发过程中大大方便工作,学习如何使用Docker。
Web服务器知识
如果你已经走到这么远了,你可能已经在前面的步骤中使用了服务器,这一步主要是找出不同Web服务器之间的差异,了解限制和不同的可用配置选项,以及如何最好地利用这些限制编写应用程序。
了解如何使用WebScoket
虽然不是必需的,但在工具带中有这些知识是有益的,学习如何使用web-sockets编写实时Web应用程序并使用它创建一些示例应用程序。可以在上面制作的博客应用程序中使用它来实现博客文章列表中的实时更新。
学习GraphQL
学习如何使用GraphQL制作API,了解它与REST的不同之处,以及它为什么被称为REST2.0。
看看图数据库
图模型代表了一种非常灵活的处理数据关系的方式,图数据库为其提供了快速高效的存储、检索和查询方式,学习如何使用Neo4j或OrientDB。
继续探索
一旦你开始学习和练习,你一定会遇到我们在这个路线图中没有涉及的东西,只要保持开放的心态和对新事物的渴望就好。
关键是要尽可能多地练习,起初你可能会觉得你并没有抓住任何东西,但这是正常的,随着时间的推移,你会觉得越来越好。
那如何学习才能快速入门并精通呢?
当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。
但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有一套实用的视频课程用来跟着学习是非常有必要的。
为了让学习变得轻松、高效,今天给大家免费分享一套阿里架构师传授的一套教学资源。帮助大家在成为架构师的道路上披荆斩棘。
想要领取资源的同学,可以到极悦官网咨询在线老师即可。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习