Zookeeper HA相关配置

 

## 使用zk做HA
high-availability: zookeeper
## zk地址
high-availability.zookeeper.quorum: node1:2181,node2:2181,node3:2181
## flink在zk下的工作路径
high-availability.zookeeper.path.root: /flink
## 任务所在的HA路径
high-availability.cluster-id: /default
## 保存元数据到文件系统
high-availability.storageDir: hdfs:///flink/recovery## --任务运行在YARN上的配置--
## applicationMaster重试的次数,默认为1,当application master失败的时候,该任务不会重启。
## 设置一个比较大的值的话,yarn会尝试重启applicationMaster。
yarn.application-attempts: 10
## flink是否应该重新分配失败的taskmanager容器。默认是true。
yarn.reallocate-failed:true
## applicationMaster可以接受的容器最大失败次数,达到这个参数,就会认为yarn job失败。
## 默认这个次数和初始化请求的taskmanager数量相等(-n 参数指定的)。
yarn.maximum-failed-containers:1

flink使用Zookeeper做HA

flink的ResourceManager、Dispatcher、JobManager、WebServer组件都需要高可用保证,同时flink高可用还需要持久化checkpoint的元数据信息,保留最近一次已经完成的checkpoint等工作,其中最重要的就是组件的leader选举、leader状态跟踪。本次抽取出Flink使用zk实现leader选举、leader状态跟踪代码,学习下flink是如何使用curator的。类之间的关系如下:

 

ZooKeeperHaServices是HighAvailabilityServices基于zookeeper的实现,通过使用ZooKeeperUtils类来创建组件的LeaderRetrievalService以及LeaderElectionService。

LeaderRetrievalService用来跟踪leader的变化,当发现leader地址变化时,要通知依赖它的组件去依赖新的leader。比如getResourceManagerLeaderRetriever方法,flink会监听zk的/leader/resource_manager_lock节点内容变化,内容是rm的leader地址和leaderUUID,而taskmanger调用该服务的start方法传递了一个LeaderRetrievalListener。如果节点内容发生变化,意味着rm的leader地址发生变化,那么的LeaderRetrievalListener的notifyLeaderAddress就会通知taskmanger去新的ResourceManager地址进行注册。zk实现该功能使用的是curator的NodeCache并重写了nodeChanged方法。

LeaderElectionService用来进行leader选举工作,当节点成为leader后会调用LeaderContender的grantLeadership方法。以ResourceManagerLeaderElection为例,flink会在zk的/leaderlatch/resource_manager_lock路径下创建临时节点,创建成功的rm节点成为leader触发rm的grantLeadership,最终将当前地址和UUID写入/leader/resource_manager_lock中,这样就触发了LeaderRetrievalService服务。zk实现leader选举使用的是curator的LeaderLatch并重写了isLeader和notLeader方法。同时使用NodeCache监听/leader/resource_manager_lock内容变化,确保新leader地址和UUID成功写入节点。

LeaderRetrievalListener对LeaderRetrievalService的leader地址变化做出响应,通过notifyLeaderAddress传递新leader地址。

LeaderContender对LeaderElectionService的节点角色发生变化做出响应,通过grantLeadership和revokeLeadership进行leader的授权和撤销工作。

一个集群目录下的zk结构如下图所示:

 

zk文件系统目录

flink相关源码

简单的走一下流程,看看集群启动时是如何创建ZooKeeperHaServices的。

集群启动入口ClusterEntrypoint

  • 根据集群的部署模式session or perjob由对应的子类调用ClusterEntrypoint的startCluster方法启动集群,接着会先调用initializeServices方法,启动集群相关的组件信息。这里只看启动haServices部分。

 

public void startCluster() throws ClusterEntrypointException {SecurityContext securityContext = installSecurityContext(configuration);securityContext.runSecured((Callable<Void>) () -> {runCluster(configuration);return null;});
}protected void initializeServices(Configuration configuration) {ioExecutor = Executors.newFixedThreadPool(Hardware.getNumberCPUCores(),new ExecutorThreadFactory("cluster-io"));haServices = createHaServices(configuration, ioExecutor);blobServer = new BlobServer(configuration, haServices.createBlobStore());blobServer.start();}
}
  • 根据high-availability配置创建ZooKeeperHaServices,默认情况下为NONE。

 

