最近有很多小伙伴来问我,Java小白如何入门,如何安顿学习路线,每一步应该怎么走比拟好。本来我认为之前的几篇文章曾经能够解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,疏忽了很多小白们的感触,而很多敌人都须要更加根底,更加具体的学习路线。

所以,明天咱们从新开一个新的专题,别离依照四篇文章讲述Java的学习路线(别离是入门篇,高级篇,中级篇,高级篇),笔者也打算趁此机会,回顾一下本人的Java学习历程。明天咱们要讲的是,小白同学如何入门Java。

先申明一点,文章内容不会具体到每一步怎么操作,只会提供大抵的思路和方向,给大家以启发,如果真的要一步一步领导操作的话,那至多须要一本书的厚度啦。

本文所述的办法不肯定适宜所有人,如有谬误敬请体谅。

Java工程师学习指南 入门篇

文中提到我的技术博客专栏

https://github.com/h2pl/Java-...

【Java工程师面试温习指南】本仓库涵盖大部分Java程序员所须要把握的外围常识,整合了互联网上的很多优质Java技术文章,力求打造为最残缺最实用的Java开发者学习指南,如果对你有帮忙,给个star通知我吧,谢谢!

后期筹备工作

开发环境搭建

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

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

IDE抉择和装置

IDE指的就是本地开发编辑器,没有了它,你就只能间接在记事本这类工具里敲代码了。IDE最大的益处就是整合了大量的工具和功能模块,让你十分轻松地实现开发。

以前大家都用eclipse,不过eclipse曾经不风行了,当初我举荐你间接用intellij idea作为你的第一个代码编辑器。如果是用过eclipse的同学,基本上也能够无痛切换。

intellij idea能够间接在官网上下载,试用版30天,如果想要永恒应用,网上也有一些方法滴。

对于jar包

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

对于老手来说,可能只须要用到JDK自带的一些API,然而如果你要援用内部jar包,可能就会遇到一些艰难了。对于idea来说,导入内部jar包有两种方法,一种是手动导入jar包,一种是应用maven。后者会在Java Web相干的文章中讲起。

手动导入jar包其实也不难,你须要先下载好jar包,而后在对应的我的项目下抉择导入jar包即可,具体的办法这里就不开展说了,因为在网上都找失去。

学习Java根底的几种办法

理解根底语法

学习一门语言,最开始要做的事件就是学习它的语法。我最早学习Java语法是在Runoob,这个网站能够让你对任意一门语言实现最疾速的语法入门,当然,这只是相当于你浏览了一遍根底语法。

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

看视频

视频的话,能够到极客学院或者慕课网听Java根底课程,当然也能够看我分享的Java视频课程。大家也都晓得,当初Java的培训班十分多,基本上学的货色也都大同小异,不过它们的有些课程还不错,大家有渠道的话也能够去看一看。

看视频的益处是你能够更好地接管常识,同时也会消耗你更多实际,所以,有时候你也能够抉择看书。

看书

看书的话,对于小白来说不举荐太简单的书,比方《Java编程思维》这种书,老手千万不要看。我集体倡议,你只须要先看看《Java入门到精通》这种类型的书就足够了,因为这个局部的学习只是为你前面的学习开个头,你当前可能还要回过头来从新钻研这些内容。

当初市面上介绍Java根底的书籍切实太多了,品质参差不齐,内容同质化重大,笔者看过的其实也不多。给大家一个倡议,你只须要挑一两本书来看即可,这里举荐两本最简略的吧,《head first java》和《Java从入门到精通》。

看博客

这里再举荐另一种学习形式,就是看博客,博客比起书籍来说,更适宜对于某个技术点的学习,你能够很容易地在网上找到这个知识点相干的原理,实现办法,以及代码范例。

我的博客里没有解说特地根底的货色,如果你看一些比拟根底的文章,能够到Runoob等网站上查看。如果你有一个很明确的知识点想要学习,置信搜搜引擎会给你更好的答案。

代码实际

除此之外,个别的Java书籍或者视频课程都会要求你相应实现一些练习题,这部分内容你须要本人在电脑里应用IDE实现。

在IDE里,你能够很好地相熟Java语言的应用,根本代码的实现,同时能够尝试各种各样的API,并且测试一些语言个性,比方继承,封装,多态等等。

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

Java入门必备知识点梳理

在Java入门阶段,你可能须要接触到以下这部分常识,不论你是从通过哪种形式学习,这些内容都是你学习Java根底时绕不过的重点。

Java基础知识

