Java工程师学习指南(2019最新版)

本文所述的方法不一定适合所有人,如有错误敬请谅解。

01前期准备工作

这一步我们往往会直接跳过,但既然是面向小白的教程,这里就提一下吧。首先你需要一台电脑,然后安装好JDK和JRE,JDK提供的是Java开发工具,也就是一些必备的jar包,JRE则是Java的运行环境组件,我们熟悉的JVM就在这里面。

安装好这两个东东之后,一般还要配置一下环境变量,否则有一些目录可能无法被正确找到。

IDE指的就是本地开发编辑器,没有了它,你就只能直接在记事本这类工具里敲代码了。IDE最大的好处就是整合了大量的工具和功能模块,让你非常轻松地完成开发。

以前大家都用eclipse,不过eclipse已经不流行了,现在我推荐你直接用intellijidea作为你的第一个代码编辑器。如果是用过eclipse的同学,基本上也可以无痛切换。

intellijidea可以直接在官网上下载,试用版30天,如果想要永久使用,网上也有一些办法滴。

jar包是什么,其实就是将一堆class格式文件打包,Java中把它称为jar包,这些jar包在编译器中能被直接识别,让开发者使用。

手动导入jar包其实也不难,你需要先下载好jar包,然后在对应的项目下选择导入jar包即可,具体的方法这里就不展开说了,因为在网上都找得到。

02

学习Java基础的几种方法

学习一门语言,最开始要做的事情就是学习它的语法。我最早学习Java语法是在Runoob,这个网站可以让你对任意一门语言完成最快速的语法入门,当然,这只是相当于你浏览了一遍基础语法。

想要真正掌握Java语言基础,光看基础语法还远远不够,我在大三第一次接触Java课程,听老师讲面向对象三大特征听得一头雾水,连数组的初始化方式都理不清楚,但这些内容都是我们需要掌握的。所以,为了学好Java基础,我们还需要看视频或者看书进行学习。

看视频的好处是你可以更好地接收知识,同时也会耗费你更多实践,所以,有时候你也可以选择看书。

看书的话,对于小白来说不推荐太复杂的书,比如《Java编程思想》这种书,新手千万不要看。我个人建议,你只需要先看看《Java入门到精通》这种类型的书就足够了,因为这个部分的学习只是为你后面的学习开个头,你以后可能还要回过头来重新研究这些内容。

现在市面上介绍Java基础的书籍实在太多了,质量参差不齐,内容同质化严重,笔者看过的其实也不多。给大家一个建议,你只需要挑一两本书来看即可,这里推荐两本最简单的吧,《headfirstjava》和《Java从入门到精通》。

除此之外,一般的Java书籍或者视频课程都会要求你相应完成一些练习题,这部分内容你需要自己在电脑里使用IDE完成。

在IDE里,你可以很好地熟悉Java语言的使用,基本代码的实现,同时可以尝试各种各样的API,并且测试一些语言特性,比如继承,封装,多态等等。

另外,这也是你熟悉IDE的一个好机会,因为在公司里做开发可能要用到IDE各种各样的功能,提前熟悉好IDE绝对是有益无害的。

03Java入门必备知识点梳理

在Java入门阶段,你可能需要接触到以下这部分知识,不管你是从通过哪种方式学习,这些内容都是你学习Java基础时绕不过的重点。

这部分内容是你必须要掌握的内容,在入门阶段你需要把这些基础打扎实,以便于在学习后面的内容时可以更上一层楼。

如何把基础打扎实呢,最好的办法就是在IDE上把书上或者视频上的每个例子都实现一遍,当然有的时候你也可以自己写一些有意思的例子。

1基本数据类型

比如int,double,char,以及其包装类。

熟悉基本数据类型的使用,了解每种类型所占的字节数,以及它们和包装类之间的相互转换。

2流程控制

比如for循环,ifelse,while循环等等

如果是学过c语言的同学,这部分可以跳过了。

3字符串类型String的使用

4数组

数组的初始化方式有哪些,二维数组应该怎么写,把数组当成方法参数又该怎么处理?

5类和对象

Java中最重要的两个概念:类和对象,它们有什么用呢,有什么区别和联系呢,请在代码中实践它们吧。

对于这部分内容,我相信很多小白只能了解它们的基本使用方法,但是并不明白其背后的一些原理:比如为什么接口和抽象类有这些区别,多态的意义是什么,为什么要有反射。

新手在学习这部分内容时,只需要知道怎么用就可以了。当然,你最好把这些特性都实现一遍,以加深印象。

至于为什么有这些特性,这些特性背后的原理是什么,不是我们现在讨论的内容,这些内容我们将在初级和中级篇中讲述。因为,要了解这些原理,你得了解JVM,了解并发技术的基础,了解网络基础,甚至更多。显然,这不是你现在能做到的。

1接口和抽象类

写一些接口,同时写一些实现类去实现这些接口,并且了解一下为什么我们需要接口,为什么子类需要实现接口里的方法。

