小编Rus*_*rke的帖子

没有嵌套使用的步进MVC Mini Profiler

我们基于Dynamics CRM 4.0中复杂的实体关系对复杂系统进行建模

由于开发的性质,我们必须实现存储库样式模式,并且具有许多彼此相关的不同提供者.

我真正想要做的是描述他们的构造函数和各种懒惰的getter,但我想在顶层建模.

问题当然是Scope - 如果我将构造函数包装在using块中,它就不可用于其他任何东西.如果我扩展using块以便引用我正在分析的对象的所有内容都进入范围,那么探查器不仅仅是对构造函数进行分析 - 它是其他所有内容的计时.

同样,有一定程度的嵌套,如果我正确嵌套使用,那么代码就变得不可读了.

我已经看过Profiler.Inline,但这不符合我的目的.

我真正想做的是:

ref = Profiler.StartStep("Creating CRM Model");
//Do horrible CRM work
var myNewHorribleObject = CRM.ModelHorribleStuff(...);
Profiler.StopStep(ref);

ref = Profiler.StartStep("How long does it take to get X");
var data = Repository.GetSomething(myNewHorribleObject.SomeId);
Profiler.StopStep(ref);

ref = Profiler.StartStep("How long does it take to get Y");
var newData = Repository.GetSomethingElse(myNewHorribleObject.ContextId);
Profiler.StopStep(ref);
Run Code Online (Sandbox Code Playgroud)

那有意义吗 ?希望我在Mini Profiler中忽略了一些东西,但我欢迎任何建议!

我想稍微改造代码,但是没有时间,虽然它看起来很奇怪,但实际上我们有很好的圈复杂度.

c# crm dynamics-crm-4 mvc-mini-profiler

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

我的申请有什么问题----大小是0,但我预计46806!

我是C#程序员.

现在,我正在使用ICSharpCode.SharpZipLib.dll在我当前的项目中创建一个zip文件.但是我发现当我在SECOND TIME点击按钮执行一个函数来创建一个zip文件时,应用程序会抛出异常,友好并且认真地告诉我"大小为零,但我预计46086".

我很困惑,我想知道为什么?当我第一次点击按钮时,我可以成功完成,没有任何错误.

我的相关代码如下:

internal void ThreadProc()
{
    try
    {
        ZipHelper.CreateZip(backupZipFile, Constants.HomeConstant, true);

        // do other things
    }

}
Run Code Online (Sandbox Code Playgroud)

CreateZip()函数的实现如下:

public static void CreateZip(string zipFileName, string sourceDirectory, bool recurse)
{
 FastZip zip = new FastZip();

 if (File.Exists(zipFileName))
 {
         File.Delete(zipFileName);
 }

 zip.CreateZip(zipFileName, sourceDirectory, true, "");
}
Run Code Online (Sandbox Code Playgroud)

现在,我将向您展示递归调用过程:

  1. 在"ActiveCheckManager"类中调用方法"UpdateAppAsync"
public void UpdateAppAsync(string masterConfig)
{
    this.masterConf = masterConfig;

    Thread actualThread = new Thread(new ThreadStart(UpdateApp));
    actualThread.IsBackground = true;
    actualThread.CurrentCulture = Thread.CurrentThread.CurrentCulture;
    actualThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
    actualThread.Start();
}
Run Code Online (Sandbox Code Playgroud)
  1. 异步调用UpdateApp函数,在UpdateApp方法中,它只会简单地调用UpdateDetail函数.
private void …
Run Code Online (Sandbox Code Playgroud)

c# sharpziplib icsharpcode

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

建立具有最大值的表达式

给定n整数,是有一个O(n)O(n log n)能够计算可通过将操作员获得的数学表达式的最大值算法-+*和给定的数字之间括号?仅假定运算符的二进制变体,因此不取一元减,除非需要,请在第一个元素之前。

例如,给定-3 -4 5,我们可以构建表达式(-3) * (-4) * 5,其值为60,并且可能的最大值。

背景:

前一段时间,我在研究遗传算法时偶然发现了这个问题,并了解到可以使用经典遗传算法非常简单地解决它。但是,它运行缓慢,并且理论上只是简单的,因为代码在实践中变得很丑陋(评估表达式,检查方括号的正确放置等)。此外,我们也不保证找到绝对最大值。

遗传算法的所有这些缺点让我感到纳闷:既然我们不必担心除法问题,是否有办法以更经典的方法(例如动态编程或贪婪策略)有效地做到这一点?

更新:

这是一个F#程序,它实现了@Keith Randall提出的DP解决方案以及我的改进,我在对他的帖子的评论中写道。这是非常低效的,但是我坚持认为它是多项式并且具有三次复杂性。它可以在几秒钟内运行约50个元素数组。如果以完全命令式的方式编写,可能会更快,因为可能会浪费大量时间来构建和遍历列表。

open System
open System.IO
open System.Collections.Generic

let Solve (arr : int array) =
    let memo = new Dictionary<int * int * int, int>()

    let rec Inner st dr last = 
        if st = dr then 
            arr.[st]
        else
            if memo.ContainsKey(st, dr, last) then
                memo.Item(st, dr, last)
            else …
Run Code Online (Sandbox Code Playgroud)

algorithm optimization f#

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

带有多个手柄的 JQuery UI 滑块:如何阻止手柄交叉?

我正在开发一个快速解决方案,它使用带有多个手柄的 Slider 来定义动态布局的宽度。

我试图同时使用 ExtJS3 和最新的 JQuery UI。

在 ExtJS 中,你可以约束句柄,这样它们就不会相互交叉,这是我需要的 UI 的一种非常直观的方法,但是有一些原因我宁愿不将 ExtJS 用于海洋中的一个“岛”查询。

那么,有没有人知道一个秘密属性,或者一些限制 JQuery 滑块中多个句柄的代码?

为清楚起见:如果您有一个带有 2 个手柄的滑块,一个位于 40,另一个位于 60;该约束会阻止您将 60 处的手柄向下拖动到 20,而无需先移动 40 处的手柄。

jquery-ui constraints slider handle

4
推荐指数
1
解决办法
4486
查看次数

C#的枚举有什么问题?!它真是太棒了

认真.C#的枚举只是一个简单的眼睛.(IMO).

当您从字符串中解析它时,您将得到一整行臃肿的遗留代码:

(EnumType)Enum.Parse(typeof(EnumType), value);
Run Code Online (Sandbox Code Playgroud)

真的吗?一个解析方法,它接受一个类型参数,并吐出一个对象?!真的,它可能是:

Enum.Parse<EnumType>(value);
Run Code Online (Sandbox Code Playgroud)

这是一种价值类型.因此,您不能使用"as"而不是类型转换.它不共享基本类型.所以你也不能为它写一个扩展名.你要么采用静态的"助手类"(哇哇......),要么在字符串上使用...螺栓式扩展方法?!比失败更糟糕?

谁有优雅的东西?

c# enums

4
推荐指数
1
解决办法
692
查看次数

Javascript RegExp和边界

一位同事问我关于正则表达式的问题,我似乎无法找到并回答他.

我们使用边界来突出显示文本编辑器中的某些文本长度,但是这里有一些示例代码可以显示问题:

<script type="text/javascript">
var str = "Alpha , Beta, Gamma Delta Epsilon, AAlphaa, Beta Alpha<br/>";
var rx = new RegExp('\bAlpha\b','gim');

document.write(str.replace(/\b(Alpha)\b/gim, '-- $1 --'));
document.write(str.replace(rx, '== $1 =='));
</script>
Run Code Online (Sandbox Code Playgroud)

问题是,第一个文字str.replace工作,但RegExp选项不起作用.

我在IE和FF中有相同的行为,有谁知道为什么?

javascript regex word-boundary

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

如何计算php文件中的行数?

我正在开发一个php应用程序,想知道文件中的行数.这些文件位于几个不同的目录中,但如果需要,我可以将它们全部复制到一个目录中.

什么是最好的Windows应用程序/工具来计算文件中的行数?

我在这里搜索过,但几乎所有的问题都是关于用PHP计算,而不是使用外部程序.

谢谢!

php windows file-management

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

Visual Studio 2012和丢失的文件

Visual Studio 2012专业版遇到了一个奇怪的问题.

我们三个人正在使用它,我们正在开发相同的项目,MVC4/EF5/.Net4.5/C#和Oracle.

我们正在使用SVN进行版本控制.

发生的事情是,当我的同事向项目提交新文件时,当我更新我的工作副本时,文件会通过,但它不会在Visual Studio中显示为项目的一部分,只有在您选择全部显示时才会显示文件然后手动将其添加到项目中.

现在我知道你在想什么,我们没有提交CSPROJ文件或类似的东西,但我已经仔细检查了,我们肯定是; 我们唯一忽略的是.user/.resharper和.suo文件.

还有其他人遇到过这个问题吗?

svn asp.net-mvc-4 visual-studio-2012

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