这部分内容是你必须要把握的内容,在入门阶段你须要把这些根底打扎实,以便于在学习前面的内容时能够更上一层楼。

如何把根底打扎实呢,最好的方法就是在IDE上把书上或者视频上的每个例子都实现一遍,当然有的时候你也能够本人写一些有意思的例子。

1 根本数据类型

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

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

2 流程管制

比方for循环,if else,while循环等等

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

3 字符串类型String的应用

字符串类型是Java中很重要的类型,它不是根本数据类型,但却很罕用,相熟和实际String相干的api,开始你对字符串的学习吧。

4 数组

数组的初始化形式有哪些,二维数组应该怎么写,把数组当成办法参数又该怎么解决?

5 类和对象

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

Java核心技术

对于这部分内容,我置信很多小白只能理解它们的根本应用办法,然而并不明确其背地的一些原理:比方为什么接口和抽象类有这些区别,多态的意义是什么,为什么要有反射。

老手在学习这部分内容时,只须要晓得怎么用就能够了。当然,你最好把这些个性都实现一遍,以加深印象。

至于为什么有这些个性,这些个性背地的原理是什么,不是咱们当初探讨的内容,这些内容咱们将在高级和中级篇中讲述。因为,要理解这些原理,你得理解JVM,理解并发技术的根底,理解网络根底,甚至更多。显然,这不是你当初能做到的。

1 接口和抽象类

写一些接口,同时写一些实现类去实现这些接口,并且理解一下为什么咱们须要接口,为什么子类须要实现接口里的办法。

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

2 继承,封装和多态

如何了解继承,子类和父类之间有什么分割呢。

封装是一种爱护代码的形式,有哪些形式能够实现封装呢。

多态个别分为重载和重写,它们别离怎么应用?

3 异样解决

Java中的异样解决次要用于捕捉和处理错误,请你写一些try catch代码块去捕捉谬误吧。

4 汇合类

汇合类是咱们常常须要打交道的货色,List,Map,Set等等,赶快去相熟API,而后写一些测试例子吧。

5 IO输出流和输入流

IO输出流和输入流能够操作文件,网络数据等内容,如何在Java代码中实现这么简单的操作呢,其实只须要简略的几个api就能够了。

6 多线程

为了让系统资源最正当地调配和调度,咱们须要多线程,多线程会让程序变得乏味,也会带来很多问题,应用Thread和相干API,去尝试这些乏味的事件吧。

可选内容:

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

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

3 网络通信(理解根本的socket应用即可,须要网络根底)

4 数据库操作(理解根本的JDBC即可,须要数据库根底)

总结

总而言之,对于一个Java小白来说,入门Java能够分为这几步:

1 首先搭建好Java开发环境2 通过Runoob等一些网站相熟Java的根本语法3 通过看书看视频等形式相熟Java基础知识,通过代码实际加深了解4 通过看书看视频等形式初步理解Java核心技术,通过代码实际加深了解。

本文次要是为大家提供一个学习的思路,以及举荐一些学习办法,如果你可能依照这样的步骤去学习,并且配合上一些适宜你本人的学习办法来实现学习打算,置信你能够很好地实现对Java的入门。

Java工程师学习指南 中级篇

在上一大节中,咱们次要探讨的是如何做一个Java Web我的项目,以及后期须要哪些方面的根底。

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

有疑难很失常,因为一个Java Web我的项目波及的技术还是很多的,如果要了解这些技术的原理,光靠一个我的项目课程是远远不够的。所以,在你体验了Java Web我的项目的开发流程当前,你应该花些工夫去理解相干技术原理了,明天咱们要讲的也是这部分内容。

对于行将加入校招的同学来说,最重要的也是这部分内容,你须要理解JVM虚拟机原理,Java并发原理,并且相熟JDK的局部源码,理解这些API的底层实现。除此之外,还有很多,上面咱们别离来谈一谈。

文中提到我的技术博客专栏

https://github.com/h2pl/Java-...

【Java工程师面试温习指南】本仓库涵盖大部分Java程序员所须要把握的外围常识,整合了互联网上的很多优质Java技术文章,力求打造为最残缺最实用的Java开发者学习指南,如果对你有帮忙,给个star通知我吧,谢谢!

计算机基础知识

如果你不是计算机专业的同学,那你可能要留神一下了。在学习上面这些内容之前,你最好要学习一下计算机根底课程。

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

数据结构:这门课应该算是三门课程比较简单的一门了,举荐《大话数据结构》,看书联合代码实际,把根本的数据结构算法写一写就能够了。