同理,去实现一些抽象类吧。然后,看看它和接口有什么不同。

2继承,封装和多态

如何理解继承,子类和父类之间有什么联系呢。

封装是一种保护代码的方式,有哪些方式可以实现封装呢。

多态一般分为重载和重写,它们分别怎么使用?

3异常处理

Java中的异常处理主要用于捕获和处理错误,请你写一些trycatch代码块去捕获错误吧。

4集合类

集合类是我们经常需要打交道的东西,List,Map,Set等等,赶快去熟悉API,然后写一些测试例子吧。

5IO输入流和输出流

IO输入流和输出流可以操作文件,网络数据等内容,如何在Java代码中完成这么复杂的操作呢,其实只需要简单的几个api就可以了。

6多线程

可选内容:

1反射(了解即可,不是入门必须)

2枚举类型和泛型(了解即可,不是入门必须)

3网络通信(了解基本的socket使用即可,需要网络基础)

4数据库操作(了解基本的JDBC即可,需要数据库基础)

04总结

1首先搭建好Java开发环境

2通过Runoob等一些网站熟悉Java的基本语法

3通过看书看视频等方式熟悉Java基础知识,通过代码实践加深理解

4通过看书看视频等方式初步了解Java核心技术,通过代码实践加深理解。

本文主要是为大家提供一个学习的思路,以及推荐一些学习方法,如果你能够按照这样的步骤去学习,并且配合上一些适合你自己的学习方法来完成学习计划,相信你可以很好地完成对Java的入门。

初级篇

01

JavaWeb项目指南

如果你已经完成了这部分内容的学习,应该会感觉自己对Java已经有一定了解了,可以轻松地写出一些Java代码,比如实现多线程输出数字,再如操作IO流等等。

当然,这些代码通常只是一些demo,我们在实际的项目中可能并不会这么简单地使用这些技术,我们可能会同时使用集合类,多线程,以及操作数据库的API。

所以,在今天的初级篇中,我们就来谈谈怎么做项目吧。

对于大部分Java新手来说,最适合他们入门的项目就是JavaWeb了。因为Java天然适合做Web应用,并且生态完善,更有很多开源的工具和框架去支撑这些应用,比如Spring,Hibernate,SpringMVC等等。

那么,如何开始着手做一个JavaWeb项目呢。个人认为最好的方式就是看视频了。因为,看书的话,很多内容比较过时,并且一般不会提供源代码。也有一些大佬喜欢推荐开源的项目(在GitHub上面的项目),但是对于小白来说,如果没有很完整的文档去指导他们,那也是毫无意义的。

要想做好一个JavaWeb项目,你不仅需要一个好的项目课程,还需要足够的知识储备,下面就让我们来理一理这些内容把。

Java基础部分的内容咱们上次说过了,这里就不再重复啦~下面我们分别来说说其他几方面的知识储备把

前端知识

推荐资源:在w3cschool学习html,css和js,支持在线测试代码。

对于大部分同学来说,你最好要了解html的基本标签和格式,自己能够写一些简单页面,CSS的话,也可以稍微接触一些。相对于前面两个服务于样式的技术,我们倒是更应该去学习一下JavaScript,了解它的一些基本语法,以及ajax的使用,因为在前后端交互时,ajax是非常重要的。

03

JavaWeb常用技术

JavaWeb的技术栈其实比较庞大,所以我们不要求面面俱到,只是希望你能够熟悉一下项目中可能用到的技术。下面列举一些常见的技术,大家最好要了解一下。

1JSP和Servlet

推荐资源:《JavaWeb入门到精通》,慕课网、极客学院等网站上的JavaWeb基础课程

这是JavaWeb开发最原始的形态,现在很少直接使用了,但是后来的各种框架其实也是建立在servlet之上来做的。你们需要了解这两个技术分别是用来干什么的,最好能写一些demo来实践。

对于JSP,有时候你可能还要学习jstl等标签语言,因为这些标签可以让你更方便地往JSP中插入Java代码。

2Spring和SpringMVC

推荐资源:《Spring实战》,慕课网、极客学院等网站上的SpringMVC基础课程。

事实上,除了上述资源之外,你也可以直接到官网上查看快速开始文档。

Struts2早已被时代抛弃,Spring则是当今的霸主,你需要了解Spring如何使用,以及SpringMVC如何使用,并且学会在项目中使用它。

由于SpringBoot最近很火,并且搭建方式比SpringMVC更简单,你也可以先学习SpringBoot,以便更快速地搭建起你的第一个JavaWeb项目。

3MySQL

推荐资源:《Sql必知必会》,Runoob上的MySQL基础教程,慕课网、极客学院等网站上的视频课程

一个JavaWeb应用一定要有数据啊,所以我们需要用到数据库,其实搭一个mysql数据库是非常简单的,但是对于初学者来说最麻烦的就是写sql了,所以,先学会建表,熟悉sql,对你以后做项目也是大有裨益的。