protected HighAvailabilityServices createHaServices(Configuration configuration,Executor executor) throws Exception {//创建HA服务时不需要地址解析return HighAvailabilityServicesUtils.createHighAvailabilityServices(configuration,executor,HighAvailabilityServicesUtils.AddressResolution.NO_ADDRESS_RESOLUTION);
}//根据传递的high-availability配置,选择创建哪种HA服务,默认为NONE
public static HighAvailabilityServices createHighAvailabilityServices(Configuration configuration,Executor executor,AddressResolution addressResolution) throws Exception {//获取high-availability配置 如:zookeeperHighAvailabilityMode highAvailabilityMode = LeaderRetrievalUtils.getRecoveryMode(configuration);switch (highAvailabilityMode) {case NONE:final Tuple2<String, Integer> hostnamePort = getJobManagerAddress(configuration);final String jobManagerRpcUrl = AkkaRpcServiceUtils.getRpcUrl(hostnamePort.f0,hostnamePort.f1,JobMaster.JOB_MANAGER_NAME,addressResolution,configuration);final String resourceManagerRpcUrl = AkkaRpcServiceUtils.getRpcUrl(hostnamePort.f0,hostnamePort.f1,ResourceManager.RESOURCE_MANAGER_NAME,addressResolution,configuration);final String dispatcherRpcUrl = AkkaRpcServiceUtils.getRpcUrl(hostnamePort.f0,hostnamePort.f1,Dispatcher.DISPATCHER_NAME,addressResolution,configuration);final String address = checkNotNull(configuration.getString(RestOptions.ADDRESS),"%s must be set",RestOptions.ADDRESS.key());final int port = configuration.getInteger(RestOptions.PORT);final boolean enableSSL = SSLUtils.isRestSSLEnabled(configuration);final String protocol = enableSSL ? "https://" : "http://";return new StandaloneHaServices(resourceManagerRpcUrl,dispatcherRpcUrl,jobManagerRpcUrl,String.format("%s%s:%s", protocol, address, port));case ZOOKEEPER://元数据存储服务  我们通常使用FileSystemBlobStore 路径就是 high-availability.storageDir: hdfs:///flink/recoveryBlobStoreService blobStoreService = BlobUtils.createBlobStoreFromConfig(configuration);//  使用 ZooKeeper做HA服务return new ZooKeeperHaServices(ZooKeeperUtils.startCuratorFramework(configuration),executor,configuration,blobStoreService);case FACTORY_CLASS:return createCustomHAServices(configuration, executor);default:throw new Exception("Recovery mode " + highAvailabilityMode + " is not supported.");}
}
  • ZooKeeperHaServices主要提供了创建LeaderRetrievalService和LeaderElectionService方法,并给出了各个服务组件使用的ZK节点名称。别看是以_lock结尾,这个节点名称既在leaderlatcher做leader选举的分布式锁产生的路径,又在leader目录下用来存放leader的地址信息。

 


private static final String RESOURCE_MANAGER_LEADER_PATH = "/resource_manager_lock";
private static final String DISPATCHER_LEADER_PATH = "/dispatcher_lock";
private static final String JOB_MANAGER_LEADER_PATH = "/job_manager_lock";
//  web展示服务
private static final String REST_SERVER_LEADER_PATH = "/rest_server_lock";// 创建ResourceManagerLeaderRetriever,对RM的leader地址变化进行跟踪
public LeaderRetrievalService getResourceManagerLeaderRetriever() {return ZooKeeperUtils.createLeaderRetrievalService(client, configuration, RESOURCE_MANAGER_LEADER_PATH);
}// 创建ResourceManagerLeaderElectionService,对RMleader挂掉后重新进行选举
public LeaderElectionService getResourceManagerLeaderElectionService() {return ZooKeeperUtils.createLeaderElectionService(client, configuration, RESOURCE_MANAGER_LEADER_PATH);
}
  • ZooKeeperUtils创建LeaderRetrievalService流程。
  1. 接收curator客户端以及服务在zk下的节点路径,创建出ZooKeeperLeaderRetrievalService(ZKLRS)对象。
  2. ZKLRS这个对象就是对zk节点的内容进行了监听,当内容发生变化时,通知给通过start方法传递过来的LeaderRetrievalListener。

 

