Eureka和Zookeeper的区别

2023-11-12

Eureka和Zookeeper的区别

● Mysql,Oracle,SqlServer等关系型数据库遵循的原则是 ACID 原则;
即 :A: 原子性 C: 一致性 I: 独立性 D: 持久性

● Redis,Mogodb 等非关系型数据库遵循的原则是 CAP 原则;
即: C: 一致性, A: 可用性, P: 分区容错性(服务对网络分区故障的容错性)

CAP理论:

在任何分布式系统中,最多只能实现两点(即 CP 或者 AP),而由于当前网络延迟故障会导致丢包等问题,所以分区容错性是必须实现的,也就是NoSql 数据库 P 必须得有,剩余的一致性可用性只能二选一,没有NoSql数据库能同时实现三点

Eureka和Zookeeper就是CAP定理实现

Eureka概述

Eureka是spring Cloud中的一个负责服务注册与发现的组件, 遵循CAP理论中的 A(可用性)和 P(分区容错性)
一个Eureka中分为 eureka servereureka client 其中 eureka server 作为服务的注册与发现中心,eureka client 既可以作为服务的生产者,也可以作为服务的消费者。
在这里插入图片描述

上图中,我们首先会启动一个或多个Eureka server,这些Eureka server同步保留着所有的服务信息。然后我们启动不同的 eureka client,向服务端发起服务注册和服务查询。不论向那个eureka server进行注册,最终都会同步给所有配置好的eureka server。我们所获取的服务信息也同样都是一致的。

Eureka注册中心实现

step1: 引入依赖

 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

step2: 在启动类中添加注解 @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class ServiceRegistryApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceRegistryApplication.class, args);
    }
}

step3: 在配置文件中配置

#服务端口
server.port=8077
#服务名称
spring.application.name=eureka-server
#服务地址
eureka.instance.hostname=localhost

#不向注册中心注册自己 (true表示向注册中心注册自己)
eureka.client.register-with-eureka=false
#取消检索服务
eureka.client.fetch-registry=false
#开启注册中心的保护机制,默认是开启
eureka.server.enable-self-preservation=true
#设置保护机制的阈值,默认是0.85。
eureka.server.renewal-percent-threshold=0.5

#注册中心路径,如果有多个eureka server,在这里需要配置其他eureka server的地址,用","进行区分,如"http://address:8888/eureka,http://address:8887/eureka"
eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka

step4: 进入http://localhost:8077 查看注册中心

Eureka client服务注册(生产者)

step1: 引入依赖

<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

step2: 在启动类中添加注解 @EnableEurekaClient

@SpringBootApplication
// 注意:服务端配置的是EnableEurekaServer,客户端配置的是EnableEurekaClient
@EnableEurekaClient
public class UserServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServerApplication.class, args);
    }
}

step3: 配置

#服务端口
server.port=7001
#服务名称
spring.application.name=user
#服务地址
eureka.instance.hostname=localhost

#注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔
eureka.client.serviceUrl.defaultZone=http://localhost:8077/eureka
#心跳间隔5s,默认30s。每一个服务配置后,心跳间隔和心跳超时时间会被保存在server端,不同服务的心跳频率可能不同,server端会根据保存的配置来分别探活
eureka.instance.lease-renewal-interval-in-seconds=5
#心跳超时时间10s,默认90s。从client端最后一次发出心跳后,达到这个时间没有再次发出心跳,表示服务不可用,将它的实例从注册中心移除
eureka.instance.lease-expiration-duration-in-seconds=10

step4: 创建一个controller,用来提供一个服务,并填写返回值

@RestController
public class UserController {
    @GetMapping("users/{id}")
    public String getUser(@PathVariable("id") String id) {
        System.out.println("接收到请求[/users/" + id + "]");
        return "testUser";
    }
}

step5: 运行启动类,查看打印出来的日志信息,红框内容表示用eureka注册服务user,状态为up
在这里插入图片描述