4Hibernate和Mybatis

推荐资源:Runoob上的Hibernate和Mybatis基础教程,慕课网、极客学院等网站上的视频课程

当你学会了使用sql去查询数据,可能还不足以让你在项目中很方便地处理数据,因为我们还需要一个步骤,就是把数据库的数据转化成Java里的对象。orm框架就是为了解决这一问题而出现的,它可以让一张表和Java类一一对应,让数据查询变得非常方便。Hibernate和Mybatis都是orm框架,只不过现在mybatis越来越火了。

所以,你需要了解这一技术,因为它会广泛地运用到大部分JavaWeb项目中。

5Maven

推荐资源:《maven实战》,易百教程里的maven教程,慕课网、极客学院等网站上的视频课程

刚才咱们已经说过了Spring,orm框架,以及MySQL等方面的技术了。实际上,一个简单的JavaWeb项目也只需要这些东西了。

但是,有一个问题,就是:一个项目里用到这么多技术,所需要的jar包也会很多,我们如何管理这些jar包呢。如果直接导入所需jar包,那当jar包更新或者需要替换时,每次都要手动操作,非常麻烦。另外,当jar包很多时,项目打包后的war格式文件也会很大,不利于传输。

当然,新手可能还难以理解这些概念,你必须要知道的是,大部分JavaWeb项目需要用maven来管理,你需要学会maven的基本用法,最基本的用法就是:学会修改pom.xml文件。

6Tomcat

推荐资源:慕课网、极客学院等网站上的视频课程。

正常来说,你只要下载解压Tomcat的压缩包即可。由于现在的IDE都支持集成Tomcat,所以一般情况下你都可以在IDE中配置好你的Tomcat路径,然后设置好你的项目路径,IDE会自动把你的工程代码部署到Tomcat服务器上。

如果你使用想跳过IDE直接部署工程到Tomcat上,也可以直接编译工程并且打包得到war格式的文件(这个步骤可以使用maven来完成),然后拷贝war文件到Tomcat下的特定目录即可。

上述两种部署方式的详细步骤请到搜索引擎寻找答案。

7Git和GitHub

推荐资源:廖雪峰的Git教程,GitHub官网,慕课网、极客学院等网站上的视频课程。

既然要做项目,为什么不把它发布在GitHub上。当你熟悉了Git指令之后,你可以很方便地发布你项目中的每一次更新,并且同步到GitHub上,这样既可以让你更好地管理项目版本,又可以让你GitHub更加活跃,为你未来的面试加分。

所以,赶紧学好Git指令,然后开启你的项目之旅吧。

04

其他常用组件

1日志系统

当项目代码比较多的时候,容易发生错误,日志可以很好地记录代码运行时的错误,常用的日志系统有log4j,logging等等,另外你还需要了解一下slf4j。

2单元测试

日志系统可以记录代码问题,单元测试则是为了避免代码出错,常用的单元测试组件主要是JUnit,建议你找个文档看一看,然后下载下来玩一下。

3JSON

JSON逐渐成为前后端数据交互的标准格式,为了在项目中使用JSON的API,你也需要导入它的jar包,一般我们都会使用阿里提供的fastjson,赶快下载来玩一玩吧。

当然,常用的JavaWeb组件还有很多,比如HTTPClient,再比如一些加密工具,一些压缩工具等等,这里就不再一一列举了。

05

推荐项目课程

现在网上的项目课程那么多,哪一款更适合你呢?

其实我看过的视频课程也不是很多,早先在慕课网和极客学院看过一些项目课程,觉得比较一般,对新手来说不太友好。

当然,我最推荐的还是牛客网的视频课程,分别是Java中级项目课和Java高级项目课。主要有几点原因吧:

1叶神讲课,比较了解同学们的情况,而且技术功底摆在那里没的说。

2所做的项目比较接地气,用的技术栈也比较新,比较全。

3我自己全程跟着牛客网的项目课做了一遍,感觉确实有收获,而且每个章节的安排也比较合理。

4配套有PPT,项目代码以及部分安装包,可以让你省去很多繁琐的环节。

看来我真是牛客网的真爱粉,居然帮牛客网免费推广~

06

总结

今天我们主要讲的是,做好一个JavaWeb项目,需要哪些知识储备,需要了解哪些技术,并且我也推荐一些比较精品的视频课程。

总结以下今天说的几个要点吧:

1Java基础知识储备

2前端知识储备

3了解和使用JavaWeb常用技术

4JavaWeb常用组件介绍

5视频课程推荐

俗话说的好,磨刀不误砍柴工,相信你看了本文之后,可以更好地做好知识储备,然后开始JavaWeb的项目实践,希望你能够顺利地完成你的第一个项目。

▼更多精彩内容

笔者在今年秋招中成功拿到BAT头条网易等大厂的研发offer,期间总结了很多经验和技巧,我把它们写成文字,做成专题,发表在公众号上,希望让更多有需要的朋友看到。

