我的程序员之路:自学Java篇

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 我的程序员之路:自学Java篇

序章

时光疾驰,从事IT行业已两年有余。 16年11月开始自学Java,从此开启自学之路,后来实习期自学大数据、python、爬虫等,最终成长为一名平凡的程序员。回首望去,一路上的过往历历在目,有初学Java掌握皮毛后的沾沾自喜,也有遇到问题无法解决时的埋头绝望。曾在学校的夜晚洋洋洒洒写下笔记百十行,只为记住一个知识点。也曾实习期凌晨,走在公司到站牌昏暗灯光挥洒的马路上,唱着自己喜欢的南山南庆祝着成长。

你问我自学累么,我会告诉你不累,因为自学路上收获了很多。你问我自学孤独么,我会告诉你不孤独,感谢这条路上曾有那么多帮助我的人。

很久之前就想以自己的经历为题材,记录一下关于自己的自学之路。在知乎和球球群里,也遇到很多和我当初一样对计算机充满着渴望但又迷茫的童鞋。希望通过简单的文字形式,可以帮助到一些人。

谁的青春不迷茫

我不是学霸,曾只是沉溺游戏之人。亦非出身名校,只是一名专升本的学生。大学之前虽是被老师寄予厚望的少年,但在大学生活里最终活成了自己曾经最讨厌的样子。

我读过三年专科、两年本科。高考失利没有选择复读,大一开学因病住院,回来跟不上学习节奏开始自暴自弃、随波逐流。游戏,荒废了三年的青春。

后来为了逃避离校实习,报考了专升本。刚开始的日子敷衍了事,当有一天可能从学霸的一个眼神或着一句话里,感受到了一种俯视。从那时,我开始自学数学、数据结构、操作系统、微机原理、C语言专升本科目,最后通过专升本。

专升本结束后的假期里,试图找过计算机相关的工作,皆无功而返,只能回家等待开学。那时的心里,也不知道有没有为以后埋下一颗渴望的种子。

人生会让你有想要保护的人,也会让你有努力的动力,或许来源于别人对你的态度,亦或许是为了生活。

Java自学之路

环境真的会影响到一个人。

16年9月,正式开启了本科两年的生活。我曾以为我的舍友和我一样,专科打打游戏混混日子。后来才知道来自各个高校的舍友,皆为省赛免考入学。因为经常参加省赛,彼此之间也互相认识。从那时,我感到了来自身边前所未有的压力。

我本应该躲在角落,感受弱者的黑暗。但我的舍友,没有因为我技术菜而孤立我。那时我对Java比较感兴趣,他们给我找了Java视频,教我做笔记。从那时,我开始晚上在宿舍自学Java。对于Java我算是零基础,专科的Java课基本上都在玩手机,而且书上的知识不足以用于工作。所以自学是很好的一个选择。

有时候也会一起网一开黑,但大多数的时候都是拒绝他们,他们也开玩笑说我不合群,说我偷偷学习不和他们打游戏。我只会日常统一回复:我要是免考我早就不学了。其实,他们一直也在学习,一直参加比赛,一直考证,我也随着他们的脚印一路向前。

就这样,本科的第一年坚持看Java视频,基本两个小时以上,当然偶尔也会偷懒。同时跟着视频敲代码,敲到自己理解为止。也一直在做笔记,什么都记,只要能让自己看懂。

看看刚开始做的Java笔记。

回过头来看这些自学路上留下的脚印,杂乱无章,已然帮助不大,但那份初衷和努力,永远激励着自己。

时至今日,你问我是否停止了学习Java?没有,一直在学习。

你问我自学给我带来了什么?一个好的学习习惯和一份收入尚可的工作。

自学方法

找一套系统的学习视频 + 敲代码 + 做笔记 + 坚持

视频教程我看的是Java300集,做笔记之前用的是OneNote,现在用的有道云笔记。在学习的过程中,要养成多问为什么和独立思考的习惯,形成一套完全属于自己的编程思路。

坚持学习,坚持获取新的知识。计算机是一条学无止境的路。

Java大家庭

在自学Java的过程中,我将Java简单地分为以下几类。

Java基础

面向对象、数据类型、集合(List/Map/Set)、I/O、异常、反射、序列化、设计模式、JDBC数据库、网络编程、设计模式等。

JavaWeb

servlet、request、response、cookie、session、Ajax、数据库连接池、文件上传下载等。

此刻就不得不提和JavaWeb配套的练手项目了,也是大家熟悉的,万众期待的:淘淘商城。商城类的练手项目集初学者宠爱于一身,是各大Java初学者web知识串烧的必备利器。

Spring全家桶

Spring、SpringMVC、MyBatis、SpingBoot。

前三者就是传说中SSM框架。Spring负责管理bean、SpringMVC负责处理请求,Mybatis负责数据库操作。但是SSM框架配置文件太多,Springboot简化了很多配置,自从有了Springboot,我就再也不用SSM框架了,就是这么喜新厌旧。

微服务、分布式

springcloud、dubbo。我没有系统地学过Springcloud和dubbo,只是搞过一次项目,了解了一下注册中心、网关、熔断降级、swagger等。

深入理解JVM

<深入理解Java虚拟机>这本书看了很多遍,别问多少遍,问就是三遍。

第一遍(刚开始学Java):感觉很NB,就是看不懂。

第二遍(刚开始实习):花非花,雾非雾,似懂非懂!

第三遍(工作一年):某一天我懂了!也会整理一些自己的理解写出来。

多线程、NIO

买了<Java并发编程的艺术>、<Java高并发程序设计>、<Java并发编程实战>来学习多线程,这三本书看没看完我就不说了,该懂得人都懂。

