我的编程之路:从非计算机专业到Java开发工程师的成长之路 | 学习路线 | Java | 零基础 | 学习资源 | 自学

小伙伴们好,我是「 行走的程序喵」,感谢您阅读本文,欢迎三连~

😻 【Java基础】专栏,Java基础知识全面详解:👉点击直达

🐱 【Mybatis框架】专栏,入门到基于XML的配置、以及基于注解的高级开发详解:👉点击直达

🐵 【Linux运维】专栏,从系统安装到运维大师进阶教程笔记全记录:👉点击直达

放弃不难,但坚持一定很酷

学习路上难免遇到很多坑,我总结了一些资源,请戳文末名片交流~ 或 私信~

嗨,大家好!

我是“行走的程序喵”,一个曾经是大学非计算机专业出身的小伙子,但因为生活所迫,我不得不自学Web前端和Java后端开发。经过了数年的学习和实践,我现已是一名具有丰富经验的技术小牛。

在这段充满挑战和成长的旅程中,我遇到了无数次的困难和挑战,但我从未放弃。通过不断地学习、实践和总结,我逐渐掌握了Web前端和Java后端开发的核心技能,并成功应用于实际项目中。

在这篇博客中,我将分享我的学习心得、工作经验以及对技术发展趋势的理解。无论你是一名非计算机专业出身的学生,还是一名正在自学编程的开发者,我相信我的经验分享都能为你提供一些启发和帮助。

让我们一起踏上编程之路,共同成长,探索技术的奇妙世界吧!💻✨

在这里插入图片描述

🔥🔥🔥🔥 PDF版学习路线获取地址👉👉👉下载

高清学习路线请戳文末名片~ 或 私信~

让我们先探讨不同的学习方法,大家可以根据自己的情况做出选择。

  • 观看视频进行系统学习,例如培训机构提供的课程或慕课平台上的课程等。通过观看视频,有老师带领学习,易于理解和掌握,非常适合初学者。
  • 阅读书籍进行学习,包括各种专业技术书籍。这有助于了解技术脉络,并深入学习知识点。
  • 阅读博客和源码进行深入学习。博客的好处在于,有些知识点会以通俗易懂的方式讲解,更容易理解。

阶段一: Java 基础

最初学习的重点是Java基础知识。虽然这一部分内容可能有些乏味,但扎实的基础对于后续学习框架至关重要,具有非常大的益处而没有任何害处。事实上,大多数编程语言的基础知识都有相似之处。如果之前已经学习过其他语言如C、C++,那么学习Java基础会更快一些。

Java基础部分的主要内容包括:基本程序结构、类与对象、接口、泛型、反射、集合、异常处理与调试、Java网络编程、Java I/O和多线程。

在学习Java基础时,建议大家参考尚硅谷宋红康老师的Java教程。宋老师的课程更适合零基础学员,从Java语言的起源开始,循序渐进,对知识点进行详细的分析。

以下是Java基础教程的链接:

  • Java基础教程

除了以上提到的学习资源,还可以参考《Java核心技术 卷I》这本书。这本书偏向实用,内容的广度和深度都非常适中。其中,第7至9章介绍了Java的GUI编程,虽然在实际开发中GUI开发的应用并不是很多,所以可以选择跳过这部分内容。

此外,网上也有一些优质的文档和教程网站,可以作为学习的辅助资料。

以下是一些Java学习资源链接:

  • 廖雪峰Java教程
  • 菜鸟教程Java

一旦你掌握了Java基础知识,就可以尝试开发一些小型项目,比如图书管理系统、学生管理系统等。这样的小项目有助于巩固所学知识,同时也能够提升成就感。

当然,如果时间有限,你也可以直接尝试着开发一些Java Web项目。无论选择哪种方式,都是对你学习过程的一个很好的补充和实践。

阶段二:数据库

MySQL 和 Oracle 都是企业中广泛应用的数据库系统,其中 MySQL 是目前应用最广泛的开源关系数据库。对于初学者或者校园招聘的同学来说,目前只学习 MySQL 就足够了。

在学习 MySQL 的过程中,主要涉及以下内容:数据库的CRUD操作、JDBC API、数据库特性以及数据库连接池。

其中,数据库连接池的作用是为了避免频繁地创建和销毁 JDBC 连接。常见的连接池包括 C3P0、Druid 和 HikariCP,目前使用最广泛的是 HikariCP。

针对学习资源,你可以参考尚硅谷提供的MySQL入门视频:

  • MySQL入门视频链接。

