我有一组多边形区域(地理围栏).这组数据是固定的; 所以不需要插入和删除数据.哪个数据结构可用于搜索查询点(经度,纬度)所在的区域?
注意:我已经成功地为一组点实现了KD-Tree(实际上是一个2D树).但它不适用于这个问题.我已经实现了一个R-Tree; 它解决了问题,但它很慢(或我的实施很糟糕).
谢谢
注意:我从事过R-Tree实现,现在工作正常.
ASP.NET/MVC技术的现状是什么?是否会有影响每个代码库的重大变化?它是否稳定(向后兼容)足以在现实世界中使用?
最好的祝福
托管在控制台应用程序中的WCF服务可以处理多少负载?它可以像在IIS上托管的WCF一样处理传入的请求吗?
附加说明:请求可以同时到达吗?
我在控制台应用程序中托管了WCF服务.我在Web应用程序中调用此WCF服务.该Web应用程序可能同时有数百个请求.
我已经模拟了一大堆请求,但我无法确定托管WCF服务的控制台应用程序是否实际上同时或按顺序回答它们.
我正在使用 Go 开发 TCP 服务器。现在我想通知所有与客户端交谈的 goroutine 放弃他们的连接,转储他们所拥有的并停止。
关闭频道是一种通知所有人的方式。
问题是:这是惯用的 Go 语言吗?如果我错了;那么我应该怎么做(通知所有的 goroutines——比如 .NET 中的 ManualResetEvent)?
注意:我是 Go 新手,刚刚学习并开始使用 TCP Server,因为我之前用 C# 编写过。
Go编译器不应该将for...range
循环变量捕获为本地分配的闭包变量吗?
长版:
这也使我对C#产生了一些困惑,并且我试图理解它。这就是为什么它在C#5.0中已得到修复foreach
(原因:循环变量不能在循环体内改变)以及未在C#for
循环中对其进行修复的原因(原因:循环变量可以在循环体内改变)。
现在,(我)for...range
在围棋圈看起来很像foreach
在C#中循环,但尽管我们不能改变这些变量(如k
和v
中for 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) 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) 我正在玩沙发V2.5的例子,这是一个WPF Docking框架.
这些是VS2010,.NET 4.0.在一个项目中,有一个对"Microsoft.Windows.Shell"程序集的引用,该程序集尚未解析.
当我打开添加引用并查找.NET程序集时,我没有看到Microsoft.Windows.Shell.为什么不?我在Windows 7上运行VS2010.它怎么会丢失?如果它没有丢失,为什么VS2010看不到呢?
Go中是否有任何内部机制来实现平等和排序?(所以我们可以在类型上使用比较运算符 - ==,!=,<,>,<=,> =.)
注意:我看到一些类型有一个名为Less的方法,似乎用于排序.但我找不到该文档或相等检查界面(如果有的话).
#line
C#中的处理器指令将每行的行号增加到文件末尾或直到达到另一个#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.
尝试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) go ×5
c# ×4
.net ×1
.net-4.0 ×1
asp.net ×1
asp.net-mvc ×1
closures ×1
comparable ×1
comparison ×1
concurrency ×1
csc ×1
equality ×1
for-loop ×1
gis ×1
kdtree ×1
mixins ×1
r-tree ×1
self-hosting ×1
tcp ×1
viper-go ×1
wcf ×1