当前位置: 首页 > 面试题库 >

运行一个简单的服务器,但计数器似乎增加了3,为什么呢?

霍弘厚
2023-03-14
问题内容

我在这里有这个小服务器。目的是,如果我访问localhost:8000 / *,它应该增加counter1,如果我访问localhost:8000 /
count,它应该告诉我当前的数量counter

一个奇怪的事情发生的是,好像我每次访问localhost:8000时,计数器上升由3所以我会去localhost:8000/countcounter将在3,然后我访问localhost:8000,然后localhost:8000/count再次,counter现在是在6.为什么会发生吗?有什么奇怪的东西net/http吗?

另外,为什么刷新时localhost:8000/count,计数会按1递增1?该counterFUNC不增加count,但count仍上升-
这是为什么?是否也handler添加localhost:8000/count路线中?

package main

import (
        "fmt"
        "log"
        "net/http"
        "sync"
)

var mu sync.Mutex
var count int

func main() {
        http.HandleFunc("/", handler)
        http.HandleFunc("/count", counter)
        log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

// handler echoes the Path component of the requested URL.
func handler(w http.ResponseWriter, r *http.Request) {
        mu.Lock()
        count++
        mu.Unlock()
        fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
}

// counter echoes the number of calls so far.
func counter(w http.ResponseWriter, r *http.Request) {
        mu.Lock()
        fmt.Fprintf(w, "Count %d\n", count)
        mu.Unlock()
}

问题答案:

额外的请求是您的浏览器试图访问/favicon.ico

例如,如果您在处理程序函数中将http.Request打印到stdout,则可以看到此信息。



 类似资料:
  • Http是一个比tcp更高级的协议,它描述了客户端浏览器如何与网页服务器进行通信。Go有自己的net/http包,我们来看看它。我们从一些简单的示例开始, 首先编写一个“Hello world!”:查看示例15.6 我们引入了http包并启动了网页服务器,和15.1的net.Listen("tcp", "localhost:50000")函数的tcp服务器是类似的,使用http.ListenAnd

  • 问题内容: 我正在尝试学习Go Web编程,这是一个简单的Web服务器:它可以打印出被调用的时间。 刷新页面时,我得到: 问题:为什么是1、3、5倍而不是1,2,3 …?该函数的调用顺序是什么? 问题答案: 这是因为每个传入请求都被路由到您的处理函数,并且浏览器在后台进行了多次调用,尤其是。 并且由于您的Web服务器没有发送回有效的网站图标,因此当您在浏览器中刷新页面时,它将再次请求它。 在Chr

  • 问题内容: 我有一堂课,我已经简化为: 我想对这个东西进行排序。所以我创建了一个简单的copmarator: 然后,我使用的两个参数形式。 这对于我的测试用例来说很好用,但是有时由于数组以奇怪但可重复的顺序结束而完全出错。怎么会这样? 问题答案: 整数溢出…或更确切地说是下溢。 相反,进行显式比较: 如果您确定差异不会“绕回”,则可以使用减法。例如,当所讨论的值被约束为非负数时。

  • 操作系统: Windows 7 JDK: 1.8.0_05 我正在学习一些简单的RMI教程,包括Oracle的“计算”示例(Compute)。启动我的服务器不需要代码库,对类似问题的回答是“代码库是可选的”然而,我的服务器无法注册远程对象,除非它的接口位于某个代码库中。 我确保我的计算接口是可用的Web服务器上运行localhost,启动注册表服务器像这样: 一切正常: 但是如果我从Web服务器的

  • 本文向大家介绍Python写的一个简单DNS服务器实例,包括了Python写的一个简单DNS服务器实例的使用技巧和注意事项,需要的朋友参考一下 因为突然有个邪恶的想法,想在自己的Android平板上面搭建一个DNS服务器,因为平板上之前安装过SL4A和Python的解释器,也想继续学学Python因此,就打算用Python实现了。 在Google上面找了一下,Python实现的DNS,没找到我所希

  • 错误:在object.exports._errnoException(util.js:1018:11)在exports._exceptionwithhostport(util.js:1041:20)在server._listen2(net.js:1245:19)在server.listen(net.js:1294:10)在eventemitter.listen(net.js:1390:5)在obj