Eureka client 服务注册(消费者)

在eureka中,实际上是不区分服务的消费者和服务生产者的,一个服务的消费者,同样也可以是一个服务的生产者。因此我们首先要做的就是再创建一个eureka client。这个enreka client命名为roleServer
step1: 创建eureka client

<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

step2: 在启动类中添加注解 @EnableEurekaClient

@SpringBootApplication
// 注意:服务端配置的是EnableEurekaServer,客户端配置的是EnableEurekaClient
@EnableEurekaClient
public class UserServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserServerApplication.class, args);
    }
}

step3: 配置

#服务端口
server.port=7001
#服务名称
spring.application.name=user
#服务地址
eureka.instance.hostname=localhost

#注册中心路径,表示我们向这个注册中心注册服务,如果向多个注册中心注册,用“,”进行分隔
eureka.client.serviceUrl.defaultZone=http://localhost:8077/eureka
#心跳间隔5s,默认30s。每一个服务配置后,心跳间隔和心跳超时时间会被保存在server端,不同服务的心跳频率可能不同,server端会根据保存的配置来分别探活
eureka.instance.lease-renewal-interval-in-seconds=5
#心跳超时时间10s,默认90s。从client端最后一次发出心跳后,达到这个时间没有再次发出心跳,表示服务不可用,将它的实例从注册中心移除
eureka.instance.lease-expiration-duration-in-seconds=10

step4: 创建一个配置类,创建RestTemplate来进行服务间的连接

@Configuration
public class RestConfig {
    @Bean
    @LoadBalanced //负载均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

step5: 在Controller中进行服务的调用

@RestController
public class RoleController {

    // 这里配置的是我们要调用的服务实例名,我们要调用USER服务,因此这里的地址是USER
    private String rest_url_prefix = "http://user";
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("roles/{id}")
    public String getRole(@PathVariable("id") String id) {
        System.out.println("接收到请求[/roles/" + id + "]");

        // 调用USER服务中的/users/{id}服务
        return restTemplate.getForObject(rest_url_prefix + "/users/" + id, String.class);
    }
}

ZooKeeper概述

zookeeper是一个开源的分布式应用程序协调系统,简称ZK,它是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现数据的发布/订阅、负载均衡、名称服务、分布式协调/通知、集群管理、Master选举、分布式锁、和分布式队列等
● ZK 允许分布式进程通过共享的分层命名空间相互协调,该命名空间的组织方式与标准文件系统类似,名称空间由数据寄存器(在ZK中,称为Znodes)组成。这些寄存器类似于文件和目录,与设计用于存储的典型文件系统有所不同, zookeeper数据保存在内存中,这意味着zookeeper可以实现高吞吐量和低延迟数。zookeeper实现非常注重高性能,高可用性,严格有序的访问,不会成为单点故障并且可以实现复杂的同步。

Zookeeper集群概念

集群角色:
● Leader: 领导者,通过集群选举产生的主节点,负责集群的读与写工作。
● Follower: 追随者,有资格参与集群选举,但未能被成功选举为Leader的备用选举节点,负责集群的读服务。
● Observer: 观察者,没有资格参与集群选举,负责集群的读服务,同步Leader状态。 Observer的目的在于扩展系统, 提高读取速度

注意: 当Leader故障之后ZooKeeper集群会通过Follower选举新的Leader,如果老的Leader故障修复之后,会再次接管集群中的Leader脚本,新的Leader则会退回Follower角色,一般集群中无需设置Observer节点。

Follower主要有四个功能:
 • 1. 向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);
 • 2 .接收Leader消息并进行处理;
 • 3 .接收Client的请求,如果为写请求,发送给Leader进行投票;
 • 4 .返回Client结果;
 
Follower的消息循环处理如下几种来自Leader的消息:
 • 1 .PING消息: 心跳消息;
 • 2 .PROPOSAL消息:Leader发起的提案,要求Follower投票;
 • 3 .COMMIT消息:服务器端最新一次提案的信息;
 • 4 .UPTODATE消息:表明同步完成;
 • 5 .REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息;
 • 6 .SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的更新。
 
