大学四年如何学好Java拿到offer?这条过来人的Java学习路线送给你(大二篇)

文编|JavaBuild

大家好呀,我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,厚积薄发!

前言

这篇博文延续着上一篇《大一篇》,继续写,看到的朋友建议先去看一下《大学四年如何学好Java拿到offer?这条过来人的Java学习路线送给你(大一篇)》,里面提到了很多基础,是学习Java的必备知识,而今天的大二篇,我们开始接触更为底层的一些技术知识。

在别人都在泡妞,睡觉,刷剧,打游戏,吃外卖的时候,鸟哥希望你们去图书馆或者找个安静的自习室,按照这条路线踏踏实实的学完,在枯燥中向前,在平淡中一鸣惊人!

在这里鸟哥将大二的学习内容分为了6个部分,分别为操作系统、Linux、Shell编程、计算机网络/网络编程、数据结构和算法、数据存储。其中前三个都归属于计算机系统,Linux也是操作系统之一,Shell编程又是Linux环境下比较流行的自动化运维语言了,工作中不可或缺的一个知识点。

老样子,在开始正文之前,先附上大二全年的Java学习路线图,不清晰的可以私聊高清图

章一:操作系统

只要从事计算机相关工作的,不管你是什么方向,操作系统都是离不开的话题,作为管理计算机软硬件资源的程序,操作系统可以说是我们在计算机上打交道最多也最底层的了。

1.1 操作系统基础知识

那么什么是操作系统?章一的开始已经提到了,操作系统的功能有哪些?常见的操作系统有哪些?各自优缺点,什么是用户态?什么又是内核态?这些问题都是在这个小节中大家需要搞清楚的。

1.2 进程和线程

在大一路线中Java多线程部分也提到了线程与进程的概念,这里就不重复了,搞清楚线程与进程的区别,各自作用即可,不过在这里要注意的是进程的生命周期,进程间的通信方式(这个面试八股文中挺喜欢被问到)?还有一个就是进程间的调度算法,操作系统层面我们更关注于进程,Java层面我们更关注于线程。

1.3 并发/锁

在操作系统中同样存在着并发问题,有并发自然就有安全问题,有安全问题,自然就有"锁"这个概念,如果在大一已经熟练的掌握了Java多线程部分知识的同学,对于这部分内容的掌握,可谓是轻车熟路咯。

1.4 内存管理

所谓内存管理,就是合理的分配系统中多个进程在运行时的空间资源,其主要包含下图中这些内容,内存的分配与回收、虚地址与物理地址之间的转换、通过虚拟内存基础,从逻辑上实现内存的扩充,通过内存分配策略和回收算法来提高内存使用率,内存安全主要是保证进程间在使用内存时的互不干扰!

1.5 文件系统

文件系统,顾名思义就是对于操作系统内文件管理的这么一个模块,包括文件的增删改查、访问权限控制、目录管理、文件数据的存储。

章二:Linux

Linux是每个程序猿都无法避开的知识点,它是一个免费使用、开源的类Unix操作系统,它的创造者是林纳斯·本纳第克特·托瓦兹 (英文名:Linus Benedict Torvalds)

2.1 Linux内核

Linux本质上其实指的是Linux内核,而内核的作用是:内存管理、硬件设备管理、文件系统管理,应用程序管理,这并非是我们在工作中使用的Linux,我们在工作中所用到的均为发行版,由一些组织或厂商通过将Linux内核与其他软件包装起来,并提供系统的安装配置、设定与管理工具,从而进行发布供我们使用。

常见的Linux发行版主要为下面两大类:

RedHat(小红帽)公司维护的商业发行版本RHEL

基于RHEL开发的社区发行版CentOS、基于Debian的Ubuntu

2.2 Linux文件系统

Linux的文件系统,总体上的作用和章一的文件系统相似,不再展开,不过对于Linux的文件系统,大家要记住一句颇有哲学意义的名言:"一切皆文件",这句话源于unix。

2.3 Linux常用命令

学习Linux最头大的其实就是记住这繁多的各种操作命令,与windos这些桌面系统不同的是,我们在工作中所使用的Linux都要通过命令来进行各种操作,后面对于这些常用的命令,鸟哥会单独整理出一篇文章分享给大家,这里只做路线介绍,以及各个章节知识点的简介。

2.4 Linux环境变量

安装过技术软件的小伙伴们,对于环境变量这个词应该不陌生,而在Linux中同样需要环境变量,用来定义系统运行环境的一些参数。

章三:Shell编程

shell是当下最流行的Linux环境下的运维自动化语言,另外一个是python,能够熟练的使用shell可以提高我们在工作中的效率,因为,学习并掌握shell语言,会让大家在找工作时更有底气。

3.1 shell变量

3.2 shell基本运算符

3.3 shell流程控制

3.4 shell函数

