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

news2024/12/28 18:32:23

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

😻 【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.coloradmin.cn/o/1550893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言运算符和表达式——赋值运算符

目录 变量的定义 赋值运算符 赋值表达式 如何给变量赋值 变量的定义 声明变量的名字和类型 变量的类型决定了 *占用内存空间的大小 *数据的存储形式 *合法的表数范围 *可参与的运算种类 *变量名标识了内存中的一个存储单元 问题:未被初始化的变量的值是什么&a…

yolov8 pose keypoint解读

yolov8进行关键点检测的代码如下: from ultralytics import YOLO# Load a model model YOLO(yolov8n.pt) # pretrained YOLOv8n model# Run batched inference on a list of images results model([im1.jpg, im2.jpg]) # return a list of Results objects# Pr…

PCL拟合并绘制平面(二)

使用RANSAC拟合点云平面 1、C实现2、效果图 普通的点云平面拟合方式在一般情况下可以得到较好的平面拟合效果,但是容易出现平面拟合错误或是拟合的平面不是最优的情况。此时就需要根据自己的实际使用情况,调整平面拟合的迭代次数以及收敛条件。 使用RAN…

浏览器工作原理与实践--调用栈:为什么JavaScript代码会出现栈溢出

在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript引擎先会对其进行编译,并创建执行上下文。但是并没有明确说明到底什么样的代码才算符合规范。 那么接下来我们就来明确下,哪些情况下代码才算是“一段”代码&am…

TheMoon 恶意软件短时间感染 6,000 台华硕路由器以获取代理服务

文章目录 针对华硕路由器Faceless代理服务预防措施 一种名为"TheMoon"的新变种恶意软件僵尸网络已经被发现正在侵入全球88个国家数千台过时的小型办公室与家庭办公室(SOHO)路由器以及物联网设备。 "TheMoon"与“Faceless”代理服务有关联,该服务…

46秒AI生成真人视频爆火,遭在线打假「换口型、声音」

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站 每天给大家更新可用的国内可用chatGPT资源 更多资源欢迎关注 是炒作还是真正的 AI 视频能力进化? AI 生成视频已经发展到这个程度了吗? 前段时间,英国王室凯特…

每天能提醒自己做事的app有哪个?

在忙碌的日常生活和工作中,我们时常面临各种任务和琐事。一旦处理不及时,很容易导致遗忘,进而给自己带来不必要的麻烦和损失。因此,拥有一款能够高效提醒我们做事的提醒app显得尤为重要。 敬业签就是这样一款实用的提醒软件。它不…

零基础10 天入门 Web3之第1天

10 天入门 Web3 Web3 是互联网的下一代,它将使人们拥有自己的数据并控制自己的在线体验。Web3 基于区块链技术,该技术为安全、透明和可信的交易提供支持。我准备做一个 10 天的学习计划,可帮助大家入门 Web3: 想要一起探讨学习的…

【氮化镓】位错对氮化镓(GaN)电子能量损失谱(EEL)的影响

本文献《Influence of dislocations on electron energy-loss spectra in gallium nitride》由C. J. Fall等人撰写,发表于2002年。研究团队通过第一性原理计算,探讨了位错对氮化镓(GaN)电子能量损失谱(EEL)…

python——修改注册表

如图:想要修改Public的值为2.2.1.1 import winreg# 定义要修改的键和新值 key_path rSOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList key_name Public new_name 2.2.1.1# 打开指定的键 # 注意此处是注册表路径拼接,此处是HKEY_LOCAL_MACH…

docker部署ubuntu

仓库: https://hub.docker.com/search?qUbuntu 拉一个Ubuntu镜像 docker pull ubuntu:18.04 查看本地镜像: docker images 运行容器 docker run -itd --name ubuntu-18-001 ubuntu:18.04 通过ps命令可以查看正在运行的容器信息 docker ps 进入容器 最…

Obsidian插件:增加目录栏 flating toc

一、插件介绍 增加目录栏 插件市场搜索 flating toc安装即可 二、使用 写文档时候可以看到左边默认出现目录 可以自己配置一些相关设置 最后也可以安装一下插件样式设置插件,自己按照自己喜好调整

leetcode —— 5.最长回文子串

题目: 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"…

基础数据结构(蓝桥杯Python组)

链表 基础概念 链表可以快速插入、删除元素,用于存储数据。 每个节点维护两个部分:数据域和指针域数据域就是节点所存储的数据,指针其实就是下标(next,节点的下一个节点在哪)链表维护head和tail,每次从ta…

学浪视频提取

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

由浅到深认识Java语言(36):I/O流

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

C++中 eigen(一)建造向量

快速上手: https://eigen.tuxfamily.org/dox/group__QuickRefPage.html 文档: https://eigen.tuxfamily.org/dox/index.html Constructors 建造 向量 Vectors 向量 例如,方便的 typedef Vector3f 是一个包含 3 个浮点数的(列&a…

Spring用到了哪些设计模式?

目录 Spring 框架中⽤到了哪些设计模式?工厂模式单例模式1.饿汉式,线程安全2.懒汉式,线程不安全3.懒汉式,线程安全4.双重检查锁(DCL, 即 double-checked locking)5.静态内部类6.枚举单例 代理模…

15K star!一款功能强悍的手机电脑同屏工具,开源无需root!

在日常工作、生活场景中,经常会遇到需将手机与电脑屏幕进行共享。 今天就给大家推荐一款Android实时投屏神器:QtScrcpy。 它可以通过 USB / 网络连接Android设备,并进行显示和控制,且无需root权限。 1、简介 QtScrcpy是一款功…

nginx代理解决跨域问题

文章目录 一、什么是跨域、跨域问题产生的原因二、注意事项三、nginx代理解决总结 一、什么是跨域、跨域问题产生的原因 跨域(Cross-Origin)是指在 Web 开发中,一个网页的运行脚本试图访问另一个网页的资源时,这两个网页的域名、…