基于go-zero的微服务即时通讯项目day1——用户业务
今天完成了用户相关业务的api及rpc的设计和实现。业务方面很简单,包括注册、登录、获取信息、查找用户,都很好实现,就不写了。主要记录我遇到的一个坑,一度让我怀疑是go-zero的问题,最终在看了几个小时源码之后确定了是自己的问题。不过也不亏,起码学习了go-zero中对于缓存处理的实现。 问题出在注册业务上,我的rpc内注册逻辑是这样写的: fu…
thumbnail
【转载】Raft一致性算法论文的中文翻译
本文转载自 GitHub ,原文地址:maemual/raft-zh_cn - GitHub 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Ra…
thumbnail
MIT 6.824 Lab 1 MapReduce
仓库地址 FoyonaCZY/MIT6.824 - GitHub 前言 在刚开始学习 Go 的时候,就听说过 MIT 6.824(现在叫 6.8540),是一门很经典且口碑很好的分布式课程。两天前我开始学习这门课程,并在刚刚完成了 Lab 1 。 在此总结一下目前对 MapReduce 的理解和做 Lab 1 过程中的心得体会。 MapReduce…
圆方树
众所周知,对于一些树上问题,可以用树形DP、树链剖分等算法解决,然而图上的问题则往往更加复杂。但在一些情况下,我们可以使用圆方树将图上问题转化为树上问题(大部分时候用于处理仙人掌图上的问题)。 建树 在一张连通的无向图中,对于两个点 u 和 v,如果无论删去哪个点(只能删去一个,且不能删 u 和 v 自己)都不能使它们不连通,我们就说 u 和 v …
thumbnail
强连通分量
强连通的定义是:有向图 G 强连通是指,G 中任意两个结点连通。 强连通分量(Strongly Connected Components,SCC)的定义是:极大的强连通子图。 Tarjan算法 对于一个连通块,以任意节点作为根节点进行深度优先搜索(DFS)。将节点的深度优先搜索序记为 dfn[x],将节点能够通过返祖边到达的最早节点的深度优先搜索序…
thumbnail
基环树
基环树指的是具备 n 个节点与 n 条边的连通图,存在并且仅存在一个环。 有关基环树的问题通常依照寻找环 -> 将环拆解为 n 棵子树,分别进行遍历 -> 单独对环上的各个点进行判断的顺序予以求解,以下述题目为例。 Problem - 7504 (hdu.edu.cn) 题目大意 给出一个基环树的n条边,求过每个点的最长简单路径长度。 …
Go接口/空接口/接口断言
在 Go 语言中,接口(interface)是一种类型,它定义了一组方法的集合。接口提供了一种方式来指定对象的行为,而无需关注对象的具体类型。接口的存在有以下几个重要意义: 多态性(Polymorphism):接口使得多态性成为可能。通过接口,可以创建具有不同底层类型但实现了相同接口的对象,然后使用相同的方式调用这些对象的方法。这种特性使得代码更加…