大数据面试题 —— Zookeeper

news2024/11/15 17:04:54

目录

  • ZooKeeper 的定义
  • ZooKeeper 的特点
  • ZooKeeper 的应用场景
  • 你觉得Zookeeper比较重要的功能
  • ZooKeeper 的选举机制 ***
  • zookeeper主节点故障,如何重新选举?
  • ZooKeeper 的监听原理 ***
  • zookeeper集群的节点数为什么建议奇数台 ***
  • ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?规则是怎样的?
  • ZooKeeper 的常用命令
  • Zookeeper目录结构
  • 简述什么是CAP理论,zookeeper满足CAP的哪两个 ***
  • Paxos 算法 ***
  • ZAB协议/Zookeeper怎么保证一致性的 ***
  • ZooKeeper 使用的ZAB协议与Paxo算法的异同?
  • 分布式集群中为什么会有主节点
  • 节点挂掉的时候Zookeeper是如何发现的
  • Leader一旦选出,如何让集群中所有Follow获悉
  • Zookeeper下 服务器的工作状态有几种
  • Zookeeper提供了什么
  • ZooKeeper是否会自动进行日志清理?
  • 请说明 ZooKeeper 使用到的各个端口的作用?
  • zookeeper 负载均衡和 nginx 负载均衡区别
  • 什么是脑裂
  • ZooKeeper节点类型
  • 临时节点、永久节点用来作什么?
  • 能否为临时节点创建子节点
  • 是哪个进程在Zookeeper上注册临时节点
  • ZooKeeper对节点的watch监听是永久的吗
  • 客户端向服务端写数据流程
  • zookeeper 是如何实现分布式锁的
  • 当自己master连接不上Zookeeper,会怎么办
  • Zookeeper的数据存储在什么地方
  • 总结一下哪些地方用到了 zookeeper
  • Zookeeper实现HDFS的高可用,是怎么操作的?

ZooKeeper 的定义


总的来说,Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。

具体来说,Zookeeper是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper 就负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应。

Zookeeper = 文件系统 + 通知机制。

ZooKeeper 的特点


(1)Zookeeper是由一个领导者(Leader)和多个跟随者(Follower)组成的集群。

(2)集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务。

(3)全局数据一致性:每个 Server 保存一份相同的数据副本,Client 无论连接到哪个 server,数据都是一致的。

(4)更新请求 顺序性 ,来自同一个 Client 的更新请求按其发送顺序依次执行。

(5)数据更新原子性,一次数据更新要么成功,要么失败(保证了数据一致性)。

(6)实时性,在一定时间范围内,Client 能读到最新数据。

ZooKeeper 的应用场景


(1)统一命名服务:在分布式环境下,经常需要对服务进行统一命名,便于识别,例如 ip 地址。

(2)统一配置管理:在一个集群中,要求所有节点的配置信息是一致的

(3)统一集群管理:在一个集群中,需要实时监控每个节点的状态变化

(4)负载均衡:在Zookeeper中记录每个服务器的访问次数,再次请求的时候,让访问次数最少得服务器去处理当前的请求。

你觉得Zookeeper比较重要的功能


ZooKeeper最重要的功能之一是提供分布式系统的协调和管理服务,它能够协调分布式系统中各个节点的状态,维护分布式系统的配置信息,帮助分布式系统实现同步和通信。

ZooKeeper 的选举机制 ***


选举机制总原则:集群中的每台机器都参与投票,通过交换选票信息得到每台机器的最终得票, 一旦出现得票数超过机器总数 一半以上 数量,当前机器即为 leader。

以一个简单的例子来说明整个选举的过程。

假设有五台服务器组成的 Zookeeper 集群,它们的 id 从 1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。假设这些服务器依序启动,来看看会发生什么。

在这里插入图片描述

(1)服务器 1 启动,发起一次选举。服务器 1 投自己一票。此时服务器 1 票数一票,不够半数以上(3票),选举无法完成,服务器 1 状态保持为LOOKING;

(2)服务器2启动,再发起一次选举。服务器 1 和 2 分别投自己一票并交换选票信息:此时服务器 1 发现服务器2的 ID 比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器 1 票数 0 票,服务器 2 票数 2 票,没有半数以上结果,选举无法完成,服务器1,2 状态保持 LOOKING;

