假设我有一些看起来像这样的代码:
foreach(type x in list y)
{
//dostuff1(x)
}
foreach(type x in list y)
{
//dostuff2(x)
}
foreach(type x in list y)
{
//dostuff3(x)
}
foreach(type x in list y)
{
//dostuff4(x)
}
foreach(type x in list y)
{
//dostuff5(x)
}
Run Code Online (Sandbox Code Playgroud)
我无法将事物组合成一个像这样的大循环:
foreach (type x in list y)
{
//dostuff1(x)
//dostuff2(x)
//dostuff3(x)
//dostuff4(x)
//dostuff5(x)
}
Run Code Online (Sandbox Code Playgroud)
这样做会改变顺序.有关在C#中使代码更简单的最佳方法的任何评论?
我想我可以通过创建这样的函数来解决这个问题,尽管我宁愿保持它的方式而不是强迫我的代码的未来读者理解yield:
void func(type x)
{
dostuff1(x)
yield 0;
dostuff2(x)
yield 0;
dostuff3(x)
yield 0;
dostuff4(x)
yield 0;
dostuff5(x)
yield break;
}
for …Run Code Online (Sandbox Code Playgroud) 这已经在这里被问到了,但不是我和OP接受了一个对我没有帮助的答案.到目前为止,我已尝试从不同的浏览器登录,更改Web配置,清除Cookie以及从外部计算机加载.
事实上,我最终确实发现问题是我自己的机器特有的; 当我发布到另一台机器时,它工作正常.有关何处寻找解决方案的建议?我故意使用我能想到的最简单的测试代码,一个干净的空aspx页面和一个简单的Page_Load函数.
编辑:澄清,像原始问题的作者,我得到一个"此消息已被处理"错误.这是打印出来的屏幕Response.Write(response.Exception.ToString());.我相信这个问题与配置相关,与其他作者不同,因为症状只出现在我的本地方框中.请注意,症状与我是否在运行代码的同一个盒子上进行测试无关.
protected void Page_Load(object sender, EventArgs e)
{
using (OpenIdRelyingParty openid = new OpenIdRelyingParty())
{
IAuthenticationResponse response = openid.GetResponse();
if (response != null)
{
try
{
Response.Write(response.Exception.ToString());
}
catch (Exception)
{
}
return;
}
}
using (OpenIdRelyingParty openid = new OpenIdRelyingParty())
{
IAuthenticationRequest request = openid.CreateRequest(@"https://www.google.com/accounts/o8/id");
request.RedirectToProvider();
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
DotNetOpenAuth.Messaging.Bindings.ReplayedMessageException:此消息已被处理.这可能表示正在进行重播攻击.位于c:\ TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Bindings\StandardReplayProtectionBindingElement.cs中的DotNetOpenAuth.Messaging.Bindings.StandardReplayProtectionBindingElement.ProcessIncomingMessage(IProtocolMessage message):DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage)第129行消息)在C:\ TeamCity的\ buildAgent \工作\ bf9e2ca68b75a334\SRC\DotNetOpenAuth \消息\ Channel.cs:线990在DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage消息)在C:\ TeamCity的\ buildAgent \工作\ bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:位于c:\ TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Channel.cs中的DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest)的第172行:\TeamCity的\ buildAgent \工作\ bf9e2ca68b75a334\SRC\DotN:在DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo在c)中线375 etOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:第498行 …
我已经看到了一些与此相似的问题,但没有一个完全相同.无论如何,我有一个以行结束的存储过程,
select SCOPE_IDENTITY()
return
Run Code Online (Sandbox Code Playgroud)
然后我通过电话获得价值executeScalar().这非常有效.但是,我觉得结束时更为正确return select SCOPE_IDENTITY()(而不是为此返回值创建新参数).这可能吗?
因此,我正在进行简单扫描以获取硬盘驱动器上所有文件夹的列表(c:\ windows和c:\ windows\system32被视为单独的条目).如果我想为这1-2分钟的任务提供进度条,我该怎么办呢?也就是说,我知道如何制作进度条,但不知道如何确定完成了多少工作.
编辑:请注意,执行预扫描不是一种解决方案,因为此扫描只获取文件夹列表,而预扫描只需要一段时间.
代码示例如下.在我的系统上运行干净需要不到2分钟,但由于磁盘访问缓存,第二次运行时间不到10秒.我已经创建了基于堆栈而不是基于递归的变体.
我发现的一种机制可能不是100%可靠,但比我的扫描快得多,将"dir/s/ab/b"传递给我的程序并计算换行的实例.Dir做的某种魔术可以比我的程序更好地扫描我的HD,但我不知道那是什么魔法.
class Program
{
static void recurse(string pos)
{
DirectoryInfo f = new DirectoryInfo(pos);
try
{
foreach (DirectoryInfo x in f.GetDirectories("*"))
{
recurse(x.FullName);
}
} catch (Exception) {}
}
static void Main(string[] args)
{
recurse("c:\\");
}
}
Run Code Online (Sandbox Code Playgroud) 我需要为我正在运行的网站设置维护页面,例如,当我执行站点维护(计划停机时间)或者某些事情确实中断时我需要显示保留页面.
我需要做些什么特别的事情来确保搜索引擎抓取工具不对其进行索引并认为它是我的网站.或者我应该做404,添加临时robots.txt文件或什么?我基本上不希望他们将其编入索引作为我的网站,但我也不希望他们认为我的网站已经死了而且没有回来.
编辑:这是我在Apache中所做的:ErrorDocument 503 /.server-maintenance.html RewriteEngine On RewriteRule!^.server-maintenance.html/server-maintenance Redirect 503/server-maintenance strong text
因此,我试图在团队项目的源代码管理树的路径处更改文件夹的大小写。我提出了一些相当愚蠢的方法,但是我想知道是否有更简单的方法来做到这一点。根本的问题是,重命名和移动功能都是在假设名称不同的前提下设计的,这意味着除非应用两次,否则它们不能用于更改大小写。
愚蠢的方法1:
步骤1:签出项目
步骤2:删除工作空间绑定
步骤3:(可选)为新文件夹进行工作空间绑定
步骤4:移至子文件夹或在步骤2中创建的文件夹
步骤5:在
步骤6 中 签入:在另一个方向上重复步骤1-4。
愚蠢(危险)方法2:
假设您有权访问数据库,则直接与数据库打交道。
我想使用SMO(顺序最小优化)来训练SVM(支持向量机).任何人都可以建议实现SMO的现有C++库吗?
我打算用它来训练SVM来找到图片中的对象(可能是人类).
我对C#中的Namespace结构感到困惑,我是C#和WPF的新手
当我创建一个WPF的新项目时,默认情况下这些命名空间包含在顶部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
Run Code Online (Sandbox Code Playgroud)
我很难理解这些结构.我明白那个
using System;
Run Code Online (Sandbox Code Playgroud)
意味着我指的是System命名空间
但其他人喜欢什么呢
using System.Text;
Run Code Online (Sandbox Code Playgroud)
那意味着什么?
此外,如果"Text"嵌套在"System"中,为什么只有"using System"包含所有命名空间?我们是否应该明确包含我们使用的每个命名空间?
注意:我对使用解析库不感兴趣.这是我自己的娱乐.
我一直在尝试从PDF文件中翻录文本以获取搜索小发明,但我无法从某些pdf文件中提取文本.
请注意,这比直接解析更容易解决问题; 我不在乎我是否无意中在输出中包含了一些垃圾,我也不在乎文件的格式是否完整.我甚至不在乎这些话是否按顺序出现.
作为第一步,我使用此项目中的策略创建了一个非常简单的pdf解析器.基本上,它所做的只是搜索zlib流的pdf文件,缩小它们,并拉出它在括号中找到的任何文本.这无法解析卡在<< >>块内部的数据,但我的理解是这是针对十六进制编码的数据blob,这似乎不在我无法解析的测试文件中......或者至少我不知道看不到他们.
同样,虽然PDFMiner和PDFBox成功,但iText.Net也失败了.然而,后两个项目有太多的间接层,很容易检查; 我很难弄清楚他们到底在做什么,部分原因是因为我并没有真正使用任何一种语言来习惯于以任何重要的方式调试它.
我的目标是创建一个文本ripper从pdf文件中抓取文本,尽可能不了解pdf格式本身(例如我的测试解析器从括号中抓取文本,但不知道它正在检查的pdf的哪个部分是标题).