学不会退出IT界!“Java中间件面试真题&高频知识点汇总”

面试官看了直呼内行,Java多线程与并发系列22道高频面试题解析 前言: 作为一个 Java开发人员,多线程是一个逃不掉的话题,不管是工作还是面试,但理解起来比较模糊难懂,因为多线程程序在跑起来的时候比较难于观察和跟踪。搞懂多线程并发知识,可以在面试的时候和周围人拉开差距,另外自己在编码的时候可以做到心中有数。 另外本人整理收藏了20年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,我认为对面试来说是非常有用的,想要资料的话请点795983544 暗号优快云。 1、Java 中实现多线程有几种方法 (1)继承 Thread 类; (2)实现 阅读详情

前言

现今时代,系统越来越复杂,数据来越多,系统间的交互也就变得越来越重要,同时也变得越来越困难。而消息中间件在其中起到了一个中间桥梁的重要作用。因此,面试中也经常会被问到消息中间件相关的问题。从其使用到其原理设计,都会是面试官感兴趣的一个点。

Zookeeper

1. ZooKeeper 是什么?

ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根 据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

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

(1)顺序一致性

(2)原子性

(3)单一视图

(4)可靠性

(5)实时性(最终一致性)

客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也 是由所连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写 请求的吞吐会下降。

有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为 zxid(Zookeeper Transaction Id)。而读请求只会相对于更新有序,也就是 读请求的返回结果中会带有这个zookeeper 最新的 zxid。

2. ZooKeeper 提供了什么?

(1)文件系统

(2)通知机制

3.Zookeeper 文件系统

Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。 Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为1M。

4. ZAB 协议?

ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议。 ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。 当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导致不存在过半的服务器 与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的 Leader服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步,当集群中超过半数机器与该 Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader 服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。

5. 四种类型的数据节点 Znode

(1)PERSISTENT-持久节点

除非手动删除,否则节点一直存在于 Zookeeper 上

(2)EPHEMERAL-临时节点

临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper 连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。

(3)PERSISTENT_SEQUENTIAL-持久顺序节点

基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

(4)EPHEMERAL_SEQUENTIAL-临时顺序节点

基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

6. Zookeeper Watcher 机制 -- 数据变更通知

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

工作机制:

(1)客户端注册 watcher

(2)服务端处理 watcher

(3)客户端回调 watcher

Watcher 特性总结:

(1)一次性无论是服务端还是客户端,一旦一个 Watcher 被 触 发 ,Zookeeper 都会将其从相应的存储中移除。这样的设计有效的减轻了服务端的压力,不然对于更新非常频繁的节点,服务端会不断的向客户端发送事件通知,无论对于网络还是服务端的压力都非常大。

(2)客户端串行执行

客户端 Watcher 回调的过程是一个串行同步的过程。

(3)轻量

3.1、Watcher 通知非常简单,只会告诉客户端发生了事件,而不会说明事件的具体内容。

3.2、客户端向服务端注册 Watcher 的时候,并不会把客户端真实的 Watcher 对象实体传递到服务端,仅仅是在客户端请求中使用 boolean 类型属性进行了标记。

(4)watcher event 异步发送 watcher 的通知事件从 server 发送到 client 是异步的,这就存在一个问题,不同的客户端和服务器之间通过 socket 进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于 Zookeeper 本身提供了 ordering guarantee,即客户端监听事件后,才会感知它所监视 znode发生了变化。所以我们使用 Zookeeper 不能期望能够监控到节点每次的变化。Zookeeper 只能保证最终的一致性,而无法保证强一致性。

(5)注册 watcher getData、exists、getChildren

(6)触发 watcher create、delete、setData

(7)当一个客户端连接到一个新的服务器上时,watch 将会被以任意会话事件触发。当与一个服务器失去连接的时候,是无法接收到 watch 的。而当 client 重新连接时,如果需要的话,所有先前注册过的 watch,都会被重新注册。通常这是完全透明的。只有在一个特殊情况下,watch 可能会丢失:对于一个未创建的 znode的 exist watch,如果在客户端断开连接期间被创建了,并且随后在客户端连接上之前又删除了,这种情况下,这个 watch 事件可能会被丢失。