(3)服务器 3 启动,发起一次选举。此时服务器 1 和 2 都会更改选票为服务器 3。此次投票结果:服务器1为0票,服务器2为0票,服务器 3 为 3 票。此时服务器 3 的票数已经超过半数,服务器 3 当选 Leader。服务器 1,2 更改状态为 FOLLOWING,服务器3更改状态为LEADING;

(4)服务器 4 启动,发现当前集群已经有 Leader,它自己自动成为 Follower;

(5)服务器5启动,同服务器 4一样。

zookeeper主节点故障,如何重新选举?


当集群中的leader挂掉,集群会重新选出一个leader,此时首先会比较每一台机器的epoch,epoch大的直接选举为leader,epoch若是相同就比较每一台机器的事务id(zxid),zxid 最大的被选为 leader。极端情况,zxid 都相等的情况,那么就会直接比较服务器id(myid、sid)。

在 Zookeeper 集群中,epoch 是用来标识 Zookeeper 集群中的逻辑时期(epoch)。每当选举出一个新的 Leader 时,Zookeeper 集群的 epoch 就会增加,以标识当前的 Leader 任期。

ZooKeeper 的监听原理 ***


(1)首先要有一个 main() 线程

(2)在 main() 线程中创建 ZooKeeper 客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)

(3)客户端通过 connet 线程将注册的监听事件发送给服务端

(4)在 ZooKeeper 的注册监听器列表中将注册的监听事件添加到列表中

(5)ZooKeeper 监听到有数据或路径的变化,就会将这个消息发送给 listener 线程

(6) 客户端 listener 线程内部调用 process() 方法做出相应处理

在这里插入图片描述

zookeeper集群的节点数为什么建议奇数台 ***


(1)因为 zookeeper 中只要有半数以上的机器正常工作,那么整个集群对外就是可用的。比如说如果有 2 个 zookeeper,那么只要 1 个死了 zookeeper 就不能用了,因为 1没有过半,那么 zookeeper 的死亡容忍度为 0,同理,如果有 3 个 zookeeper,如果死了 1个,还剩2个
正常,还是过半的,所以 zookeeper 的死亡容忍度为 1,我之前算过 4 个5 个 6 个等情况下的死亡容忍度,发现了一个规律,2n 和 2n-1 的容忍度是一样的,所以为了节约资源,就选择奇数台。

(2)防止因为集群脑裂造成集群用不了。比如有 4 个节点,脑裂为 2 个小集群,都为 2 个节点,这时候,不能满足半数以上的机器正常工作,因此集群就不可用了,那么当有 5 个节点的时候,脑裂为 2 个小集群,分别为2和 3,这时候 3 这个小集群仍然可以选举出 leader,因此集群还是可用的。

ZooKeeper 的部署方式有哪几种?集群中的角色有哪些?集群最少需要几台机器?规则是怎样的?


(1)部署方式

  • 单机模式:将Zookeeper运行在单台机器上,仅供学习和开发使用;
  • 集群模式:zookeeper运行在多台机器上,每台机器上都运行一个zookeeper实例;
  • 伪分布式模式:仍然只有一台物理机器,但是该机器运行了多个Zookeeper实例。

(2)zookeeper有三种角色:

  • 老大Leader(领导者)
  • 老二Follower (跟随者)
  • 老三Observer(观察者)。Observer 接受客户端连接,将写操作转给Leader,但Observer不参与投票(即不参加一致性协议的达成),只同步Leader节点的状态,Observer角色是为集群系统扩展而生的。Follower和Observer归类为Learner(学习者)

(3)集群最少需要机器数:3,集群规则为2N+1台,N>0

ZooKeeper 的常用命令


(1) ls:查看当前 znode 的子节点

(2)create:创建节点

(3)set:设置节点的值

(4) get:获取节点的值

(5) stat:查看节点的状态

(6) delete:删除节点

(7) deleteall:递归删除节点

Zookeeper目录结构


ZooKeeper的目录结构采用类似Unix文件系统的树形结构。ZooKeeper 目录结构由 ZNode 组成,每个ZNode 默认情况下最多可以存储 1MB 的数据。ZNode是ZooKeeper中的基本数据单元,可以用于存储配置信息、状态信息等。

