搭建hadoop集群(hadoop的特点是)

伏羲号

hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是一种可靠,高效,可伸缩的方式进行处理的,它有一下几方面特性:

搭建hadoop集群(hadoop的特点是)

1.高可靠性:采用冗余数据存贮方式,即使一个副本发生故障,其他副本也可以保证对外工作的正常进行。

2.高效性:作为并行分布式计算平台,hadoop采用分布式存贮和分布式处理两大核心技术,能够高效的处理PB级别的数据

3.高可扩展性:hadoop的设计目标是可以高效稳定的运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上。

4.高容错性:采用冗余数据存贮方式,自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5.成本低:hadoop采用廉价的计算机集群,普通的用户也可以pc机搭建环境

6.运行在linux平台上,hadoop是基于java语言开发的,可以较好的运行在linux的平台上

有。

Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表。Hive提供类似SQL的HiveQL的数据处理功能,Hive将HiveQL语句转换成MapReduce程序交给Hadoop集群处理。

MapReduce实现复杂查询逻辑开发难度太大,人员学习成本太高,项目周期要求短,引入Hive可以使用HiveQL这种类SQL语法,提供快速开发的能力,避免写MapReduce程序,降低学习成本。

HBase是一种NOSQL数据库,是基于Apache Hadoop的、分布式的、多版本的、面向列的数据库,能够对大型数据提供随机、实时的读写访问。

特点

横向扩展性强

支持很高的写吞吐

有良好的随机读性能

高可用性,故障可恢复性

错误隔离性。一个结点的错误不会影响到其它结点,磁盘故障只会对相应的小规模的数据产生影响。

可在廉价PC Server搭建大规模结构化存储集群

做好这两部分内容的学习,相信你可以轻松找到第一份Java工作。一是学习Java基础,二是学习Java Web。下面我们就来具体聊一聊,应该怎么去学习这两部分内容!

本文出自我的微信公众号【程序员江湖】完整的系列文章请在公众号内查看。

Java工程师学习指南

入门篇

最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。

所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是,小白同学如何入门Java。

先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。

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

01

前期准备工作

开发环境搭建

这一步我们往往会直接跳过,但既然是面向小白的教程,这里就提一下吧。首先你需要一台电脑,然后安装好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包即可,具体的方法这里就不展开说了,因为在网上都找得到。

02

学习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绝对是有益无害的。

03

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即可,需要数据库基础)

04

总结

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

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

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

— END —

关注公众号后,可以在后台回复“Java”即可领取精品Java学习资源(不断更新中),学习资源包括基础,实战以及求职等内容。

1、后台回复“少侠”,可以获取我的微信,有什么问题都能聊。2、如果你想要加入微信交流群,那么可以在后台回复“江湖”。3、如果你想要到我的技术博客看更多的Java后端技术文章,请回复“练级”。

Java工程师学习指南

初级篇

最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。

所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇),笔者也打算趁此机会,回忆一下自己的Java学习历程。今天我们要讲的是,小白同学如何入门Java。

先声明一点,文章内容不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦。

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

01

Java Web项目指南

jav在上一篇文章中,我们讲到了入门Java的几个步骤,先搭建好环境,然后熟悉基本语法,接着熟悉Java的一些核心技术,并且在代码中进行实现。

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

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

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

Java Web项目

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

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

曾几何时,Java Web的项目还在使用JSP + Servlet进行开发,后来出现了Struts2,再后来,出现了我们现在也一直在用的SpringMVC,说实话,不论使用哪种开发框架,你都需要先花一些时间去学习相关的技术,否则你会发现,即使是看视频,你也不知道里面在讲什么。

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

知识储备

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

02

前端知识

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

既然是做Web,就难免要涉及到前端技术,不过,现在前后端分离已经是一种趋势,所以,如果你对前端不感兴趣,也没必要花太多时间去学习。

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