7. 客户端注册 Watcher 实现

(1)调用 getData()/getChildren()/exist()三个 API,传入 Watcher 对象

(2)标记请求 request,封装 Watcher 到 WatchRegistration

(3)封装成 Packet 对象,发服务端发送 request

(4)收到服务端响应后,将 Watcher 注册到 ZKWatcherManager 中进行管理

(5)请求返回,完成注册。

8. 服务端处理 Watcher 实现

9. 客户端回调 Watcher

客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher。

客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了。

10. ACL 权限控制机制

11. Chroot 特性

12. 会话管理

13. 服务器角色

14. Zookeeper 下 Server 工作状态

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

(1)LOOKING:寻 找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。

(2)FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。

(3)LEADING:领导者状态。表明当前服务器角色是 Leader。

(4)OBSERVING:观察者状态。表明当前服务器角色是 Observer。

15. 数据同步

16. zookeeper 是如何保证事务的顺序一致性的?

17. 分布式集群中为什么会有 Master?

在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader 选举。

18. zk 节点宕机如何处理?

19. zookeeper 负载均衡和 nginx 负载均衡区别

zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件;但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式。

20. Zookeeper 有哪几种几种部署模式?

部署模式:单机模式、伪集群模式、集群模式

21. 集群最少要几台机器,集群规则是怎样的?

集群规则为 2N+1 台,N>0,即 3 台

22. 集群支持动态添加机器吗?

23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?

24. Zookeeper 的 java 客户端都有哪些?

java 客户端:zk 自带的 zkclient 及 Apache 开源的 Curator。

25. chubby 是什么,和 zookeeper 比你怎么看?

chubby 是 google 的,完全实现 paxos 算法,不开源。zookeeper 是 chubby的开源实现,使用 zab协议,paxos 算法的变种。

26. 说几个 zookeeper 常用的命令。

常用命令:ls get set create delete 等。

27. ZAB 和 Paxos 算法的联系与区别?

28. Zookeeper 的典型应用场景

Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅。

通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watcher 事件通知机制,可以非常方便的构建一系列分布式应用中年都会涉及的核心功能,如:

(1)数据发布/订阅

(2)负载均衡

(3)命名服务

(4)分布式协调/通知

(5)集群管理(6)Master 选举

(7)分布式锁

(8)分布式队列

数据发布/订阅

介绍

数据发布/订阅系统,即所谓的配置中心,顾名思义就是发布者发布数据供订阅者进行数据订阅。

目的

动态获取数据(配置信息)

实现数据(配置信息)的集中式管理和数据的动态更新

设计模式

Push 模式

Pull 模式

数据(配置信息)特性

(1)数据量通常比较小

(2)数据内容在运行时会发生动态更新

(3)集群中各机器共享,配置一致

如:机器列表信息、运行时开关配置、数据库配置信息等

基于 Zookeeper 的实现方式

· 数据存储:将数据(配置信息)存储到 Zookeeper 上的一个数据节点

· 数据获取:应用在启动初始化节点从 Zookeeper 数据节点读取数据,并在该节点上注册一个数据变更

Watcher

· 数据变更:当变更数据时,更新 Zookeeper 对应节点数据,Zookeeper会将数据变更通知发到各客户

端,客户端接到通知后重新读取变更后的数据即可。

负载均衡

zk 的命名服务

命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。

分布式通知和协调

对于系统调度来说:操作人员发送通知实际是通过控制台改变某个节点的状态,然后 zk 将这些变化发送给注册了这个节点的 watcher 的所有客户端。对于执行情况汇报:每个工作进程都在某个目录下创建一个临时节点。并携带工作的进度数据,这样汇总的进程可以监控目录子节点的变化获得工作进度的实时的全局情况。

zk 的命名服务(文件系统)

命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路径,即是唯一的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。

zk 的配置管理(文件系统、通知机制)程序分布式的部署在不同的机器上,将程序的配置信息放在 zk 的 znode 下,当有配置发生改变时,也

就是 znode 发生变化时,可以通过改变 zk 中某个目录节点的内容,利用 watcher 通知给各个客户端,从而更改配置。