ZooKeeper目录结构的根节点为/,所有的ZNode都是以根节点为基础进行构建的。每个ZNode的名称是唯一的,并且可以包含多个子节点,每个子节点都是一个独立的ZNode。ZNode可以是永久节点,也可以是临时节点。

在ZooKeeper目录结构中,常用的ZNode包括:

  • /zookeeper:ZooKeeper的内部节点,用于存储ZooKeeper的配置信息和状态信息。
  • /brokers:Kafka集群中所有的Broker信息存储在该节点下。
  • /controller:Kafka集群中Controller的状态信息存储在该节点下。
  • /consumers:Kafka中所有的消费者组信息存储在该节点下。
  • /config:Kafka集群的配置信息存储在该节点下。
  • /admin:Kafka中所有的管理员操作信息存储在该节点下。

简述什么是CAP理论,zookeeper满足CAP的哪两个 ***


分布式系统有三个指标:

  • Consistency(一致性)
    • 用户在访问分布式系统中的任意节点,得到的数据必须一致。

在这里插入图片描述

  • Availability(可用性)
    • 用户访问集群中任意的健康节点,必须能得到响应,而不是超时或拒绝。

在这里插入图片描述

  • Paratition tolerance(分区容错性)
    • 分区:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立的分区。
    • 容错:在集群出现分区时,整个系统也要持续对外提供服务。

分布式系统无法同时满足这三个指标,这个结论就是 CAP 理论。

