小编Kav*_*ian的帖子

哪种空间数据结构(算法)最适合(搜索)一组区域(空间数据)?

我有一组多边形区域(地理围栏).这组数据是固定的; 所以不需要插入和删除数据.哪个数据结构可用于搜索查询点(经度,纬度)所在的区域?

注意:我已经成功地为一组点实现了KD-Tree(实际上是一个2D树).但它不适用于这个问题.我已经实现了一个R-Tree; 它解决了问题,但它很慢(或我的实施很糟糕).

谢谢

注意:我从事过R-Tree实现,现在工作正常.

c# gis kdtree r-tree

5
推荐指数
1
解决办法
1314
查看次数

ASP.NET/MVC 3状态

ASP.NET/MVC技术的现状是什么?是否会有影响每个代码库的重大变化?它是否稳定(向后兼容)足以在现实世界中使用?

最好的祝福

c# asp.net asp.net-mvc asp.net-mvc-3

4
推荐指数
2
解决办法
698
查看次数

WCF服务托管在控制台应用程序中

托管在控制台应用程序中的WCF服务可以处理多少负载?它可以像在IIS上托管的WCF一样处理传入的请求吗?

附加说明:请求可以同时到达吗?

我在控制台应用程序中托管了WCF服务.我在Web应用程序中调用此WCF服务.该Web应用程序可能同时有数百个请求.

我已经模拟了一大堆请求,但我无法确定托管WCF服务的控制台应用程序是否实际上同时或按顺序回答它们.

c# wcf .net-4.0 console-application self-hosting

4
推荐指数
1
解决办法
801
查看次数

通知所有 goroutine

我正在使用 Go 开发 TCP 服务器。现在我想通知所有与客户端交谈的 goroutine 放弃他们的连接,转储他们所拥有的并停止。

关闭频道是一种通知所有人的方式。

问题是:这是惯用的 Go 语言吗?如果我错了;那么我应该怎么做(通知所有的 goroutines——比如 .NET 中的 ManualResetEvent)?

注意:我是 Go 新手,刚刚学习并开始使用 TCP Server,因为我之前用 C# 编写过。

parallel-processing concurrency tcp go

4
推荐指数
1
解决办法
1236
查看次数

Go中捕获的闭包(用于循环变量)

Go编译器不应该将for...range循环变量捕获为本地分配的闭包变量吗?

长版:

这也使我对C#产生了一些困惑并且我试图理解它。这就是为什么它在C#5.0中已得到修复foreach(原因:循环变量不能在循环体内改变)以及未在C#for循环中对其进行修复的原因(原因:循环变量可以在循环体内改变)。

现在,(我)for...range在围棋圈看起来很像foreach在C#中循环,但尽管我们不能改变这些变量(如kvfor k, v := range m { ... }); 仍然我们必须首先将它们复制到某些本地闭包中,以使其表现出预期的效果。

这背后的原因是什么?(我怀疑这是因为Go用for相同的方式对待任何循环;但我不确定)。

这是一些代码来检查描述的行为:

func main() {
    lab1() // captured closure is not what is expected
    fmt.Println(" ")

    lab2() // captured closure is not what is expected
    fmt.Println(" ")

    lab3() // captured closure behaves ok
    fmt.Println(" ")
}

func lab3() {
    m := …
Run Code Online (Sandbox Code Playgroud)

closures for-loop go

4
推荐指数
1
解决办法
3774
查看次数

在编译器行为中实现Mixins和不一致

Mixins可以使用嵌入在Go(1.4.1)中实现,因为struct{}它不占用任何内存(据我所知)它适合我们想要添加某些功能的情况,或者只是将一个方法添加到一个实际上可能无关的类型与它的状态,但我们喜欢避免ParseThing(...),而是写thing.Parse(...).

所以有:

type X struct{}

func (x X) F() {
    fmt.Println("functionality in X.F()")
}

type Y struct{ X }
type Z struct{ Y }
Run Code Online (Sandbox Code Playgroud)

如果我们这样做:

var z Z
z.F()
Run Code Online (Sandbox Code Playgroud)

会给我们:

functionality in X.F()
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

现在让我们OX使用方法添加另一种类型F()并将其嵌入Z:

type Z struct {
    Y
    OX
}

type OX struct{} // overriding X

func (x OX) F() {
    fmt.Println("functionality in OX.F()")
}
Run Code Online (Sandbox Code Playgroud)

有趣!现在我们得到了functionality in OX.F()一个向我们展示Go编译器搜索方法的方法,从自己键入,然后是最后一个嵌入类型.我们可以通过添加F()Z:

func (x …
Run Code Online (Sandbox Code Playgroud)

mixins go

4
推荐指数
1
解决办法
135
查看次数

.NET 4.0 - Microsoft.Windows.Shell - 它在哪里?

我正在玩沙发V2.5的例子,这是一个WPF Docking框架.

这些是VS2010,.NET 4.0.在一个项目中,有一个对"Microsoft.Windows.Shell"程序集的引用,该程序集尚未解析.

当我打开添加引用并查找.NET程序集时,我没有看到Microsoft.Windows.Shell.为什么不?我在Windows 7上运行VS2010.它怎么会丢失?如果它没有丢失,为什么VS2010看不到呢?

.net visual-studio-2010

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

Go中的比较与排序

Go中是否有任何内部机制来实现平等和排序?(所以我们可以在类型上使用比较运算符 - ==,!=,<,>,<=,> =.)

注意:我看到一些类型有一个名为Less的方法,似乎用于排序.但我找不到该文档或相等检查界面(如果有的话).

comparison equality operator-overloading go comparable

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

C#中的#line processor指令增加了行号

#lineC#中的处理器指令将每行的行号增加到文件末尾或直到达到另一个#line处理器指令; 自动增量行号.

那太有趣了!例如:

try
{
#line 110
    act();
    throw new InvalidOperationException();
}
catch (Exception x) { Console.WriteLine(x); }
Run Code Online (Sandbox Code Playgroud)

显示在第111行发生异常(不是110!).

问题:假设#line显示的行号与实际行号不同.例如#line 110,实际上是放在实际的第13行.现在是否有办法取消功能#line并显示实际第23行(而不是120)发生了异常?

注意:我只是想确定我没有遗漏任何东西(或做任何愚蠢的事情).

我在.NET 4.5项目上使用Visual Studio 2012.

c# csc visual-studio visual-studio-2012

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

使用 viper 解组 hcl 以进行结构化

尝试Unmarshal一个hcl配置文件的结构,使用viper,返回此错误:1 error(s) decoding:\n\n* 'NATS' expected a map, got 'slice'。有什么不见了?

编码:

func lab() {
    var c conf

    // config file
    viper.SetConfigName("draft")
    viper.AddConfigPath(".")
    viper.SetConfigType("hcl")
    if err := viper.ReadInConfig(); err != nil {
        log.Error(err)
        return
    }

    log.Info(viper.Get("NATS")) // gives [map[port:10041 username:cl1 password:__Psw__4433__ http_port:10044]]

    if err := viper.Unmarshal(&c); err != nil {
        log.Error(err)
        return
    }

    log.Infow("got conf", "conf", c)
}

type conf struct {
    NATS struct {
        HTTPPort int
        Port     int
        Username string
        Password string
    } …
Run Code Online (Sandbox Code Playgroud)

configuration go viper-go

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