shell技术鸟哥准备在后面找个时间,单独给大家分享一下它的语法逻辑,以及常见的通过shell脚本来实现的执行脚本,请持续关注哈。这部分内容,大家除了在网上找视频学习之外,最好买写图书看一下,毕竟有很多需要记忆的东西,图书看完之后可以当作字典使用,推荐《Linux命令行与shell脚本编程大全(第3版》。

章四:计算机网络/网络编程

计算机网络作为计算机的基础知识储备,与操作系统一样是不可不学的内容,甚至于它对于Java的开发人员来说更为重要,因为在日常的开发工作中,前后端的交互,数据的网络通讯都离不开它。

4.1 OSI七层模型

一张图说清楚OSI七层模型,每一层都有其相应的作用。

4.2 TCP/IP五层模型

同样一张图来搞定TCP/IP五层模型,也有人说是四层模型,这个看自己,无所谓,主要是要理解这个流程。

4.3 网络设备

网络设备中我们主要需要知道的是交换机和路由器,这个我想大家都很熟悉了,自己可以网上看看他们详细的作用和功能哈

4.4 HTTP与HTTPS

我们在浏览器中输入网址时常常可以看到前缀带有http或者https,http是一种超文本传输协议,属于应用层传输协议,基于tcp/ip协议进行数据传输,简单来说,它的作用就是限定客户端与服务端数据传输的一种规则。目前版本已经到达http3.0

而https是在http的基础之上进行了升级,加上了一层SSL证书的校验,可以进行加密传输、身份认证,安全行更高。

这里推荐大家看一本《图解HTTP》,内容还不错。

4.5 IP与ARP

IP(Internet Protocol,网际协议) 是 TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。

在理解ARP(地址解析协议)之前,大家需要去搞清楚什么是Mac地址哈,搞清楚Mac地址之后,就很容易理解ARP的作用了,主要是用来解决IP地址转像Mac地址的,这里我们可以把IP地址看成家庭住址,而Mac地址为身份证号,通过家庭住址跳转到身份证号,才能准确的定位到最终目标。

4.6 TCP与UDP

这部分内容很多,并且非常重要!可以说面试中被问到的概率至少80%,所以大家一定要认真学,搞明白TCP与UDP的区别,以及他们的作用,使用场景。

TCP的三次握手与四次挥手

三次握手

四次挥手

4.7 DNS域名系统

这部分我们可以这样理解,所谓的DNS域名系统,主要用来解决域名和IP地址之间的映射问题,比如我们在浏览器上输入一个www.baidu.com,这是百度公司的官方域名,但实际上我们要请求的是他们的服务器内容,这时候就需要DNS出来工作啦。

4.8 加密算法

数据在网络传输的过程中,最重要的就是安全性,为了万无一失,便出现了加密算法,目前主流的算法分为对称加密和非对称加密两种,每种算法都有很多实现,大家可以选一些常见的学习。

4.9 网络攻击

在网络的世界里,很多不法分子都会利用技术,找到我们网站的漏洞,从而进行网络攻击,获取不法利益,常见的网络攻击有:CSRF、XSS、DOS,甚至于SQL注入也是。

章五:数据结构和算法

手撕编程题是很多大厂的必考项目,数据结构与算法,考察的是应聘者对于程序逻辑的理解,同时也考验着大家处理问题的能力与变通情况,因此,请大家狂刷算法题,如下是鸟哥整理的学习路线。

推荐书籍《剑指offer》,推荐刷题应用:LeetCode

章六:数据存储

之前在大一的学习路线介绍中,鸟哥就说过,我们所作的所有应用和功能,最终要处理的就是数据,可以说"万物皆数据",能够合理的处理和存储数据,是一个优秀的程序员,必备本领。数据库是用来存储数据的媒介,当下已经衍生了很多类数据库,我们在这里只需要学习工作中最可能用到的即可,剩下的,可以后面慢慢积累学习。

6.1 数据库基础

什么是数据库三范式?事务的四大特性?事务的隔离级别都有哪些?

6.2 Mysql

MySQL的学习主要包含如下这些部分

6.3 Redis

作为经典的非关系型数据库,redis可以说在日后的工作中,百分百会用到,所以必须要学!

6.4 Oracle

Oracle这里没有整理,因为目前国内都在倡导去O化,鸟哥很犹豫,因为Oracle确实好用,且性能比MySQL好太多了,后面找时间再专门整理这部分知识点吧。

写在文尾

大二推荐大家的学习内容,其实与Java没有直接关联,而是所有程序员都必须要学的知识,内容很多,且很多知识点抽象难懂,希望大家耐心学完,等到了大三的学习路线,就到了我们真正要搞技术的时刻了!

大一路线还没有看的朋友建议先去看下。

Java学习路线大一篇

相关推荐
Tirson Yang21 分钟前
西安java面试总结1
java·面试
小猫咪怎么会有坏心思呢22 分钟前
华为OD机试-猴子爬山-dp(JAVA 2025A卷)
java·算法·华为od
保持学习ing25 分钟前
SpringBoot 前后台交互 -- CRUD
java·spring boot·后端·ssm·项目实战·页面放行
啾啾Fun1 小时前
Java反射操作百倍性能优化
java·性能优化·反射·缓存思想
20岁30年经验的码农1 小时前
若依微服务Openfeign接口调用超时问题
java·微服务·架构
曲莫终2 小时前
SpEl表达式之强大的集合选择(Collection Selection)和集合投影(Collection Projection)
java·spring boot·spring
ajassi20002 小时前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源
q567315232 小时前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
kaikaile19952 小时前
解密Spring Boot:深入理解条件装配与条件注解
java·spring boot·spring
守护者1702 小时前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习