在这里插入图片描述
Zookeeper 符合一致性、分区容错性。(CP

在这里插入图片描述

Paxos 算法 ***


Paxos 算法:一种基于消息传递且具有高度容错性的一致性算法。

Paxos 算法解决的问题:如何快速正确的在一个分布式系统中对某个数据的值达成一致,并且保证不论发生任何异常,都不会破坏整个系统的一致性。

在一个 Paxos 系统中,首先将所有的节点划分为Proposer(提议者)、Accepter(接受者)和 Learner(学习者)。(注意每个节点都可以身兼数职)

一个完整的 Paxos 算法流程分为三个阶段:

  • 准备阶段
    • Proposer 向多个 Accepter 发出 Propose 请求Promise(承诺)
    • Accepter 针对收到的Propose请求进行Promise(承诺)
  • 接受阶段
    • Proposer 收到多个Accepter的Promise(承诺)后,向Accepter发出Propose
    • Accepter 针对收到的Propose请求进行Accept处理
  • 学习阶段
    • Proposer将形成的决议发送给所有的 Learner

ZAB协议/Zookeeper怎么保证一致性的 ***


依赖了 ZAB 协议,ZAB 协议借鉴了 Paxos 算法,是专门为 ZooKeeper 设计的支持崩溃恢复的原子广播协议。Paxos 算法中采用多个Proposer 会存在竞争 Acceptor 的问题,ZooKeeper 设计为只有一个 Leader 负责处理外部的写事务请求,然后 Leader 将数据同步到其他 Follower 节点。即,ZooKeeper 只有一个 Leader 可以发起提议。

ZAB 协议包括两种基本的模式:消息广播(正常)、崩溃恢复(异常)。

这两个模式是相辅相成的,消息广播模式就是 Zookeeper 不出现任何问题,并且正常工作的模式,崩溃恢复看字面意思就是当 Zookeeper 出现故障时用于恢复的。

(1)消息广播

在这里插入图片描述

(2)崩溃恢复

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

ZooKeeper 使用的ZAB协议与Paxo算法的异同?


相同点:

  • 两者都存在一个类似于 Leader 进程的角色,由其负责协调多个 Follower 进程的运行
  • Leader 进程都会等待超过半数的 Follower 做出正确的反馈后,才会将一个提案进行提交
  • ZAB 协议中,每个 Proposal 中都包含一个 epoch 值来代表当前的 Leader 周期,Paxos 中名字为 Ballot

不同点:

ZAB(ZooKeeper Atomic Broadcast) 用来构建高可用的分布式数据主备系统(Zookeeper),Paxos 是用来构建分布式一致性状态机系统。而 Paxos 算法与 ZAB 协议不同的是,Paxos 算法的发起者可以是一个或多个。当集群中的 Acceptor 服务器中的大多数可以执行会话请求后,提议者服务器只负责发送提交指令,事务的执行实际发生在 Acceptor 服务器。这与 ZooKeeper 服务器上事务的执行发生在 Leader 服务器上不同。Paxos 算法在数据同步阶段,是多台 Acceptor 服务器作为数据源同步给集群中的多台 Learner 服务器,而 ZooKeeper 则是单台 Leader 服务器作为数据源同步给集群中的其他角色服务器。

注意:ZAB是在Paxos的基础上改进和演变过来的。

分布式集群中为什么会有主节点


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

节点挂掉的时候Zookeeper是如何发现的


ZooKeeper提供了一种心跳机制,即每个节点都会定期向其他节点发送心跳消息,如果一个节点超过一定时间没有收到其他节点的心跳消息,就会判定这个节点已经下线了。

Leader一旦选出,如何让集群中所有Follow获悉


心跳机制

Zookeeper下 服务器的工作状态有几种


ZooKeeper 服务器有四种工作状态:

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

Zookeeper提供了什么


(1)文件系统
(2)通知机制

ZooKeeper是否会自动进行日志清理?


ZooKeeper 不会自动进行日志清理,需要运维人员进行日志清理

请说明 ZooKeeper 使用到的各个端口的作用?


(1)2888:Follower与Leader交换信息的端口

(2)3888:万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口

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


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

什么是脑裂


脑裂通常会出现在集群环境中,当集群中出现故障(比如网络故障),分成了“两个集群”,这两个集群无法互相通信,此时就会让集群觉得Leader挂了,这时候就会出现两个Leader节点,这就是脑裂。

实际上Zookeeper集群中是不会出现脑裂问题的,而不会出现的原因就跟过半机制有关。有了过半机制,对于一个Zookeeper集群,要么没有Leader,要没只有1个Leader,这样就避免了脑裂问题。

ZooKeeper节点类型


(1)Znode有两种类型:

  • 短暂:客户端和服务器端断开连接后,创建的节点自己删除
  • 持久:客户端和服务器端断开连接后,创建的节点不删除

(2)Znode有四种形式的目录节点(默认是persistent )

  • 持久化目录节点:客户端与zookeeper断开连接后,该节点依旧存在
  • 持久化顺序编号目录节点: 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
  • 临时目录节点: 客户端与zookeeper断开连接后,该节点被删除
  • 临时顺序编号目录节点:客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

临时节点、永久节点用来作什么?


临时节点常用于实现分布式锁等功能,而永久节点则用于存储一些配置信息、元数据等。

能否为临时节点创建子节点


ZooKeeper 中不能为临时节点创建子节点,如果需要创建子节点,应该将要创建子节点的节点创建为永久性节点

是哪个进程在Zookeeper上注册临时节点


一般情况下,是客户端进程通过ZooKeeper的API在zk上注册临时节点。客户端注册的临时节点在客户端连接断开后会自动删除。

ZooKeeper对节点的watch监听是永久的吗


不是,一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。

为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,这太消耗性能了。在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。

客户端向服务端写数据流程


可以分为两种情况,一是将写入请求直接发送给 leader ,一是将写入请求发给 follower(该情况也会将写入请求转发给 leader)。

在这里插入图片描述

在这里插入图片描述

(1)客户端会向ZK集群中的一台机器server1发送写数据的请求。

(2)server1接收到请求后,马上会通知leader 有写数据的请求来了

(3)leader拿到请求后,进行广播,让集群每一台机器都准备要写数据

(4)集群中的所有机机器接收到leader广播后都回应一下leader

(5) leader再次进行广播 开始写数据,其他机器接收到广播后也开始写数据

(6)数据成功写入后,回应leader,最后由leader来做整个事务提交

(7)当数据成功写入后,有最初和客户端发生连接的 server1 回应客户端数据写入成功。

zookeeper 是如何实现分布式锁的


在这里插入图片描述

(1)首先 zookeeper 集群接收到获取锁的请求时,就会在 locks 节点下创建一个临时顺序节点

(2)然后先对当前节点下的所有子节点进行排序,判断自己是不是最小的节点,如果是,就可以获取到锁,如果不是,就说明锁已被其他客户端获取,然后可以对前一个节点进行监听,等待客户端把自己创建的节点删除。

(3)获取到锁后,进行业务的处理,释放锁的时候删除该临时节点,然后后面的节点就会接收到通知。

当自己master连接不上Zookeeper,会怎么办


当一个Hadoop集群中的Active NameNode连接不上ZooKeeper时,它会尝试在一段时间内重新连接ZooKeeper。如果在此期间内,Active NameNode仍然无法连接到ZooKeeper,会直接转为standby。

Zookeeper的数据存储在什么地方


(1)内存中(DataTree、DataNode、ZKDatabase):ZooKeeper 会将一部分数据存储在内存中,以提高读取速度和性能。

(2)磁盘上的快照文件:ZooKeeper 会定期将内存中的数据持久化到磁盘上的快照文件中,以便在重启后恢复状态。

(2)事务日志:ZooKeeper 会将所有更新操作记录在事务日志中,以确保数据的持久性和一致性。

总结一下哪些地方用到了 zookeeper


(1)Hadoop HA:配置高可用

(2)HBase:保证master的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。

(3)Kafka:controller的选举、broker 的注册、topic 的注册

Zookeeper实现HDFS的高可用,是怎么操作的?


在HDFS中实现高可用,需要使用Zookeeper来协调选举NameNode的过程。具体来说,我们需要启动两个NameNode,一个作为Active节点,一个作为Standby节点。同时,在Zookeeper上创建一个znode,作为一个lock的作用,来确保只有一个NameNode能够成为Active节点

在启动时,Active节点会尝试去Zookeeper上创建这个lock,如果成功,则表示它已经成为Active节点,否则它会监视这个lock的状态,一旦该节点被释放,它就会重新尝试去获得这个lock。同时,Standby节点也会监视这个lock的状态,一旦Active节点出现故障或宕机,它会尝试去获得这个lock,并成为Active节点。

当Active节点宕机时,Standby节点会检测到这个故障,然后会尝试去获取这个lock。在获取到这个lock之后,它会启动自己的NameNode服务,并且接管原来Active节点的工作。

在整个过程中,Zookeeper起到了协调的作用,它可以保证只有一个NameNode节点被选举为Active节点,保证了系统的高可用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言种sizeof()和strlen的区别

sizeof 是 C 语言内置的操作符关键字,而 strlen 是 C 语言库函数; sizeof 仅用于计算数据类型的大小或者变量的大小,而 strlen 只能以结尾为 \0 的字符串作为参数; 编译器在编译时就计算出了 sizeof 的结果,而 strlen …

02_设计模式

文章目录 设计模式设计模式分类UML类图设计模式的原则 常用设计模式创建型设计模式单例设计模式饿汉模式懒汉模式(线程不安全)懒汉模式(线程安全)- Synchronized懒汉模式(线程安全)- Double Check懒汉模式&…

Android 系统源码快速入门

Android源码快速入门 今天分享的内容是Android源码快速入门,主要分为以下几个步骤: * 硬件要求 * 虚拟机安装 * 开发环境搭建 * 下载编译源码 * 从一个简单的实际开发需求体验 Framework 开发硬件要求 用于 Android Framework 开发的电脑需要较强的 C…

算法沉淀——贪心算法二(leetcode真题剖析)

算法沉淀——贪心算法二 01.最长递增子序列02.递增的三元子序列03.最长连续递增序列04.买卖股票的最佳时机 01.最长递增子序列 题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/ 给你一个整数数组 nums ,找到其中最长严格递增子…

【第十一章】改进神经网络学习方式-Softmax

我们将主要使用交叉熵成本来解决学习减速的问题。然而,我想简要描述另一种解决方法,基于所谓的 softmax 层神经元。在本章的剩余部分,我们实际上不会使用 softmax 层,因此如果你时间紧迫,可以跳到下一节。然而&#xf…

Vue3 依赖注入provide与inject

简介 关于provide与inject下面是vue官网上的一些介绍 通常情况下,当我们需要从父组件向子组件传递数据时,会使用props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个…

【Flask开发实战】防火墙配置文件解析(二)之shell读取内容

一、前言 上一篇文章中,介绍了防火墙配置文件包含的基本元素和格式样式,并模拟了几组有代表性的规则内容,作为基础测试数据。在拿到基础测试数据后,关于我们最终想解析成的数据是什么样式的,其实不难看出,…

GateWay路由规则

Spring Cloud GateWay 帮我们内置了很多 Predicates功能,实现了各种路由匹配规 则(通过 Header、请求参数等作为条件)匹配到对应的路由 1 时间点后匹配 server:port: 8888 spring:application:name: gateway-servicecloud:nacos:discovery:…

四.排序(冒泡/选择)

目录 11-排序介绍 常见排序算法: 12-冒泡排序介绍 代码要求: 思路: 13-冒泡排序 代码: 14-选择排序 简单写法: 好的写法: 11-排序介绍 排序:将一组“无序”的记录序列调整为“有序”的记录序列。 列表排序:将无序列表变为有序列表 输入&#…

C++第七弹---类与对象(四)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、拷贝构造函数 1.1、概念 1.2、特征 2、运算符重载 2.1、等号运算符重载 总结 1、拷贝构造函数 1.1、概念 在现实生活中,可能…

【C++】手撕AVL树

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能直接手撕AVL树。 > 毒鸡汤:放弃自…

Java安全基础 必备概念理解

Java安全基础 关键概念汇总 文章目录 Java安全基础 关键概念汇总前置知识1.构造器this以及包的使用2.继承3.重写/ 重载 / super4.多态5.区分和equals方法6.toString的使用7.Object的概念8.static,final,代码块static代码块final 9.动态代理10.类的动态加载1)类加载器含义&#…

