我目前有一个.NET程序启动与服务器的连接并启动另一个非托管可执行文件.本机进程应该接管相同的套接字(在子进程终止之前,连接不必关闭!)并开始通过它与服务器进行通信.
上述程序在Windows上运行,但是我更喜欢不涉及P/Invoke for .NET部分的解决方案.作为旁注,从父母到子进程的通信不是问题所以我可以轻松地在两者之间共享数据.
此外,一旦我开始使用本机进程中的套接字,我不再需要在.NET进程中使用它,并且.NET进程将在我使用非托管进程中的套接字之前终止,因此随之而来解决方案我需要知道如何处理.NET中的Socket对象,以便它的处理不会影响操作系统套接字及其可用性.
提前致谢!
在将一些代码迁移到VS2010 b1中包含的最新版本的F#时,我遇到了一个问题,我想知道是否有可用的解决方法 - 如果没有 - 为什么F#编译器的行为被修改为不支持该方案.
type Foo(a) =
[<OverloadID("CurriedAbc")>]
member public x.Abc (p:(oneType * anotherType) seq) otherParm = method impl...
//this overload exists for better compatibility with other languages
[<OverloadID("TupledAbc")>]
member public x.Abc (p:Dictionary<oneType, anotherType>, otherParm) =
x.Abc(p |> Seq.map(fun kvp -> (kvp.Key, kvp.Value))) otherParm
Run Code Online (Sandbox Code Playgroud)
此代码生成以下编译时错误:
错误FS0191:此方法的一个或多个重载具有curried参数.考虑重新设计这些成员以采用tupled形式的参数
请注意,这曾经在F#1.9.6.2(9月CTP)上完美运行
我最近编写了一段代码来从文件中读取一些数据,将其存储在元组中,并通过元组的第一个元素对所有收集的数据进行排序.经过一些测试后,我注意到使用Seq.sortBy(和Array.sortBy)比使用IEnumerable.OrderBy慢得多.下面是两段代码,它们应该显示我正在谈论的行为:
(filename
|> File.ReadAllLines
|> Array.Parallel.map(fun ln -> let arr = ln.Split([|' '|], StringSplitOptions.RemoveEmptyEntries)
|> Array.map(double)
|> Array.sort in arr.[0], arr.[1])
).OrderBy(new Func(fun (a,b) -> a))
Run Code Online (Sandbox Code Playgroud)
和
filename
|> File.ReadAllLines
|> Array.Parallel.map(fun ln -> let arr = ln.Split([|' '|], StringSplitOptions.RemoveEmptyEntries) |> Array.map(double) |> Array.sort in arr.[0], arr.[1])
|> Seq.sortBy(fun (a,_) -> a)
Run Code Online (Sandbox Code Playgroud)
在包含由两个双打组成的100000行的文件上,在我的计算机上,后一版本占用了第一个版本的两倍(如果使用Array.sortBy则不会获得任何改进).想法?
在看到使用RapidWeaver的朋友并在几次点击后产生精彩的结果后,我感到很惊讶,并开始搜索是否存在类似于Windows的工具.不幸的是,到目前为止,我的搜索没有产生任何结果,所以我在这里写的是我正在使用的标准,希望有人会提出相关的建议:
这是我不关心的:
以下列出了我认为不适合我的需求的常用工具:
提前感谢您的建议!
正如标题所说,我正在尝试使用在名称空间中声明的类,其名称中包含"base".想想以下情况:
open Foo.base.Bar
Run Code Online (Sandbox Code Playgroud)
在C#中,我只是在base之前使用@,但是F#似乎忽略了它,并认为@是用于列表连接的中缀运算符.由于命名空间属于我无法修改的第三方库,有没有办法我仍然可以从F#访问它?
我正在使用Scala(2.9.1)进行我的第一个有趣的步骤(非hello-world级别),并且我试图理解一个非常无法提供的错误消息.它很像这样:
error: type mismatch;
found : (Int, Array[InputEntry]) => (Int, Double)
required: (Int, Array[InputEntry]) => ?
entries.groupBy(grouper).map((k: Int, ies: Array[InputEntry]) => (k, doMyStuff(ies)))
Run Code Online (Sandbox Code Playgroud)
正如你可以猜到的,这个片段中的进程应该是某些处理继续进行的,并且它实际上是一个带有签名的定义良好的函数Array[InputEntry] => Double
.
相反,石斑鱼的签名是Array[InputEntry] => Int
.
我试图提取一个函数并替换lambda但它没用,而且我试图理解错误中的问号...
有任何想法吗?
编辑:我应该澄清一下,InputEntry是我定义的一个类,但是为了这个例子,在我看来它似乎并不相关.
我正在寻找Scala的socket.io客户端。我深知这个,但我在斯卡拉使用它,因为它不会觉得很自然,也将允许惯用实现的想法畏缩。因此,你们当中有人对我在哪里可以找到Scala客户提出建议吗?
如果是这样,只需提供SBT的代码行和指向该文档的链接就可以了;)
我正在寻找一种方法来检查远程进程是否具有我(完全托管)代码的管理员权限.可以安全地假设我的代码将以管理员权限运行,因此我并不关心实现我的目标的技术是多么具有侵入性,但是我正在寻找一种必须与XP SP3 x86兼容的完全托管方式从win7 x64开始.
提前致谢!
编辑:为了澄清,我说的是在同一台机器上运行的进程,无论用户是谁启动它.我想确保与进程关联的标识属于Administrators组,或者主线程具有完全权限,特别关注继承提升进程打开的句柄并写入存储而没有任何限制,但应用于进程使用"以管理员身份运行"选项生成.
我正在努力实现这样的目标:
def a(b: Any) = {
b match {
case x: Seq[String] => println("x")
}
}
// somewhere else
a(List("b"))
Run Code Online (Sandbox Code Playgroud)
因此,我喜欢看到"x"被打印,而我却不喜欢.
基本上我想匹配一个类型/特征,并覆盖其类型派生自/实现此类型/特征的所有对象,特征是Seq,并且类型参数是事先已知的.因为我是scala新手,所以我很困惑.
想法?
我有一个N乘2矩阵A我希望从2D矩阵B得到的元素索引,A的每一行都是我想得到的B元素的行和列索引.我想将所有这些元素叠加为N×1向量.
B是方阵,所以我目前正在使用
N = size(B,1);
indices = arrayfun(@(i) A(i,1) + N*(A(i,2)-1), 1:size(A,1));
result = B(indices);
Run Code Online (Sandbox Code Playgroud)
但是,虽然它有效,但这可能是一个巨大的瓶颈,我需要加快代码,以使其有用.
我能以最快的方式获得相同的结果?