VS项目选项"注册COM互操作"到底是做什么的?因为当我使用此选项构建我的库时,我可以从VBScript上调用我的库中的CreateObject.但如果我没有这个构建然后手动运行regasm CreateObject失败.所以我想知道 - VS2010做了什么,我没做什么?
给定一个HttpContext(或HttpContextBase),有没有办法获取Controller的实例?
Nutshell中的C#4(强烈推荐的btw)使用以下代码来演示MemoryBarrier的概念(假设A和B在不同的线程上运行):
class Foo{
int _answer;
bool complete;
void A(){
_answer = 123;
Thread.MemoryBarrier(); // Barrier 1
_complete = true;
Thread.MemoryBarrier(); // Barrier 2
}
void B(){
Thread.MemoryBarrier(); // Barrier 3;
if(_complete){
Thread.MemoryBarrier(); // Barrier 4;
Console.WriteLine(_answer);
}
}
}
Run Code Online (Sandbox Code Playgroud)
他们提到障碍1和4阻止这个例子写0和障碍2和3提供新鲜度保证:他们确保如果B在A之后运行,读_complete将评估为真.
我不是真的得到它.我想我明白为什么壁垒1和4是必要的:我们不想在写_answer进行优化,并放置在写后_complete(屏障1),我们需要确保_answer没有被缓存(光栅4) .我也认为我理解为什么Barrier 3是必要的:如果A在写完_complete = true之后才运行,B仍然需要刷新_complete以读取正确的值.
我不明白为什么我们需要障碍2!我的一部分说这是因为可能线程2(运行B)已经运行直到(但不包括)if(_complete),因此我们需要确保_complete被刷新.
但是,我不知道这有多大帮助.是不是仍然可以在A 中将_complete设置为true但是B方法会看到_complete的缓存(错误)版本?即,如果线程2运行方法B直到第一个MemoryBarrier之后,然后线程1运行方法A直到_complete = true但没有进一步,然后线程1恢复并测试是否(_complete) - 如果不导致错误 …
c# multithreading thread-safety shared-memory memory-barriers
一位顾问昨天来了,不知怎的,字符串的主题出现了.他提到他已经注意到,对于长度小于一定长度的字符串,Contains实际上比它更快StartsWith.我必须用自己的两只眼睛看到它,所以我写了一个小应用程序,当然,Contains更快!
这怎么可能?
DateTime start = DateTime.MinValue;
DateTime end = DateTime.MinValue;
string str = "Hello there";
start = DateTime.Now;
for (int i = 0; i < 10000000; i++)
{
str.Contains("H");
}
end = DateTime.Now;
Console.WriteLine("{0}ms using Contains", end.Subtract(start).Milliseconds);
start = DateTime.Now;
for (int i = 0; i < 10000000; i++)
{
str.StartsWith("H");
}
end = DateTime.Now;
Console.WriteLine("{0}ms using StartsWith", end.Subtract(start).Milliseconds);
Run Code Online (Sandbox Code Playgroud)
输出:
726ms using Contains
865ms using StartsWith
Run Code Online (Sandbox Code Playgroud)
我也尝试过更长的琴弦!
为rails应用程序创建自定义配置部分的最佳方法是什么?理想情况下,我希望最终结果是api调用,如:
Rails.configuration.foo.bar
Rails.configuration.foo.baz
Run Code Online (Sandbox Code Playgroud)
例如
Rails.configuration.stackoverflow.api_key
Rails.configuration.stackoverflow.api_secret
Run Code Online (Sandbox Code Playgroud)
我会将stackoverflow配置存储在某个.rb文件(config/initializers?)中,我显然会有其他类似命名空间的内容 Rails.configuration
看起来其他人有这个问题,但我似乎无法找到解决方案.
我有2个型号:Person&BillingInfo:
public class Person
{
public string Name { get; set;}
public BillingInfo BillingInfo { get; set; }
}
public class BillingInfo
{
public string BillingName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用DefaultModelBinder将此直接绑定到我的Action中.
public ActionResult DoStuff(Person model)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是,在设置Person.Name属性时,BillingInfo始终为null.
我的帖子看起来像这样:
"NAME = statichippo&BillingInfo.BillingName = statichippo"
为什么BillingInfo总是为空?
似乎大多数WIF信息对于在整个应用程序中启用联合身份验证很有用.我有兴趣使用API创建SAML身份验证请求并接收/解释SAML响应.
我在SOL 阅读SAML令牌的SAML属性上发现了以下帖子,这使我在接收和解释SAML响应方面朝着正确的方向前进.任何人都可以向我提供有关如何使用API创建SAML请求的更多信息吗?
一般来说,API上的更多信息(阅读材料,视频等)将不胜感激.
我正在学习F#(一般来说是功能编程的新手,虽然多年来使用C#的功能方面,但让我们面对它,这是非常不同的)我读过的一件事是F#编译器识别尾递归并编译它进入一个while循环(参见http://thevalerios.net/matt/2009/01/recursion-in-f-and-the-tail-recursion-police/).
我不明白的是,为什么你会写一个递归函数而不是一个while循环,如果那就是它将会变成什么.特别是考虑到你需要做一些额外的工作来使你的函数递归.
我有一种感觉,有人可能会说while循环不是特别功能,你想要所有功能和诸如此类的东西,所以你使用递归,但那么为什么编译器将它变成while循环就足够了?
谁可以给我解释一下这个?
我正在使用Data.Aeson将一些JSON解析为Record类型.有时会将数据添加到JSON中,这会破坏我的代码,因为Aeson会抱怨以下内容:
具有21个名称/值对但具有23个名称/值的预期对象
我真的更喜欢以容错的方式解析JSON - 我不在乎日后是否有更多的字段添加到JSON中,只需解析你能做的任何事情!有没有办法实现这种容错?这是我的代码:
myRecordFromJSONString :: BS.ByteString -> Maybe MyRecord
myRecordFromJSONString s = case Data.Attoparsec.parse json s of
Done _rest res -> Data.Aeson.Types.parseMaybe parseJSON res
_ -> Nothing
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,我正在使用Data.Aeson.TH中的deriveJSON来生成解析代码.如果我手动编写FromJSON代码,它是容错的,但我不想这样做......
c# ×3
.net ×2
asp.net-mvc ×2
aeson ×1
com-interop ×1
f# ×1
haskell ×1
json ×1
performance ×1
regex ×1
replace ×1
ruby ×1
saml ×1
string ×1
sublimetext2 ×1
viewmodel ×1
wif ×1