Observer  
• Zookeeper需保证高可用和强一致性;
• 为了支持更多的客户端,需要增加更多Server;
• Server增多,投票阶段延迟增大,影响性能;
• 权衡伸缩性和高吞吐率,引入Observer
• Observer不参与投票;
• Observers接受客户端的连接,并将写请求转发给leader节点;
• 加入更多Observer节点,提高伸缩性,同时不影响吞吐率;

Zookeeper的读写机制

  • zookeeper是一个有多个server组成的集群
  • 一个leader,多个follower
  • 每个server保存一份数据副本
  • 全局数据一致
  • 分布式读写
  • 更新请求转发,由leader实施

Zookeeper工作原理

» Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式广播模式

» 当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。 状态同步保证了leader和server具有相同的系统状态。

» 一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即进入广播状态。 这时候当一个server加入zookeeper服务中,它会在恢复模式下启动, 发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大部分 的followers支持。

» 广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。 所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。

» 当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确的状态。

» 每个Server启动以后都询问其它的Server它要投票给谁。

» 对于其他server的询问,server每次根据自己的状态都回复自己推荐的leader的id和上一次处理事务的zxid(系统启动时每个server都会推荐自己)
» 收到所有Server回复以后,就计算出zxid最大的哪个Server,并将这个Server相关信息设置成下一次要投票的Server。

» 计算这过程中获得票数最多的的sever为获胜者,如果获胜者的票数超过半数,则该server被选为leader。否则,继续这个过程,直到leader被选举出来

» leader就会开始等待server连接

» Follower连接leader,将最大的zxid发送给leader

» Leader根据follower的zxid确定同步点

» 完成同步后通知follower 已经成为uptodate状态

» Follower收到uptodate消息后,又可以重新接受client的请求进行服务了

Zookeeper集群的数目

• Leader选举算法采用了Paxos协议;

• Paxos核心思想:当多数Server写成功,则任务数据写成功如果有3个Server,则两个写成功即可;如果有4或5个Server,则三个写成功即可。

• Server数目一般为奇数(3、5、7)如果有3个Server,则最多允许1个Server挂掉;如果有4个Server,则同样最多允许1个Server挂掉由此, 我们看出3台服务器和4台服务器的的容灾能力是一样的,所以为了节省服务器资源,一般我们采用奇数个数,作为服务器部署个数

Zookeeper 的数据模型

» 层次化的目录结构,命名符合常规文件系统规范

» 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

» 节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点

» Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本
» 客户端应用可以在节点上设置监视器

» 节点不支持部分读写,而是一次性完整读写

Zookeeper 的节点

» Znode有两种类型,短暂的(ephemeral)和持久的(persistent)

» Znode的类型在创建时确定并且之后不能再修改

» 短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点

» 持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除

Zookeeper有四种形式的目录节点

