我没有看到任何东西,我怀疑定义"n"有困难,因为一般来说,分析复杂函数时,不仅仅有一两个变量用于定义.
有关于圈复杂度的分析工具,但有时间(和/或空间)复杂性吗?如果是这样的话,如果没有,为什么不呢?这是不可行的吗?不可能?有人只是没有接触到它?
理想情况下,应用程序的整体复杂性(定义不同的可能"n")以及应用程序中的每个方法都有类似的东西
编辑:所以看起来像一个确切的解决方案是不可能的,因为停止问题然而,某种启发式近似可能吗?我意识到,出于实际目的,一个好的分析器将提供更多有用的信息,但它似乎是一个有趣的问题.
另外,如何计算某个程序子集?
因此我知道,总是在if,for等中包含花括号被认为是一种好的做法,即使它们是可选的,如果只有一个后面的语句,因为它更容易意外地执行以下操作:
if(something == true)
DoSomething();
DoSomethingElse();
Run Code Online (Sandbox Code Playgroud)
如果你没有把括号快速编辑代码.
虽然这样的事情怎么样:
if(something == true)
{ DoSomething(); }
Run Code Online (Sandbox Code Playgroud)
这样你仍然占用更少的线(IMO提高了可读性)但仍然不太可能从上面意外地犯错误?
我问,因为我不相信我以前见过这种风格的if或循环,但我确实看到它用于C#属性中的getter和setter,如:
public string Name
{get;set;}
Run Code Online (Sandbox Code Playgroud)
不要问什么是最好的,因为这太主观了,而只是这是否被认为是可接受的风格,如果不是,为什么不.
或者可以手动更新内置进度条吗?基本上我有2个MSI并使用Inno Setup作为引导程序,根据用户输入,将安装一个或两个MSI.我在CurStepChanged中使用Exec语句有一些工作,但它不会更新进度条,因为文件被解压缩,看起来安装程序已经停止.我想最终的结果是我想要一些进度条更新,同时将文件解压缩到临时文件夹.以下是我目前的代码:
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
if(CurStep = ssInstall) then begin
if(InstallServer) then begin
ExtractTemporaryFile('ServerSetup.msi');
Exec('msiexec',ExpandConstant('/i "{tmp}\ServerSetup.msi" /qb INSTALLDIR="{code:GetInstallPath}\Server\" ALLUSERS=2'),'', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
if(InstallClient) then begin
ExtractTemporaryFile('ClientSetup.msi');
Exec('msiexec',ExpandConstant('/i "{tmp}\ClientSetup.msi" /qb INSTALLDIR="{code:GetInstallPath}\Client\" ALLUSERS=2'),'', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
end;
end;
Run Code Online (Sandbox Code Playgroud) 目前,只要更新到更新的版本号,所有升级都可以正常工作,但是在降级时我会遇到奇怪的行为.它似乎将卸载现有版本,然后部分安装我正在尝试安装的版本,目标位置尚不存在主exe,但会创建广告快捷方式.当打开广告的快捷方式时,它将完成安装(可能是修复)然后它将运行正常.
有没有人有任何想法为什么会这样?
我的升级块看起来像这样:
<UpgradeVersion Minimum="0.0.0.0" Maximum="99.0.0.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" IgnoreRemoveFailure="yes" />
(IgnoreRemoveFailure尝试解决此问题,但似乎没有做任何事情)
在我的InstallExecuteSequence中我有 <RemoveExistingProducts After="InstallValidate" />
我也有Product Id="*"和Package Id="*"
需要降级的原因是因为客户端应用程序需要运行与服务器相同的版本以确保兼容性,并且整个过程需要自动化,因此如果客户端/服务器版本在登录时不匹配,则用户可以单击"是",下载,安装并启动正确的版本.这是工作迄今升级,但降级需要额外的步骤直观是手动重新启动应用程序,然后看到一个Windows安装程序对话框弹出它启动之前.
最终的结果是,无论升级或降级,目前的版本需要完全卸载和下载的版本完全安装,所以如果有另一种方式来实现这一目标,这也将是一个很好的答案.
当你向某人发送电子邮件时,我们有一个自动完成的列表,这个列表很好,直到列表变得非常大,你需要输入越来越多的地址来获得你想要的那个,这就是违背自动完成的目的
我认为应该添加一些逻辑,以便自动完成结果应该按照最近联系或最常联系的某些功能进行排序,而不仅仅是字母顺序.
我想知道的是,如果有任何已知的良好算法用于此类搜索,或者是否有人有任何建议.
我当时想的只是一个点系统的事情,当天的事情是5分,最后3天是4分,上周是3分,上个月是2分,最后6个月是1分.然后大多数情况下,25 +是5分,15 +是4,10 +是3,5 +是2,2 +是1.没有真正的逻辑,除了那些数字"感觉"正确.
除了任意选择的数字之外,是否有人有任何输入?如果你能说出你认为他们比我更好的原因,其他人也欢迎
编辑:这主要是在一个商业环境中,近期(yay for making words)通常和频率一样重要.而且,经过某一点,与80次谈话的人说30次之间确实差别不大.
编译Any Cpu以及编译为x86时会发生这种情况.GUI的各个部分不会重新绘制,除非它被调整大小,例如,如果主窗体最大化,某些控件不会随之调整大小,而其他部分的部分不会重绘并显示之前的内容.
这适用于32位机器,包括XP和Vista,但在64位Vista(没有x64 XP进行测试)上,重绘只是不能正常工作.
任何人都有任何关于从哪里开始跟踪这个的想法?
编辑:这发生在2台独立的机器上,至少我目前使用的是NVidia的最新驱动程序.
Edit2:在我的64位计算机上运行32位XP虚拟机,该应用程序没有在VM中显示重绘问题
编辑3:这可能是驱动程序问题,但我们不知道驱动程序是否或何时解决问题.一位同事说家里的ATI卡比NVidia的问题要少,但过去几个月我一直在每月更新我的视频驱动程序而且还没有解决,所以我们不能只发布我们的产品并告诉我们的客户,有一天司机制造商可能会解决这个问题.
有没有人对要避免的事情有任何见解?我们正在编译为x86,所有组件都是x86.我似乎无法使用测试项目中的任何组件重现此问题,我还没有听到其他人在大多数组件论坛上报告这些问题,因此很可能这是我们正在做的事情.
似乎在System.Threading.Timer回调函数的回调中调用Winforms控件上的Invoke泄漏句柄,直到计时器被释放.有没有人知道如何解决这个问题?我需要每秒轮询一次值并相应地更新UI.
我在一个测试项目中尝试过,以确保这确实是泄漏的原因,这只是以下几点:
System.Threading.Timer timer;
public Form1()
{
InitializeComponent();
timer = new System.Threading.Timer(new System.Threading.TimerCallback(DoStuff), null, 0, 500);
}
void DoStuff(object o)
{
this.Invoke(new Action(() => this.Text = "hello world"));
}
Run Code Online (Sandbox Code Playgroud)
如果您在Windows任务管理器中观看,这将泄漏2个句柄/秒.
如果我理解的任何部分是错误的,请随意纠正我.
我的理解是GPU提供普通CPU提供的指令子集,但执行速度要快得多.
我知道有很多方法可以将GPU周期用于非图形用途,但似乎(理论上)一种Just In Time编译的语言可以检测到合适GPU的存在并将一些工作卸载到GPU后面没有代码更改.
我的理解天真吗?它只是一个问题,它真的很复杂,还没有完成它?
NP-completeness在我看来就像其中一个主要是理论上的东西,而不是你在正常工作环境中遇到的东西.
所以我有点好奇,如果有人在他们的工作中遇到问题,结果证明是NP完全的,并且设计需要改变以适应它吗?
当我们的应用程序以编程方式启动时(通过MSI安装程序中的自定义操作或在启动新实例时)在Windows Vista中启动(也发生在Windows 7 Beta中),它不会出现在任务栏中而且没有集中注意力.对其进行Alt-tabbing将使其正确显示在任务栏中并保持在那里.
是什么导致这个?我之前也在其他一些应用程序中看过这个,但不知道为什么.Out app是.NET WinForms应用程序.永远不要在XP中看到这种情况,只有Vista和7
编辑:好吧,似乎唯一一次这种可重复发生的时候是由安装程序运行的时候,我相信还有其他时候会发生,但我可能只是疯了.发布代码有点复杂,因为我们处理各种命令行启动参数,并在实际启动主应用程序之前启动登录表单等.
有没有人不得不在此之前处理这个场景并进行解决?
winforms ×3
c# ×2
.net ×1
64-bit ×1
algorithm ×1
big-o ×1
coding-style ×1
compilation ×1
downgrade ×1
gpu ×1
handle-leak ×1
inno-setup ×1
jit ×1
np-complete ×1
redraw ×1
taskbar ×1
theory ×1
timer ×1
usability ×1
wix ×1
wix3 ×1