所以,做一个Java Web项目,你不需要花太多时间在写前端页面上,如果有源代码可以直接使用,当然,对于一些需要修改的前端页面,你得怎么去做修改它,因为有时候你需要使用JSP,JSP既包括前端代码也包括Java代码,如果你完全看不懂前端代码的话,那就很尴尬了。

03

Java Web常用技术

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

1 JSP和Servlet

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

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

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

2 Spring和SpringMVC

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

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

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

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

3 MySQL

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

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

4 Hibernate和Mybatis

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

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

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

5 Maven

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

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

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

为了解决上述问题,maven应运而生了。maven通过pom.xml文件来指定所需的jar包,并且自带了很多构建相关的功能,比如编译,打包,运行单元测试等等,因为它本身就是一个构建工具。

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

6 Tomcat

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

对于小白来说,Tomcat相关的技术是非常复杂的,毕竟它是一个应用服务器啊,事实上这个时候,你只需要学会如何安装Tomcat即可。毕竟,它在项目中的作用就是提供一个运行环境而已。

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

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

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

7 Git和GitHub

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

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

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

04

其他常用组件

除了上面几种必备的技术之外,有时候我们在项目中还会用到其他东西,在这里我们把它们叫做组件。这里只做简单的介绍,至于具体怎么使用,在网上都可以很容易地找到相关文章。

1 日志系统

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

2 单元测试

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

3 JSON

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

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

05

推荐项目课程

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

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

我的一些同学看过一些培训机构的课程,专业讲师录的项目课程可能会稍微好一点。在我公众号后台回复“Java”可以领取某机构的视频课程,不过我不是打广告的,这个机构也没有给我钱啦。

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

1 叶神讲课,比较了解同学们的情况,而且技术功底摆在那里没的说。2 所做的项目比较接地气,用的技术栈也比较新,比较全。3 我自己全程跟着牛客网的项目课做了一遍,感觉确实有收获,而且每个章节的安排也比较合理。4 配套有PPT,项目代码以及部分安装包,可以让你省去很多繁琐的环节。

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

当然,你也可以自己去找一些你感兴趣的项目课程,后续我也会收集更多的视频课程来分享给大家。

PS:如果找不到我说的这些资源,也可以微信私我。老规矩,公众号后台回复“少侠”可以勾搭作者。

06

总结

今天的内容就到这里了,与其说是初级篇,反而更像是“项目篇”呢。因为学完基础内容之后,做项目是最好的复习和实践方式了。所以这篇文章围绕着做项目来展开,也就不足为奇了。

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

后面我还会写一篇文章,专门讲一讲怎么做项目,会更加详细,更加侧重怎么去做,敬请期待吧。

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

1 Java基础知识储备2 前端知识储备3 了解和使用JavaWeb常用技术4 JavaWeb常用组件介绍5 视频课程推荐

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

不邀自来,对于java工程师成为一名架构师如何进阶学习及掌握应有的技能体系在这做出一些建议!Java架构师主要需要做哪些工作呢?负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。参与讨论公司产品发展方向,完整的规划和把握产品研发架构。Java架构师要学习哪些知识呢?

希望以下的学习路线能对你有帮助

并发编程

JAVA内存模型(JMM)

java当中的线程通讯和消息传递什么是重排序和顺序一致性?Happens-Before?As-If-Serial?

Synchronized的概念和分析

同步、重量级锁以及Synchronized的原理分析自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们

Volatile和DCL的知识

Volatile的使用场景和Volatile实现机制、内存语义、内存模型DCL的单例模式,什么是DCL?如何来解决DCL的问题

并发基础之AQS的深度分析

AbstractAueuedSynchronizer同步器的概念、CLH同步队列是什么?同步状态的获取和释放、线程阻塞和唤醒

Lock和并发常用工具类

java当中的Lock、ReentrantLock、ReentrantReadWriteLock、Conditionjava当中的并发工具类CyclicBarrier、CountDownLatch、Semphorejava当中的并发集合类ConcurrentHashMap、ConcurrentLinkedQueue