在书籍方面,推荐入门的同学阅读《MySQL必知必会》。这本小册子非常实用,内容紧凑,几乎没有理论堆砌,非常适合初学者。

如果想要深入学习,可以考虑阅读《高性能 MySQL》。这本书是 MySQL 领域的经典之作,但是相对较厚。对于面试准备,重点可以关注索引部分。

阶段三: Java Web

学习Java Web开发需要掌握后端Java技术,同时也需要一些前端知识。

前端的基础技术包括HTML、CSS和JavaScript,初学者可以先学习这些基础知识,之后在项目开发过程中可以查阅相关手册。如果想要实现更好的交互效果,可以进一步学习Vue和React等前端技术。

后端Java技术包括Servlet、Filter、Listener、Session、Cookie、JSP、EL表达式和JSTL等。

值得注意的是,像JSP这样的技术在很多互联网公司已经不再使用,取而代之的是Freemark、Thymeleaf等模板引擎。因此,我们只需了解JSP的基本使用即可。

如果想要入门Java Web开发,推荐参考尚硅谷的Java Web教程。该教程涵盖了前端三大技术以及后端Java技术,并最终会带领大家完成一个书城项目。

Java Web教程链接:

  • Java Web教程

阶段四:主流框架

在学习Java Web开发中,主流的框架包括Spring、Spring MVC和MyBatis,通常被称为SSM框架。

过去的SSH框架,即Struts2、Spring和Hibernate框架,已经逐渐被SSM框架所取代。因此,现在学习者可以不必再专门学习Struts2和Hibernate框架。在准备面试时,可能会被问及与此相关的知识,因此大家只需在面试前了解这方面的知识即可。

在学习这些框架之前,建议先学习项目管理工具Maven和版本控制工具Git。Maven可以帮助管理项目的依赖和构建过程,Git则是团队协作中常用的版本控制工具。

4.1、Maven

Maven是一个项目管理工具,其核心概念是基于项目对象模型(POM)。它可以用于管理项目的构建、报告和文档。

Maven本质上是一个庞大的JAR包资源库。使用Maven构建项目时,只需在项目的pom.xml文件中配置相关依赖,就可以直接从远程仓库同步到本地。这样就不再需要手动在各处搜索和下载JAR包,省去了很多查找和下载的麻烦。

如果你想学习Maven的实际应用,可以参考动力结点提供的Maven实战入门视频:

  • Maven实战入门视频链接
4.2、Git

Git是一个开源的分布式版本控制系统,其主要作用是对文件进行版本管理,便于在不同版本之间进行切换和修改,同时也方便协作开发。

GitHub是基于Git的代码库托管站点,掌握了Git后,我们就能够愉快地在GitHub上进行交友和协作开发。

如果你喜欢视频教程,可以参考狂神提供的Git视频:

  • Git视频链接。

对于喜欢文字版教程的小伙伴,推荐看廖雪峰的Git教程,内容浅显易懂:

  • 廖雪峰的Git教程链接。

另外,还有一个方便查阅的Git中文手册可供参考:

  • Git中文手册链接
4.3、SSM框架

Spring是一个轻量级的Java开发框架,目前已经成为最受欢迎的企业级Java应用程序开发框架之一,最新版本为Spring 5。

Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP)。其组成结构如下图所示:

Spring框架组成结构

Spring MVC是基于MVC架构的一个框架,用于简化Web应用程序的开发。作为Spring的一部分,Spring MVC已经成为当前最主流的MVC框架之一。

MyBatis是一款优秀的持久层框架,支持自定义SQL、存储过程以及高级映射。

在传统JDBC中,往往需要编写大量的JDBC代码,包括SQL语句的编写、参数的装配以及结果集的处理。而MyBatis通过一些配置文件(XML)或注解来简化了这些操作,使得数据库查询和结果映射封装更加便捷。

学习SSM框架时,推荐使用一整套课程进行学习,这样会有更好的连贯性,并且还能学习到整合SSM框架的相关知识。

视频教程链接:

  • SSM框架视频

整合SSM框架虽然有些繁琐,但时间紧张的学习者可以选择跳过此步骤。在实际开发中,可以直接复制粘贴已有的代码来完成整合工作。另外,现在使用更强大的Spring Boot也能够达到同样的效果。

4.4、Spring Boot

Spring Boot采用约定大于配置的方式,大大减少了配置文件的使用,使得开发人员不再需要定义大量的样板化配置。

