在上大学前,我几乎不知道任何计算机语言,唯一的印象是到学计算机的表哥家玩看到他桌上有C语言的计算机书籍,但是并不知道C语言是什么,只知道是计算机能认识的语言。后来上了大学,学了计算机专业,第一门学的语言就是C语言,当时感觉特别高大上,身边的高手很多,上课老师讲得东西,他们在上大学前都学完了,例如当老师讲到ASCII时,大佬们能直接说出‘a’、‘A’、'0’对应的ASCII值是什么,而我当时压根不知道ASCII是什么东西,为了跟上老师课堂的节奏,我就去图书馆借了我第一本接触到的计算机语言书:谭浩强的《C程序设计》,刚开始用的是VC6.0进行代码编写,对着书本一行一行地敲,期间也闹过不少笑话,因为VC6.0没有代码提示,经常会将一些关键字写错,比如把main写成mian等等,然后看着一大堆的报错不知所措,记得有一次在输出char数组时,导致程序输出了一大堆“烫烫烫烫烫…”,还以为是电脑被自己的程序弄坏了,战战兢兢地退出了VC6.0,后来才知道字符串是以\0结束的,当一个一个使用scanf输入时,程序并不会自动加\0,所以会出现"烫烫烫"。
和大多数同学差不多,在学指针的时候被指针折磨了不短的一段时间,不过我没有放弃,坚持不断地去理解与学习,终于慢慢地对指针有了一定的了解,最后甚至写了一个十一级指针,优化qq数据的查找和读取。
后来有一次在图书馆查阅资料的时候,我看到了一整排的Java语言的参考书,那些书都是崭新新的,在我眼里透露着一种神秘的吸引力,我不记得我第一次接触的是什么书,只记得当时打开书后,立刻发现了一个昵称:“Java”,当看到JVM可以自动对垃圾进行回收并且一处编写处处运行的时候,进一步增加了对Java语言的神秘感,然而短暂的接触并没有真正把我吸引到Java的世界中去,因为只学过C语言,面向结构的语言刚刚起步,所以对面向对象的语言更没有概念,Java这种纯对象的语言对我来说是一个遥远的高峰,然后就借了一本回去,但是后来因为种种原因,书借回去了就被束之高阁了,后来学习了C++语言逐渐了解了面向对象的三大特性:多态性、继承性、封装性,接着自己也加入了学校的创新工作室,有自己的独立工位和电脑,恰巧当时和同学准备参加一个基于Java的软件设计大赛,所以我有了更多的时间去实践自己对Java和面向对象的理解,这也让我对面向对象也有了更深的理解。
在这个阶段,我看了很多关于C++和Java的文章,知道了两者之间有很多差异,也看到了两者在软件开发界的斗争,Java和C++就像一个年轻人和一个壮年,C++有着长久的历史,而Java却在众多人的呵护和青睐下迅速走向C++的今天。今天的Java正在走向更广阔的世界网络和企业应用,J2EE架构已经成为业界主流标准,Java技术也带来了中间件、动态页面技术等许多新的令人兴奋的技术,Spring框架的出现更让Java的竞争力增加一筹。
时间总是把记忆慢慢推开,大学生活很快就变成了昨天的回忆,我也从大学出来变成了一个程序员,在工作中,我有机会向非常有经验的同事探讨一些编程问题,通过code review,也逐渐能写出可读、高性能的代码。
站在现在,回首往昔,发现编程很容易学习,却很难精通,就像生活中的许多事情一样,编程是一种有趣的、相对容易上手的技能,但当我们试图成为一个专家时,难度就会成倍增加。目前我们可能在大一、大二或大三,甚至刚参加工作,可能认为自己已经是一个好的程序员,但让我告诉你:还有很多东西需要学习。就像学习驾驶汽车一样,编程是一种需要时间来发展的技能,你不能在考试前两天开始学习它,并期望得到一个好成绩,这是一项必须每天都要练习的技能。
在目前的大部分项目中,我们通常不是单兵作战,一个系统需要分成多个模块,不同人编写不同的部分,相继出现了前后端分离、中台,每个模块开发好之后需要对接,在这过程中,我们可以更快地学习代码,因为在这过程中团队中更有经验的开发者会教给你他们多年以来积累的许多技巧和窍门,有人会解释为什么要以某种方式来实现某件事情,并让你沉下心来思考所写软件的功能,这一点非常重要,这也是为什么常有人说工作一年学到的东西比大学四年学到的东西都多得多的原因。此外,还要学习相关操作的快捷键,这会让我们的开发效率更高,在办公室里流传的笑话是:如果你不使用最常用的快捷键,我们就会把你的电脑鼠标拿走。
因为工作需要,我有时候经常在网上查找一些文章,我看了一些网上 Java 自学的文章,很多我都不太满意,有的甚至让我感到愤怒,要么是站在现有的视角侃侃而谈,要么是很多错误的地方。很多文章都有一个老毛病:完全没有从小白的视角去思考,内容太多、太杂,不成体系,这根本不是自学阶段该去看的东西,小白看了这些文章,只会越看越懵,根本没法下手。为了拯救广大正处于水深火热的同学们也为了自己的查阅,于是,就有了这一系列—26天高效学完java编程,在该系列中,会从基础的计算机基础知识开始讲起,相关内容如下:
当然,当你学会了以上Java 的基础知识以后,你还不足以参加工作,还需要继续深造,所以必须要学会 java 开发框架。公司里为了提高开发的效率,会使用一些 Java Web 框架,目前比较主流的是 spring、SpringCloud、SpringBoot、SpringMVC、mybatis,所以我们需要学会这些常见框架的搭建,并用它们做出一个简单的增删改查的 Web 项目,当然目前可以不理解配置都是什么含义,以及为什么要这么做,这些留着后面去了解,但一定要可以快速的利用它们搭建出一个 Web 框架,可以尝试记录下第一次搭建的过程,在搭建的过程中,也可以顺便了解一下 maven 的知识,一些高端的maven用法随着工作经验的增加,会逐渐接触到。接下来是我整理了很久的学习路线,绝对走心推荐,大家可以尝试按这个路线学习~
学完了以上内容就可以开始学 Java Web的学习了,Java Web 虽然现在流行的是 Spring,但是还是建议学一下最原始的方式,这样才知道 Spring 这些框架都解决了哪些问题。
黑马2017 java Jsp阶段教学视频(陆续更新)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV1eW411S7N9?from=search&seid=17985935343253172203
java基础 servlet详细教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV1e441157QE?from=search&seid=17568199664263935290
【spring源码全集】B站唯一阿里P8级别的架构师教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av71093907
spring_spring注解驱动开发_spring源码版-雷丰阳-尚硅谷_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av71252572
黑马程序员Java进阶教程spring框架,深入浅出讲解细致_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV1yt411e7E8?from=search&seid=15520439480593603816
尚硅谷SpringMVC实战教程完整版(spring mvc框架源码解析)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av21272240
千锋Java:3天学会SpringMVC框架教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av45556876
黑马程序员springmvc_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av18288362
尚硅谷MyBatis实战教程全套完整版(初学者零基础从入门到精通,好评如潮,资料齐全)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av21272940
尚硅谷MyBatisPlus教程(mybatis-plus框架精讲)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av27212529
尚硅谷SpringBoot顶尖教程(springboot之idea版spring boot)www.bilibili.com/video/av20965295
雷神的Spring、Spring MVC、MyBatis课程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av56193747
Mybatis教程IDEA版-4天-2018黑马SSM-01_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av47952553
【javaWeb(SSM)】+SSM框架视频整合+(传智播客)(一)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av29422149
学完 Java Web 框架,还需要看看 JVM 原理,GC、类加载机制这些,大厂都爱问。
2020权威_juc 与 jvm 并发编程 Java 必学_阳哥- 尚硅谷_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av70166821
深入理解JVM 虚拟机 (108p版)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av75247289
不管学什么语言 算法和数据结构是必须的学的,这里推荐一些公开课
【黑马】2020最新数据结构与算法教程(求职面试必备)【源码+笔记】_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV1Cz411B7qd?from=search&seid=16781927612924388497
浙江大学数据结构 陈越_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV1H4411N7oD?from=search&seid=18193160742315931884
数据库可以参考我的专栏数据库专栏
MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av49181542
Redis-尚硅谷redis视频教程-尚硅谷-周阳_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av51139549
除了会用 Java Web,网络编程还是要学一下,先学计算机原理,再学网络编程
2019 王道考研 计算机网络_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV19E411D78Q?from=search&seid=2053020700048254724
2021最新Java网络编程全套教程(NIO+Tomcat+Netty+Socket)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/BV1bJ411i7R6?from=search&seid=4695243602511595138
Git
说实话,Git 我看到有博主还在推荐视频,这确实有点误导人了,Git直接看教程就非常快了。
也可以参考我的专栏:git专栏
进阶全面的话可以看看 progit 这本书
Git - Bookgit-scm.com/book/zh/v2
新手可能不太熟悉,看视频版更容易上手,这里只推荐一个
IDEA教程-干货大合集_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av34324988
我也只推荐一个
Maven基础篇(IDEA版)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com/video/av54119831