Zookeeper 集群管理(文件系统、通知机制)

所谓集群管理无在乎两点:是否有机器退出和加入、选举 master。对于第一点,所有机器约定在父目录下创建临时目录节点,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper 的连接断开,其所创建的临时目录节点被删除,所有其他机器都收到通知:某个兄弟目录被删除,于是,所有人都知道:它上船了。新机器加入也是类似,所有机器收到通知:新兄弟目录加入,highcount 又有了,对于第二点,我们稍微改变一下,所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为 master 就好。

Zookeeper 分布式锁(文件系统、通知机制)

有了 zookeeper 的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。对于第一类,我们将 zookeeper 上的一个 znode 看作是一把锁,通过 createznode的方式来实现。所

有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的 distribute_lock 节点就释放出锁。对于第二类, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master 一样,编号最小的获得锁,用完删除,依次方便。Zookeeper 队列管理(文件系统、通知机制)

两种类型的队列:

(1)同步队列,当一个队列的成员都聚齐时,这个队列才可用,否则一直等待所有成员到达。

(2)队列按照 FIFO 方式进行入队和出队操作。

第一类,在约定目录下创建临时目录节点,监听节点数目是否是我们要求的数目。

第二类,和分布式锁服务中的控制时序场景基本原理一致,入列有编号,出列按编号。在特定的目录下

创建 PERSISTENT_SEQUENTIAL 节点,创建成功时Watcher 通知等待的队列,队列删除序列号最小的节点用以消费。此场景下Zookeeper 的 znode 用于消息存储,znode 存储的数据就是消息队列中的消息内容,SEQUENTIAL 序列号就是消息的编号,按序取出即可。由于创建的节点是持久化的,所以不必担心队列消息的丢失问题。

RabbitMQ

1. 什么是MQ

MQ就是消息队列。是软件和软件进行通信的中间件产品

2. MQ的优点

异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。

应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。

流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。

日志处理 - 解决大量日志传输。

消息通讯 - 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实

现点对点消息队列,或者聊天室等。

3. 解耦、异步、削峰是什么?。

解耦 :A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。如果使用 MQ,A系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。如果新系统需 要数据,直接从 MQ 里消费即可;如果某个系统不需要这条数据了,就取消对 MQ 消息的消费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑 人家是否调用成功、失败超时等情况。就是一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的,如果用 MQ 给它异步化解耦。

异步 :A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地写库 要 3ms,BCD 三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 3 + 300 + 450 + 200 = 953ms,接近 1s,用户感觉搞个什么东西,慢死了慢死了。用户通过浏览器发起请求。 如果使用 MQ,那么 A 系统连续发送 3 条消息到 MQ 队列中,假如耗时 5ms,A 系统从接受一个 请求到返回响应给用户,总时长是 3 + 5 = 8ms。

削峰 :减少高峰时期对服务器压力

4. 消息队列有什么缺点

5. 你们公司生产环境用的是什么消息中间件?

这个首先你可以说下你们公司选用的是什么消息中间件,比如用的是RabbitMQ,然后可以初步给一些你对不同MQ中间件技术的选型分析。

举个例子:比如说ActiveMQ是老牌的消息中间件,国内很多公司过去运用的还是非常广泛的,功能很强大。

但是问题在于没法确认ActiveMQ可以支撑互联网公司的高并发、高负载以及高吞吐的复杂场景,在国内互联网公司落地较少。而且使用较多的是一些传统企业,用ActiveMQ做异步调用和系统解耦。

然后你可以说说RabbitMQ,他的好处在于可以支撑高并发、高吞吐、性能很高,同时有非常完善便捷的后台管理界面可以使用。

另外,他还支持集群化、高可用部署架构、消息高可靠支持,功能较为完善。

而且经过调研,国内各大互联网公司落地大规模RabbitMQ集群支撑自身业务的case较多,国内各种中小型互联网公司使用RabbitMQ的实践也比较多。

除此之外,RabbitMQ的开源社区很活跃,较高频率的迭代版本,来修复发现的bug以及进行各种优化,因此综合考虑过后,公司采取了RabbitMQ。