原子操作常用知识讲解

基本类型的原子操作比如经典的AtomicBoolean、AtomicLnteger、AtomicLong数组类型的原子操作代表几个类AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray引用类型的原子操作的典型AtomicReference、AtomicReferenceFieldUpdater......CAS的概念和知识、Compare And Swap 以及他的缺陷

线程池和并发并行

Executor、ThreadPoolExecutor、Callable &Future、ScheduledExecutorServiceThreadLocal、Fork & Join?什么是并行?线程池如何保证核心线程不被销毁?框架和源码应用

mybatis应用和源码解析

mybatis优缺点、spring 与mybatis 集成Config、Sql配置、Mapper配置、有几种注册mapper的方法,优先级如何?mybaits的一级缓存、二级缓存、mybatis的二级缓存为什么是鸡肋?通用mapper的实现、mybaits编写sql语句的三种方式@MapperScan的源码分析?mapperScan如何生效的?mybatis如何扩展spring的扫描器的、mybatis扫描完之后如何利用FactoryBean的?mybaits底层如何把一个代理对象放到spring容器中?用到了spring的哪些知识?mybaits和spring的核心接口ImportBeanDefinitionRegistrar之间千丝万缕的关系从原来来说明mybaits的一级缓存为什么会失效?spring为什么把他失效?有没有办法解决?从mybatis来分析mybatis的执行流程、mybaits的sql什么时候缓存的?缓存在哪里?mybaits当中的方法名为什么需要和mapper当中的id一致?从源码来说明

tomcat源码解析

tomat的总体概述和tomcat的启动流程源码分析tomcat当中web请求的源码分析?一个http如何请求到tomcat的?tomcat如何处理的?tomcat的协议分析,从源码来分析tomcat当中的各种详细配置的意义tomcat和apache、nginx等等主流静态服务器的搭配使用tomcat的性能调优?生成环境上如何让你的tomcat容器的性能达到最高

spring源码分析

spring的基本应用和spring源码的编译java 混乱的日志系统,Jul、jcl、log4j、slf4j.....spring4和spring在日志方面的源码对比AspectJ和springAop,aspectj的静态织入JDK动态代理的源码分析,JDK是如何操作字节码spring通过cglib完成AOP,cglib如果完成方法拦截AnnotationAwareAspectJAutoProxyCreator如何完成代理织入的BeanDefinition是什么东西,sping当中的各种BeanDefinition的作用BeanDefinition有什么作用?如果来改变一个bean的行为BeanDefinitionRegistry的作用,源码分析BeanNameGenerator如何改变beanName的生成策略BeanPostProcessor如何插手bean的实例化过程、经典的应用场景有哪些?spring内部哪里用到了这个接口BeanFactoryPostProcessor和BeanPostProcessor的区别、经典应用场景、spring内部如何把他应用起来的BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的关系已经区别,spring底层如何调用他们ConfigurationClassPostProcessor这个类如何完成bean的扫描,如何完成@Bean的扫描、如何完成对@Import的解析@Imoprt的三种类型,普通类、配置类、ImportSelector如何利用ImportSelector来完成对spring的扩展?@Configuration这注解为什么可以不加?加了和不加的区别,底层为什么使用cglib@Bean的方法是如何保证单例的?如果不需要单例需要这么配置?为什么需要这么配置springFacoryBean和BeanFacory的区别,有哪些经典应用场景?spring的factoryMethod的经典应用场景?ImportBeanDefinitionRegistrar这个接口的作用,其他主流框架如何利用这个类来完成和spring的结合的?spring是什么时候来执行后置处理器的?有哪些重要的后置处理器,比如CommonAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessor如何来完成spring初始化方法的回调。spring内部的各种Procesor的作用分别是什么spring和springBoot当中的各种@Enablexxxx的原理是什么?如何自己实现一个?比如动态开启某某些自定义功能spring如何来完成bean的循环依赖并且实例化的,什么是spring的IOC容器,怎么通过源码来理解?其他,比如Bean的实例化过程,源码中的两次gegetSingleton的不同和相比如SpringMvc的源码分析等等微服务

