accidentaly
V2EX  ›  问与答

请用 go 语言实现

  •  
  •   accidentaly · Jun 10, 2020 · 2624 views
    This topic created in 2169 days ago, the information mentioned may be changed or developed.
    - 实现方法:FindFatestUrl(ctx context.Context,urls []string)(url string,ts time.Duration)
    - 找出最快响应 200 的 url 及其响应时间
    - 并发请求 url,但同一时刻最多并发请求 5 个 url
    - 请求发送 3 秒后若未返回则超时,视为请求失败
    - 仅使用 Go 标准库,可使用伪代码表示发送 http 请求
    9 replies    2020-06-11 09:31:51 +08:00
    ym1ng
        1
    ym1ng  
       Jun 10, 2020   ❤️ 1
    作业请自己做(手动狗头
    fiypig
        2
    fiypig  
       Jun 10, 2020
    面试题吗
    morty961
        3
    morty961  
       Jun 10, 2020 via Android
    这个面试题我也做过。变量名都一样,不会是同一家公司吧
    dallaslu
        4
    dallaslu  
       Jun 10, 2020
    话说这个题的 point 在协程吗?
    sadfQED2
        5
    sadfQED2  
       Jun 10, 2020 via Android
    每个 url 都开一个 go 程请求下,请求结束添加到管道,管道够 200 个就返回,是这个意思吗?
    WhatC
        6
    WhatC  
       Jun 10, 2020 via Android
    @sadfQED2 200 是 http 的 200 吧
    blackeeper
        7
    blackeeper  
       Jun 11, 2020
    伪代码,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  
       Jun 11, 2020
    xkeyideal
        9
    xkeyideal  
       Jun 11, 2020
    作业不会做,给钱,我给你完整可运行的实现方案
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4344 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 05:33 · PVG 13:33 · LAX 22:33 · JFK 01:33
    ♥ Do have faith in what you're doing.