但是RabbitMQ也有一点缺陷,就是他自身是基于erlang语言开发的,所以导致较为难以分析里面的源码,也较难进行深层次的源码定制和改造,毕竟需要较为扎实的erlang语言功底才可以。

然后可以聊聊RocketMQ,是阿里开源的,经过阿里的生产环境的超高并发、高吞吐的考验,性能卓越,同时还支持分布式事务等特殊场景。

而且RocketMQ是基于Java语言开发的,适合深入阅读源码,有需要可以站在源码层面解决线上生产问题,包括源码的二次开发和改造。

另外就是Kafka。Kafka提供的消息中间件的功能明显较少一些,相对上述几款MQ中间件要少很多。

但是Kafka的优势在于专为超高吞吐量的实时日志采集、实时数据同步、实时数据计算等场景来设计。

因此Kafka在大数据领域中配合实时计算技术(比如Spark Streaming、Storm、Flink)使用的较多。但是在传统的MQ中间件使用场景中较少采用。

6. Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

7. MQ 有哪些常见问题?如何解决这些问题?

8. 什么是RabbitMQ?

RabbitMQ是一款开源的,Erlang编写的,消息中间件; 最大的特点就是消费并不需要确保提供方 存在,实现了服务之间的高度解耦 可以用它来:解耦、异步、削峰。

9. rabbitmq 的使用场景

(1)服务间异步通信

(2)顺序消费

(3)定时任务

(4)请求削峰

10. RabbitMQ基本概念

11. RabbitMQ的工作模式

12. 如何保证RabbitMQ消息的顺序性?

拆分多个 queue(消息队列),每个 queue(消息队列) 一个 consumer(消费者),就是多一些 queue(消息队列)而已,确实是麻烦点;

或者就一个 queue (消息队列)但是对应一个 consumer(消费者),然后这个 consumer(消费者)内部用内存队列做排队,然后分发给底层不同的 worker 来处理。

13. 消息如何分发?

若该队列至少有一个消费者订阅,消息将以循环(round-robin)的方式发送给消费者。每条消息只会分发给一个订阅的消费者(前提是消费者能够正常处理消息并进行确认)。通过路由可实现多消费的功能

14. 消息怎么路由?

15. 消息基于什么传输?

16. 如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?

17. 如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

18. 如何保证RabbitMQ消息的可靠传输?

19. 为什么不应该对所有的 message 都使用持久化机制?

20. 如何保证高可用的?RabbitMQ 的集群

21. 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,怎么办?

22. 设计MQ思路

23.RoctetMq的架构

NameServer

Broker

Producer

Producer的负载均衡

发送的三种策略

Consumer

推拉消费模式

集群还是广播

Consumer的负载均衡

24. RocketMq消息模型(专业术语)

Message

Topic

Tag

Group

Message Queue

offset

25.核心问题

顺序消息

消息过滤

消息去重

分布式事务消息

消息的可用性

刷盘实现

负载均衡

最后

小编分享的文章到这里就结束了,整理不易,欢迎大家一起交流!有需要面试资料的朋友可以来拿到全套的进行学习

Android开发高频面试题之——Android篇 阅读详情

相关推荐

JAVA面试大全之开发框架和中间件篇

Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说的Spring框架就是Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具、消息和测试模块。比如Core Container中的Core组件是Spring所有组件的核心,Beans组件和Context组件是实现IOC和DI的基础,AOP组件用来实现面向切面编程。

hao_kkkkk的专栏 523

Java面试——中间件

1、openFeign是一个HTTP客户端,它融合了springmvc的注解,使之可以用REST风格的映射来请求转发。2、可以把openFegin理解为是controller层或是service层。可以取代springmvc控制层作为请求映射,亦或是作为service层处理逻辑,只不过这里,openFeign只是做一个请求转发的逻辑操作。3、openFeign整合了hystrix做熔断处理,同时,可以和ribbon客户端负载均衡、Eureka注册中心配合使用,实现负载均衡的客户端。

JohnnyLin 1990

雷电模拟器+Python 3.11:手把手教你用Frida-dexdump给安卓APK脱壳(附GDA查壳)

