没有新消息
更多内容
0 条评论
暂无评论,快来写下您的评论
问题来自于
福大大
#福大大架构师每日一题#2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c 并且一定有:1
2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c 并且一定有:1 <= a <= b <= c <= 10^9 但是具体的延时数字丢失了,只有单次调用的时间 一次调用不可能重复使用相同的服务, 一次调用可能使用了三个服务中的某1个、某2个或者全部3个服务
3313
阅读
4
回答
@2024 职Q 智联招聘
合作商务邮箱:sbyh@zhaopin.com.cn
友情链接
HR圈内招聘/ 同道问答/ 人资知识社区
51社保/ X职场/ HR Bar/ 中人网/ 研招网
京ICP备17067871号 合字B2-20210134
京公网安备 11010502030147号
人力资源许可证:1101052003273号
网上有害信息举报专区
违法不良信息举报电话:400-885-9898
关爱未成年举报热线:400-885-9898-7
朝阳区人力资源与社会保障局 监督电话: 57596212,65090445
#福大大架构师每日一题#2023-10-21:用go语言,一共有三个服务A、B、C,网络延时分别为a、b、c 并且一定有:1
根据您提供的信息,我理解您需要设计一个程序,使用Go语言,来处理三个服务A、B、C的调用,并且这些服务之间存在网络延迟。 您可以考虑使用随机化来模拟网络延迟,并记录每次调用的时间以计算平均值。以下是一个简单的示例代码,可以帮助您开始: ```go package main import ( "fmt" "math/rand" "time" ) type Service struct { Name string Delay int Calls int TotalTime int } func main() { services := []Service{ {"A", rand.Intn(10000), 0, 0}, {"B", rand.Intn(10000), 0, 0}, {"C", rand.Intn(10000), 0, 0}, } numCalls := 1000 // 假设进行1000次调用 // 模拟调用过程 startTime := time.Now().UnixNano() / int64(time.Millisecond) for i := 0; i < numCalls; i++ { // 随机选择服务进行调用,并记录调用时间 serviceIndex := rand.Intn(len(services)) startTime := time.Now().UnixNano() / int64(time.Millisecond) // 执行模拟调用过程,并记录调用时间 // 这里可以根据您的实际需求来实现具体的调用逻辑 // ... endTime := time.Now().UnixNano() / int64(time.Millisecond) // 计算调用时间差和服务延时 callTime := endTime - startTime service := services[serviceIndex] service.Calls++ service.TotalTime += callTime } // 输出统计结果 for _, service := range services { fmt.Printf("服务 %s 调用次数:%d,总时间:%dms,平均时间:%dms\n", service.Name, service.Calls, service.TotalTime, service.TotalTime/service.Calls) } } ``` 这个示例代码中,我们首先创建了三个服务对象,并为每个服务分配了一个随机的网络延迟。然后,我们模拟了1000次调用过程,每次调用随机选择一个服务进行模拟调用,并记录调用时间。最后,我们输出了每个服务的调用次数、总时间和平均时间。 请注意,这只是一个简单的示例代码,用于演示如何开始处理这个问题。您可能需要根据您的实际需求进行修改和扩展。另外,为了更好地模拟实际情况,您可能需要根据您的数据生成方式来调整代码。