中级篇

所以,今天我们重新开一个新的专题,分别按照四个部分讲述Java的学习路线,笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是第三部分,Java工程师学习指南(中级篇)。

本文中的方法不一定适合所有人,如有错误还请谅解。

当然,跟着视频课程做完一个项目,你只是照葫芦画瓢又练习了一遍,可能其中有很多东西你并不太理解,比如你可能不知道为什么代码要分层,为什么要用maven进行线上编译,为什么Tomcat启动时会输出那么多的日志。

对于即将参加校招的同学来说,最重要的也是这部分内容,你需要了解JVM虚拟机原理,Java并发原理,并且熟悉JDK的部分源码,了解这些API的底层实现。除此之外,还有很多,下面我们分别来谈一谈。

01计算机基础知识

如果你不是计算机专业的同学,那你可能要注意一下了。在学习下面这些内容之前,你最好要学习一下计算机基础课程。

这里我们说的计算机课程是:数据结构,操作系统,计算机网络。

数据结构:这门课应该算是三门课程比较简单的一门了,推荐《数据结构与算法(Java语言描述)》,看书结合代码实践,把基本的数据结构算法写一写就可以了。

然后可以看一看汤小丹写的《操作系统》,或者你们学校的教材。

计算机网络:网络方面的书也非常多,推荐看一下《计算机网络:自顶向下方法》,另外还有一本《TCP/IP详解:卷一》也是备受推崇的书。

除此之外,我还要推荐一下刘欣老师的书《码农翻身》,书中用一些有趣的故事来讲解操作系统和计算网络的一些复杂概念,有助于大家理解这部分内容。

02JVM虚拟机

为什么把JVM放在第一位,因为它是最基础也最重要的一块内容。所有的Java代码都运行在JVM上,事实上,JVM在操作系统中只是一个进程。为了了解Java代码的运行方式,底层引擎的执行原理,以及内存的分配情况,我们必须要学习JVM虚拟机。

推荐资源:《深入理解JVM虚拟机》

很高兴地告诉你们,学习JVM你只需要把这本书吃透即可,当然,看一遍可不够,笔者前后至少看了三遍,有条件的话最好把书中的实例都跑一跑。

另外,JVM也是面试必考的内容,所以,相应地去准备一些面试题也是很有必要的,如果你基本掌握了这本书的内容,相信你不会惧怕任何JVM面试题。

03设计模式与源码阅读

为什么在这里提到设计模式呢,因为设计模式是Java编程规范的经典总结,并且在JDK源码中经常使用,由于我们后面会讲到JDK源码方面的学习,所以对于设计模式,建议大家先学习一下,最好的学习方式就是看书结合实践,把一些常用的设计模式自己实现一下。

推荐资源:《headfirst设计模式》

JDK源码(主要指集合类源码)

接下来下场的选手是:JDK源码。不过对于大部分人来说,只要能够掌握集合类,字符串这些源码就可以了,其他部分的源码主要集中在JUC并发包里,而这些内容我们会放在Java并发技术里来讲。

为什么我们需要掌握集合类源码呢,其一是因为面试喜欢考,其二是因为集合类的源码实现都比较经典,难度也不算太大,并且运用了很多优化方法,所以了解它对于学习Java的同学来说大有裨益。

推荐资源

市面上并没有哪本书专门来讲JDK源码的,所以这部分内容的学习资源主要是两个部分,一是JDK源码本身,而是一些技术博客。

说实话,Spring源码的复杂度远高于集合类的源码,这也是因为Spring运用了很多的设计模式,并且有着非常繁杂的类关系。所以,我不建议大家直接去读Spring源码,因为即使是看Spring源码解析的书籍,你也会感到很吃力。

另外,看完Spring的源码解析以后,别忘了看SpringMVC的源码解析,学习方法也是一样的,找重点内容看即可。

推荐资源:《Spring源码深度》,我的博客专栏

04Java并发技术

相信你为了搞定集合类源码和Spring源码花了不少功夫了,接下来轮到Java并发技术出场了。我们在入门篇其实已经谈到了多线程,但是也仅仅停留在使用Thread或者Runnable实现简单的多线程demo。

实际上,为了理解Java并发技术的底层实现,我们还需要知道JMM模型,了解synchronized和volatile的底层实现,同时还要明白Java中的多线程和操作系统的多线程和什么联系和区别。除此之外,我们经常谈到的线程安全,有哪些实现方法,也是这部分内容的要点。

学习并发技术,我建议分为三个步骤

1首先熟悉Java的多线程基础知识,比如Thread的使用,线程的状态转换,以及一些api的使用方式。

2了解一些理论基础,比如JMM,操作系统的多线程实现。这部分内容推荐通过看书和看博客来学习。

3了解并使用JUC的一些API,然后开始看JUC的一些源代码。这个阶段是最重要也是最困难的。

05Java网络编程

