小编Qia*_*hen的帖子

为什么发送OPTIONS请求并且可以禁用它?

我正在构建一个Web API.我发现每当我使用Chrome进行POST,GET到我的API时,总会在真实请求之前发送OPTIONS请求,这非常烦人.目前我让服务器忽略任何OPTIONS请求.现在我的问题是发送OPTIONS请求以加倍服务器负载是什么好事?有没有办法完全阻止浏览器发送OPTIONS请求?

http options cors

367
推荐指数
9
解决办法
35万
查看次数

Go中的nil检测

我在Go中看到很多代码来检测nil,如下所示:

if err != nil { 
    // handle the error    
}
Run Code Online (Sandbox Code Playgroud)

但是,我有一个像这样的结构:

type Config struct {
    host string  
    port float64
}
Run Code Online (Sandbox Code Playgroud)

和config是Config的一个实例,当我这样做时:

if config == nil {
}
Run Code Online (Sandbox Code Playgroud)

有编译错误,说:无法将nil转换为类型Config

null go

144
推荐指数
5
解决办法
14万
查看次数

TypeError:console.log(...)不是函数

我真的很困惑,我怎么能得到console.log不是第1091行的函数.如果我删除下面的闭包,第1091行不会抱怨这样的错误.Chrome版本43.0.2357.130(64位).

在此输入图像描述

这是代码:

