大学四年如何学好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学习路线大一篇

相关推荐
qq_441996056 分钟前
Mybatis官方生成器使用示例
java·mybatis
巨大八爪鱼12 分钟前
XP系统下用mod_jk 1.2.40整合apache2.2.16和tomcat 6.0.29,让apache可以同时访问php和jsp页面
java·tomcat·apache·mod_jk
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
枫叶_v4 小时前
【SpringBoot】22 Txt、Csv文件的读取和写入
java·spring boot·后端
wclass-zhengge4 小时前
SpringCloud篇(配置中心 - Nacos)
java·spring·spring cloud
路在脚下@4 小时前
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
java·spring boot·servlet
黑马师兄4 小时前
SpringBoot
java·spring