public void start(LeaderRetrievalListener listener) throws Exception {synchronized (lock) {//leader发生变化时,通知对应的LeaderRetrievalListenerleaderListener = listener;// 异常时调用当前对象的unhandledError方法client.getUnhandledErrorListenable().addListener(this);// 使用NodeCache监听节点内容变化cache.getListenable().addListener(this);cache.start();// 对会话连接状态进行跟踪client.getConnectionStateListenable().addListener(connectionStateListener);running = true;}
}
  1. 通过重写nodeChanged方法,来获取Leader变更后的地址,并传递新的地址

 

public void nodeChanged() throws Exception {synchronized (lock) {if (running) {try {LOG.debug("Leader node has changed.");ChildData childData = cache.getCurrentData();String leaderAddress;UUID leaderSessionID;if (childData == null) {leaderAddress = null;leaderSessionID = null;} else {byte[] data = childData.getData();if (data == null || data.length == 0) {leaderAddress = null;leaderSessionID = null;} else {ByteArrayInputStream bais = new ByteArrayInputStream(data);ObjectInputStream ois = new ObjectInputStream(bais);// leader 地址leaderAddress = ois.readUTF();// leader uuidleaderSessionID = (UUID) ois.readObject();}}// leader 地址发生变化if (!(Objects.equals(leaderAddress, lastLeaderAddress) &&Objects.equals(leaderSessionID, lastLeaderSessionID))) {lastLeaderAddress = leaderAddress;lastLeaderSessionID = leaderSessionID;//  传递新的leaderAddress和leaderSessionIDleaderListener.notifyLeaderAddress(leaderAddress, leaderSessionID);}} catch (Exception e) {leaderListener.handleError(new Exception("Could not handle node changed event.", e));throw e;}} else {LOG.debug("Ignoring node change notification since the service has already been stopped.");}}
}
  • ZooKeeperUtils创建ZooKeeperLeaderElectionService流程。
  1. 传递leader所在的zk路径、选举时临时节点创建的zk路径。之所以要传递leader节点是要在新leader产生时,将新leader的地址和uuid写入。

 

public static ZooKeeperLeaderElectionService createLeaderElectionService(final CuratorFramework client,final Configuration configuration,final String pathSuffix) {// 在leaderlatch节点下进行选举final String latchPath = configuration.getString(HighAvailabilityOptions.HA_ZOOKEEPER_LATCH_PATH) + pathSuffix;// leader节点    final String leaderPath = configuration.getString(HighAvailabilityOptions.HA_ZOOKEEPER_LEADER_PATH) + pathSuffix;return new ZooKeeperLeaderElectionService(client, latchPath, leaderPath);
}
  1. 通过调用start方法传递LeaderContender,并开启leader选举。

 

public void start(LeaderContender contender) throws Exception {synchronized (lock) {// 绑定异常处理监听器client.getUnhandledErrorListenable().addListener(this);// 传递Contender竞争者leaderContender = contender;//开启leader选举服务,成为leader的节点会触发isleaderleaderLatch.addListener(this);leaderLatch.start();//监听leader节点内容变化cache.getListenable().addListener(this);cache.start();client.getConnectionStateListenable().addListener(listener);running = true;}
}
  1. 当某一Contender成为leader后,会触发grantLeadership传递新leader的uuid进行授权,并调用LeaderElectionService的confirmLeaderSessionID,将新leader地址写入leader节点。

 

public void confirmLeaderSessionID(UUID leaderSessionID) {// 是Leaderif (leaderLatch.hasLeadership()) {// check if this is an old confirmation callsynchronized (lock) {if (running) {if (leaderSessionID.equals(this.issuedLeaderSessionID)) {confirmedLeaderSessionID = leaderSessionID;// 将confirmLeaderSessionID写到 leader目录下writeLeaderInformation(confirmedLeaderSessionID);}}}} 
}
  1. 写入时会触发当前对象的nodeChanged方法,该方法用来确保新leader地址和uuid成功写入。

 

public void nodeChanged() throws Exception {try {// leaderSessionID is null if the leader contender has not yet confirmed the session IDif (leaderLatch.hasLeadership()) { // leadersynchronized (lock) {if (running) {// 当选为leader 已经被确认if (confirmedLeaderSessionID != null) {ChildData childData = cache.getCurrentData();//  没写进去,再写一次if (childData == null) {if (LOG.isDebugEnabled()) {LOG.debug("Writing leader information into empty node by {}.",leaderContender.getAddress());}writeLeaderInformation(confirmedLeaderSessionID);} else {byte[] data = childData.getData();if (data == null || data.length == 0) {// the data field seems to be empty, rewrite informationwriteLeaderInformation(confirmedLeaderSessionID);} else {ByteArrayInputStream bais = new ByteArrayInputStream(data);ObjectInputStream ois = new ObjectInputStream(bais);String leaderAddress = ois.readUTF();UUID leaderSessionID = (UUID) ois.readObject();if (!leaderAddress.equals(this.leaderContender.getAddress()) ||(leaderSessionID == null || !leaderSessionID.equals(confirmedLeaderSessionID))) {writeLeaderInformation(confirmedLeaderSessionID);}}}}} else {// leader未确认confirmedLeaderSessionIDLOG.debug("Ignoring node change notification since the service has already been stopped.");}}}} catch (Exception e) {...}
}

writeLeaderInformation用来写入leader地址和uuid,写入时先判断leader节点是否由当前leader会话创建的,如果不是则删除后重写创建。

 

protected void writeLeaderInformation(UUID leaderSessionID) {try {ByteArrayOutputStream baos = new ByteArrayOutputStream();ObjectOutputStream oos = new ObjectOutputStream(baos);//  leader 地址oos.writeUTF(leaderContender.getAddress());//  leader的 UUIDoos.writeObject(leaderSessionID);oos.close();boolean dataWritten = false;while (!dataWritten && leaderLatch.hasLeadership()) {Stat stat = client.checkExists().forPath(leaderPath);if (stat != null) {long owner = stat.getEphemeralOwner();long sessionID = client.getZookeeperClient().getZooKeeper().getSessionId();//节点由当前会话创建if (owner == sessionID) {try {client.setData().forPath(leaderPath, baos.toByteArray());dataWritten = true;} catch (KeeperException.NoNodeException noNode) {// node was deleted in the meantime}} else {try {//  不是当前节点创建则先删除client.delete().forPath(leaderPath);} catch (KeeperException.NoNodeException noNode) {// node was deleted in the meantime --> try again}}} else {try {client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath(leaderPath,baos.toByteArray());dataWritten = true;} catch (KeeperException.NodeExistsException nodeExists) {// node has been created in the meantime --> try again}}}} 
}

本次学习了flink如何使用curator来操作zk节点,实现leader选举和leader状态跟踪。LeaderRetrievalListener和LeaderContender两个接口更像是这一部分功能的输入和输出,来跟踪leader的变化情况。而中间部分对zk节点的操作和状态监听,则可以抽取出来在自己的项目中使用。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 为什么很多自学成才的3dmax不能成为专业的游戏建模者?

    3DMAX是一款巨大的软件,广泛应用于影视动画、建筑设计、广告、游戏、科研等领域很多初学者都想通过自学进入模特行业,因为他们不想花钱学习今天的技能,他们总是认为花钱的技能是不值得的,所以他们慢慢学习了半年,看看能不能学到东西。 但是自学技能,很难找到一份游戏建模…...

    2024/4/20 1:17:52
  2. [网络安全学习篇75]:渗透测试实战-DC-7-靶机入侵

    引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足;对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以我就想到了通过写博客(课程笔记)的形式去学习它,虽然写博客会让…...

    2024/4/16 20:49:06
  3. 阿里P8终于总结出:Redis核心原理+实战+面试题答案pdf,内含视频

    前言Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。redis是一个key-value存储系统。和Memcached类似,…...

    2024/4/24 7:19:41
  4. Josh 的学习笔记之数字通信(Part 1——信号和频谱)

    文章目录1. 数字通信信号处理1.1 为什么要进行数字化1.2 典型通信系统的方框图1.3 基本的数字通信术语1.4 数字通信与模拟通信的性能比较2. 信号分类2.1 确定信号和随机信号2.2 周期信号和非周期信号2.3 连续信号和离散信号2.4 能量信号和功率信号2.5 单位冲激函数3. 频谱密度3…...

    2024/4/24 6:40:42
  5. 40K成功入职:六年开发终获小米Offer(附面经+面试题+答案详解)

    前言从面试到现在已有一个多月了,面试的问题还记得八九成。端午节前刚从上家离职趁着假期有空把面试问题总结一下。主要是记录一下问题,答案三言两语写不完,网上有蛮多文章讲的挺好所以本文不再展开。技术栈java, golang, js, python 主要是前面两个。面试总结其他Java团队l…...

    2024/4/24 7:19:40
  6. Win10 设备管理驱动(删除不存在的网络设备等)

    原文链接:https://tl8517.com/win10-devicemanagement/不知你的电脑Internet访问的名称后面的数字增加到数字几了?这是电脑插入不同终端的网线引起的。而且电脑平时使用过程中会添加一些额外的网卡,网卡设备移除后,系统安装的驱动程序并没有随着移除而卸载。这个问题困扰我…...

    2024/4/23 23:47:32
  7. 笔记——单例模式

    单例模式 所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。在Java,一般常用在工具类的实现或创建对象需要消耗资源。 特点类构造器私有 持有自己类型的属性 对外提供获取实例的静态方法懒汉模式 线程不安全,延迟初始化 public…...

    2024/4/24 7:19:44
  8. 软件工程概念汇总

    软件工程:软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。软件工程的本质特性:(1)软件工程关注大型程序的构造(2)软件…...

    2024/5/2 10:33:41
  9. vue单页应用中的样式管理

    vue单页应用中的样式管理vue单页应用中的样式管理1.特定的class名称(推荐)2.添加scoped3.使用 行内样式 style 属性进行样式设置 vue单页应用中的样式管理 vue常被用来做一些单页应用,这时就会遇到样式全局化的问题。稍微一不注意,样式就会在整个项目中生效。尤其在修改别人的…...

    2024/4/24 7:19:38
  10. 2020互联网Java后端面试必备解析—Redis23题

    文章目录一、Redis数据结构相关1.Redis 支持的数据类型2.Redis有哪些常用的命令?3.Redis有哪些应用场景二、Redis事务1.什么是事务2.为什么redis事务不具备原子性3. Redis 事务相关命令有哪些?三、Redis持久化和缓存管理1.Redis持久化是什么?2.Redis 持久化机制有哪些?3.Re…...

    2024/4/24 7:19:34
  11. 商业化广告策略随笔

    导读:随着互联网的高速发展,在线广告的市场规模水涨船高,成为互联网主流的变现模式之一,也催生了一批广告巨头,如国外的Google、Facebook,国内的字节跳动、阿里、百度、腾讯,广告在整个营收中占据着重要的位置。本文将从广告动态化、目标转化出价、数据管理平台 ( DMP )…...

    2024/4/24 7:19:34
  12. SpringMVC之SSM整合案例(七)

    文章目录 (一)整合说明 (二)搭建环境 (三)编写Spring框架 (四)编写SpringMVC框架 (五)Spring整合SpringMVC的框架 (六)编写MyBatis框架 (七)编写MyBatis框架测试保存的方法 (八)Spring整合MyBatis框架 (九)Spring整合MyBatis框架配置事务 (一)整合说明(二)搭建环境 首先创建数据…...

    2024/4/24 7:19:34
  13. ffmpeg简单分析系列----音频(audio)

    文章目录ffmpeg简单分析系列----音频(audio)采样格式通道布局(channel layout)常用apiint64_t av_get_default_channel_layout(int nb_channels)int av_get_channel_layout_nb_channels(uint64_t channel_layout)int av_get_channel_layout_channel_index(uint64_t channel…...

    2024/4/24 7:19:34
  14. 微服务配置中心

    前言随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址。对程序配置的期望值也越来越高:配置修改后实时生效,分环境、分集群管理配置,代码安全、审核机制。在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发…...

    2024/4/24 7:19:30
  15. 树(2)——hdu 4585少林

    题干: 少林寺的第一个和尚是方丈,作为功夫大师,他规定每个加入少林的年轻和尚,要选一个老和尚来一场功夫战斗。 每个和尚有一个独立的id和独立的战斗等级grade,新和尚可以选择跟他的战斗等级最接近的老和尚战斗。 方丈的id是1,战斗等级是10^9。他丢失了战斗记录,不过他记…...

    2024/4/24 7:19:30
  16. 计算机系统 大作业 程序人生-Hello’s P2P

    计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 环境科学与工程 学   号 1182700305 班   级 1827003 学 生 蒋泓轩 指 导 教 师 史先俊 计算机科学与技术学院 2020年3月 摘 要 本文以hello.c文件为初…...

    2024/4/16 20:48:36
  17. SVN的学习(SVN的简单说明、SVN的安装与配置、SVN与GIT的区别)

    一、SVN的简单说明 SVN是subversion的缩写,属于集中化的版本控制系统,是一个开放源代码的版本控制系统,SVN不是分布式的 工作场景 进入公司需要做的关于开发的第一件事, 就是向项目经理索要SVN服务器地址 +用户名+密码 角色解释服务器: 用于存放所有版本的代码,供客户端上传…...

    2024/4/20 5:30:26
  18. OpenWRT 配置远程ssh及访问WEB页面

    原文链接:https://tl8517.com/openwrt-sshweb/OpenWRT 配置远程ssh及访问WEB页面。启动ssh,配置防火墙,配置端口转发,远程连接命令。远程ssh:1.开启SSH访问:系统-管理权-ssh访问端口:默认或自定设置勾选网关端口,允许远程主机连接到本地 SSH 转发端口2.设置防火墙区域设…...

    2024/5/3 3:06:44
  19. 服务器的“服务器”,enginx之于分布式部署的创新意义:使任何服务器程序秒变集群

    本文关键字:nginx,元服务器,单机集群,分布式集群,集群引擎 虽然webstack往往被做成集群来进行,但即使存在那样的必要也很难为随便找到的一组服务器搭个集群,enginx就是用来做这事的,继《发布enginx:基于openresty,一个前后端统一,生态共享的webstack实现》,进一步地,en…...

    2024/4/16 20:49:54
  20. 利用citrix xenapp and xendesktop建立你的云桌面

    本文关键字:云办公。真正可用的个人云桌面,云下载云播放。GPO dns,xendeskop storeweb无法完成您的请求 其实云电脑桌面,虚拟桌面vdi,瘦客户端这样的东西出现很久了,只是它们从来没有像今天的疫情时代一样让人对他们更为关注。一般来说谈到云电脑人们都会想到最初的vps,正…...

    2024/5/3 2:33:57

最新文章

  1. 【介绍下Apache的安装与目录结构】

    &#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

    2024/5/3 12:46:48
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 蓝桥杯刷题_day7_动态规划_路径问题

    文章目录 DAY7下降路径最小和最小路径和地下城游戏 DAY7 下降路径最小和 【题目描述】 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元…...

    2024/5/2 8:24:26
  4. Java设计模式详解:单例模式

    设计模式详解&#xff1a;单例模式 文章目录 设计模式详解&#xff1a;单例模式一、单例模式的原理二、单例模式的实现推荐1、饿汉模式2、静态内部类 三、单例模式的案例四、单例模式的使用场景推荐总结 一、单例模式的原理 单例模式听起来很高大上&#xff0c;但其实它的核心…...

    2024/4/26 8:59:40
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57