我的编译器警告我A default nullness annotation has not been specified for the package
.我正在使用Juno和Java 7.
您应该@NonNullByDefault
作为包选项添加的文档统计信息,但我不知道这意味着什么.
我可以以某种方式设置NonNullByDefault
整个包吗?在Eclipse中,我无法右键单击包并说出add option
类似的内容.
或者我只是添加@NonNullByDefault
到包中的任何类,然后它对该包中的所有bean有效?或者我是否必须在pakage中创建一些元信息文件以添加包选项?我必须是盲人,因为我在网上找不到任何帮助....
一个小例子会很棒.
我正在寻找最佳实践答案.我想为GET请求做一些预处理.因此,例如,如果不允许用户查看该页面,则将其重定向到另一页面.但我不想使用普通的servlet过滤器,因为我想表达这种行为faces-config.xml
.这是可能的,如何调用,怎么做?
我可以定义一些Filter bean,它还返回一个String,告诉faces-config.xml
下一步该去哪里?
我用Google搜索,但只打了正常的过滤器.如果我使用的过滤器,可以一个@WebFilter
是@ManagedBean
在同一时间?还是那种糟糕的风格?
我目前使用的应用程序具有使用Zxing库(http://code.google.com/p/zxing/)连续扫描QR /条形码的主要功能.对于连续帧捕获,我曾经初步化AVCaptureSession和AVCaptureVideoOutput,AVCaptureVideoPreviewLayer在苹果问答http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html中描述.
我的问题是,当我以前运行相机预览时,我可以通过视频设备看到的图像比我们通过iPhone的静态相机看到的图像大得多(1.5倍).我们的客户需要在扫描时将iPhone与条形码保持5厘米左右的距离,但如果您将iPhone保持在该参数下,则整个QR码将不可见并且解码失败.为什么iPhone 4中的摄像机放大图像(通过AVCaptureVideoPreviewLayer查看)?
如果我访问同步方法或同步块内的对象,那个被访问元素中的所有对象是否也同步?
想象一下,有一个对象Queue
具有同步add()
和take()
方法,接受并分发复杂对象Thing
.Thing
有很多列表与其他不同的对象.
现在,图像线程Before
创建Thing
并放入一些现有对象Thing
,修改其中一些对象,依此类推.该Before
线增加Thing
至Queue
.稍后一点线程After
从中Thing
获取Queue
.
问题:Will Thing
及其所有子/子对象是否处于Before
离开它们的状态?即使线程After
可能稍早在这些子元素中的一个上工作?因为我映像处理器的线程After
可能仍然有一些关于该子元素的缓存信息(该子对象的地址仍然相同).只有通过Thing
同步方式访问父对象,所有这些缓存的东西才会失效?
请不要给出使用并发库等的答案.我想了解发生了什么.
java parallel-processing concurrency synchronization monitor
我对执行者服务很陌生.喜欢自己做所有事情,但我认为是时候相信这些服务了.
我想交Executer
一个Runnable
.执行者FutureTask
把它包裹起来并交给我.现在我调用poll done()
方法.但是我希望在done()
方法返回true 时得到通知.
有一种get()
方法可以阻塞直到Runnable
完成,但是我需要为每个作业添加一个额外的线程,只是为了看它何时完成.
我可以给我的执行者一些额外的工作,Callable
以获得有关完成任务的通知吗?
怎么去这里?我可以在run
方法的末尾添加一些代码,但后来done()
可能仍然是假的...
我使用的是带有13种情况的switch语句,每种情况只有一行返回值.
McCabe用红色描绘了它.有没有更简单的方法来编写一个大的switch语句?它看起来并不复杂,但我不喜欢默认设置变为红色.如果其他人在我的代码上使用相同的工具并看到红色的东西他们可能会认为我是愚蠢的:-)
编辑:我将不同的SQL类型映射到我自己的更抽象类型,因此减少了类型的总量.
case Types.TIME:
return AbstractDataType.TIME;
case Types.TIMESTAMP:
return AbstractDataType.TIME;
case Types.DATE:
return AbstractDataType.TIME;
case Types.BIGINT:
return AbstractDataType.NUMERIC;
case Types.DECIMAL:
return AbstractDataType.NUMERIC;
Run Code Online (Sandbox Code Playgroud)
等等...
java complexity-theory metrics coding-style switch-statement
想象一下,你有一个典型的Java生产者 - 消费者模式.要想要使用更高效,notify()
而不是notifyAll()
在将新元素添加到队列时.如果两个生产者线程调用notify,是否可以保证唤醒两个不同的等待消费者线程?或者可能是两个notify()
在彼此之后不久被解雇导致同一个comsumer线程排队等待两次唤醒?我找不到该部分是描述这是如何工作的API.java是否有一些原子内部操作来唤醒线程一次?
如果只有一个消费者在等待,那么第二个通知将会丢失,这没有问题.
我有一个Hadoop(CDH412)群集设置已启用,可以使用Kerberos进行身份验证和授权.我把一切都搞好了(Hdfs,mapred,zookeeper,hbase,hive等).但是,我在从Java应用程序中访问hdfs数据时遇到问题.
我的Java应用程序是在后台运行的服务.因此,无法输入密码,我必须使用密钥表文件.应该不是问题.如果我先做一个'kinit',它会正常工作,ala ...
kinit -kt /home/fred/kerberostest/krb5.keytab myprinc/myserver.com@MY.REALM
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在java代码中执行此操作(我已经读过LoginContext.logon将执行与kinit相同的操作),则会失败.
为了尝试测试这个,我编写了以下代码片段....
System.setProperty("java.security.krb5.realm", "MY.REALM");
System.setProperty("java.security.kdc", "kdc.server.com");
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
System.setProperty("java.security.auth.login.config", "/home/fred/kerberostest/jaas.conf");
LoginContext context = new LoginContext("Client");
context.login();
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
InputStream in = fs.open(new Path("/mytestfile"));
int b = in.read();
in.close();
Run Code Online (Sandbox Code Playgroud)
我的jaas.conf文件看起来像这样......
Client {
com.sun.security.auth.module.Krb5LoginModule required
debug=true
useKeyTab=true
keyTab="/home/fred/kerberostest/krb5.keytab"
principal="myprinc/myserver.com@MY.REALM"
useTicketCache=false;
}
Run Code Online (Sandbox Code Playgroud)
当我运行上面的java代码时,LoginContext.login似乎正常工作....我得到一个调试声明
Login successful for user myprinc/myserver.com@MY.REALM using keytab file /home/fred/kerberostest/krb5.keytab
Run Code Online (Sandbox Code Playgroud)
但是,当代码尝试打开HDFS文件(fs.open)时,应用程序失败并显示PriviledgedActionException,并声明:
ERROR security.UserGroupInformation: PriviledgedActionException as :fred (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials …
Run Code Online (Sandbox Code Playgroud) 启动Eclipse后,Mven似乎将编译器设置设置为1.5并忘记所有其他全局代码样式设置,以确保更高的代码质量.
有没有办法禁用此功能?或者我可以在POM中指定所有编译器和代码样式检查吗?
这非常烦人,因为Ecplise无法运行应用程序,因为不允许覆盖接口的注释.在重启后始终设置Java compiler
- >中的勾选Enable project specific settings
.
我收到的String
是一周的拼写日,例如星期一.现在我想得到那天使用的常量整数表示java.util.Calendar
.
我真的必须自己做if(day.equalsIgnoreCase("Monday")){...}else if(...){...}
吗?有一些简洁的方法吗?如果我挖出SimpleDateFormat
并与Calendar
我混合产生几乎与打字丑陋的if-else-infitity statetment一样多的行.
java ×8
eclipse ×2
avfoundation ×1
calendar ×1
callable ×1
coding-style ×1
concurrency ×1
date ×1
dayofweek ×1
futuretask ×1
hadoop ×1
ios ×1
jsf ×1
jsf-2 ×1
kerberos ×1
m2e ×1
m2eclipse ×1
maven ×1
metrics ×1
monitor ×1
notify ×1
threadpool ×1