Spring Cloud

Eureka的源码分析服务注册和服务发现以及心跳机制和保护机制,对比eureka与zookeeper,什么是CAP原则?Ribbon源码分析和客服端负载均衡,客户端负载均衡?服务端负载均衡? Ribbon核心组件IRule以及重写IRuleFegin源码分析和声明式服务调用,Fegin负载均衡,Fegin如何与Hystrix结合使用? 有什么问题?Hystrix实现服务限流、降级,大型分布式项目服务雪崩如何解决? 服务熔断到底是什么?一线公司的解决方案HystrixDoashboard如何实现自定义接口降级、监控数据、数据聚合等等Zuul统一网关详解、服务路由、过滤器使用等,从源头来拦截掉一些不良请求分布式配置中心Config详解,如何与github或是其他自定义的git平台结合、比如gitlab分布式链路跟踪详解,串联调用链,,让Bug无处可藏,如何厘清微服务之间的依赖关系?如何跟踪业务流的处理顺序?

Spring Boot

Spring Boot的源码分析和基本应用、利用springmvc的知识模拟和手写一个springbootspringmvc的零配置如何实现的?利用servelt3.0的哪些新知识?在springmvc中如何内嵌一个tomcat,如何把web.xml去掉springboot当中的监听器和设计模式中观察者模式的关系、模拟java当中的事件驱动编程模型springboot的启动流程分析、springboot如何初始化spring的context?如何初始化DispacterServlet的、如何启动tomcat的springboot的配置文件类型、配置文件的语法、配置文件的加载顺序、模拟springboot的自动配置springboot的日志系统、springboot如何设计他的日志系统的,有什么优势?如何做到统一日志的?

Docker

什么是Docker、为什么要使用他、和开发有什么关系?能否带来便捷、Docker简介、入门,Docker的架构是怎样的?Docker的三大核心概念:镜像(Images)、容器(Containers)、仓库服务注册器(Registry)他们分别是什么?Docker的基础用法以及Docker镜像的基本操作容器技术入门、Docker容器基本操作、容器虚拟化网络概述以及Docker的容器网络是怎样的?程序员如何利用Dockerfile格式、Dockerfile命令以及docker build构建镜像Compose和Dockerfile的区别是什么?Compose的配置文件以及使用Compose运行容器、Docker的实战应用性能调优

mysql性能调优

mysql中为什么不使用其他数据结构而就用B+树作为索引的数据结构mysql执行计划详解&mysql查询优化器详解mysql索引优化实战,包括普通查询、group by、order by

JVM性能调优

java内存模型总体概述、类加载过程和classloader、运行时数据区当中的总体内容、编译原理内存区域与内存溢出异常、虚拟机对象、程序计数器、java栈、本地方法栈、操作数、方法区、堆内存和元数据等等Classloader的知识详细、默认全盘负责机制、从JDK源码来理解双亲委派模式、如何打破双亲委派?为什么需要打破?虚拟机性能监控与故障处理、jvm基本命令,jinfo命令的使用jmap命令使用、jstak命令的使用、使用jvisualvm分析垃圾收集器与内存分配策略、垃圾回收算法与基础、串型收集器、并行收集器、内存分配与回收策略。程序编译与代码优化、运行期优化、编译期优化、JVM调优的本质是什么?什么是轻gc?什么是Full gc?如何调优JVM执行子系统、类文件结构、类加载机制、字节码执行引擎、字节码编译模式、如何改变字节码编译模式?java数据结构算法hash算法详解、java当中hashmap源码解析、手写一个hashmap从源码理解hashmapJDK7和JDK8的变化、为什么有这样的变化,Java8新特性顺序存储、双向链表、单向链表、java当中linkedList的源码分析java当中线性结构、树形结构以及图形结构分析以及应用场景和经典使用大数字运算和经典排序、二叉树红黑树排序、查找互联网工程