本文详细介绍了如何使用雷电模拟器和Python 3.11配合Frida-dexdump工具进行安卓APK脱壳的全流程。从环境配置、工具安装到脱壳操作和问题排查,提供了包含30+关键截图的保姆级教程,适合零基础用户快速上手。重点讲解了Frida工具链的使用技巧和GDA查壳方法,帮助读者掌握移动应用安全分析的基础技能。

weixin_42568801的博客 328

JAVA面试中间件

dubbo Zookeeper RabbitMq、ActiveMq Redis Nginx+keeperAlive实现snmp服务的高可用(工作运用) Elastic+FileBeat+log4j实现日志监控(工作运用) 以上明天整理完成

weixin_44734394的博客 2202

对称加密和非对称加密、公钥和私钥、单向认证和双向认证、数字签名、数字证书、根证书

文章目录1. 什么是公钥和私钥?2. 加密算法2.1 对称加密2.2 非对称加密2.2.1 非对称加密的重要性质2.2.2 非对称加密算法应用2.2.2.1 应用1 加密通信2.2.2.1.1 单向认证和双向认证2.2.2.1 应用2 数字签名3. 数字签名3.1 数字签名用法演示3.2 数字签名存在问题4. 数字证书(Digital Certificate)4.1 创建数字证书4.1.1 举例,CA如何给我们签发一个有效证书: 1. 什么是公钥和私钥? 摘自《什么是公钥和私钥?》 公钥(Public Ke

m0_45406092的博客 1万+

AI报告撰写实战指南:从提示词工程到全流程优化的底层逻辑与实践突破

传统AI写作常被诟病为“信息拼贴”——模型虽能生成文本,却常出现逻辑断裂、数据矛盾、风格不符等问题。而“全流程优化”则是通过系统化设计,将报告生成拆解为需求解析→数据对齐→提示词设计→初稿生成→迭代优化→格式适配六大环节,每个环节均通过技术手段提升输出质量。提示词工程:本质是通过结构化指令(如角色设定、任务分解、格式约束、示例引导)精准控制模型输出方向,是连接用户需求与模型能力的“翻译器”。全流程优化。

2501_92808811的博客 884

Java面试题-JavaEE&框架&中间件(一)

SELECT 列名 FROM 表1 JOIN 表2 ON 条件 WHERE 条件 GROUP BY 列名 HAVING 条件 ORDER BY 列名 LIMITSpring是一个开源的轻量级控制反转和面向切面编程的容器框架。轻量级是说它开发使用简单,功能强大。控制反转是指将对象的创建,初始化,销毁等工作,以及依赖关系维护交给ioc容器,方便解耦合,降低维护难度。面向切面编程是指将相同的逻辑横向抽取出来,可以对一些通用业务如事务,日志进行集中管理。1)IOC控制反转,把对象的。

qq_51598807的博客 1475

2.1 SRv6 TE Policy

SRv6 TE Policy是在SRv6技术基础上发展的一种新的隧道引流技术。SRv6 TE Policy路径表示为指定路径的段列表(Segment List),称为SID列表(Segment ID List)。每个SID列表是从源到目的地的端到端路径,并指示网络中的设备遵循指定的路径,而不是遵循IGP计算的最短路径。如果数据包被导入SRv6 TE Policy中,SID列表由头端添加到数据包上,网络的其余设备执行SID列表中嵌入的指令。

m0_70976024的博客 1237

【每日试题】java面试题之中间件

中间件是指位于客户端和服务器之间的一层软件,它可以提供一系列的服务,简化了开发和管理复杂的分布式应用系统。网关中间件可以提供统一的入口和出口,对请求进行路由、过滤和转发等处理,增加系统的灵活性和安全性。中间件可以分为消息中间件、缓存中间件、数据访问中间件、分布式计算中间件、网关中间件等多个类别。可以通过中间件提供的监控和管理接口、日志查看、性能指标监控工具等方式来实现中间件的监控和管理。可以通过调整配置参数、优化数据结构、增加缓存、并发控制等方式来提高中间件的性能。

qq_46127030的博客 1215

