V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
accidentaly
V2EX  ›  问与答

请用 go 语言实现

  •  
  •   accidentaly · 2020-06-10 17:14:36 +08:00 · 1786 次点击
    这是一个创建于 1616 天前的主题,其中的信息可能已经有所发展或是发生改变。
    - 实现方法:FindFatestUrl(ctx context.Context,urls []string)(url string,ts time.Duration)
    - 找出最快响应 200 的 url 及其响应时间
    - 并发请求 url,但同一时刻最多并发请求 5 个 url
    - 请求发送 3 秒后若未返回则超时,视为请求失败
    - 仅使用 Go 标准库,可使用伪代码表示发送 http 请求
    9 条回复    2020-06-11 09:31:51 +08:00
    ym1ng
        1
    ym1ng  
       2020-06-10 17:41:59 +08:00   ❤️ 1
    作业请自己做(手动狗头
    fiypig
        2
    fiypig  
       2020-06-10 17:46:07 +08:00
    面试题吗
    morty961
        3
    morty961  
       2020-06-10 17:47:01 +08:00 via Android
    这个面试题我也做过。变量名都一样,不会是同一家公司吧
    dallaslu
        4
    dallaslu  
       2020-06-10 18:02:09 +08:00
    话说这个题的 point 在协程吗?
    sadfQED2
        5
    sadfQED2  
       2020-06-10 18:56:57 +08:00 via Android
    每个 url 都开一个 go 程请求下,请求结束添加到管道,管道够 200 个就返回,是这个意思吗?
    WhatC
        6
    WhatC  
       2020-06-10 19:03:53 +08:00 via Android
    @sadfQED2 200 是 http 的 200 吧
    blackeeper
        7
    blackeeper  
       2020-06-11 00:10:04 +08:00
    伪代码,golang 初学者,请大神检阅
    ```
    #urls 放入通道
    go func() {ch <- urls;ch.Close()}()
    #五个 goroutine,并发
    for i=0;1<5;i++ {
    go func() {
    for url := range ch {
    #消费通道
    r,err := httpGet(url,timeout=3)
    if err != nil || err == TimeoutError {
    log.err("请求失败:%s"url)
    break
    }
    #存储返回 200 的结果
    if r.StatusCode == 200 {
    ts := r.time.Duration
    results[url] = ts
    }

    }
    }()
    }
    #最快相应 200 的 URL
    sortTime(results)
    ```
    blackeeper
        8
    blackeeper  
       2020-06-11 00:15:30 +08:00
    xkeyideal
        9
    xkeyideal  
       2020-06-11 09:31:51 +08:00
    作业不会做,给钱,我给你完整可运行的实现方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5413 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:54 · PVG 13:54 · LAX 21:54 · JFK 00:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.