» PERSISTENT: 持久的
» EPHEMERAL: 暂时的
» PERSISTENT_SEQUENTIAL: 持久化顺序编号目录节点
» EPHEMERAL_SEQUENTIAL: 暂时化顺序编号目录节点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eureka和Zookeeper的区别 的相关文章

  • 为分布式做准备吧——分布式服务架构设计概述

    文章目录 分布式服务框架设计架构原理 通信框架 长连接还是短链接 BIO还是NIO 序列化与反序列化 协议栈 服务路由 基于服务注册中心的订阅发布 集群容错 服务降级 分布式消息跟踪 分布式服务框架设计架构原理 通常 分布式服务框架的架构可
  • 只要 3 个注解,优雅的实现微服务鉴权!

    原创 不才陈某 码猿技术专栏 2023 04 17 08 50 发表于山东 大家好 我是不才陈某 前面的文章中介绍了网关集成Spring Security实现网关层面的统一的认证鉴权 有不清楚的可以看之前的文章 实战干货 Spring Cl
  • 【云原生 • Prometheus】Prometheus 注册中心Eureka服务发现原理

    云原生 Prometheus Prometheus 注册中心Eureka服务发现原理 云原生 Prometheus Prometheus 注册中心Eureka服务发现原理 概述 Eureka协议实现 总结 云原生 Prometheus Pr
  • 【HBZ分享】数仓里面的概念-宽表-维度表-事实表概念讲解

    数仓概念 1 度量值 可被统计的 比如 次数 销量 营销额 订单表中的下单金额等可以统计的值叫度量值 2 维度表 1 对事实描述的信息 每一张表都对应现实世界中的一个对象或概念 比如 用户 商品 日期 地区维度 2 比如要分析商品的销售情况
  • java高级开发面试题总结

    面试题总结 JAVA高级工程师 近期考虑换工作的问题 于是投简历面试 面试5家公司的高级Java工程师 有4家给了我offer 想着总结一下面试经验 方便最近正在寻求机会的你们 一 无笔试题 不知道是不是职位原因还是没遇到 面试时 都不需要
  • 分布式锁解决方案_Zookeeper分布式锁原理

    通过召zk实现分布式锁可靠性时最高的 公平锁和可重入锁的原理 取水秩序 1 取水之前 先取号 2 号排在前面的 就可以先取水 3 先到的排在前面 那些后到的 一个一个挨着 在井边排成一队 公平锁 这种排队取水模型 就是一种锁的模型 什么是可
  • zookeeper 搭建教程(完整版)

    zookeeper 搭建教程 完整版 1 解压zookeeper文件 root master tar zxvf opt software apache zookeeper 3 5 7 bin tar gz C opt module 修改文件
  • 【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付

    在前面我们业务功能篇98 99中 我们介绍了电商项目中的订单模块服务 那么最后就是需要进行支付动作 那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能 来进一步完成订单提交后的支付动作 支付宝的接口使用可以登录官网开发指南详情去了解
  • 世界两万英尺范围内,均分布有运维体系架构

    几年前 Microsoft 与技术领先的社区专家合作发布了一本受欢迎的指导书 标题为 适用于容器化 NET 应用程序的 NET 微服务 深入探讨了构建分散式应用程序的原则 模式和最佳做法 其中包括一个功能齐全的微服务参考应用程序 展示了体系
  • 微服务项目之项目简介

    目录 项目模式 技术栈 项目架构图 模块 主模块 项目模式 电商模式 市面上有5种常见的电商模式 B2B B2C C2B C2C O2O 1 B2B模式 B2B Business to Business 是指 商家与商家建立的商业关系 如
  • Nacos、ZooKeeper和Dubbo的区别

    Nacos ZooKeeper和Dubbo是三个不同的分布式系统组件 它们之间有以下几点区别 功能定位 Nacos主要提供服务发现 配置管理和服务治理等功能 而ZooKeeper主要是分布式协调服务 提供了分布式锁 分布式队列等原语 Dub
  • 客户机操作系统已禁用 CPU。请关闭或重置虚拟机。解决方法

    今天在用VMware安装CentOS7报了这个错误 在网上找半天都没解决 最后换一个地址下的镜像就能正常安装了 Index of centos 7 9 2009 isos x86 64
  • 【SpringCloud】整合Consul+OpenFeign实现微服务+负载均衡(下)

    一 代码 由于篇幅有限 代码见上一篇文章 https blog csdn net forest long article details 129287941 分别启动Consul Service provider Service consu
  • 10 微服务流程规范篇:高速迭代的研发过程需要怎样的规范?

    上一课时 我讲解了微服务质量保障体系的全景概览 本课时我主要讲解流程规范 高速迭代的研发过程需要怎样的规范呢 业务流程阶段 众所周知 产品研发是为业务服务的 在深入讲解产品研发流程之前 我们先整体看下业务流程 分为 3 个阶段 产品研发阶段
  • 若依微服务版本代码生成对sqlserver的支持

    目录 前言 一 后端 1 pom依赖 2 yml配置配置数据源 3 新增service impl 注意 4 新增mapper接口
  • 微服务测试是什么?

    微服务测试是一种特殊的 测试类型 因为它涉及到多个独立的服务 以下是进行微服务测试的一般性步骤 1 确定系统架构 了解微服务架构对成功测试至关重要 确定每个微服务的职责 接口 依赖项和通信方式 了解这些信息可以帮助您更好地规划测试用例和测试
  • Docker与微服务:构建和部署微服务架构的完整指南

    微服务架构已经成为现代应用开发的主要范式之一 而Docker容器技术则为微服务的构建 部署和管理提供了理想的解决方案 本文将深入探讨如何使用Docker构建和部署微服务架构 提供更多示例代码和细致的指南 以帮助大家更全面地理解和运用这些关键
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • 终于找到了最新版的Zookeeper入门级教程,建议收藏!

    小熊学Java https javaxiaobear cn 1 分布式一致性 1 CAP 理论 CAP 理论指出对于一个分布式计算系统来说 不可能同时满足以下三点 一致性 在分布式环境中 一致性是指数据在多个副本之间是否能够保持一致的特性
  • Docker:容器化技术的革命者

    Docker介绍 随着云计算和虚拟化技术的不断发展 容器化技术逐渐成为了一种主流的部署和运行应用的方式 而在这个领域中 Docker无疑是最具影响力和最受欢迎的容器化技术之一 本文将介绍Docker的基本概念 优势以及应用场景 一 Dock