Maven

整体认知maven的体系结构maven核心命令maven的pom配置体系搭建Nexus私服

Git

动手搭建Git客户端与服务端Git的核心命令Git企业应用git的原理,git底层指针介绍

Linux

Linux原理、启动、目录介绍Linux运维常用命令、Linux用户与权限介绍shell脚本编写分布式

分布式协调框架(Zookeeper)

什么是分布式系统?分布式系统有何挑战?Zookeeper快速入门&集群搭建基本使用Zookeeper有哪些常用命令以及注意事项、zkclient客户端与curator框架有什么功能以及如何使用手写Zookeeper常见应用场景:分布式配置中心、分布式锁、分布式定时任务Zookeeper核心概念znode、watch机制、序列化、持久化机制讲解及其源码解析Zookeeper怎么解决分布式中的一致性问题?领导选举流程讲解及其源码解析

RPC服务框架(Dubbo)

手写RPC框架以及为什么要使用Dubbo? 传统应用系统如何演变成分布式系统详解Dubbo的六大特性是什么?对企业级开发有何好处?Dubbo的作用简要说明、快速演示Dubbo调用示例Dubbo中协议、注册中心、动态代理机制是怎么达到可扩展的?Dubbo的扩展机制源码解析Dubbo从服务提供者到注册中心到消费者调用服务中间的流程源码解析Dubbo的监控中心以及管理平台的使用,方便企业级开发与管理

分布式数据缓存(Redis)

关系型数据库瓶颈与优化、ehcache和redis的对比?nosql的使用场景Redis基本数据类型、比如map的使用场景?有什么优缺点?什么时候用map等等Redis高级特性、如何来理解redis的单线程但是高性能?如何理解redis和epollRedis持久化、什么情况下需要持久化?方案是什么?有什么优缺点?如何优雅的选择持久化方案Redis项目中应用、reids的高级命令mget、scan?为什么有scan这条命令,如何理解redis的游标?单机版redis的安装以及redis生产环境启动方案redis持久化机对于生产环境中的灾难恢复的意义redis主从架构下如何才能做到99.99%的高可用性在项目中重新搭建一套主从复制+高可用+多master的redis cluster集群redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)redis的RDB持久化配置以及数据恢复实验redis的RDB和AOF两种持久化机制的优劣势对比

分布式数据存储(mycat)

分库分表场景介绍Mycat原理解析分库分表实战

分布式Rabbitmq

RabbitMQ环境安装&RabbitMQ整体架构与消息流转&交换机详解消息如何保障 100% 的投递成功方案&企业消息幂等性概念及业界主流解决方案Confirm确认消息详解&Return返回消息详解&消费端的限流策略&消费端ACK与重回队列机制SpringAMQP用户管理组件-RabbitAdmin应用&SpringAMQP消息模板组件-RabbitTemplate实战SpringAMQP消息容器-SimpleMessageListenerContainer详解&SpringAMQP消息适配器-MessageListenerAdapter使用RabbitMQ与SpringBoot2.0整合实战&RabbitMQ与Spring Cloud Stream整合实战RabbitMQ集群架构模式&RabbitMQ集群镜像队列构建实现可靠性存储&RabbitMQ集群整合负载均衡基础组件HaProxy项目实战大型互联网电商项目面试题详解,offer选择简历技术优化、项目优化面试问题剖析职业生涯规划总结

不管是学什么技术,最终都需要你进行归纳、整理,才能把所学的东西变为自己的。工作为什么要写日志,平时学习为什么要写博客,其实就是在构建自己的知识体系。在学习的过程中多做笔记,多做总结,习惯一旦形成,久而久之,便会印在你的脑海里,你下次再被问到这一问题时,你就可以用自己之前总结过的内容来回答。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,88人围观)

还没有评论,来说两句吧...