精华内容
下载资源
问答
  • 这些面试题相对应的技术点: JVM MySQL Mybatis MongoDB Redis Spring Spring boot Spring cloud Kafka RabbitMQ Nginx … 大类就是: Java基础 数据结构与算法 并发编程 数据库 设计模式 微服务 消息中间件 jfvc-...

    1. 面试官:工作中使用过Zookeeper嘛?你知道它是什么,有什么用途呢?

    小菜鸡的我:

    • 有使用过的,使用ZooKeeper作为dubbo的注册中心,使用ZooKeeper实现分布式锁
    • ZooKeeper,它是一个开放源码的分布式协调服务,它是一个集群的管理者,它将简单易用的接口提供给用户。
    • 可以基于Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能
    • Zookeeper的用途:命名服务、配置管理、集群管理、分布式锁、队列管理

    用途跟功能不是一个意思咩?

    2. 面试官:说下什么是命名服务,什么是配置管理,又什么是集群管理吧

    小菜鸡的我(幸好我刷过面试题),无所畏惧

    • 命名服务就是

      命名服务是指通过指定的名字来获取资源或者服务地址。Zookeeper可以创建一个全局唯一的路径,这个路径就可以作为一个名字。被命名的实体可以是集群中的机器,服务的地址,或者是远程的对象等。一些分布式服务框架(RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据特定的名字来获取资源的实体、服务地址和提供者信息等。

    • 配置管理:

      实际项目开发中,我们经常使用.properties或者xml需要配置很多信息,如数据库连接信息、fps地址端口等等。因为你的程序一般是分布式部署在不同的机器上(如果你是单机应用当我没说),如果把程序的这些配置信息保存在zk的znode节点下,当你要修改配置,即znode会发生变化时,可以通过改变zk中某个目录节点的内容,利用watcher通知给各个客户端,从而更改配置。

    • 集群管理

      集群管理包括集群监控和集群控制,其实就是监控集群机器状态,剔除机器和加入机器。zookeeper可以方便集群机器的管理,它可以实时监控znode节点的变化,一旦发现有机器挂了,该机器就会与zk断开连接,对用的临时目录节点会被删除,其他所有机器都收到通知。新机器加入也是类似酱紫,所有机器收到通知:有新兄弟目录加入啦。

    3. 面试官:你提到了znode节点,那你知道znode有几种类型呢?zookeeper的数据模型是怎样的呢?

    小菜鸡的我(我先想想):

    zookeeper的数据模型

    ZooKeeper的视图数据结构,很像Unix文件系统,也是树状的,这样可以确定每个路径都是唯一的。zookeeper的节点统一叫做znode,它是可以通过路径来标识,结构图如下:

    znode的4种类型

    根据节点的生命周期,znode可以分为4种类型,分别是持久节点(PERSISTENT)、持久顺序节点(PERSISTENT_SEQUENTIAL)、临时节点(EPHEMERAL)、临时顺序节点(EPHEMERAL_SEQUENTIAL)

    • 持久节点(PERSISTENT)

      这类节点被创建后,就会一直存在于Zk服务器上。直到手动删除。

    • 持久顺序节点(PERSISTENT_SEQUENTIAL)

      它的基本特性同持久节点,不同在于增加了顺序性。父节点会维护一个自增整性数字,用于子节点的创建的先后顺序。

    • 临时节点(EPHEMERAL)

      临时节点的生命周期与客户端的会话绑定,一旦客户端会话失效(非TCP连接断开),那么这个节点就会被自动清理掉。zk规定临时节点只能作为叶子节点。

    • 临时顺序节点(EPHEMERAL_SEQUENTIAL)

      基本特性同临时节点,添加了顺序的特性。

    4、面试官:你知道znode节点里面存储的是什么吗?每个节点的数据最大不能超过多少呢?

    小菜鸡的我:

    znode节点里面存储的是什么?

    Znode数据节点的代码如下

    public class DataNode implements Record {
        byte data[];                    
        Long acl;                       
        public StatPersisted stat;       
        private Set<String> children = null; 
    }
    
    

    哈哈,Znode包含了存储数据、访问权限、子节点引用、节点状态信息,如图:

    • data: znode存储的业务数据信息
    • ACL: 记录客户端对znode节点的访问权限,如IP等。
    • child: 当前节点的子节点引用
    • stat: 包含Znode节点的状态信息,比如事务id、版本号、时间戳等等。

    每个节点的数据最大不能超过多少呢

    为了保证高吞吐和低延迟,以及数据的一致性,znode只适合存储非常小的数据,不能超过1M,最好都小于1K。

    5、面试官:你知道znode节点上的监听机制嘛?讲下Zookeeper watch机制吧。

    小菜鸡的我:

    • Watcher机制
    • 监听机制的工作原理
    • Watcher特性总结

    Watcher监听机制

    Zookeeper 允许客户端向服务端的某个Znode注册一个Watcher监听,当服务端的一些指定事件触发了这个Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据 Watcher通知状态和事件类型做出业务上的改变。

    可以把Watcher理解成客户端注册在某个Znode上的触发器,当这个Znode节点发生变化时(增删改查),就会触发Znode对应的注册事件,注册的客户端就会收到异步通知,然后做出业务的改变。

    Watcher监听机制的工作原理

    • ZooKeeper的Watcher机制主要包括客户端线程、客户端 WatcherManager、Zookeeper服务器三部分。
    • 客户端向ZooKeeper服务器注册Watcher的同时,会将Watcher对象存储在客户端的WatchManager中。
    • 当zookeeper服务器触发watcher事件后,会向客户端发送通知, 客户端线程从 WatcherManager 中取出对应的 Watcher 对象来执行回调逻辑。

    Watcher特性总结

    • **一次性:**一个Watch事件是一个一次性的触发器。一次性触发,客户端只会收到一次这样的信息。
    • 异步的: Zookeeper服务器发送watcher的通知事件到客户端是异步的,不能期望能够监控到节点每次的变化,Zookeeper只能保证最终的一致性,而无法保证强一致性。
    • 轻量级: Watcher 通知非常简单,它只是通知发生了事件,而不会传递事件对象内容。
    • 客户端串行: 执行客户端 Watcher 回调的过程是一个串行同步的过程。
    • 注册 watcher用getData、exists、getChildren方法
    • 触发 watcher用create、delete、setData方法

    6、面试官:你对Zookeeper的数据结构都有一定了解,那你讲下Zookeeper的特性吧

    小菜鸡的我:(我背过书,啊哈哈)

    Zookeeper 保证了如下分布式一致性特性:

    • 顺序一致性:从同一客户端发起的事务请求,最终将会严格地按照顺序被应用到 ZooKeeper 中去。
    • 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群中所有的机器都成功应用了某一个事务,要么都没有应用。
    • 单一视图:无论客户端连到哪一个 ZooKeeper 服务器上,其看到的服务端数据模型都是一致的。
    • 可靠性: 一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来。
    • 实时性(最终一致性): Zookeeper 仅仅能保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的数据状态。

    7、面试官:你刚提到顺序一致性,那zookeeper是如何保证事务的顺序一致性的呢?

    小菜鸡的我:(完蛋了这题不会)

    需要了解事务ID,即zxid。ZooKeeper的在选举时通过比较各结点的zxid和机器ID选出新的主结点的。zxid由Leader节点生成,有新写入事件时,Leader生成新zxid并随提案一起广播,每个结点本地都保存了当前最近一次事务的zxid,zxid是递增的,所以谁的zxid越大,就表示谁的数据是最新的。

    ZXID的生成规则如下:

    ZXID有两部分组成:

    • 任期:完成本次选举后,直到下次选举前,由同一Leader负责协调写入;
    • 事务计数器:单调递增,每生效一次写入,计数器加一。

    ZXID的低32位是计数器,所以同一任期内,ZXID是连续的,每个结点又都保存着自身最新生效的ZXID,通过对比新提案的ZXID与自身最新ZXID是否相差“1”,来保证事务严格按照顺序生效的。

    8、面试官:你提到了Leader,你知道Zookeeper的服务器有几种角色嘛?Zookeeper下Server工作状态又有几种呢?

    小菜鸡的我:

    Zookeeper 服务器角色

    Zookeeper集群中,有Leader、Follower和Observer三种角色

    Leader

    Leader服务器是整个ZooKeeper集群工作机制中的核心,其主要工作:

    • 事务请求的唯一调度和处理者,保证集群事务处理的顺序性
    • 集群内部各服务的调度者

    Follower

    Follower服务器是ZooKeeper集群状态的跟随者,其主要工作:

    • 处理客户端非事务请求,转发事务请求给Leader服务器
    • 参与事务请求Proposal的投票
    • 参与Leader选举投票

    Observer

    Observer是3.3.0 版本开始引入的一个服务器角色,它充当一个观察者角色——观察ZooKeeper集群的最新状态变化并将这些状态变更同步过来。其工作:

    • 处理客户端的非事务请求,转发事务请求给 Leader 服务器
    • 不参与任何形式的投票

    Zookeeper下Server工作状态

    服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。

    • 1.LOOKING:寻找Leader状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。
    • 2.FOLLOWING:跟随者状态。表明当前服务器角色是Follower。
    • 3.LEADING:领导者状态。表明当前服务器角色是Leader。
    • 4.OBSERVING:观察者状态。表明当前服务器角色是Observer。

    9、面试官:你说到服务器角色是基于ZooKeeper集群的,那你画一下ZooKeeper集群部署图吧?ZooKeeper是如何保证主从节点数据一致性的呢?

    小菜鸡的我:

    ZooKeeper集群部署图

    ZooKeeper集群是一主多从的结构:

    • 如果是写入数据,先写入主服务器(主节点),再通知从服务器。
    • 如果是读取数据,既读主服务器的,也可以读从服务器的。

    ZooKeeper如何保证主从节点数据一致性

    我们知道集群是主从部署结构,要保证主从节点一致性问题,无非就是两个主要问题:

    • 主服务器挂了,或者重启了
    • 主从服务器之间同步数据~

    Zookeeper是采用ZAB协议(Zookeeper Atomic Broadcast,Zookeeper原子广播协议)来保证主从节点数据一致性的,ZAB协议支持崩溃恢复和消息广播两种模式,很好解决了这两个问题:

    • 崩溃恢复:Leader挂了,进入该模式,选一个新的leader出来
    • 消息广播: 把更新的数据,从Leader同步到所有Follower

    Leader服务器挂了,所有集群中的服务器进入LOOKING状态,首先,它们会选举产生新的Leader服务器;接着,新的Leader服务器与集群中Follower服务进行数据同步,当集群中超过半数机器与该 Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式。Leader 服务器开始接收客户端的事务请求生成事务Proposal进行事务请求处理。

    最后

    分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

    请点赞后,戳这里,免费获取

    这些面试题相对应的技术点:

    • JVM
    • MySQL
    • Mybatis
    • MongoDB
    • Redis
    • Spring
    • Spring boot
    • Spring cloud
    • Kafka
    • RabbitMQ
    • Nginx

    大类就是:

    • Java基础
    • 数据结构与算法
    • 并发编程
    • 数据库
    • 设计模式
    • 微服务
    • 消息中间件

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    程序员,每个月给你发多少工资,你才会想老板想的事?

    jfvc-1624257449436)]

    [外链图片转存中…(img-I6WfD61Y-1624257449437)]

    [外链图片转存中…(img-wov5Dbff-1624257449437)]

    [外链图片转存中…(img-f1VPYLxK-1624257449438)]

    [外链图片转存中…(img-D24pCQtC-1624257449439)]

    [外链图片转存中…(img-oS0mEyJr-1624257449440)]

    [外链图片转存中…(img-TLqLyOZn-1624257449441)]

    展开全文
  • JAVA、WEB最新技术框架整理

    千次阅读 2018-01-29 10:12:09
    JAVA、WEB最新技术框架整理1.基础框架1.1 后台基础框架 分布式:dubbox 统一配置:zookeeper 消息:kafka 服务化:spring spring boot 微服务化框架 spring mvc springframework 持久层:mybatis、hibernate、jedis...



    JAVA、WEB最新技术框架整理

    1.基础框架

    1.1 后台基础框架

    • 分布式:dubbox
    • 统一配置:zookeeper
    • 消息:kafka
    • 服务化:spring
      • spring boot 微服务化框架
      • spring mvc
      • springframework
    • 持久层:mybatishibernate、jedis
    • 项目构建:maven
    • 单元测试:junit、testNG
    • 可视化测试:soapUI、jmeter

    2. 前端框架

    • 原型:axure
    • html:html、jsp、thymeleaf、Velocity、freemarker
    • css样式:cssbootstrap、less
    • javascript:jQuery.js、其它相关js插件
    • mvc框架:vue.js 、angular.js
    • 界面整合:sitemesh
    • 构建:node.js、npm、bower
    • 打包:gulp

    3. 数据库

    • 关系数据库:mysql、oracle
    • 非关系型数据库:mongdb
    • 内存数据库:redis、memcache

    4. 管理工具

    代码协同:git

    工作协调:钉钉

    5. 统一开发IDE

    • 前端:webstorm
    • 后台:intellij idea
    • android:android studio
    • iOS:xcode 目前以objective-c 为主

    6. 微信公众号

    • weui
    展开全文
  • JAVA、WEB最新技术框架整理 1.基础框架 1.1 后台基础框架 分布式:dubbox统一配置:zookeeper消息:kafka服务化:spring  spring boot 微服务化框架spring mvcspringframework 持久层:mybatis、...

    JAVA、WEB最新技术框架整理

    1.基础框架

    1.1 后台基础框架

    • 分布式:dubbox
    • 统一配置:zookeeper
    • 消息:kafka
    • 服务化:spring 
      • spring boot 微服务化框架
      • spring mvc
      • springframework
    • 持久层:mybatishibernate、jedis
    • 项目构建:maven
    • 单元测试:junit、testNG
    • 可视化测试:soapUI、jmeter

    2. 前端框架

    • 原型:axure
    • html:html、jsp、thymeleaf、Velocity、freemarker
    • css样式:cssbootstrap、less
    • javascript:jQuery.js、其它相关js插件
    • mvc框架:vue.js 、angular.js
    • 界面整合:sitemesh
    • 构建:node.js、npm、bower
    • 打包:gulp

    3. 数据库

    • 关系数据库:mysql、oracle
    • 非关系型数据库:mongdb
    • 内存数据库:redis、memcache

    4. 管理工具

    代码协同:Git

    工作协调:钉钉

    5. 统一开发IDE

    • 前端:webstorm
    • 后台:intellij idea
    • android:android studio
    • iOS:xcode 目前以objective-c 为主

    6. 微信公众号

    • weui
    展开全文
  • 第6章 Hibernate框架基础;6.1 Hibernate概述;6.1.1 Hibernate框架有两个重要的概念;6.1.2 Hibernate框架的结构体系;...1. 导入Hibernate核心jar包及相关的其他jar包 下载Hibernate地址 从该地址可以下载最新
  • JAVA、WEB技术框架整理

    2019-04-20 16:55:50
    JAVA、WEB最新技术框架整理 1.基础框架 1.1 后台基础框架 分布式:dubbox 统一配置:zookeeper 消息:kafka RidditMQ activeMQ 服务化:spring spring boot 微服务化框架 spring mvc springframework 持久层:...

    JAVA、WEB最新技术框架整理
    1.基础框架
    1.1 后台基础框架
    分布式:dubbox
    统一配置:zookeeper
    消息:kafka RidditMQ activeMQ
    服务化:spring
    spring boot 微服务化框架
    spring mvc
    springframework
    持久层:mybatis、hibernate、jedis
    项目构建:maven
    单元测试:junit、testNG
    可视化测试:soapUI、jmeter
    2. 前端框架
    原型:axure
    html:html、jsp、thymeleaf、Velocity、freemarker
    css样式:css、bootstrap、less
    javascript:jQuery.js、其它相关js插件
    mvc框架:vue.js 、angular.js ,angularJS2
    界面整合:sitemesh
    构建:node.js、npm、bower
    打包:gulp
    3. 数据库
    关系数据库:mysql、oracle
    非关系型数据库:mongdb
    内存数据库:redis,
    4. 管理工具
    代码协同:git svn

    工作协调:钉钉

    1. 统一开发IDE
      前端:webstorm
      后台:intellij idea
      android:android studio
      iOS:xcode 目前以objective-c 为主
    2. 微信公众号
      weui
    展开全文
  • JAVA最新技术

    千次阅读 2018-08-22 16:24:17
    在生活中使用过好的JAVA技术、或遇见还未学习的,记录一下留着以后慢慢消化 一、Spring Boot 二、Mybits 轻量级数据库框架 三、Redis 键值对数据缓存 四、Zookeeper 分布式应用程序协调服务, 数据一致性、广播...
  • 2020年最新Java高级开发框架+项目教程 地址:https://www.piaodoo.com/10575.html Java不仅是一门程序设计语言,而且发展为一个庞大的生态圈。Java被广泛应用到企业级系统、手机、桌面软件等开发,是应用市场最急需...
  • java web最新技术整理

    千次阅读 2017-09-22 15:46:31
    JAVA、WEB最新技术框架整理 1.基础框架 1.1 后台基础框架 分布式:dubbox统一配置:zookeeper消息:kafka服务化:spring  spring boot 微服务化框架spring mvcspringframework 持久层:mybatis、...
  • 第2章 并发编程框架中心讲解 第3章 并发编程框架高档特性讲解 第4章 并发编程深入学习与面试精讲 第5章 并发编程框架底层源码深度分析 第6章 Netty整合并发编程框架Disruptor实战百万长链接服务构建 第7章 分布式...
  • Java技术体系主要由支撑Java程序运行的虚拟机,提供各开发领域接口支持的Java,Java编程语言及许多第三方Jvav框架构成。 其中,以Java的虚拟器为今天的着重点 以下是我整理收藏的一些JVM大厂面试经典问题与相应答案...
  • Apache Dubbo是阿里巴巴于2011年开源的一款高性能Java RPC框架,在这方面阿里巴巴是有强力发言权的,不如跟着阿里的大佬来学一学这份业内公认的**“大师级Dubbo实战笔记”**,点赞+关注支持一下! 一:打破狭窄的...
  • 前言 本以为两三天就能搞定这篇文章,现在才知道是我想的太天真了,从构思到整理资料差不多用了一个星期的时间,现在也是终于搞定了。...2.具有扎实的Java编程基础,理解IO、多线程等基础框架 3.熟练使用Li
  • RPC概述 RPC(Remote Procedure Call)即远程过程调用...源码阅读,最核心有三点:技术基础+强烈的求知欲+耐心。 1.1 设计模式(45设计模式:介绍+优缺点+应用实例+源代码+解决问题) 1.2 Spring复习大纲:依赖注入Ioc+
  • 最新技术框架整理

    2018-05-11 15:23:08
    JAVA、WEB最新技术框架整理 1.基础框架 1.1 后台基础框架 分布式:dubbox 统一配置:zookeeper 消息:kafka 服务化:spring spring boot 微服务化框架 spring mvc springframework 持久层:mybatis、...
  • 做为一个IT的新人,要想成为技术大牛要怎么做,怎样能快速成长。我们来看看过来人的分享。 简单来讲,成为技术大牛虽然有难度,但其实也不是不可能。要成为任何一个领域的专家,你需要做的是学会该领域的已有知识,...
  • 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
  • 当我们在技术线路中选择了Java,也就选择了你必须持续学习,经常关注最新技术,了解它们,看是否适合你的需要,然后学习使用它们。 1>Java基础: Java原理和使用,包括基本的语言、语法知识和API JSP+Servlet,...
  • JavaNIO框架教程

    2017-02-21 15:47:00
    Java NIO(New IO)是从Java 1.4版本开始引入的一个...(关注ITeye官微,随时随地查看最新开发资讯、技术文章。)Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于...
  • 技术内容第一阶段 linux 系统 章节1:linux 基础第二阶段 大型网站高并发处理 章节1:高并发与负载均衡第三阶段 Hadoop 分布式文件系统:HDFS 章节1:Hadoop 简单介绍及架构设计章节2:Hadoop 高可用集群及java API...
  • 包括全部的各大主流框架,内容丰富,thinking in java spring struts hibernate 并有大量实例 保管学会
  • Java开源AJAX框架

    2021-02-27 13:42:31
    火龙果软件工程技术中心 DWR DWR(DirectWebRemoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript就好像直接...
  • 当前发行的MINA版本支持基于Java NIO技术的TCP/UDP应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA所支持的功能也在进一步的扩展中。 Apache MINA是一个网络应用程序框架,可帮助用户轻松开发高性能和...
  • 超前的技术选型 核心框架:Spring Boot2 + Spring Cloud Alibaba + Spring Cloud Gateway 安全框架:Spring Security OAuth2 前端框架:Vue2 + element-ui + avue2 持久层框架:MyBatis-plus ...
  • Apache MINA(Multipurpose Infrastructure for Network Applications) ...当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进...
  • 腾讯 一面(支付) 1.jqc的介绍 2.如何确保多台机器不会重复消费 3.如何确保消费了反馈失效问题(用事务管理,先储存再消费,失败就回滚) ...15.百度技术氛围比腾讯好 二面 1.手写多线程买票代码 2

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,498
精华内容 599
关键字:

java最新框架技术

java 订阅