随机推荐

  • 引领新一轮IT服务升级,IT相关场景RPA应用

    大量实践表明 在企业IT项目的生命周期中 大约80 的时间与IT项目运营维护有关 而该阶段的投资仅占整个IT投资的20 由此形成了典型的 轻服务 重技术 现象 Gartner的一项调查发现 在经常出现的问题中 来自技术或产品 包括硬件 软件
  • 题目 1040: [编程入门]实数的打印

    一个实数 float范围 输出格式 输出3行 第一行打印一遍输入的数 第二行打印两遍 第三行打印三遍 第二行和第三行 用空格分隔同一行的数字 实数用 6 2f 格式输出 样例输入 复制 0 618 样例输出 复制 0 62 0 62 0 6
  • ip地址中斜杠(/)含义

    在网络中 斜杠 符号用于表示CIDR Classless Inter Domain Routing 标记法中的网络前缀长度 CIDR标记法是一种用于表示IP地址和子网掩码的简化方法 在CIDR标记法中 IP地址由两部分组成 网络地址和主机地
  • 无密码绕过!黑客利用ChatGPT劫持Facebook账户

    Dark Reading 网站披露 3 月 3 日 3 月 9 日 每天至少有 2000 人从 Google Play 应用商店下载 快速访问 ChatGPT 的 Chrome 恶意扩展 据悉 一名威胁攻击者可能利用该恶意扩展泄露包括商业账
  • Java获取当前时间的前一天

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 获取当前时间的前一天 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date date new Date C
  • JVM三大核心区域

    Heap Area 存储的全部都是Object对象实例 对象实例中一般包含了其数据成员以及与该对象对应的Class信息 一个JVM实例在运行的时候只有一个Heap区域 该区域被所有的线程共享 Method Area 方法区又名静态成员区域
  • 基于java的智能停车场管理系统

    背景 智能停车场管理系统的主要使用者分为管理员和用户 实现功能包括管理员 个人中心 用户管理 车位信息管理 车位租用管理 车位退租管理 违规举报管理 论坛交流 系统管理 用户 个人中心 车位租用管理 车位退租管理 违规举报管理 我的收藏管理
  • Tcpdump的用法及使用案例

    转载自此 Tcpdump工具是Unix和linux系统抓网络数据库包最有效的工具 windows上类似的工具是wireshark tcpdump可以将网络中传送的数据包的 头 完全截获下来提供分析 它支持针对网络层 协议 主机 网络或端口的
  • git cherry-pick gerritID shell脚本解析

    bin bash while read line 读取导入文件的每行到变量 line直到文件结尾 do Name echo line awk print 2 awk 输出 line对应那行的第二列 ChangeID echo line aw
  • linux命令行操作以及目录操作

    目录 一 linux命令行操作以及目录操作 1 Shell 1 linux的操作界面常称为Shell 2 概念 3 查看Shell类型 4 查看当前默认的Shell 5 Shell提示符 6 登录字符终端和图形终端方法 2 使用桌面访问命令
  • burp suite 进行webshell上传

    主要功能 burp suite 可以将客户端与服务器之间传输的数据进行拦截 然后对数据进行修改并在此发送 从而完成攻击设置代理服务器 Proxy Options listeners中 可设置默认的监听IP地址的端口号 建议用Firefox
  • PyCharm中如何安装第三方库?

    PyCharm中如何安装第三方库 一 在安装之前 你如何知道你的系统已经安装了哪些库 1 在window的资源管理器 查找Python安装目录 2 在PyCharm 集成编辑器中 3 在设置中 二 安装模块的方法 1 在IDE编写代码时 我
  • XML——XML介绍和基本语法

    1 XML历史 gml 1969 gt sgml 1985 gt html 1993 gt xml 1998 1969 gml 通用标记语言 主要目的是要在不同的机器之间进行通信的数据规范 1985 sgml 标准通用标记语言 1993 h
  • ChatGPT迎来史诗级iPhone时刻!IOS版ChatGPT首发体验!免费、响应快、新增语音识别

    OpenAI昨晚正式发布了ChatGPT的iOS版App 官方版ChatGPT正式杀入移动手机端 各类山寨App恐将失业 dog 现在你已经可以在App Store中下载该应用了 这款App的名称为 OpenAI ChatGPT 我第一时间
  • 面试题-容器

    现在新技术迭代非常快 我们一方面要学习掌握更多的新技术 同时我们需要不断的巩固已学的知识 一点点的知识积累终会变成质的飞跃 现在我就想来总结一下java一些常用的面试题 原文 https blog csdn net sufu1065 art
  • 时序预测

    时序预测 MATLAB实现NARX非线性自回归外生模型时间序列预测 目录 时序预测 MATLAB实现NARX非线性自回归外生模型时间序列预测 效果一览 基本介绍 程序设计 参考资料 效果一览 基本介绍 时序预测 MATLAB实现NARX非线
  • 使用Python和OpenCV构建图像金字塔

    使用Python和OpenCV的图像金字塔 1 效果图 2 什么是图像金字塔 3 依赖 4 源码 参考 这篇博客将介绍如何使用两种方法构造图像金字塔 使用Python和OpenCV构建金字塔 此方法不会在金字塔的每一层使用高斯平滑图像 因此
  • JetBrains new UI 不用申请直接使用

    5月27 JetBrains 发布了新 ui的使用申请 试用链接如下 https www jetbrains com lp intellij new ui preview 填写申请后还需要官方审核 下面介绍一种直接在本地试用的方法 首先需要
  • 在列联分析中的辛普森悖论

    情景 在列联分析中有时会出现辛普森悖论 简述什么是辛普森悖论 它产生的原因是什么 如何防范辛普森悖论 什么是辛普森悖论 在分组比较中都占优势的一方 在总评中有时反而是失势的一方 维基百科 边缘关联和条件关联有相反结论的情况称作辛普森悖论 属
  • Eureka和Zookeeper的区别

    Eureka和Zookeeper的区别 Mysql Oracle SqlServer等关系型数据库遵循的原则是 ACID 原则 即 A 原子性 C 一致性 I 独立性 D 持久性 Redis Mogodb 等非关系型数据库遵循的原则是 CA