对于学习Spring Boot,我推荐雷丰阳老师的Spring Boot课程。该课程基于Spring Boot 2.3与2.4版本,内容涵盖了核心基础、Web原理、单元测试、数据访问、指标监控等方面的知识。

关于是否直接跳过SSM而学习Spring Boot,这取决于你的目标和需求。如果你只是想使用Spring Boot快速开发项目,那么当然可以跳过SSM。因为SSM的配置相对繁琐,Spring Boot能够提供更便捷的开发体验。

但如果你想深入学习Java开发,并且可能会在面试中遇到关于Spring底层原理的问题,那么学习SSM仍然是有必要的。了解SSM框架可以帮助你更好地理解Spring Boot的底层原理和运作机制。

雷老师的Spring Boot课程链接:

  • Spring Boot课程链接

阶段五:服务器中间件

学完上述内容后,你确实已经具备了实际项目开发的基本能力。然而,要解决更复杂的业务场景,你还需要学习一些中间件技术,如Redis、消息队列(MQ)和Elasticsearch。

  • Redis(Remote Dictionary Server):Redis是一个高性能的键值存储系统,常用于缓存、会话管理、消息队列等。学习Redis可以让你了解如何利用内存数据库来加速应用程序的性能,并实现一些复杂的数据结构和业务场景。

  • 消息队列(MQ):消息队列是一种在分布式系统中广泛应用的通信机制,常用于解耦合、异步通信、流量控制等。学习消息队列可以帮助你处理高并发、大数据量的场景,并实现系统之间的解耦合和异步通信。

  • Elasticsearch:Elasticsearch是一个开源的分布式搜索和分析引擎,常用于全文搜索、日志分析、数据可视化等。学习Elasticsearch可以帮助你构建复杂的搜索引擎、日志分析系统和数据可视化平台,提升系统的搜索性能和用户体验。

掌握了这些中间件技术,你就可以更好地应对复杂的业务场景,提升系统的性能、可靠性和扩展性,从而更好地应对工作中的挑战。

5.1、Redis

Redis是一个key-value存储系统,是跨平台的非关系型数据库,可用作数据库、高速缓存和消息队列代理。

作为当前主流的缓存技术,Redis已经成为互联网企业的首选之一。

如果你想入门Redis并掌握其用法,可以参考以下课程:

  • Redis入门到精通课程。

对于想深入学习的同学,推荐阅读《Redis设计与实现》,该书知识点丰富,深入讲解了Redis的底层原理。我曾经反复阅读了三遍,对我的面试帮助很大,强烈推荐!

你可以在以下链接找到《Redis设计与实现》的在线版:

  • Redis设计与实现在线版。

此外,你还可以参考中文网站上的Redis命令查询:

  • Redis命令查询中文网站。
5.2、MQ

MQ(消息队列)是一种跨进程的通信机制,用于在应用程序之间传递消息。简单来说,它是一种先进先出(FIFO)的数据结构。MQ的主要作用包括解耦、异步、削峰/限流等。

目前业界有多种MQ产品,其中比较出名的有以下四种:

  • Kafka
  • RabbitMQ
  • RocketMQ
  • ActiveMQ

根据个人喜好或项目需求,你可以选择其中一款MQ进行学习。

如果你想学习Kafka,可以参考以下教程:

  • Kafka教程。

如果你想学习RabbitMQ,可以参考以下教程:

  • RabbitMQ教程。

另外,如果想深入学习,可以阅读《Kafka权威指南》。这本书由Kafka的作者执笔,覆盖了比较全面的内容,对于深入理解Kafka是非常有帮助的。

5.3、Elasticsearch

全文搜索是一个非常常见的需求,而开源的Elasticsearch目前是全文搜索引擎的首选之一。

Elasticsearch能够快速地存储、搜索和分析海量数据。很多知名网站和平台,如维基百科、Stack Overflow和GitHub等都采用了Elasticsearch。

Elasticsearch的底层是开源库Lucene,但是如果要使用Lucene,就需要自己编写代码来调用Lucene的接口。而Elasticsearch则是对Lucene的封装,提供了REST API的操作接口,使得开发者可以直接使用,开箱即用。

如果你想学习Elasticsearch,可以参考以下教程:

  • ElasticSearch7.6.x最新完整教程。

阶段六:微服务和分布式

