我的编程之路:从非计算机专业到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版学习路线获取地址👉👉👉下载

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2 el-table指定某些数据不参与排序

vue2 el-table指定某些数据不参与排序 1、需求描述2、配置属性方法3、详细代码如下 1、需求描述 最后一行总计不参与排序 2、配置属性方法 el-table 需要配置 sort-change"soltHandle" 方法 el-table-column 需要配置 sortable"custom"属性3、详细代码如…

giteed的使用

1. 将工作区的内容添加到暂存区 你的工作区要有内容(.git 不算) 注意:空文件可以添加,但是空文件夹不管 如果没有形成历史版本之前,暂存区的同名文件会被覆盖 //打开命令行,切换到 .git所在的目录&…

spark 参数

spark.yarn.executor.memoryOverhead 默认值是384M Configuration - Spark 3.5.1 Documentation

4毛5起的国产32位单片机 PY32F002A系列,多种封装可以选择

PY32F002A系列单片机可以说是现在市面上非常火的一款32位单片机了,超低的价格,不错的性能,让很多开发者都选择了它。主频最大24M,有着20Kbytes flash 和 3Kbytes SRAM,很多小产品也是足够用了。PY32F002A的SOP8封装的价…

创建Qt Quick Projects

在创建Qt Quick项目之前,我们简单说一下Qml和Qt Quick的关系:它们的关系类似于C和STL标准库的关系,Qml类比C语言,提供了基本语言特性和类型;而Qt Quick则类比STL标准库,Qt Quick在QML的基础上加入了一系列界…

如何在 Mac/Windows 上从 iPhone 备份中恢复短信?

- “如何从 iPhone 备份中提取短信?” 短信正在取代日常生活和工作中的电话和电子邮件。 iPhone 上的短信现在是您与朋友、家人、亲人和同事最重要的沟通方式之一。有时,您可能想在 iPhone 上保留一些您不想丢失的特殊消息,也许这是朋友的一…

工控自动化行业 工业数据采集软件 让数据驱动决策

在当今的工控自动化行业,数据已经成为了企业决策的关键驱动力。而工业数据采集软件的出现,更是为企业带来了新的机遇。 工业数据采集软件平台能够高效地采集各种工业设备的数据,无论是传感器、仪器仪表还是生产线上的关键参数等,都…

春秋云境CVE-2023-1313

简介 cockpit在2.4.1版本之前存在任意文件上传漏洞PS:通过在浏览器中打开/install来运行安装 正文 来到靶场,首先进行弱口令爆破,发现没用,那么只好老老实实的看靶场提示 先来访问/install 访问后就可以进行登录了&#xff0c…

监控系统介绍

文章目录 监控系统的分类日志类(logs)调用链类(tracing)度量类(metrics) 监控系统的分层监控系统典型架构采集器TelegrafExportersGrafana-Agent 时序库OpenTSDBInfluxDBTDEngineM3DBVictoriaMetricsTimescaleDBPrometheus 告警引擎数据展示 监控系统的分类 针对不同场景把监控…

分享多种mfc100u.dll丢失的解决方法(一键修复DLL丢失的方法)

在使用电脑过程中,我们经常会遇到一些陌生的DLL文件,例如mfc100u.dll。这些DLL文件是动态链接库(Dynamic Link Libraries)的缩写,它们包含了可以被多个程序共享的代码和数据。今天,我们将深入探讨mfc100u.d…

基于云计算的前端资源管理系统的设计与实现

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 随着互联网的快速发展,前端资源管理成为了一个重要的课题。本文旨在设计并实…

鸿蒙HarmonyOS应用开发之使用Node-API实现跨语言交互开发流程

使用Node-API实现跨语言交互,首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧:实现C方法的调用。代码比较简单,import一个对应的so库后,即可调用C方法。 Native侧:.cpp文件,实现模…

electron打包桌面版.exe之vue项目踩坑(vue3+electron 解决打包后首页打开空白,打包后路由不跳转及请求不到后端数据等问题)

vue项目https://www.qingplus.cn/components-web/index打包桌面版问题集合 一、静态资源加载问题 npm run electron_dev桌面版运行后页面空白,内容未加载。 填坑: 打包配置要用相对路径 vite.config.ts文件中的base要改成./,之前加了项目…

systemd-journal(四)之systemd-journald.service

文章目录 写在前面概述描述流日志记录(Stream logging)日志命名空间(Journal Namespaces)信号 SignalsSIGUSR1SIGUSR2SIGRTMIN1 内核命令行 Kernel Command Linesystemd.journald.forward_to_syslogsystemd.journald.forward_to_k…

Xilinx IDDR及ODDR使用和仿真

平台:Vivado2018 官方相关文档,ug471_7Series_SelectIO.pdf 关于IDDR与ODDR Input DDR Resource(IDDR) 外部的数据在时钟的上下沿同时传输数据,我们可以使用IDDR原语将输入的单bit数据转化为2bit的数据输出。同时数据速率变为原来的二分之一…

gopher伪协议

基础知识 基本格式 基本格式&#xff1a;URL:gopher://<host>:<port>/<gopher-path>web也需要加端口号80gophert协议默认端口为70gopheri请求不转发第一个字符 get请求 问号&#xff08;&#xff1f;)需要转码为URL编码&#xff0c;也就是%3f回车换行要变…

【Linux】进程状态(R运行状态、S睡眠状态、D磁盘休眠状态、T停止状态、X死亡状态)

目录 01.运行状态 02.睡眠状态 03.磁盘睡眠状态 04.停止状态 05.死亡状态 进程的状态会随着操作系统的调度和外部事件的发生而不断地发生转换。例如&#xff0c;一个新创建的进程经过初始化后会进入就绪态&#xff0c;等待被调度执行&#xff1b;当调度器分配处理器资源给…

什么是物联网监控平台?部署物联网平台有什么作用?

随着物联网技术的飞速发展&#xff0c;越来越多的企业开始关注并投入到这一领域。物联网监控平台作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为企业数字化转型的关键组件。今天&#xff0c;我们将深入探讨物联网监控平台的定义、部署物联网平台的作用&#xff0c;以…

OSPF-区域间路由计算

一、概述 前面学习了我们学习了Router-LSA和Network-LSA&#xff0c;它们都只能在区域内进行泛洪&#xff0c;而且我们之前一直主要是单区域学习。OSPF的核心是骨干区域Area 0&#xff0c;其它都为非骨干区域。但是在大型网络中&#xff0c;单区域OSPF会存在一定的问题&#xf…

数据处理库Pandas数据结构DataFrame

Dataframe是一种二维数据结构&#xff0c;数据以表格形式&#xff08;与Excel类似&#xff09;存储&#xff0c;有对应的行和列&#xff0c;如图3-3所示。它的每列可以是不同的值类型&#xff08;不像 ndarray 只能有一个 dtype&#xff09;。基本上可以把 DataFrame 看成是共享…