我们基于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#程序员.
现在,我正在使用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)
现在,我将向您展示递归调用过程:
Run Code Online (Sandbox Code Playgroud)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)private void …
给定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) 我正在开发一个快速解决方案,它使用带有多个手柄的 Slider 来定义动态布局的宽度。
我试图同时使用 ExtJS3 和最新的 JQuery UI。
在 ExtJS 中,你可以约束句柄,这样它们就不会相互交叉,这是我需要的 UI 的一种非常直观的方法,但是有一些原因我宁愿不将 ExtJS 用于海洋中的一个“岛”查询。
那么,有没有人知道一个秘密属性,或者一些限制 JQuery 滑块中多个句柄的代码?
为清楚起见:如果您有一个带有 2 个手柄的滑块,一个位于 40,另一个位于 60;该约束会阻止您将 60 处的手柄向下拖动到 20,而无需先移动 40 处的手柄。
认真.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"而不是类型转换.它不共享基本类型.所以你也不能为它写一个扩展名.你要么采用静态的"助手类"(哇哇......),要么在字符串上使用...螺栓式扩展方法?!比失败更糟糕?
谁有优雅的东西?
一位同事问我关于正则表达式的问题,我似乎无法找到并回答他.
我们使用边界来突出显示文本编辑器中的某些文本长度,但是这里有一些示例代码可以显示问题:
<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中有相同的行为,有谁知道为什么?
我正在开发一个php应用程序,想知道文件中的行数.这些文件位于几个不同的目录中,但如果需要,我可以将它们全部复制到一个目录中.
什么是最好的Windows应用程序/工具来计算文件中的行数?
我在这里搜索过,但几乎所有的问题都是关于用PHP计算,而不是使用外部程序.
谢谢!
Visual Studio 2012专业版遇到了一个奇怪的问题.
我们三个人正在使用它,我们正在开发相同的项目,MVC4/EF5/.Net4.5/C#和Oracle.
我们正在使用SVN进行版本控制.
发生的事情是,当我的同事向项目提交新文件时,当我更新我的工作副本时,文件会通过,但它不会在Visual Studio中显示为项目的一部分,只有在您选择全部显示时才会显示文件然后手动将其添加到项目中.
现在我知道你在想什么,我们没有提交CSPROJ文件或类似的东西,但我已经仔细检查了,我们肯定是; 我们唯一忽略的是.user/.resharper和.suo文件.
还有其他人遇到过这个问题吗?
c# ×3
algorithm ×1
constraints ×1
crm ×1
enums ×1
f# ×1
handle ×1
icsharpcode ×1
javascript ×1
jquery-ui ×1
optimization ×1
php ×1
regex ×1
sharpziplib ×1
slider ×1
svn ×1
windows ×1