对于实习和校招的小伙伴来说,学好前五阶段的技术知识是非常重要的,这包括:

  1. Java基础知识:包括基本语法、面向对象编程、集合框架等。
  2. 数据库基础:了解SQL语言、数据库设计、基本的CRUD操作等。
  3. Web开发:掌握HTML、CSS、JavaScript等前端技术,以及后端技术如Servlet、JSP等。
  4. Spring框架:理解Spring框架的核心特性,包括依赖注入(DI)和面向切面编程(AOP)等。
  5. 数据持久化技术:掌握MyBatis等ORM框架,能够实现数据库与Java对象之间的映射。

学好这些技术知识可以为你的实习和校招打下坚实的基础。如果你有额外的时间和精力,可以考虑深入学习微服务和分布式系统的内容。这些技术是当今互联网行业非常热门的方向,掌握了这些技术可以让你在求职时更有竞争力,也有助于你未来的职业发展。

6.1、Spring Cloud

Spring Cloud是一套完整的微服务解决方案,基于Spring Boot框架。

更准确地说,Spring Cloud是一系列框架的有序集合,它利用了Spring Boot的开发便利性,简化了分布式系统的开发。它包括了诸如服务发现、服务网关、服务路由、链路追踪等功能。

如果你想学习Spring Cloud,可以参考以下教程:

  • SpringCloud(H版&alibaba)框架开发教程。

这个教程将帮助你了解Spring Cloud及其在微服务架构中的应用。

6.2、Dubbo

阿里开源的Dubbo是一个高性能优秀的服务框架。简单来说,Dubbo是一个基于Spring的RPC(远程过程调用)框架,可以实现服务的远程调用和服务的治理。

与Dubbo相比,Spring Cloud是另一种微服务架构解决方案。它是一个基于Spring Boot的开源工具集,旨在简化分布式系统的开发。Spring Cloud提供了诸如服务发现、配置管理、负载均衡、断路器等功能,使得构建、部署和管理分布式系统变得更加容易。

用一个网络上的台式电脑的比喻来说,Dubbo可以看作是品牌机,它是一个完整的、高性能的服务框架;而Spring Cloud则可以看作是组装机,它提供了一系列工具和组件,可以根据需求自由组合和定制,更加灵活。

如果你想学习Dubbo,可以参考以下视频:

  • Dubbo视频链接。

这个视频将帮助你了解Dubbo的基本概念和用法。

6.3、ZooKeeper

ZooKeeper是一个高可用的分布式管理与协调框架,其基于ZAB算法(原子消息广播协议)的实现确保了在分布式环境中数据的一致性。因此,ZooKeeper成为了解决分布式一致性问题的重要工具。

如果你想学习ZooKeeper,可以参考以下视频:

  • ZooKeeper视频链接。

这个视频将帮助你了解ZooKeeper的基本概念、原理和用法。

阶段七:进阶优化

学会了前面提到的技术知识,你就能够独立完成一个小项目,并且应对项目组分配给你的开发任务。

然而,想要写出优质的代码,还需要学习更多的知识,包括设计模式、多线程以及JVM的内部原理等。这些知识点同样是面试中的必备内容。

以下是一些书籍和视频课程的推荐:

设计模式

  • 书籍推荐:《Head First设计模式》

JVM

  • 书籍推荐:《深入理解Java虚拟机》

Java并发编程

  • 书籍推荐:《Java并发编程的艺术》、《并发编程实战》
  • 视频课程:Java并发编程视频

以上资源可以帮助你深入理解设计模式、JVM和并发编程,为写出高质量的代码打下坚实的基础。

写在最后

学习任何新技能都需要持之以恒和耐心。Java技术栈的确非常庞大,而且技术更新速度快,这可能让刚入门的小伙伴感到有些懵圈。但不要担心,只要你按部就班、由浅入深地学习,一切都会变得更容易些。

在学习的过程中,不要过分纠结于某个难以理解的知识点。记得做好记录,暂时跳过,过一段时间再回过头来看,也许会有新的领悟。放弃固然容易,但只有坚持下去,才能真正体会到学习的乐趣和成就感。

往期精彩内容

🔥 《Java入门到精通学习手册》
🔥 《Mybatis连接池、事务控制和复杂查询》

🔥🔥🔥🔥 PDF版学习路线获取地址👉👉👉下载

🔥🔥🔥🔥 学习资源获取🔥🔥🔥请戳下方名片获取~ 或 私信~

持续更新更多内容… 欢迎小伙伴们前来围观~

感谢小伙伴们的厚爱!都到这里了,来个👍三👍连👍再走吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573893.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

