Tag: .net

.NET的multithreading与多处理:糟糕的Parallel.ForEach性能

我编写了一个非常简单的“字数统计”程序,它读取文件并计算文件中每个单词的出现次数。 以下是代码的一部分: class Alaki { private static List input = new List(); private static void exec(int threadcount) { ParallelOptions options = new ParallelOptions(); options.MaxDegreeOfParallelism = threadcount; Parallel.ForEach(Partitioner.Create(0, input.Count),options, (range) => { var dic = new Dictionary<string, List>(); for (int i = range.Item1; i < range.Item2; i++) { //make some delay! //for (int x = 0; […]

如何在C#中使用SHA1或MD5?(哪一个在身份validation和安全性方面更好)

在C#中我们如何自动使用SHA1? SHA1是否优于MD5?(我们使用哈希来获取用户名和密码,并需要速度进行身份validation)

如何以及何时放弃在C#中使用数组?

我总是被告知,向数组添加元素的方式如下: 创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据 如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗? 如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组? 你应该使用iStringMap吗? 如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么。 你是刚刚受到性能打击还是应该使用其他东西?

WCF服务引用名称空间与原始名称不同

关于我的服务引用所使用的命名空间,我遇到了问题。 我有许多WCF服务,比如命名空间MyCompany.Services.MyProduct ( 实际名称空间更长 )。 作为产品的一部分,我还提供了一个示例C#.NET网站。 此Web应用程序使用命名空间MyCompany.MyProduct 。 在初始开发期间,该服务被添加为网站的项目参考并直接使用。 我使用了一个工厂模式,它返回一个实现MyCompany.Services.MyProduct.IMyService的对象实例。 到现在为止还挺好。 现在我想更改它以使用实际的服务引用。 添加引用并在命名空间文本框中键入MyCompany.Services.MyProduct后,它将在命名空间MyCompany.MyProduct.MyCompany.Services.MyProduct中生成类。 坏! 我不想仅仅因为我正在使用代理类而在几个地方using指令进行更改。 所以我尝试使用global::前置命名空间,但是不接受。 请注意,我还没有删除原始程序集引用,并且启用了“重用类型”,但显然没有重用。 但是,我不想在我的示例网站中保留程序集引用,以使其无论如何都能正常工作 。 到目前为止,我提出的唯一解决方案是将我的Web应用程序的默认命名空间设置为MyCompany (因为它不能为空),并将服务引用添加为Services.MyProduct 。 假设客户想要使用我的示例网站作为起点,他们将默认命名空间更改为OtherCompany.Whatever ,这显然会破坏我的解决方法。 这个问题有一个很好的解决方案吗? 总结一下 :我想在原始命名空间中生成服务引用代理,而不引用程序集。 注意:我已经看到了这个问题 ,但没有提供可用于我的用例的解决方案。 编辑:正如John Saunders建议的那样,我已向微软提交了一些反馈: 反馈项目@ Microsoft Connect

如何管理无效检查的冲击?

通常,在编程中我们会遇到null检查显示特别大的情况。 我说的是: if (doc != null) { if (doc.Element != null) { … and so on } else throw new Exception(“Element cannot be null”); } else { throw new Exception(“document cannot be null”); } 基本上,整个事情变成了一个难以理解的噩梦,所以我想知道:有没有更简单的方法来描述我上面要做的事情? (除了空检查,我还会不时得到string.IsNullOrEmpty东西。) 接受的答案:我接受了有这个链接的答案,因为所描述的方法是创新的,而且正是我想要的。 谢谢肖恩!

Visual Studio中的LINQPad

public static class Extensions{ public static void Dump(this T o) { } public static void Dump(this T o, string s) { }} 这些行允许我将代码从LINQPad复制到VS并运行它而不用.Dump()注释每一行但是这还不够…… http://code.google.com/p/linqpadvisualizer/ – 不太舒服: ( 我在VS中搜索LINQPad的最佳结果是这个网站 ,下面是Pat Kujawa的代码。 using System.Diagnostics; using System.IO; public static class Extensions { public static void Dump(this T o) { string localUrl = Path.GetTempFileName() + “.html”; using (var writer […]

循环查看视图中的模型属性

我有一个痛苦的简单视图模型 public class TellAFriendViewModel { public string Email1 { get; set; } public string Email2 { get; set; } public string Email3 { get; set; } public string Email4 { get; set; } public string Email5 { get; set; } } 然后我的视图上的相应输入,但我想知道是否有更好的方法(如循环)将类似的TextBoxs写入我的视图: @using (Html.BeginForm()){ @Html.AntiForgeryToken() @Html.TextBoxFor(vm => vm.Email1) @Html.TextBoxFor(vm => vm.Email2) @Html.TextBoxFor(vm => vm.Email3) @Html.TextBoxFor(vm […]

在.net中以zip格式下载多个文件

我有一个文件列表,每个文件都有复选框,如果用户检查了很多文件并点击下载,我必须压缩所有这些文件并下载…就像在邮件附件中一样.. 我已经使用这篇文章中提到的代码进行单个文件下载 请帮助如何下载多个文件作为zip ..

如果我希望使用ASP.NET MVC4创建ApiKey受限资源,我应该使用IAuthorizationFilter吗?

我有一些简单的路由,我希望通过一个简单的查询字符串参数进行限制。 如果密钥不正确或未提供,那么我希望抛出NotAuthorizedException 。 请不要建议我使用WebApi或等效 – 我不能在这种情况下使用。 所以我不确定我是应该实现IAuthorizationFilter还是实现IActionFilter甚至是其他东西。 我的代码逻辑? 检查查询字符串是否有关键。 检查我的RavenDb(存储库)以查找具有该键/值的用户。 如果它们未通过任何这些检查,则抛出NotAuthorizedException 。 我假设我会用这个filter装饰我的动作方法。 我还假设我需要将我的存储库传递给这个动作方法吗? 有什么建议吗?

Delegate.CreateDelegate与DynamicMethod vs Expression

关于使反思飞行和探索代表的问题 …… 如果我需要为动态加载类型的方法创建委托Func ,我可能会使用(1) Delegate.CreateDelegate (2) DynamicMethod (3) Expression树。 让我们说一组动态加载的类型/方法在应用程序启动时通过config反映一次,并在应用程序的整个生命周期中使用(启动性能不是问题,也不是内存),代理被缓存并分派到一个强烈的方式。 这些代理是同时访问的热路径。 您更喜欢哪种动态绑定方法?为什么?