小编mcl*_*129的帖子

ConcurrentDictionary <TKey,TValue> vs Dictionary <TKey,TValue>

正如MSDN所说

ConcurrentDictionary<TKey, TValue> Class表示可以由多个线程同时访问的键值对的线程安全集合.

但据我所知,System.Collections.Concurrent课程是为PLINQ设计的.

我有Dictionary<Key,Value>保持服务器中的在线客户端,并且当我有权访问它时通过锁定对象使其成为线程安全的.

我可以放心地取代Dictionary<TKey,TValue>通过ConcurrentDictionary<TKey,TValue>我的情况?更换后性能会提高吗?

这里在第5约瑟夫阿尔巴哈利提到,它专为并行编程

  • 并发集合针对并行编程进行了调整.除了高度并发的场景外,传统的集合在所有集合中都优于它们.
  • 线程安全的集合不保证使用它的代码是线程安全的.
  • 如果在另一个线程正在修改它时枚举并发集合,则不会抛出任何异常.相反,你会得到新旧内容的混合.
  • List没有并发版本.
  • 并发堆栈,队列和包类在内部使用链接列表实现.这使得它们比非并发Stack和Queue类的内存效率更低,但对并发访问更好,因为链表有利于无锁或低锁实现.(这是因为将节点插入链表需要更新几个引用,而将元素插入类似List的结构可能需要移动数千个现有元素.)

c# dictionary concurrent-collections c#-4.0

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

在IIS7 404重定向页面中访问原始URL

我在IIS 7上设置的站点上有一个.aspx页面作为我的自定义404页面.我需要检索用户尝试访问的原始URL,以便在404页面上进行一些处理.诀窍是我需要专门处理不包含.aspx扩展名的404(例如http://example.com/testurl),它不会通过ASP.NET的自定义错误部分进行路由.我可以将IIS配置为指向我的自定义404,但此时我不知道如何获取我的原始URL?有谁知道这是否可能?

谢谢,

麦克风

asp.net url redirect iis-7 http-status-code-404

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

如何在ASP.net中取消事件冒泡?

是否可以阻止ItemCommand或控件事件冒泡控制层次结构?我有一个控件,其中包含子用户控件,可能已经或可能没有处理其ItemCommand事件的代码.我想要做的是允许子控件决定在它已经在其代码隐藏中处理事件的情况下不将ItemCommand传递给父控件.

谢谢,

麦克风

asp.net events user-controls

8
推荐指数
1
解决办法
5672
查看次数

有没有办法从C#WPF应用程序刷新DNS缓存?(在XP,Vista,Win7上)

有没有办法从C#WPF应用程序刷新DNS缓存?该应用程序将在XP,Vista或Windows 7上运行.

.net c# dns caching flush

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

使用折叠比标准递归效率低

我现在正在阅读Learn You a Haskell一书,我很好奇这个特定的例子是如何工作的.本书首先演示了findKey使用传统递归的实现:

findKey :: (Eq k) => k -> [(k,v)] -> Maybe v  
findKey key [] = Nothing  
findKey key ((k,v):xs) = if key == k  
                            then Just v  
                            else findKey key xs  
Run Code Online (Sandbox Code Playgroud)

然后,本书将使用更短的实现进行跟进 foldr

findKey :: (Eq k) => k -> [(k,v)] -> Maybe v  
findKey key = foldr (\(k,v) acc -> if key == k then Just v else acc) Nothing  
Run Code Online (Sandbox Code Playgroud)

使用标准递归,函数应在使用提供的键到达第一个元素后立即返回.如果我foldr正确理解了实现,它将每次迭代整个列表,即使它与它遇到的第一个元素匹配.这似乎不是处理问题的非常有效的方法.

是否有一些我没有得到的foldr实施如何工作?或者Haskell中是否有某种神奇的东西使得这种实现效果不如我想的那么低效?

recursion haskell

8
推荐指数
1
解决办法
454
查看次数

通过ARM模板将Active Directory管理员分配给Azure SQL实例

是否可以将Active Directory管理员分配给ARM资源模板中的Azure SQL实例?我正在尝试自动部署数据库服务器,但我似乎只能指定本地服务器管理凭据.

        "properties": {
            "administratorLogin": "[parameters('databaseAdministratorLogin')]",
            "administratorLoginPassword": "[parameters('databaseAdministratorPassword')]",
            "version": "12.0"
        },
Run Code Online (Sandbox Code Playgroud)

除此之外,似乎没有任何地方可以指定特定的Azure AD管理员.

azure azure-resource-manager azure-sql-database azure-sql-server

8
推荐指数
1
解决办法
3039
查看次数

WPF WebBrowser浏览器版本

WPF WebBrowser控件是否依赖于用户计算机上安装的IE版本,还是使用跨机器一致的单独库?我已经读过它只能在IE7模式下渲染,但是我想确保没有安装IE或由于某些原因仍然在IE6上的用户没有任何问题.

.net browser wpf webbrowser-control

7
推荐指数
1
解决办法
8771
查看次数

在MDX查询中组合关系数据和OLAP数据

我有一个SSAS 2008多维数据集,用于存储来自股票市场的一天结束的财务数据.该多维数据集仅在市场收盘后每天处理一次,因此它从未获得有关当前日内交易数据的任何信息.我还有一个关系数据库,其中包含当前股票的日内交易信息.我试图找到一种方法来组合这两个数据源,以便我可以执行计算,例如基于当前价格的库存的30天移动平均值,以及之前29天的历史数据.我正在使用SSAS标准版,因此我无法访问主动缓存或多个分区等功能,以帮助我近乎实时地处理当前数据.

对于单个查询的上下文,有什么方法可以以某种方式动态地将我的SQL数据库中的行包含到我的事实表中?基本上只是暂时将一小部分数据引入到多维数据集中以处理某个计算?

sql sql-server olap ssas mdx

6
推荐指数
1
解决办法
1362
查看次数

如何调试在Azure中部署的ASPNET核心MVC应用程序

我创建了一个简单的ASPNET Core 1.0 MVC应用程序,我试图使用Visual Studio部署到Azure.我可以使用IIS Express在我的机器上本地运行此应用程序,并导航到我的默认路由并显示页面.但是,在Azure中,我每次都会遇到500错误,此时我对如何获取其他信息感到茫然.

我在我的Azure应用程序中启用了详细的请求记录,但它似乎并没有告诉我太多.

ModuleName="AspNetCoreModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="The operation completed successfully.
 (0x0)", ConfigExceptionInfo="" 
Run Code Online (Sandbox Code Playgroud)

我已经将我的Startup配置剥离到了必需品

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, ILoggerFactory loggingFactory)
{

    loggingFactory.AddConsole();
    loggingFactory.AddDebug();

    app.UseMvc(routes => {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}"
        );
    });

}
Run Code Online (Sandbox Code Playgroud)