YOLOv8改进,MobileNetV3轻量化架构改进特征提取网络,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3835

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

【Proteus仿真】用24C04与1602LCD设计的简易加密电子密码锁

perseverance51博客 1121

学不会退出IT界,21年度“Java中间件面试真题&高频知识点汇总

命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路径,即是唯一的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。命名服务是指通过指定的名字来获取资源或者服务的地址,利用 zk 创建一个全局的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。zk 的配置管理(文件系统、通知机制)程序分布式的部署在不同的机器上,将程序的配置信息放在 zk 的 znode 下,当有配置发生改变时,也。

1052

【Kubernetes】Kubernetes 安全沙箱深度对比:gVisor vs Kata Containers

Kubernetes安全沙箱深度对比:gVisor和Kata Containers在架构、性能与安全性方面各有特点。gVisor通过用户态内核(Sentry)实现软件隔离,启动快(毫秒级)但CPU开销大(20-30%),适合Web服务等场景。Kata Containers采用轻量级虚拟机提供硬件级隔离,启动较慢(1-2秒)但兼容性更好,适合金融等高安全需求。测试显示gVisor在动态请求下性能下降33%,而Kata性能接近原生。建议根据场景选择:多租户/快速启动用gVisor,敏感数据/极致安全用Kata,

九师兄 178

学不会退出IT界,21年度“Java中间件面试真题&高频知识点汇总”

Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。找小编(vip1024c)领取以。

2401_85358655的博客 710

uniapp - 如何跟内嵌 web-view 组件内的网页交互,与 web-view 内嵌网页进行双向通信(uniapp 与 webview 网页之间的 “相互“ 传值)提供详细的示例代码及解决方案

uni-app如何实现在H5环境中与web-view中的网页交互通讯uniappuni-app 与 web-view内嵌网页 双向通信 如何跟内嵌web-view交互uniappAPP与webview子页面交互uniappAPP与webview子页面交互关于uni-app 使用 web-view 页面之间互相跳转、通信等问题uniapp的web-view嵌入网页,网页与uniapp通信webview如何与uniapp写的H5页面交互嵌套webview调用uniapp各种API组件实现H5和app通讯和交互

✅ 精选推荐文章 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

学不会退出IT界,22年度“Java中间件面试真题&高频知识点汇总”

前言 现今时代,系统越来越复杂,数据来越多,系统间的交互也就变得越来越重要,同时也变得越来越困难。而消息中间件在其中起到了一个中间桥梁的重要作用。因此,面试中也经常会被问到消息中间件相关的问题。从其使用到其原理设计,都会是面试官感兴趣的一个点。 Zookeeper 1. ZooKeeper 是什么? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根 据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分

weixin_68320784的博客 180

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

学不会退出IT界。21年度“Java中间件面试真题&高频知识点汇总”

前言 现今时代,系统越来越复杂,数据来越多,系统间的交互也就变得越来越重要,同时也变得越来越困难。而消息中间件在其中起到了一个中间桥梁的重要作用。因此,面试中也经常会被问到消息中间件相关的问题。从其使用到其原理设计,都会是面试官感兴趣的一个点。 Zookeeper 1. ZooKeeper 是什么? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根 据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分

m0_67778103的博客 151

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

通俗易懂的2022年度“Java中间件面试真题&高频知识点汇总”

前言 现今时代,系统越来越复杂,数据来越多,系统间的交互也就变得越来越重要,同时也变得越来越困难。而消息中间件在其中起到了一个中间桥梁的重要作用。因此,面试中也经常会被问到消息中间件相关的问题。从其使用到其原理设计,都会是面试官感兴趣的一个点。 Zookeeper 1. ZooKeeper 是什么? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根 据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分

aa119101的博客 341

【Java超高频面试题&锁&分布式锁】锁相关高频面试题汇总

本期文章将汇总java锁相关的高频面试题,给最近需要找工作的朋友们总结一波,帮助大家全面掌握java锁核心知识点,提升竞争力,为你的面试之旅保驾护航!

longshehui的博客 2787

2020年11个Redis系列高频面试题,哪些你还不会?

