我即将开始一个Java项目只是为了练习.我读过关于Maven的内容,但我实际上并不了解它何时被使用.
你能给我一些实用的建议吗?Maven有很多帮助吗?Maven对我的项目实际做了什么?
我在想,如果您有一个静态方法不同步,但并没有修改任何静态变量是线程安全的?如果方法在其中创建局部变量怎么办?例如,以下代码是否是线程安全的?
public static String[] makeStringArray( String a, String b ){
return new String[]{ a, b };
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我有两个线程连续和同时调用这个方法,一个与狗(说"大丹狗"和"公牛狗")和另一个与猫(说"波斯语"和"暹罗语")我会得到猫和狗在同一个数组?或者猫和狗不会同时在同一个方法的调用内?
我可以看到@Nullable和@Nonnull注释可以在防止有用NullPointerException秒,但他们并不很远传播.
@Nonnull不为空并因此不执行空检查的危险.下面的代码会导致标有一个参数@Nonnull是null没有提出任何投诉.它会NullPointerException在运行时抛出.
public class Clazz {
public static void main(String[] args){
Clazz clazz = new Clazz();
// this line raises a complaint with the IDE (IntelliJ 11)
clazz.directPathToA(null);
// this line does not
clazz.indirectPathToA(null);
}
public void indirectPathToA(Integer y){
directPathToA(y);
}
public void directPathToA(@Nonnull Integer x){
x.toString(); // do stuff to x
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使这些注释更严格地执行和/或进一步传播?
java annotations nullable nullpointerexception code-standards
在Java虚拟机规范说有布尔有限的支持原始类型.
没有专门针对布尔值操作的Java虚拟机指令.相反,Java编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值.
以上暗示(虽然我可能误解了它)在操作布尔值时使用int数据类型,但这是一个32位内存构造.假设布尔值仅代表1位信息:
我正在编写一个轻量级类,其属性旨在可公开访问,并且有时仅在特定实例中被覆盖.在Python语言中没有为类属性或任何类型的属性创建文档字符串的规定.记录这些属性的可接受方式是什么?目前我正在做这样的事情:
class Albatross(object):
"""A bird with a flight speed exceeding that of an unladen swallow.
Attributes:
"""
flight_speed = 691
__doc__ += """
flight_speed (691)
The maximum speed that such a bird can attain.
"""
nesting_grounds = "Raymond Luxury-Yacht"
__doc__ += """
nesting_grounds ("Raymond Luxury-Yacht")
The locale where these birds congregate to reproduce.
"""
def __init__(self, **keyargs):
"""Initialize the Albatross from the keyword arguments."""
self.__dict__.update(keyargs)
Run Code Online (Sandbox Code Playgroud)
这将导致类的docstring包含初始标准docstring部分,以及通过扩充赋值为每个属性添加的行__doc__.
虽然在文档字符串样式指南中似乎没有明确禁止这种样式,但它也没有作为选项提及.这里的优点是它提供了一种方法来记录属性及其定义,同时仍然创建一个可呈现的类docstring,并避免编写重复来自docstring的信息的注释.我仍然有点生气,我必须实际写两次属性; 我正在考虑使用docstring中值的字符串表示来至少避免重复默认值.
这是否是对特设社区公约的毁灭性违反?好吗?有没有更好的办法?例如,可以创建包含属性值和文档字符串的字典,然后__dict__在类声明的末尾将内容添加到类和docstring中; 这样可以减少两次输入属性名称和值的需要. 编辑:我认为,这最后一个想法实际上是不可能的,至少不是没有从数据动态构建整个类,这似乎是一个非常糟糕的想法,除非有其他理由这样做. …
我想开发一个封装OAuth 2.0功能的SDK.我已经检查了OAuth 1.0和2.0之间的差异,我对Authorization Header(1.0和 2.0)有一些混淆,OAuth 1.0协议参数可以使用HTTP"Authorization"标头传输,但我找不到当前描述的OAuth 2.0草案.
OAuth 2.0是否支持授权标头?
在OAuth 1.0中,您的标题如下所示:
Authorization: OAuth realm="Example",
oauth_consumer_key="0685bd9184jfhq22",
oauth_token="ad180jjd733klru7",
oauth_signature_method="HMAC-SHA1",
oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
oauth_timestamp="137131200",
oauth_nonce="4572616e48616d6d65724c61686176",
oauth_version="1.0"
Run Code Online (Sandbox Code Playgroud)