在MVC管道中必须有些东西,但我不知道如何增加更多可见性.我该怎么做才能获得更多信息?

如果重要,这是我的 Program.cs

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

host.Run();
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc azure asp.net-core-mvc asp.net-core-1.0

6
推荐指数
1
解决办法
1598
查看次数

如何在不使用数据库的情况下重新实例化动态ASP.NET用户控件?

我目前正在处理使用动态Web用户控件的应用程序的一部分,并且我在使用ViewState或其他一些不使用ViewState的方法重新实例化回发控件时遇到了一些麻烦.要求我在每次回发时查询数据库.

基本上我在我的页面上有一个用户控件,它包含一个用于保存可变数量的子用户控件的面板和一个显示"Add Control"的按钮,其功能非常自我解释.

子用户控件非常简单; 它只是一个删除按钮,一个下拉菜单和一个排成一排的时间选择器控件.只要用户单击父控件上的"添加控件"按钮,就会向包含子控件的面板添加新的"行".

我想要做的是能够添加和删除对该集合的控制,修改值,并执行我需要在内存中执行的任何操作,而无需对数据库进行任何调用.当我完成添加控件并填充其值时,我想单击"保存"以立即将控件中的所有数据保存/更新到数据库.目前我发现的唯一解决方案是简单地将每个帖子中的数据保存在数据库中,然后使用存储在数据库中的行来重新实例化回发上的控件.显然,这会强制用户根据自己的意愿保存对DB的更改,并且如果他们想要取消使用控件而不保存其数据,则必须进行额外的工作以确保删除先前提交的行.

根据我对使用动态控件的了解,我知道最好在生命周期的Init阶段将控件添加到页面,然后在加载阶段填充它们的值.我还了解到,确保您可以保持控件的视图状态的唯一方法是确保为每个动态控件提供唯一的ID,并确保在重新实例化控件时为其分配完全相同的ID.我还了解到,在生命周期的Init阶段之后,ViewState实际上才会被加载.这就是我的问题所在.如果我无法使用viewstate并且我不想对数据库执行任何调用,如何存储和检索这些控件的名称?是否可以使用ASP.net进行这种内存操作/批量保存值?

任何帮助是极大的赞赏,

麦克风

asp.net viewstate user-controls controls dynamic

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