除此之外,如果你想要更好地理解Java网络编程,你还需要去了解Tomcat的实现原理。同时,Netty也是值得你去学习的一部分内容,最好有机会去用一用这一网络编程框架,学有余力的同学还可以考虑看看它的源码(笔者没有看)。

05Java8

Java的版本一直在更新,但目前在用的主要还是Java8和Java7,等再过几年可能这部分的内容就过时了。但是目前看来,对Java8的学习和了解还是很重要的,毕竟面试也喜欢考。

推荐资源:《Java8实战》

06总结

总结以下今天所讲的内容吧:

1计算机基础课程:数据结构,网络和操作系统2JVM基本原理3设计模式,JDK源码,Spring源码4Java并发技术,JUC源码5Java网络编程6Java8

—END—

↙点击下方“阅读原文”查看更多内容

完结篇

因为笔者还只是一名在校生,所以写的内容主要还是针对Java初学者或者接触Java后端不久的朋友,不适用于已经工作多年的Java大佬们。所以本文中的方法不一定适合所有人,如有错误还请谅解。

上期我们重点介绍了Java工程师进阶所需要掌握的一些技术内容。特别对于即将参加校招的同学来说,最重要的也是这部分内容,你需要了解JVM虚拟机原理,Java并发原理,并且熟悉JDK的部分源码,了解这些API的底层实现。

01Web后端架构

推荐资源:《深入分析JavaWeb技术内幕》,《大型网站技术架构》

两本都是阿里大佬出的书,两位都是淘宝系的技术大牛。前一本书主要讲述的JavaWeb的一些技术基础,关于Web架构的内容比较少。

后一本则是李智慧大佬写的架构科普书籍,用非常简单易懂的语言写出了大型Web项目架构之美,分别着眼于高可用,高性能,高扩展等方面讲解了很多设计结构的原则和方法。这本书应该是Web架构小白最好的入门书籍了。

02分布式理论基础

推荐资源:《从Paxos到zookeeper分布式一致性原理与实践》,我的技术博客专栏“分布式系统理论与实践”

这本书比较好地科普了分布式基础知识,也介绍了zookeeper的原理和使用。了解zookeeper是了解分布式技术很重要的一个环节。

谈分布式就要谈CAP,一致性,高可用,网络分区容忍性为何只能三选二,为什么网络分区容忍性必须要被考虑。CAP在实际应用中真的可靠么?

BASE出现的原因,为什么BASE更容易实现,更适合实际应用,BASE可以通过哪些技术去实现呢?

一致性协议也是分布式理论的一个重点,2PC,3PC,分别指的是什么,其中分别有什么问题。3PC解决了2PC的一个问题,却仍然不完美。

Paxos和Raft两种一致性算法,显然前者比后者复杂得多,但是Raft可能更加实用。为什么我们需要一致性算法,它们又有什么用呢。

分布式事务是一个复杂的概念,主要指分布式系统中需要强一致场景时所用到的事务。理解和实现它都不是简单的事情。

如果我们退而求其次,不要求强一致性,而选择最终一致性,则可以用更加灵活的方案,比如事务消息。

03常见分布式技术

推荐资源:《从Paxos到zookeeper分布式一致性原理与实践》,我的技术博客专栏“分布式系统理论与实践”,《深入理解SpringCloud与微服务构建》,《分布式服务框架原理与实践》。

上文说到zookeeper是分布式技术很重要的一块内容,这是因为zookeeper用于管理和协调分布式组件,虽然它出自hadoop生态,却用于很多应用当中,基本上有分布式的地方就有zk的存在。

简单说来,zk可以提供全局统一的节点树结构,通过节点来管理资源,同时zk自身是使用集群方式部署的,所以保证自己是高可用的。根据这一特点,它可以作为服务注册中心,还可以实现分布式锁等功能。

分布式服务是一个挺有意思的东西,也很常用,简单来说,就是把服务组件部署在不同节点上,通过rpc的方式访问,为了实现这一功能,我们需要考虑通信协议,序列化方式,进一步来说,我们还要了解如何做服务注册和发现,以及如何做限流,做服务熔断和降级,等等等等。

常见的分布式服务框架有dubbo,以及SpringCloud这类产品,学会使用他们,然后了解它们的底层实现原理,相信会是一个很有趣的过程。

关于负载均衡,说起来其实很简单,就是把一组请求分成多组,按照某种规则分发到多台服务器上。

但是负载均衡也涉及很多内容,包括负载均衡的算法,负载均衡的实现方式,我们需要了解它到底是在哪一层实现的。

一般来说,常用的负载均衡方式有nginx和lvs两种,分别是7层和4层的负载均衡,一个基于域名进行负载均衡,一个基于端口号做负载均衡。了解它们的实现原理,会让你更好地理解这部分内容。

这两个组件也是分布式项目中经常要用到的,了解它们的使用和实现原理,有助于以后在项目中的实践。

分布式session一般有多种实现方式,可以存数据库或者缓存,也可以单独部署成一个服务,总之最重要的一点就是,性能要好,并且要高可用。