$scope.columnNameChanged = function (tableColumn) {
    setDirtyColumn(tableColumn);
    //propagate changes to the key fields
    for (var i = 0; i < $scope.tableIndexes.length; ++i) {
        for (var j = 0; j < $scope.tableIndexes[i].columnName.length; ++j) {
            if ($scope.tableIndexes[i].columnName[j] === tableColumn.previousName) {
                console.log('xxx', $scope.tableIndexes[i].columnName[j])
                (function (i, j) {
                    $timeout(function () {
                        console.log($scope.tableIndexes[i].columnName[j])
                        $scope.tableIndexes[i].columnName[j] = tableColumn.name.toUpperCase();
                        console.log($scope.tableIndexes[i].columnName[j])
                    });
                })(i, j);
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

javascript

80
推荐指数
3
解决办法
5万
查看次数

Golang将字符串转换为int64

我想将字符串转换为int64.我从strconv包中找到的是Atoi功能.它似乎将一个字符串转换为int并返回它:

// Atoi is shorthand for ParseInt(s, 10, 0).
func Atoi(s string) (i int, err error) {
        i64, err := ParseInt(s, 10, 0)
    return int(i64), err
}
Run Code Online (Sandbox Code Playgroud)

ParseInt实际上返回一个int64:

func ParseInt(s string, base int, bitSize int) (i int64, err error){
     //...
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我想从字符串中获取int64,我应该避免使用Atoi,而是使用ParseInt吗?或者某处是否隐藏了Atio64?

string go int64

61
推荐指数
3
解决办法
7万
查看次数

当我有一个基于socket.io的信令服务器时,是否对于webrtc绝对需要STUN服务器?

我对webrtc的STUN服务器的理解是,当客户端在NAT后面时(在大多数情况下,如果不是全部),STUN服务器将帮助webrtc客户端识别他们的地址和端口.我还读到一些文章说webrtc客户端需要一个信令服务器.信令服务器可以是web服务器,socket.io,甚至是通过电子邮件发送网址.我的第一个问题是:STUN服务器是信令服务器吗?

实际上现在我构建了一个非常简单的基于socket.io的服务,它将客户端的会话描述广播给所有其他客户端.所以我相信基于socket.io的服务器应该对客户端的地址和端口信息有足够的了解.如果是这种情况,为什么我们还要打扰另一台STUN服务器呢?

stun webrtc

18
推荐指数
2
解决办法
1万
查看次数

前向和反向DNS如何工作

我对DNS如何工作的理解是这样的:首先让我们假设mydomain.com有IP地址12.34.56.78.现在,当我将url mydomain.com放入浏览器时,浏览器会向其本地dns服务器发送一个dns查询,询问,嘿,你知道mydomain.com的ip地址吗?如果本地DNS服务器不知道它,它将询问父dns服务器,如果父服务器也不知道,那么它一直询问直到root dns服务器.root dns服务器会询问负责.comtld的服务器.负责该.com意志的DNS服务器有关于mydomain.com因为mydomain.com.com家庭的知识.然后答案将返回给初始提问者.答案也很可能会缓存在询问过程中涉及的dns服务器中.如果有错误,有人会纠正我的理解.

所以我真正的问题是关于反向DNS查找的工作原理.假设我想知道ip的域名是什么12.34.56.78.我运行命令dig -x 12.34.56.78.如果我的本地DNS服务器不知道答案,那么它还会询问哪个服务器?是吗12.in-addr.arpa.,还是34.12.in-addr.arpa.?如果是这种情况,这些名称是否就像12.in-addr.arpa.有效的域名一样?它们应该在何处部署,以便反向查找请求将知道询问谁?

dns

15
推荐指数
1
解决办法
7202
查看次数

Golang中的脱胎功能

math/floor.go从第13行开始阅读源代码,我读了一些这样的代码:

func Floor(x float64) float64

func floor(x float64) float64 {
    if x == 0 || IsNaN(x) || IsInf(x, 0) {
        return x
    }
    if x < 0 {
        d, fract := Modf(-x)
        if fract != 0.0 {
            d = d + 1
        }
        return -d
    }
    d, _ := Modf(x)
    return d
}
Run Code Online (Sandbox Code Playgroud)

似乎func Floor没有身体.我试图在go文件中复制并粘贴这些代码.它没有编译.错误消息是missing function body.所以我的问题是:Go的语法是一个合法的脱胎功能吗?谢谢.

function go

14
推荐指数
1
解决办法
1534
查看次数

Golang恐慌崩溃预防

在Golang中,没有恢复的恐慌会导致进程崩溃,因此我最终将以下代码片段放在每个函数的开头:

defer func() {
    if err := recover(); err != nil {
        fmt.Println(err)
    }
}()
Run Code Online (Sandbox Code Playgroud)

只是为了防止我的程序崩溃.现在我想知道,它真的是要走的路吗?因为我认为在任何地方放置相同的代码看起来有点奇怪.

在我看来,Java方式,将异常冒泡到调用函数,直到main函数是控制异常/恐慌的更好方法.我理解这是由Go的设计,但是像Go那样立即崩溃过程有什么好处?

crash recover go panic

9
推荐指数
1
解决办法
6882
查看次数

ioutil.ReadAll(response.Body)永远封锁 - Golang

tr := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
response, err := client.Get(link)
if err != nil {
    fmt.Println(err)
}
defer response.Body.Close()

//block forever at the next line
content, _ = ioutil.ReadAll(response.Body)
Run Code Online (Sandbox Code Playgroud)

以上是我的代码,用于从循环中的网页中读取内容.我发现有时这条线ioutil.ReadAll(response.Body)会永远阻挡.这是随机发生的,然而,它几乎总是发生在这个网页上:http://xkcd.com/55.非常有趣的是,当我这样做时curl http://xkcd.com/55,它什么都不返回,然而,wget http://xkcd.com/55返回整个网页.

http go

8
推荐指数
3
解决办法
1万
查看次数

Go中unicode中IsDigit和IsNumber之间的差异

似乎unicode包中的IsDigit和IsNumber的行为不同,至少在我的下面的测试代码中:

package main

import "fmt"
import "unicode"

func main() {
    r := rune('1')
    fmt.Println(unicode.IsDigit(r))
    fmt.Println(unicode.IsNumber(r))
    //true
    //true
}
Run Code Online (Sandbox Code Playgroud)

他们都打印true.

我试图从他们的源代码中理解.但是,我仍然不明白他们之间的差异,甚至来自他们的源代码.

// IsNumber reports whether the rune is a number (category N).
func IsNumber(r rune) bool {
    if uint32(r) <= MaxLatin1 {
        return properties[uint8(r)]&pN != 0
    }
    return isExcludingLatin(Number, r)
}


// IsDigit reports whether the rune is a decimal digit.
func IsDigit(r rune) bool {
    if r <= MaxLatin1 {
        return '0' <= r && r <= '9' …
Run Code Online (Sandbox Code Playgroud)

unicode go

8
推荐指数
2
解决办法
5162
查看次数

标签 统计

go ×6

http ×2

cors ×1

crash ×1

dns ×1

function ×1

int64 ×1

javascript ×1

null ×1

options ×1

panic ×1

recover ×1

string ×1

stun ×1

unicode ×1

webrtc ×1