NIO主要跟着视频学习了Netty。

扩展

Maven:依赖管理;Git:项目代码版本管理,等等。根据自己需要,可以学学大数据、Redis啥的。

至此扬帆起航

本科第一年,驱散了曾经被游戏笼罩三年的迷雾,稳打稳扎的学了一年的Java。第二年找到了Java的实习工作。

我是在学完Java、JavaWeb和Spring开始的实习。实习期一年,在实习前期,利用下班时间学完了SSM框架、Springboot等,通过参与项目学习了多线程和JVM(实习篇会着重写一下)。

自学四年,努力在计算机这条路上前行,四年之中很多的夜晚只与学习为伴。不是任何的努力都能立见结果,但是要坚持总会有闪光的一天。虽然最后没有按照轨迹成为一名正儿八经的Java后端,但却通过Java一步步成为了一名大数据开发。

知乎问题汇总

1. 看书入门Java可以么

个人拙见,看书真的不适合Java入门,而适合Java进阶。为什么这么说呢?书籍会因为篇幅或者排版问题,不会把每个知识点写的那么详细,而视频里老师会将自己一些独特技巧教给你,这是书里学不到的。而且看书很难引起你敲代码的欲望,学习Java一定要敲代码!

2. Java代码使用记事本编辑

刚开始学习Java的童鞋喜欢用记事本来编写代码,使用java和javac命令来运行,于是导致各种拼写错误或者标点符号问题,这里建议使用eclipse或者IDEA来编写代码,这样可以避免最基本的错误,从而降低学习难度。

之前我在知乎回答类似问题的时候,一个童鞋说:刚学Java不用记事本手写代码,而使用这些带有提示功能的编辑器,那么以后让你手写代码怎么办。duck放心,别说遇不到手写代码的情况,就算真的遇到了,敲了那么久的代码,public static void main(String[] args)这些代码还手写不出来?Java就50多个关键字,根本无需记忆。真正需要记住的是代码实现思路和逻辑。

3. Java学到什么程度可以工作

基本上学完Java基础、web、SSM就可以工作了。但是找到工作不意味着停止学习,在大型项目的开发中,jvm和多线程都是必备知识。

4. Java没有未来?

任何编程语言都会有属于他的的未来,真正没有未来的是人的本身。一个人从事Java开发,但只停留于之前掌握的Java知识,不深入学习,也不随着技术的发展不断提升自己,何谈未来?Java虽然热度会被其他语言超越,但是目前难以被替代。

5. 自学两月毫无进展,放弃?

Java是一门比较整体性的语言,各个部分知识紧密联系。所以学习Java是一个拼图的过程。我刚开始自学的时候,面向对象的概念都没搞懂,随着后面不断学习,某一天豁然开朗。既然下了学Java的决定,跨过了最难的部分,为何不再坚持一下呢?学习Java就像练就绝世武功,都是长年累月的积累和厚积薄发的升华。

6. 大四学习Java晚么

官方回答:任何时候学习Java都不晚。但实话说,大四学习Java真的不晚,只要肯下功夫,找对方法,坚持下来,完全可以在上半年自学,下半年去实习。

7. Java只适合理科生或聪明之人?

一句话:Java适合努力之人。

8. 学历重要么

不是必须,但很必要,目前大部分Java开发要求都是本科起步,而且很多公司专科只能进入外包。

9. 关于Java培训

经济允许 + 想要速成 + 抗压能力强可以选择,具体下一篇文章会写。

期待下次相遇

此文记录了我大学自学Java的一些经历与感悟,不论你认为是天生聪慧运气使然,亦或笨鸟先飞大器晚成,都希望能帮助到你。

18年毕业后,留在了一个小城市,虽未身处BAT互联网顶端,但亦自知不可自弃仍需努力,让自己走得更远。在学习大数据、Python的同时,也一直坚持着Java的学习。对Java保持着感激之心,不断探索让自己成长。后续会根据自己的实际经历写一下关于培训以及实习的文章,讲述一下如何在实习期成为了一名大数据开发。

期待下次相遇。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
1月前
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
62 9
|
4月前
|
存储 算法 Java
惊!Java程序员必看:JVM调优揭秘,堆溢出、栈溢出如何巧妙化解?
【8月更文挑战第29天】在Java领域,JVM是代码运行的基础,但需适当调优以发挥最佳性能。本文探讨了JVM中常见的堆溢出和栈溢出问题及其解决方法。堆溢出发生在堆空间不足时,可通过增加堆空间、优化代码及释放对象解决;栈溢出则因递归调用过深或线程过多引起,调整栈大小、优化算法和使用线程池可有效应对。通过合理配置和调优JVM,可确保Java应用稳定高效运行。
148 4
|
4月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
73 9
|
4月前
|
Java 程序员
Java数据类型:为什么程序员都爱它?
Java数据类型:为什么程序员都爱它?
55 1
|
1月前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
1月前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
2月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
24 5
|
2月前
|
Oracle Java 关系型数据库
|
5月前
|
Java 程序员 C++
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
|
4月前
|
安全 Java 程序员
阿里开发手册 嵩山版-编程规约 (四)OOP规约-Java程序员必看知识点!!!
《阿里开发手册 嵩山版》的OOP规约部分强调了面向对象编程的最佳实践,包括正确使用静态方法、覆写方法的注解、可变参数的使用、接口的稳定性、equals和compareTo方法的使用、BigDecimal的正确比较、包装类与基本数据类型选择、POJO类的属性和方法设计等,以提升代码的质量和维护性。