分布式锁则用于一些需要一致性的场景中,比如订单生成这种全局唯一的功能,分布式锁通常可以用缓存或者数据库来实现,但为了保证高性能,并且避免死锁,我们一般采用Redis或者zookeeper来实现。

04缓存

讲到缓存,我们说的最多的就是Redis,所以我们要讲的也是Redis。学习Redis,除了学会使用简单的api之外,最好还要了解它的实现原理。

推荐资源:我的技术博客专栏“重新学习MySQL和Redis”,《Redis设计与实现》

这里我们主要介绍三部分内容,也是我个人认为比较重要的三块内容。

Redis的数据结构比较丰富,但更有意思的是这些数据结构背后的底层实现,也就是作者如何用c语言来实现这些结构的。其中会有你熟悉的数组,链表,还有一些有意思的结构比如跳表,哈希表。

持久化方式主要分两种,aof和rdb,前者基于追加日志的方式来实现日志持久化,后者则是使用备份数据的方式来实现持久化。

这是Redis最有趣也最复杂的部分。首先,Redis可以使用主从的方式部署,其中“哨兵”这一组件用于故障切换。

基于哨兵的主从部署后来发展为Rediscluster的部署方式,也就是Redis集群,通过分片的方式来部署Redis集群,并且集群中任一节点都可以用来对外提供服务。

当然,除了Redis集群之外,还有codis的分布式方案,codis基于代理的方式来实现,表面上还是使用原来的RedisAPI,但实际上访问的却是一个Redis集群。

05消息队列

消息队列的作用一般来说就是削峰,控流,解耦合,目前业界也有很多的消息队列产品,在很多公司都会使用,当然,它们各有各的优缺点,我们也不必全都了解,这里我们大概介绍3种消息队列,它们各自的特点都比较鲜明,值得大家去了解一番。

笔者刚开始接触的消息队列是rabbitmq,它的使用方法比较简单。RabbitMQ是一个由erlang开发的AMQP(AdvancedMessageQueue)的开源实现,主要有以下特点:

2Kafka与其他MQ相比较,Kafka有一些优缺点,主要如下

优点:

缺点:

RocketMQRocketMQ是一个纯java、分布式、队列模型的开源消息中间件,前身是Metaq,当Metaq3.0发布时,产品名称改为RocketMQ。

具有以下特点:

除此之外,它还有一个优点,就是支持事务消息,让分布式事务的实现变得简单

05分布式数据库

这里说的分布式”数据库“,其实指的是数据库的分布式方案,更具体来说,主要指的是数据库的主从部署,以及分库,分表。

这是数据库高可用的基础。MySQL数据库会使用日志来完成主从复制,先写主库,然后再同步到从库。读写分离则一般是指的是:从库负责读,主库负责写。

分库分表是解决大表性能瓶颈的一种方法,当然也分为横向拆分和纵向拆分,横向拆分指的就是减少单表的数据量,放到其他表或者其他库中。纵向拆分则一般指按照业务来拆分,把不必要的字段放到其他表中。

分库分表可以在应用层做,通过对id或者其他字段进行hash以便映射到对应的表中。当然也可以通过数据库中间件来完成,例如mycat这种中间件,通过代理的方式实现分库分表,非常方便。

这部分的内容笔者也只是略知一二,所以这里只是抛砖引玉,做一个简单的科普罢了。毕竟咱们学技术的人都是先讲深度再来谈广度。当你对之前的内容掌握得比较好的时候,再去看看大后端的一些其他技术,也会感觉挺有意思的。

大家不妨去了解一下其中的基本组件,然后打一个集群自己玩玩看。常见的组件有:hdfs,hbase,hive,zookeeper,flume,sqoop,yarn。

推荐资源:我的技术博客-个人分类-hadoop,《大数据技术原理与应用》

对于入门hadoop生态来说,这本书完全足够了,如果你要做大数据平台开发或者是数据研发工程师,可能需要非常全面地了解这些组件的底层原理。

我在项目中主要接触到的是OpenStack,docker以及kubenetes,OpenStack是一个私有云生态,内部结构对于我们来说还是比较复杂的,不过最根本的虚拟化技术还是基于kvm虚拟化来实现的。

docker则是现在非常流行的一种容器,用于快速部署应用。

kubenetes也借着docker的东风火了起来,可以理解为是基于容器的分布式调度系统。

这些技术在企业中也是比较常用的,只不过对于研发同学来说,更多时候扮演的是工具的角色。

推荐资源:《Docker技术入门与实战》,《kubenetes权威指南》

除此之外,想必大家还了解过很多其他的技术,只不过不同的业务用到的组件往往不一样,所以并不是每个东西你都需要去了解。

比如搜索引擎技术Lucene,基于它的两款产品solr和elasticsearch,通常出现在需要搜索功能的项目中。

