怎么理解CAP理论 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。 分布式系统的最大难点,就是各个节点的状态如何保持一致。CAP理论是在设计分布式系统的过程中,处理数据一致性问题时必须考虑的理论。 什么是CAP理论 CAP即: Consistency(一致性) Availability(可用性) Partition tolerance(分区容忍性) 这三个性质对应了 2024-05-09 开发 #后端
注册中心 注册中心基本概念 什么是注册中心? 注册中心主要有三种角色: 服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。 服务消费者(RPC Client):在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。 服务注册中心(Registr 2024-05-09 开发 #后端
怎么样实现微服务 怎么具体实践微服务 要实际的应用微服务,需要解决一下四点问题: 1、客户端如何访问这些服务 2、每个服务之间如何通信 3、如此多的服务,如何实现? 4、服务挂了,如何解决?(备份方案,应急处理机制) 1、客户端如何访问这些服务 原来的Monolithic方式开发,所有的服务都是本地的,UI可以直接调用,现在按功能拆分成独立的服务,跑在独立的(一般都在独立的虚拟机上的)进程了。客户端UI如何访问他的 2024-05-06 开发 #后端
微服务 什么是微服务? 微服务(英语:Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关,而且复杂的服务背后是使用简单 URI 来开放接口,任何服务,任何细粒都能被开放。这个设计在 HP 的实验室被实现,具有改变复杂软件系统的强大力量。 要理解微服务,首先需要理解软件架构的演变。 单体式架构 2024-04-30 开发 #后端
01trie 01 trie树 类似于字典树的做法,将每一个数化为二进制数,看作01串,插入到字典树中。如图1: 典型例题 给一个长为nnn的数列,要求一个 aia_iai,aja_jaj ,使得 aia_iai^aja_jaj 最大。 异或的一些性质 0^1=1 1^1=0 0^0=0 p^p=0 p^0=1 自反性:a^b=c,b^c=a 问题解答 首先建好01trie树,以图1为例,然后对于 2024-04-25 算法 #算法
Go操作Kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。 首先来看几个概念: 消息队列: Kafka 通过消息队列的方式来处理数据流。生产者将消息发布到 Kafka 集群中的主题(topic)中,消费者订阅这些主题并处理消息。这种解耦的模式使得生产者和消费者之间可以独立操作,从而提高了系统的可伸缩性和灵活性。 2024-04-20 开发 #Go
Go语言操作Redis Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。 Redis支持的数据结构 Redis支持诸如字符串(string)、哈希(hashe)、列表(list)、集合(set 2024-04-17 开发 #Go
Go单元测试—网络测试 在实际中我们遇到的场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是我们依赖别人提供的网络服务(调用别人提供的API接口)的场景,我们通常都不想在测试过程中真正的建立网络连接。接下来就专门介绍如何在上述两种场景下mock网络测试。 httptest 在Web开发场景下的单元测试,如果涉及到HTTP请求推荐大家使用Go标准库 net/http/httptest 进行测试,能够 2024-04-15 开发 #Go
Go单元测试基础 Go语言测试 go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go build编译到最终的可执行文件中。 在*_test.go文件中有三种类型的函数, 2024-04-12 开发 #Go
Inaccurate Subsequence Search 题目连接: Problem - D - Codeforces 题目描述 Maxim 有一个由 nnn 个整数组成的数组 aaa 和一个由 mmm 个整数组成的数组 bbb ( m≤nm \le nm≤n )。 如果数组 ccc 中的元素可以重新排列,使得其中至少有 kkk 个元素与数组 bbb 中的元素匹配,那么马克西姆认为长度为 mmm 的数组 ccc 是好数组。 例如,如果 b=[1,2,3 2024-04-11 算法 #题解