目录 前言&#xff1a; 一维数组降序&#xff1a; 方法1.Comparator接口&#xff1a; 代码实现&#xff1a; 方法2.Collections.reverseOrder()&#xff1a; 代码实现&#xff1a; 二维数组排序&#xff1a; 代码如下&#xff1a; List<>排序&#xff1a; 代码…

Stable Diffusion XL之使用Stable Diffusion XL训练自己的AI绘画模型

文章目录 一 SDXL训练基本步骤二 从0到1上手使用Stable Diffusion XL训练自己的AI绘画模型2.1 配置训练环境与训练文件2.2 SDXL训练数据集制作(1) 数据筛选与清洗(2) 使用BLIP自动标注caption(3) 使用Waifu Diffusion 1.4自动标注tag(4) 补充标注特殊tag(5) 训练数据预处理(标注…

保研线性代数机器学习基础复习1

1.什么是代数&#xff08;algebra&#xff09;? 为了形式化一个概念&#xff0c;构建出有关这个概念的符号以及操作符号的公式。 2.什么是线性代数&#xff08;linear algebra&#xff09;&#xff1f; 一项关于向量以及操作向量的公式的研究。 3.举一些向量的例子&#x…

C语言中连字符“#”的使用,输出固件的编译时间和版本号

首先我们使用C语言宏定义和“#”来组合字符串 #define MAINVER 2#define SUBVER1 0#define SUBVER2 1#define STR(s) #s#define VERSION(a,b,c) "System V" STR(a) "." STR(b) "." STR(c) " "__DATE__ 然后我们在全局变量中定义一…

Prometheus Grafana 配置仪表板

#grafana# 其实grafana提供了丰富的Prometheus数据源的仪表板&#xff0c;基本上主流的都有&#xff0c;通过下面官方地址可查阅 Dashboards | Grafana Labs 这里举例说明&#xff0c;配置node_exporter仪表板 首先&#xff0c;在上面的网站搜索 node 可以查到蛮多的仪表板…

基于javaweb jsp+servlet学生宿舍管理系统

基于javaweb jspservlet学生宿舍管理系统 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方…

c++的学习之路:5、类和对象(1)

一、面向对象和面向过程 在说这个定义时&#xff0c;我就拿c语言举例&#xff0c;在c语言写程序的时候&#xff0c;基本上就是缺什么函数&#xff0c;就去手搓一个函数&#xff0c;写的程序也只是调用函数的&#xff0c;而c就是基于面向对象的开发&#xff0c;他关注的不再是单…

Python提示‘ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘

一、问题背景 在学习Python编程使用matplotlib时&#xff0c;总是提示: ModuleNotFoundError: No module named numpy.core._multiarray_umath 问题大致描述如下&#xff1a; D:\WorkSpace\PythonWorkSpace\Python编程-从入门到实践\venv\Scripts\python.exe D:\WorkSpace\Pyt…

vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程

文章目录 效果展示template代码script代码样式代码 效果展示 template代码 <template><el-container class"home"><el-aside class"flex" :style"{ width: asideDisplay ? 70px : 290px }"><div class"aside-left&q…

阿里云账号登录注册手机/支付宝/淘宝/钉钉看看哪个更简单?

阿里云账号登录或注册支持四种方式&#xff0c;即手机号验证码登录、支付宝、淘宝或钉钉登录&#xff0c;如果你没有阿里云账号&#xff0c;可以使用手机号接收短信验证码注册并登录&#xff0c;不过直接使用经常用的淘宝、支付宝或钉钉登录更为简单&#xff0c;因为可以免去实…

学浪视频提取

经过调查,学浪这个学习平台越来越多人使用了,但是学浪视频官方没有提供下载按钮,为了让这些人能够随时随地的观看视频,于是我钻研学浪视频的下载,终于研究出来了并且做成软件批量版 下面是学浪视频提取的软件,有需要的自己下载一下 链接&#xff1a;https://pan.baidu.com/s/…

ActiveMQ Artemis 系列| High Availability 主备模式(消息复制) 版本2.19.1

一、ActiveMQ Artemis 介绍 Apache ActiveMQ Artemis 是一个高性能的开源消息代理&#xff0c;它完全符合 Java Message Service (JMS) 2.0 规范&#xff0c;并支持多种通信协议&#xff0c;包括 AMQP、MQTT、STOMP 和 OpenWire 等。ActiveMQ Artemis 由 Apache Software Foun…