请考虑以下代码段:
public class StringValueOfNull {
public static void main(String[] args) {
String.valueOf(null);
// programmer intention is to invoke valueOf(Object), but instead
// code invokes valueOf(char[]) and throws NullPointerException
}
}
Run Code Online (Sandbox Code Playgroud)
正如在链接问题的答案中所解释的那样,Java的方法重载将上面的调用解析为String.valueOf(char[]),这NullPointerException在运行时是正确的.
在Eclipse中编译javac 1.6.0_17,这是堆栈跟踪:
Exception in thread "main" java.lang.NullPointerException
at java.lang.String.<init>(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at StringValueOfNull.main(StringValueOfNull.java:3)
Run Code Online (Sandbox Code Playgroud)
需要注意的是堆栈跟踪上面缺少关键信息:它不具备的完整签名valueOf法!它只是说String.valueOf(Unknown Source)!
在我遇到的大多数情况下,异常堆栈跟踪总是具有实际位于堆栈跟踪中的方法的完整签名,这当然对于立即识别问题非常有用,并且是堆栈跟踪的主要原因(不需要首先说是建造相当昂贵的.
然而,在这种情况下,堆栈跟踪根本没有帮助.它在帮助程序员识别问题方面失败了.
按原样,我可以看到程序员可以使用以上代码段识别问题的3种方法:
String valueOf(char[] data)确实是选中的那个我在这里关注教程.它显示了如何绑定到依赖项属性的基本示例.
<Binding ElementName="This" Path="IPAddress" UpdateSourceTrigger="PropertyChanged">
Run Code Online (Sandbox Code Playgroud)
其中"This"是当前窗口的名称:
<Window x:Class="SOTCBindingValidation.Window1" x:Name="This"
Run Code Online (Sandbox Code Playgroud)
无论何时我尝试做这样的事情,我都会遇到同样的错误:
无法找到引用'ElementName = GridControlControl1'的绑定源.BindingExpression:路径= ip地址; 的DataItem = NULL; target元素是'TextBox'(Name ='AddressBox'); target属性是'Text'(类型'String')
我的代码:
<UserControl x:Class="WpfGridtest.GridControl" x:Name="GridControlControl1" ... />
<TextBox x:Name="AddressBox">
<TextBox.Text>
<Binding ElementName="GridControlControl1" Path="IPAddress" UpdateSourceTrigger="PropertyChanged">
</Binding>
</TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
partial class GridControl : UserControl
public static readonly DependencyProperty IPAddressProperty = DependencyProperty.Register("IPAddress", typeof(string), typeof(GridControl), new UIPropertyMetadata("1.1.1.1"));
public string IPAddress
{
get { return (string)GetValue(IPAddressProperty); }
set { SetValue(IPAddressProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
它几乎就像.Net 4.0中发生了变化?
我对SQL查询有一些小问题.我必须从多个表中选择数据,如:
优惠:
| id | offer | info
| 1 | City break | information
Run Code Online (Sandbox Code Playgroud)
图片:
| id | id_offer | picture_name | title
| 1 | 1 | bucharest.jpg | Bucharest
| 2 | 1 | london.jpg | London
Run Code Online (Sandbox Code Playgroud)
sql查询:
SELECT offers.* as t1, pictures.* as t2
FROM offers
JOIN t2 ON t1.id=t2.id_offer
WHERE t1.id = '1'
Run Code Online (Sandbox Code Playgroud)
代码要大得多,但我不明白如何将结果从t2包装到数组中.因为返回的数组的长度是由图片表格t2做出的.这将返回一个包含2个对象的数组.
可以在数组中返回一个包含两个图片的对象吗?
我正在学习使用VB.NET和NUnit的TDD.我想知道什么是最好的事情:在测试方法中使用大量的Assert方法或者使用每个方法的断言?
这是我的代码.谢谢.
Imports NUnit.Framework
<TestFixture()> _
Public Class CalculatorTest
<Test()> _
Public Sub TestAdd()
Dim calculator As Calculator = New Calculator()
Assert.AreEqual(2, calculator.sum(1, 1))
Assert.AreNotEqual(3, calculator.sum(2, 2))
Assert.AreEqual(-1, calculator.sum(0, -1))
Assert.AreNotEqual(3, calculator.sum(1, 1))
End Sub
End Class
Run Code Online (Sandbox Code Playgroud) 我只是开始学习会话,为了我的目的,我想创建一些东西,在客户端的每个请求,服务器验证该用户,然后只为该用户执行数据处理.
但是,我在CodeIgniter中看到了很多例子,其中会话的设置如下:
$this->load->library('session');
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Run Code Online (Sandbox Code Playgroud)
但是,有人不能只是在他们的计算机上使用通用用户名创建一个cookie,并将'logged_in'状态设置为true,突然你在没有密码的情况下进行身份验证?这对我来说似乎是一个安全漏洞,但我看到这么多的例子.
在每个请求上对用户进行身份验证的正确方法是什么?
是否有任何jQuery插件来突出显示HTML页面中显示的源代码?如果有多个,哪个更好采用?
我最近将VS 2008升级到VS 2010.在我们的服务器上安装了IIS6,我们不能在不久的将来改变它.即使我们将开发要部署在IIS7上的新应用程序,但如果情况需要我们可能需要使用.net 4.0开发应用程序并部署在IIS6上,那么在这种情况下我想知道IIS6是否支持.net 4.0应用程序或不?
如果我可以部署,那么在部署之前是否需要处理任何配置或我应该更改的任何其他设置?
class SomeClass<E> {
Map<String, String> someMethod();
}
和用法
SomeClass a = new SomeClass();
a.someMethod().get("foo") // returns object, not string!
//This code would not even compile
String s = a.someMethod().get("foo");
但是,如果我从SomeClass中删除泛化(<E>) - 它可以工作.
如果我将此方法提取到接口并在声明中使用接口,它也可以工作:
interface Foo {
Map<String, String> someMethod();
}
class SomeClass implements Foo {
//.....
}
Foo foo = new SomeClass();
String s = foo.someMethod().getString("A");//it works
为什么会这样?我在哪里可以阅读它?什么是最好的解决方案?谢谢.
updaten some_table set one_field = xxx,another_field =(仅在条件下更新,例如大,然后零,然后减1).
假设我有一个表,就像那样(id是自动递增):
id | col1 | col2
1 | 'msg'| 'msg'
2 | 'lol'| 'lol2'
3 | 'xxx'| 'x'
Run Code Online (Sandbox Code Playgroud)
现在,我想删除第2行,我得到这样的东西
id | col1 | col2
1 | 'msg'| 'msg'
3 | 'xxx'| 'x'
Run Code Online (Sandbox Code Playgroud)
问题是,我想得到的是:
id | col1 | col2
1 | 'msg'| 'msg'
2 | 'xxx'| 'x'
Run Code Online (Sandbox Code Playgroud)
我怎么能以最简单的方式做到这一点(我对MySQL的了解非常差)?