leetCode刷题 17. 电话号码的字母组合

题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits "23&q…

操作系统练习-操作系统的基本概念

操作系统的基本概念 ----------------------------------------------------------------------------------------------------------------------------- 1.操作系统是扩充( )功能的第一层系统软件 A.软件 B.裸机 C.机器语言 …

opengl日记8-opengl创建三角形

文章目录 环境直接上代码一点小总结参考 环境 系统:ubuntu20.04opengl版本:4.6glfw版本:3.3glad版本:4.6cmake版本:3.16.3gcc版本:10.3.0 直接上代码 CMakeLists.txt cmake_minimum_required(VERSION 2…

STM32CubeIDE基础学习-KEY按键输入实验

STM32CubeIDE基础学习-KEY按键输入实验 文章目录 STM32CubeIDE基础学习-KEY按键输入实验前言第1章 硬件介绍第2章 工程配置2.1 工程外设配置部分2.2 生成工程代码部分 第3章 代码编写第4章 实验现象总结 前言 前面学习了GPIO作为输出功能的实验,现在来学习GPIO作为…

【LIMS】微服务

目录 一、服务解决方案-Spring Cloud Alibaba1.1选用原因(基于Spring Cloud Alibaba的试用场景)1.2 核心组件使用前期规划 部署 nacos部署 mino使用JavaFreemarker模板引擎,根据XML模板文件生成Word文档使用JavaFlowable 工作流引擎前端 -vue…

C++初阶:string类的模拟自实现

目录 1. 引子2. 自实现string类功能模块3. string类功能模块的具体实现3.1 默认成员函数3.2 遍历访问相关成员函数3.3 信息插入相关成员函数3.4 信息删除3.5 信息查找3.6 非成员函数3.7 杂项成员函数 4. 补充知识 1. 引子 通过对string类的初步学习,没有对知识进行较…

记一次 .NET某施工建模软件 卡死分析

一:背景 1. 讲故事 前几天有位朋友在微信上找到我,说他的软件卡死了,分析了下也不知道是咋回事,让我帮忙看一下,很多朋友都知道,我分析dump是免费的,当然也不是所有的dump我都能搞定&#xff…

旅游行业分析及媒体邀约资源汇总

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 酒店旅游行业分析及媒体邀约资源汇总是两个相对独立但又相互关联的领域。下面将分别对这两个方面进行概述。 酒店旅游行业分析 1. 市场概况 市场规模:评估市场的总价值、增长…