操作系统:对于操作系统我看了很多本书,然而没有感觉特地好的,所以如果有工夫的话能够先看另外一本书《深刻了解计算机系统》,这本书讲了很多计算机的基本概念,不局限于操作系统。

而后能够看一看《操作系统导论》或者你们学校的教材。

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

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

JVM虚拟机

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

举荐资源:《深刻了解JVM虚拟机》我的技术博客专栏“深刻理解JVM虚拟机”

很快乐地通知你们,学习JVM你只须要把这本书吃透即可,当然,看一遍可不够,笔者前后至多看了三遍,有条件的话最好把书中的实例都跑一跑。

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

设计模式与源码浏览

为什么在这里提到设计模式呢,因为设计模式是Java编程标准的经典总结,并且在JDK源码中常常应用,因为咱们前面会讲到JDK源码方面的学习,所以对于设计模式,倡议大家先学习一下,最好的学习形式就是看书联合实际,把一些罕用的设计模式本人实现一下。

举荐资源:《head first 设计模式》

JDK源码(次要指汇合类源码)

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

为什么咱们须要把握汇合类源码呢,其一是因为面试喜爱考,其二是因为汇合类的源码实现都比拟经典,难度也不算太大,并且使用了很多优化办法,所以理解它对于学习Java的同学来说大有裨益。

举荐资源

我的技术博客专栏“spring和springmvc源码解析”

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

1 对于JDK源码,间接看可能比拟有难度,不举荐老手这么做。

2 解说源码的文章品质参差不齐,比拟优质的文章能够到掘金和开发者头条看看,另外【JavaDoop】和【芋道源码】等几位老哥的源码文章也很好

Spring源码

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

所以,我举荐的形式是,看书+看一些比拟好的源码解析文章。另外要通知大家的是,Spring的源码很多,并不是所有内容都须要你把握的,大家都晓得Spring最罕用的个性就是IOC和AOP,所以看源码解析时,最重要的也是这两个局部了。

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

Java并发技术

举荐浏览,我的技术博客专栏“Java并发编程技术“

置信你为了搞定汇合类源码和Spring源码花了不少功夫了,接下来轮到Java并发技术出场了。咱们在入门篇其实曾经谈到了多线程,然而也仅仅停留在应用Thread或者Runnable实现简略的多线程demo。

实际上,为了了解Java并发技术的底层实现,咱们还须要晓得JMM模型,理解synchronized和volatile的底层实现,同时还要明确Java中的多线程和操作系统的多线程和什么分割和区别。除此之外,咱们常常谈到的线程平安,有哪些实现办法,也是这部分内容的要点。

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

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

2 理解一些实践根底,比方JMM,操作系统的多线程实现。这部分内容举荐通过看书和看博客来学习。

3 理解并应用JUC的一些API,而后开始看JUC的一些源代码。这个阶段是最重要也是最艰难的。

Java网络编程

举荐浏览,我的技术博客专栏“分布式系统实践与实际”

在搞懂Java并发编程技术之后,置信这部分内容也难不倒你。当然,前提是你对计算机网络有肯定理解,因为网络编程波及到TCP和HTTP相干的知识点。

在学习这部分内容的时候,你首先要理解socket的应用以及原理,而后再去理解NIO的相干API,多写一些客户端和服务端通信的demo,以便相熟这些内容。为了更好地了解网络编程,你还要去理解UNIX网络编程模型。

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

Java8

Java的版本始终在更新,但目前在用的次要还是Java8和Java7,等再过几年可能这部分的内容就过期了。然而目前看来,对Java8的学习和理解还是很重要的,毕竟面试也喜爱考。

对这部分内容学习的最好形式就是:看文章+代码实际

总结

明天的内容貌似有点多,大家会不会感觉有点吃不消呢。没关系,因为这部分内容的确须要花很多工夫去学习。对于一个在校的Java学习者来说,可能没有机会接触到如许高大上的我的项目,所以对内功的修炼显得分外重要。

看书,写demo,读源码,看似简略的事件实际上须要破费大量工夫和精力,这个过程是须要你静下心来,缓缓积淀的,在学习的过程中你也能够和笔者一样,写一些总结和博客,以便更好地回顾本人的学习历程。

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

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

Java工程师学习指南 完结篇

之所以把这部分放在Java Web我的项目之后来讲,是因为我感觉,一开始做我的项目的时候你不可能曾经把握好上述内容了,所以你齐全能够带着问题去做我的项目,再花工夫去学习底层原理,这样你能够很好地联合你之前实际过的代码去了解那些底层技术了。