再比如流式计算技术,如storm和sparkstreaming等等,通常都用于大数据部门,用作实时数据采集。

又如ELK实现的分布式日志系统,多用于分析和定位系统问题,经常会出现在一些比较重要的应用当中。

当然,也有现在大火的人工智能,还有太多的技术我们没机会去了解和使用,我们能做的也就是在自己能力范围内把需要做的东西做到最好了。

07总结

今天码的字有点多,所以难免有些写的不太好的地方,希望大家见谅。纵观全文,我们主要讲了这些内容:

THE END
1.小说阅读器哪个好?小说阅读器电脑版下载小编也经常看小说,知道比较好的有书旗小说、追书神器,虽然这些都是手机上的,但是,电脑上一样可以使用,这里为各位喜欢看小说的朋友带来2024小说阅读器电脑版下载大全,包括:京东读书、kindle电子书阅读器、天天小说阅读器、看吧kan文件阅读器等,还有一些电脑版的手机小说阅读器,小说迷朋友们,千万别错过哦! http://m.downcc.com/k/xsreader
2.如何找到最好看的免费中文资源?有哪些平台提供优质免费中文内容现在,许多人更喜欢在手机上进行阅读,因此很多平台都推出了移动端应用程序,提供随时随地的阅读体验。通过手机下载应用,用户可以在任何空闲时间享受阅读。而对于习惯于在电脑上长时间阅读的人,PC端也有大量的资源可以选择。无论是哪种设备,找到适合自己的阅读方式,享受免费的中文内容,都是非常方便和轻松的。 http://www.panding.net/zdyxajda/1328757.html
3.电脑上看书的网站可以查单词推荐题主两个在线词典:1韦氏词典:Dictionary by Merriam-Webster: America's most-trusted online dictionary2牛津词典:https://www.oxfordlearnersdictionaries.com/ 这两款都是比较好用的,在线查询。望您知晓 https://wen.baidu.com/question/991527754711787139.html
4.新浪读书致力于传播精品图书,第一时间刊发国内外文化图书资讯,为读者提供集阅读、写作、评书、购书的一站式服务。http://book.sina.com.cn/
5.综上有哪些免费的小说网站社会新闻,runningman141116,s8视频路线和隐藏路线免费观看:热门的可空降大秀直播,,公与淑婷-第682集 - 免费未删减在线播放 - 星辰影院|,《少女たちよ观看动漫游戏》新版最新完整版高清在线观,主角有写轮眼的异世小说,变形金刚2第二部英文版,《中文字幕按摩做爰》HD720高清免费手机观看,无限挑战160416,女性各种b型示意图,http://m.ouzhehua.com/v/video/58835586EzlZ1.shtml?id=993-scm
6.4个免费电子书网站!让你实现看书自由!#网站#电脑知识#电子书#4个免费电子书网站!让你实现看书自由! #网站 #电脑知识 #电子书 #电子书下载 - 无双君于20240906发布在抖音,已经收获了58.7万个喜欢,来抖音,记录美好生活!https://www.douyin.com/video/7411504247382068531
7.小说,小说网,最新热门小说QQ阅读想当年还有爆款限免的时候,不时会有一天一条想法冒出来很多赞,就知道那本书正在限免,现在这样的机会少了,看书给想法点赞的人也不多了。想要得到千赞的神段发明家勋章也越发不易了。 后来发现想法也可以加一张图片,然后昨天发现,原来带图片的想法每天最多只能发两条!还有这事! 有段时间很喜欢逛书友圈,https://book.qq.com/
8.母女俩在平板电脑上看书mov格式视频下载正版视频编号993487母女俩在平板电脑上看书 ID:993487 付费 视频 % buffered00:00 00:00 00:16 1x 4x 2x 1.5x 1x 0.5x 应版权方要求,该素材不支持VIP用户免费下载,需单独付费购买 母女俩在平板电脑上看书ID:993487 以视频搜视频 比例:16:9 时长:00:16 格式:MOVhttps://699pic.com/video-993487.html
9.看书网触屏版手机wap小说网站模板HTML手机电脑网站看书网触屏版手机wap小说网站模板_HTML手机电脑网站_网页源码移动端前端_H5模板_自适应响应式源码.zip (0)踩踩(0) 所需:1积分 lava-vtt 2024-12-05 11:55:47 积分:1 Grain-Warehouse-Management-System 2024-12-05 11:46:47 积分:1 监听自身应用卸载,并在卸载之后,使用libcurl三方库进行一次三方请求,或者https://www.coder100.com/index/index/content/id/2924614
10.下载电子图书,有什么好的网站推荐?安娜的档案,白嫖去吧!https://www.zhihu.com/question/4229672030/answer/57395469792
11.熊猫看书电脑版熊猫看书电脑版游戏在线玩熊猫看书电脑版 收起猜你喜欢 10% 重玩全屏放大缩小分享收藏评论邀请Q友 操作:玩家1:控制蓝熊猫移动,W跳跃。 玩家2:控制红熊猫移动,跳跃。http://ertong.973.com/p103252
12.十大pc看书软件排行榜悠悠看书上榜,第四还支持写小说91熊猫看书电脑版是一款功能十分全面的免费阅读软件,支持TXT、DOCX、PDF等多种常见文档格式,各种书籍资源应有尽有,十分方便快捷。 2、云中书城 云中书城不仅有pc端,客户端也非常受欢迎,致力于为消费者提供数字图书、网络文学等多种类型的数字内容,为用户带来全新的阅读体验。 https://www.wkfco.com/zatan/3931.html
13.读书软件哪个好读书软件电脑版读书软件排行榜读书软件推荐.小说虽多,小说软件却难求,电脑看书用什么看书软件最好?不同的软件使用方法都不相同,好的读书软件让人真的想读书,下面小编为大家推荐几款电脑免费看书软件,希望对大家有所帮助.https://www.qqtn.com/qqkey/dsrj/
14.电脑看书为啥看不了——晋江文学城网友交流区主题:电脑看书为啥看不了 [1] 只看楼主 【狂上加狂《入局而定》成功签约电视剧】 为什么在电脑上看已经购买的文章显示要下载APP?№0 ☆☆☆chenlw|60cd51ac 于2023-12-11 10:23:58留言☆☆☆ 来自江苏 加书签 投诉 不再看TA 〖 伊人睽睽《春山赴雪》成功签约电视剧〗 您好,PC端请您登录晋江文学城https://bbs.jjwxc.net/showmsg.php?board=22&id=520488
15.熊猫看书登录注册 首页排行分类男生女生 逆天凰女 天命娇妻 [言情]农门福妻:暴富使我快乐 [幻想]什么?师妹又又又穿男装 [穿越]师父在上,徒弟快跑 男生小说 [仙侠]劫修传 [玄幻]大荒蛮神 [现代]诱婚99式:宝妻再来生个娃 大神作者推荐 热销排行 飙升排行 https://www.xmkanshu.com/
16.图书馆活动方案(精选20篇)图书馆工作人员热情地给孩子们介绍图书的分类与作用,并带领孩子们有序地参观了成人阅览区、少儿阅览区等地方,在参观过程中孩子们好奇、兴奋、兴趣浓厚,特别是在少儿阅览区,他们亲身体验了一回,徜徉在书的海洋里,感受着阅读的快乐,知道了在阅览室看书的规则——要保持安静,书要轻拿轻放,椅子要摆放整齐等。最后孩子https://www.oh100.com/a/202301/5883848.html
17.小说软件榜单哪个比较权威小说app排行榜前十名6、十大pc看书软件排行榜电脑看书用什么软件好 虽然现在手机阅读已经非常方便快捷,但电脑上看书也存在自己的优势,既能够模拟移动端的阅读体验,也方便使用机械键盘去做笔记,那么pc看书软件哪些最好呢?下面就让我们一起来看看十大pc看书软件排行榜吧! 十大pc看书软件排行榜 http://www.zzzyq.net/rank_1637024
18.微信读书付费卡,一样破!懒人找资源无论是iPad mini6单手持握看书,还是外出打开手机直接接力阅读,体验都很舒服。 微信读书的会员还是值得充值的,不过小懒平时看自己做的电子书比较多。 而且大部分书小懒也都可以找到epub格式(大家要好好利用懒人手册里的电子书网站),导入微信读书,巴适~ https://www.shangyexinzhi.com/article/7647967.html
19.免费看书100年,七猫免费小说在这里,所有小说全部正版,全部免费。 总裁豪门小说、言情小说、穿越架空小说、玄幻 小说、青春校园小说、修仙小说、悬疑小说、同 人小说、名著各种类型,你想得到的全都有。 精选书城 推荐、男生、女生、出版四大版块, 多维度分类、热门排行榜单, 小编为你精心推荐。在这里,能读到的不止是免费。 https://xiaoshuo.wtzw.com/
20.小学信息技术教学优秀说课稿模板13篇第二种,觉得画鱼很简单,只需三条曲线,再画上几笔就完成了,这类学生大多原来电脑基础比较好,但看书较糊涂,主要凭心探索来学习软件。 第三种,会发现如果严格按照书上的六个步骤根本画不出鱼来,这类学生学习严谨,胆大心细,能够知其然也知其所以然。 https://www.ruiwen.com/shuokegao/3823247.html
21.“彩虹伞·安全小卫士”自护知识竞赛预赛题目及答案7、用电脑时,电脑屏幕与眼睛的距离应该是:( ) A、50厘米 B、30厘米 C、15厘米 D、20厘米 8、晚上在房间内看书写字时,灯光应该是:( ) A、只开小台灯 B、只开屋里的吸顶灯 C、既开台灯,又开吸顶灯,防止明暗差距太大 D、只开一盏护眼灯 https://www.dzwww.com/2013/aqxws/xgxw/201308/t20130830_8827710.htm