java路线
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
规划一下学习java这一路的路线,方便自己总结和大家观看
目前我大三,越学习越感觉才入门,这些基本是我大学学习的跟java相关的内容
大一:高数、线性代数、C语言基础、英语
大二:Java基础、HTML、CSS、JavaScript、MySQL、Python、软件测试、数据结构与算法、操作系统、离散数学
大三:JQuery、javaWeb、Spring、SpringMVC、Mybaits、Springboot、计算机网络、设计模式、算法设计与分析
自学:SpringCloud-Netflix、Linux、Mybatis-Plus、Git、Redis、Nginx、Vue等
自己也走了不少弯路,Java基础没学好,再学JavaWeb的时候连List和Map都不知道,深感当时的无力写了本篇文章
一、打基础
数学这东西一点要打牢基础,高数、线性代数、离散数学要在前期打基础(大学学到的可能用不到,但算法都是基于数学,要有逻辑思维),英语的重要不言而喻,idea、postman等产品,java、python、c、c#等语言都是外国人编写的,GitHub上面的很多资料也是英文的,翻译也不全面,这些都要靠自己的积累
二、JavaSE基础、Java多线程、MySQL学习(JavaGUI编程看你有没有兴趣学习,因为这个技术已经有些过时了)
学习这部分的时候,不要走捷径,java入门不容易,但入门后会变得轻松,java也是适合新手学习的一门语言,不需要C语言基础打底也可以上手来使用,MySQL数据库的重要性就像:java是一条非洲肺鱼,不需要水可以在图里休眠,有了MySQL这场雨后,才能醒过来活动,数据是页面的灵魂,没有灵魂,光有个空架子是没用的。
三、基础四大件
学习玩java基础就可以接触这些了,学习着实是枯燥的,但软考和面试中这四大件的地位是不可撼动的
1、数据结构与算法
关于这个,我相信一些工作中的程序员都知道其重要性,可以说直接决定了你面试的成败,像什么队列,栈,二叉树等等,它们大概长什么样,自己的脑海里必须要有一个模型;而对于算法方面,我觉得本质上,还是得把数学学好,像什么微积分,线性代数,数理统计等,很多人在编程时,总是不知道该怎么去编这个程序,其实是自己的思维没有get到那个点,而如果你想要研究人工智能,大数据等这些领域,那这些对数理知识的要求更高。所以,想要编好程序,数学方面的知识是不可或缺的。
2、计算机网络
大家都知道,编程属于互联网方面的,提到互联网,那就离不开我们身边的网络了。计算机网络主要介绍了在我们应用网络的过程中,需要运用到的一些协议,例如:TCP协议,IP协议,ARP协议,MAC协议等等;你看,像我们平时所玩的王者荣耀,吃鸡这些游戏,都是通过网络连接起来的,所以程序员在做开发时是离不开这些协议的。
3、操作系统
平时我们开发程序,虽然我们可能都是在IDE里编写的,但实际运行是要借助我们的操作系统的,多进程,多线程,内存管理等这些概念,也是程序员在做开发时所离不开的知识。
4、设计模式
关于这点,我们只需记住一些常见的设计模式,例如:单例,工厂,代理等。
语言本身固然重要,但其实在学习的过程中,我们只要学精通一门语言就足够啦,而对于这基础四大件,是每一位想要学习编程的同学都必须掌握的。此外,在学习基础的过程中,我们还要多多实战,这样才能更好地理解并运用这些基础知识。
三、Java基础复习、Java注解和反射、JUC并发编程、HTML、CSS、JavaScript、Jquery
HTML、CSS、JavaScript、JQuery是早些年前端要学习的,但学习Java就想要走全栈一样,什么都要会,所以HTML、CSS、JavaScript、JQuery这些也不需要我们太深入的学习,会用且知道在网上怎么搜索就行,在这基础上可以去了解一下LayUI、Bootstrap这些前端的框架。
多线程也是要通过加锁来实现线程安全,JUC并发编程就显得重要了。
我们学习到框架的时候会发现,别人把类和方法都给你写好了,只需要加一个注解就可以了,使用学习注解和反射也是挺重要的。
四、MySQL复习、JavaWeb、Maven、Mybatis、Spring、SpringMVC、Mybatis-Plus、SpringBoot、Vue
JavaWeb是Java企业级应用的基础,虽然不学JavaWeb和SSM框架,直接去学SpringBoot我觉得也可以会用,注意这里我说的是会用,想要知道原理要从JavaWeb学起走,这是基础,不能落下
Maven是一个包库,挺简单的,但十分重要
Mybatis、Spring、SpringMVC成为SSM框架,这三个框架是合在一起使用的,学习的目的是要观看历史,为什么Spring被称为配置地狱,才衍生出了SpringBoot框架
Mybatis-Plus(简称MP)和Mybatis是好兄弟,MP极大减轻了Mybaits的SQL写入压力,让开发变得非常简单
SpringBoot、Vue是现在前后端分离用的最多的两个框架,SpringBoot是后端框架,Vue是前端框架,正如我之前所说学习Java几乎是走一个全栈的路线,所以掌握Vue的简单使用也是非常重要的
五、JVM学习、Git、Linux、宝塔面板、服务器、Redis、mongoDB、Nginx、Docker、Jenkins、Kubernetes
JVM就是要研究一下Java虚拟机的实现和底层的挖掘
Git代码管理工具是每个程序员工作时都要接触的工具、GitHub是全球最大的社交编程及代码托管网站、Gitee是开源中国推出的代码托管服务,是一个具有安全、稳定、高效的云端软件开发协作平台,这些都要去了解
Linux、服务器、宝塔面板的学习,学习完这些就可以搭建自己的网页了
Redis、mongoDB两个NoSQL数据库要配合MySQL数据库使用,光是MySQL的吞吐量太少了,做不到实时更新,如果你是个土豪还可以去学习一下Oracle数据库
Nginx是一个高性能的HTTP和反向代理web服务器,可以把域名和你的服务器联系起来
Docker开源的应用容器引擎
Jenkis一种持续集成工具
Kubernetes开源容器集群管理系统
六、Dubbo、Zookeeper、SpringCloud-Netflix、SpringCloud-Alibaba、RabbitMQ、ElasticSearch、Kafka、ShardingJDBC、MyCat、分布式的一切东西
Dubbo+Zookeeper了解
SpringCloud-Netflix、SpringCloud-Alibaba跟Dubbo+Zookeeper一样是做分布式的,但是SpringCloud采用的是基于 HTTP 的 REST 方式。Dubbo是使用的RPC 通信。很明显,Spring Cloud 的功能比 Dubbo 更加强大,涵盖面更广,而且作为 Spring 的拳头项目,它也能够与 Spring Framework、Spring Boot、Spring Data、Spring Batch 等其他 Spring 项目完美融合,这些对于微服务而言是至关重要的。
RabbitMQ、ElasticSearch、Kafka常用中间件
ShardingJDBC、MyCat数据库中间件
分布式的很多东西很难很难,学习成本也挺高,要搭建几台服务器,要考虑版本问题、熔断、降级等