前言 现在大家的工作生活基本已经是回归正轨了,最近也是迎来了跳槽面试季,有些人已经拿到了一两个offer了。 这段时间收集了阿里、腾讯、百度、京东、美团、字节跳动等公司的Java面试题,总结了Redis系列的高频面试题: 1、Redis持久化机制 2、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 3、热点数据和冷数据是什么 4、Memcache与Redis的区别都有哪些?...

程序员追风的博客 7506

学不会不当程序员了,22年度“Java中间件面试真题和高频知识点汇总”

前言 现今时代,系统越来越复杂,数据来越多,系统间的交互也就变得越来越重要,同时也变得越来越困难。而消息中间件在其中起到了一个中间桥梁的重要作用。因此,面试中也经常会被问到消息中间件相关的问题。从其使用到其原理设计,都会是面试官感兴趣的一个点。Zookeeper 1. ZooKeeper 是什么? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根 据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。分布式应用程序可

Javaesandyou的博客 277

2020年最新阿里、字节、腾讯、京东等一线大厂高频面试(Android岗)真题合集,面试轻松无压力

本文涵盖了阿里巴巴、腾讯、字节跳动、京东、华为等大厂的Android面试真题,不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行发展的标杆,很多公司的面试官同样会研究大厂的面试题。 话不多说,直接开始上精选的大厂面试真题! 第一章:Android 基础 1.什么是Activity? 2.请描述一下Activity 生命周期 3.常见的Activity类型有FragmentActivitiy,ListActivity,TabAcitivty等。请描述一下Activity 生

zhireshini233的博客 3376

JAVA高频216道面试题,面试必备

Java多线程与框架面试要点摘要 多线程安全:使用synchronized、Lock或并发工具类(如ReentrantLock)保证线程安全,避免死锁(通过超时锁、降低锁粒度等)。 锁机制: synchronized:基于monitor实现,含偏向锁、轻量级锁、重量级锁的升级过程以优化性能。 volatile:仅保证可见性,不保证原子性;synchronized兼具两者。 死锁:互相持有对方所需锁导致阻塞,可通过超时锁(tryLock)或减少锁粒度预防。 ThreadLocal:为线程提供独立变量副本,适用

2401_89221445的博客 1490

Java高频面试之并发篇

锁升级锁升级是指在多线程并发访问中,锁的状态从低级别的锁形式逐渐升级到高级别的锁形式,以提高并发性能和减少开销。无锁状态(01):初始状态下,对象没有被线程持有锁,任何线程都可以访问。偏向锁(101):当一个线程获得锁时,JVM会将锁标记置为偏向锁,并将线程ID记录在锁对象的对象头中。此时,其他线程可以继续访问该对象,无需进行同步操作(修改锁对象对象头中的线程id)。只有当线程竞争锁时(一个线程在同步代码外要进去,一个线程在同步代码里面),偏向锁会被撤销,锁状态升级为轻量级锁。

Java领域优秀创作者 2303

2024年这些高频面试知识点最后再发一次,java面试八股文汇总

垃圾收集(Garbage Collection)通常被称为“GC”,由虚拟机“自动化”完成垃圾回收工作。思考一个问题,既然GC会自动回收,开发人员为什么要学习GC和内存分配呢?为了能够配置上面的参数配置?参数配置又是为了什么?当需要排查各种内存溢出,内存泄露问题时,当垃圾成为系统达到更高并发量的瓶颈时,我们就需要对GC的自动回收实施必要的监控和调节。JVM中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生随线程而灭。栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。

F1520080的博客 1095

2021年这些高频面试知识点最后再发一次,深度好文

前言 又到了面试求职高峰期,最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。 这些题目是网友去百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。 网上的都是按照公司划分的,想找具体某一方面的知识点有点不好找,我这里就根据知识点分门别类的整理了一下,想看哪一块可以快速找到,希望可以帮助大家,祝大家求职顺利。 面试刷题 刷题我从常见Android基础知识面试题,刷到了Java

m0_53537576的博客 108
上一篇: 从零开始的Golang学习,马上开始你的学习之路吧
下一篇: 系统梳理面试6大专题,阿里爆款Java面试速成笔记也太香了
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值