本期次要介绍的是Java后端技术比拟“高端”的一些内容,也就是咱们常常聊的分布式,架构,缓存,音讯队列等内容,另外咱们也会介绍一些大后端相干的技术,比方云计算(OpenStack和docker),大数据(hadoop生态),以及一些罕用的后端技术。

这些内容其实离咱们并不远,只不过在平时的我的项目中可能用的比拟少,所以作为学生党个别也只能通过一些文章或者书本去学习理论知识。那么基于这么一个状况,咱们来谈谈怎么学习这部分的内容吧。

文中提到我的技术博客专栏

https://github.com/h2pl/Java-...

【Java工程师面试温习指南】本仓库涵盖大部分Java程序员所须要把握的外围常识,整合了互联网上的很多优质Java技术文章,力求打造为最残缺最实用的Java开发者学习指南,如果对你有帮忙,给个star通知我吧,谢谢!

Web后端架构

后端进阶第一步,先把Web架构相干的技术学好吧,因为之前大家都做过Java Web我的项目,想必对这块内容还是比拟相熟的吧。咱们须要理解Web架构演变的历史,理解为什么要做服务器集群,为什么要用缓存,为什么要做拆分,做主从,以及为什么要有分布式。

举荐资源:《深入分析Java Web技术底细》,《大型网站技术架构》

两本都是阿里大佬出的书,两位都是淘宝系的技术大牛。前一本书次要讲述的Java Web的一些技术根底,对于Web架构的内容比拟少。

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

分布式实践根底

因为上面的内容或多或少都会波及到分布式相干的常识,所以这一部分咱们次要介绍一下无关分布式的基础知识。笔者对分布式的学习次要也停留在实践上,所以这里讲的也是一些实践的货色。

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

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

1 CAP 和 BASE

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

BASE呈现的起因,为什么BASE更容易实现,更适宜理论利用,BASE能够通过哪些技术去实现呢?

2 一致性协定和算法

一致性协定也是分布式实践的一个重点,2PC,3PC,别离指的是什么,其中别离有什么问题。3PC解决了2PC的一个问题,却依然不完满。

Paxos和Raft两种一致性算法,显然前者比后者简单得多,然而Raft可能更加实用。为什么咱们须要一致性算法,它们又有什么用呢。

3 分布式事务和最终一致性

分布式事务是一个简单的概念,次要指分布式系统中须要强统一场景时所用到的事务。了解和实现它都不是简略的事件。

如果咱们退而求其次,不要求强一致性,而抉择最终一致性,则能够用更加灵便的计划,比方事务音讯。

常见分布式技术

举荐资源:《从Paxos到zookeeper分布式一致性原理与实际》,《深刻了解Spring Cloud与微服务构建》,《分布式服务框架原理与实际》。

举荐浏览我的技术博客专栏“分布式系统实践与实际”

1 zookeeper

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

简略说来,zk能够提供全局对立的节点树结构,通过节点来治理资源,同时zk本身是应用集群形式部署的,所以保障本人是高可用的。依据这一特点,它能够作为服务注册核心,还能够实现分布式锁等性能。

2 分布式服务

分布式服务是一个挺有意思的货色,也很罕用,简略来说,就是把服务组件部署在不同节点上,通过rpc的形式拜访,为了实现这一性能,咱们须要思考通信协议,序列化形式,进一步来说,咱们还要理解如何做服务注册和发现,以及如何做限流,做服务熔断和降级,等等等等。

常见的分布式服务框架有dubbo,以及Spring Cloud这类产品,学会应用他们,而后理解它们的底层实现原理,置信会是一个很乏味的过程。

3 负载平衡

对于负载平衡,说起来其实很简略,就是把一组申请分成多组,依照某种规定散发到多台服务器上。

然而负载平衡也波及很多内容,包含负载平衡的算法,负载平衡的实现形式,咱们须要理解它到底是在哪一层实现的。

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

4 分布式session和分布式锁

这两个组件也是分布式我的项目中常常要用到的,理解它们的应用和实现原理,有助于当前在我的项目中的实际。

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

分布式锁则用于一些须要一致性的场景中,比方订单生成这种全局惟一的性能,分布式锁通常能够用缓存或者数据库来实现,但为了保障高性能,并且防止死锁,咱们个别采纳Redis或者zookeeper来实现。

缓存

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

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

这里咱们次要介绍三局部内容,也是我集体认为比拟重要的三块内容。

1 数据结构和底层实现

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

2 长久化形式

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

3 分布式计划

