我正在编写一个(看似)直接的SQL片段,在确保列存在后删除列.
问题:如果列不存在,代码内 IF子句抱怨说,它无法找到列!好吧,doh,这就是它在IF条款中的原因!
所以我的问题是,为什么一段不应该执行的代码会出错?
这是片段:
IF exists (select * from syscolumns
WHERE id=object_id('Table_MD') and name='timeout')
BEGIN
ALTER TABLE [dbo].[Table_MD]
DROP COLUMN timeout
END
GO
Run Code Online (Sandbox Code Playgroud)
......这是错误:
Error executing SQL script [...]. Invalid column name 'timeout'
我正在使用Microsoft SQL Server 2005 Express Edition.
Ruby中是否支持(缺少更好的词)非转义(逐字)字符串?
就像在C#中一样:
@"c:\Program Files\"
Run Code Online (Sandbox Code Playgroud)
......或者在Tcl中:
{c:\Program Files\}
Run Code Online (Sandbox Code Playgroud) 对于我来说,这是一个相对常见的任务,我认为,对于许多.NET程序员来说:
我想使用.NET ThreadPool来调度需要处理给定类型任务的工作线程.
作为回顾,ThreadPool及其关联委托的排队方法的签名是:
public static bool QueueUserWorkItem (
WaitCallback callBack,
Object state
)
public delegate void WaitCallback (Object state)
Run Code Online (Sandbox Code Playgroud)
因此,典型的通用工作线程类看起来像:
public class Worker<T> {
public void schedule(T i_task) {
ThreadPool.QueueUserWorkItem(execute, i_task)
}
private void execute(Object o){
T task = (T)o; //What happened to the type safety?
executeTask(task);
}
private void executeTask(T i_task){
//process i_task
}
}
Run Code Online (Sandbox Code Playgroud)
注意state参数的类型?是的Object!
.NET团队选择不使QueueUserWorkItem方法(或整个ThreadPool类)通用的令人信服的原因是什么?我无法相信他们只是忽略了它.
这是我想看到它的方式:
//in the ThreadPool class:
public static bool QueueUserWorkItem<T> (
WaitCallback<T> callBack,
T …Run Code Online (Sandbox Code Playgroud) 当我在 Visual Studio 2005 中调试 C++ 混合(托管/非托管)项目时,我经常从调试监视中获得奇怪的数据,如下所示:(
顺便说一句,变量i_processName是 a const std::string &)
替代文字 http://img175.imageshack.us/img175/3561/43419953av1.jpg
请注意,该变量实际上包含有效数据 - 如果我将其打印到标准输出,则打印的字符串就好了,感谢您的询问。较简单的数据类型(例如ints)(通常?)显示其正确值。
你也遇到过这种情况吗?
这是调试时的一个主要 PITA,所以......关于如何让手表显示正确数据的任何想法,或者是什么导致了这种情况?
所以我试图调试这个奇怪的问题,其中一个进程结束而不调用一些析构函数...
在VS(2005)调试器中,当我看到这个时,我点击'Break all'并在大量消失的进程的线程的调用堆栈中查看:
闻起来像SO http://img6.imageshack.us/img6/7628/95434880.jpg
这绝对看起来像一个正在制作中的SO,这可以解释为什么这个过程运行到它的快乐的地方,而不首先包装它的行李箱.
问题是,VS调试器的调用堆栈只显示您在图像中可以看到的内容.
所以我的问题是:如何找到无限递归调用的起始位置?
我在某处读到,在Linux中你可以附加一个回调到SIGSEGV处理程序,并获得有关正在发生的事情的更多信息.
Windows上有类似的东西吗?
您将获得一个数字的所有主要因子,以及它们的多重性(最高权力).
要求是产生该数字的所有因素.
让我举个例子:
主要原因:
(意思是数字是 2^3 * 3^1 = 24)
预期结果是:
1,2,3,4,6,8,12,24
我正在考虑使用一些链式自定义迭代器(在C#中),每个素数因子一个,从0到该素数的幂.
你会如何实现这个?使用您的首选语言.
可能重复:
比较两个集合是否相等
我需要验证两个IEnumerable<T>列表是否具有相同的元素,不一定是相同的顺序.
我的目标是.NET 3.5.
这是测试.问题是,应该如何HasSameElements()实施?
var l1 = new[]{1,2,3};
var l2 = new[]{3,1,2};
bool rez1 = l1.HasSameElements(l2);//should be true
var l3 = new[]{1,2,3,2};
var l4 = new[]{3,1,2,2};
bool rez2 = l3.HasSameElements(l4);//should be true
var l5 = new[]{1,2,3,2};
var l6 = new[]{1,2,3};
bool rez3 = l5.HasSameElements(l6);//should be false
Run Code Online (Sandbox Code Playgroud)
附加说明:
在示例中,我使用IEnumerable,但T可以是任何东西.T必须实施IComparable吗?
Enumerable.SequenceEquals()本身不起作用,它期望元素的顺序相同.
这是一个模板HasElements:
[只是一些占位符文本作为Markdown'代码格式'错误的解决方法]
public static class Extensions {
public static bool HasElements(this IEnumerable<T> l1, IEnumerable<T> l2){
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud) 我经常Debug -> Exceptions -> check CLR Exceptions在调试会话期间使用.有时会抛出并处理异常,但我真的想找到异常的来源.为了做到这一点,我没有看到我不关心的第一次机会异常,我启动我的应用程序,然后检查CLR例外:

这变得非常乏味,我很想在我的VS2010工具栏切换按钮,可以让我在将只设置/复位CLR例外,而无需钥匙CTRL+ D,E,选中该复选框,然后单击确定(和然后再次执行相同的过程以关闭异常).我进入了工具栏自定义,但我只能得到一个按钮,显示"例外"对话框.这显然不如击中CTRL+ D,效率低E.
有谁知道另一种方法来添加这个?它需要一个VS插件吗?按键映射也很不错.
我从来没有在VS中使用过Macro Recorder,但也许这是一个必要的地方?
我正在尝试发送一个简单的字符串作为HttpPost消息的内容.
问题是,HttpPost消息的主体永远不会成为线路.(说Wireshark捕获).标题看起来很好(包括正确计算的Content-Length.
这是代码的样子:
String url = "http://1.2.3.4/resource";
HttpClient client = new DefaultHttpClient();
String cmd = "AT+AVLPOS\r\n";
StringEntity se = new StringEntity(cmd);
se.setContentType("text/plain");
HttpPost request = new HttpPost(url);
request.setHeader("Content-Type","text/plain");
request.setEntity(se);
HttpResponse response = client.execute(request);
[...]
Run Code Online (Sandbox Code Playgroud)
字符串应该是ASCII编码的,但这是一个细节.
这是WireShark中显示的内容: - >请注意,标有+的行是发送的内容,而 - 是收到的内容.
+POST /resource HTTP/1.1
+Content-Type: text/plain
+Content-Length: 11
+Host: 1.2.3.4
+Connection: Keep-Alive
+User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
+Expect: 100-Continue
-HTTP/1.1 200 OK
-Content-Type: text/plain
-Transfer-Encoding: chunked
-4
-OK
Run Code Online (Sandbox Code Playgroud)
这应该是显示出来的(在C#中编写了一个非常简单的控制台应用程序来执行此操作,它只是起作用):
+POST /resource HTTP/1.1
+Content-Type: text/plain
+Host: 1.2.3.4
+Content-Length: 11
+Expect: 100-continue …Run Code Online (Sandbox Code Playgroud) 如何获取多维数组中最内层元素的类型?
var qq = new int[2,3]{{1,2,3}, {1,2,4}};
var t = qq.GetType().ToString();//is "System.Int32[,]"
var t2 = ??; // should be "System.Int32"
Run Code Online (Sandbox Code Playgroud)
无论数组的维数(Rank)如何,我都希望得到最里面的元素类型.