这是Redis最乏味也最简单的局部。 首先,Redis能够应用主从的形式部署,其中“哨兵”这一组件用于故障切换。

基于哨兵的主从部署起初倒退为Redis cluster的部署形式,也就是Redis集群,通过分片的形式来部署Redis集群,并且集群中任一节点都能够用来对外提供服务。

当然,除了Redis集群之外,还有codis的分布式计划,codis基于代理的形式来实现,外表上还是应用原来的Redis API,但实际上拜访的却是一个Redis集群。

音讯队列

音讯队列的作用一般来说就是削峰,控流,解耦合,目前业界也有很多的音讯队列产品,在很多公司都会应用,当然,它们各有各的优缺点,咱们也不用全都理解,这里咱们大略介绍3种音讯队列,它们各自的特点都比拟显明,值得大家去理解一番。

1 RabbitMQ

笔者刚开始接触的音讯队列是rabbitmq,它的应用办法比较简单。 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现

2 Kafka

Kafka是由Apache软件基金会开发的一个开源流解决平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式公布订阅音讯零碎,它能够解决消费者在网站中的所有动作流数据。 这种

RocketMQ

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

它反对事务音讯,让分布式事务的实现变得简略

分布式数据中间件

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

1 主从复制和读写拆散

这是数据库高可用的根底。MySQL数据库会应用日志来实现主从复制,先写主库,而后再同步到从库。读写拆散则个别是指的是:从库负责读,主库负责写。

2 分库分表计划

分库分表是解决大表性能瓶颈的一种办法,当然也分为横向拆分和纵向拆分,横向拆分指的就是缩小单表的数据量,放到其余表或者其余库中。纵向拆分则个别指依照业务来拆分,把不必要的字段放到其余表中。

分库分表能够在应用层做,通过对id或者其余字段进行hash以便映射到对应的表中。当然也能够通过数据库中间件来实现,例如mycat这种中间件,通过代理的形式实现分库分表,十分不便。

大后端相干技术

举荐浏览我的技术博客专栏“后端技术杂谈”

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

上面这些技术次要是我本人学习路上接触过的一些内容,所以比拟相熟,才拿进去分享,至于适不适宜大家的口味,可能就见仁见智了。

Hadoop生态

笔者之前参加过数据仓库相干的我的项目,所以略微理解了这方面的内容,感觉hadoop生态还是挺有意思的。

大家无妨去理解一下其中的根本组件,而后打一个集群本人玩玩看。 常见的组件有:hdfs,hbase,hive,zookeeper,flume,sqoop,yarn。

举荐:《大数据技术原理与利用》

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

云计算初探

笔者之前参加过公有云相干的我的项目,所以略微理解了这方面的内容,感觉这方面的内容也蛮乏味的。

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

docker则是当初十分风行的一种容器,用于疾速部署利用。

kubenetes也借着docker的东风火了起来,能够了解为是基于容器的散布式调度零碎。

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

其余常见后端技术

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

比方搜索引擎技术Lucene,基于它的两款产品solr和elasticsearch,通常呈现在须要搜寻性能的我的项目中。

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

又如ELK实现的分布式日志零碎,多用于剖析和定位系统问题,常常会呈现在一些比拟重要的利用当中。

当然,也有当初大火的人工智能,还有太多的技术咱们没机会去理解和应用,咱们能做的也就是在本人能力范畴内把须要做的货色做到最好了。

所以,这些内容并不是每一样你都须要晓得,然而如果有工夫去理解一下的话,还是倡议多理解一点的。

总结

明天码的字有点多,所以不免有些写的不太好的中央,心愿大家见谅。纵观全文,咱们次要讲了这些内容:

1 Web架构2 分布式基础理论3 常见分布式技术 4 缓存 5 音讯队列6 数据的分布式计划

至此本系列文章就曾经完结了,不晓得大家有什么问题或者倡议想和笔者交换吗?

写本系列文章也是因为有很多敌人想要理解更加清晰的Java后端学习路线,所以我总结了之前本人的学习历程,才创作出这四篇文章,心愿可能对大家有所帮忙~

更多内容请关注微信公众号【Java技术江湖】

一位阿里 Java 工程师的技术小站。作者黄小斜,专一 Java 相干技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶然讲点Docker、ELK,同时也分享技术干货和学习教训,致力于Java全栈开发!(关注公众号后回复”Java“即可支付 Java根底、进阶、我的项目和架构师等收费学习材料,更有数据库、分布式、微服务等热门技术学习视频,内容丰盛,兼顾原理和实际,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源)