this在Java中使用关键字的最佳做法是什么?例如,我有以下类:
class Foo {
Bar bar;
public Foo(Bar bar) {
this.bar = bar;
}
}
Run Code Online (Sandbox Code Playgroud)
这很好,但是如果我将构造函数中的语句更改为,Java就足够聪明地知道发生了什么
bar = bar;
Run Code Online (Sandbox Code Playgroud)
那么为什么要使用this关键字?(我知道在某些情况下,使用它是完全必要的,我只是要求这样的情况).实际上,我倾向于纯粹为了可读性而使用关键字,但通常的做法是什么?例如,在整个商店中使用它会使我的代码看起来有些混乱
boolean baz;
int someIndex = 5;
this.baz = this.bar.getSomeNumber() == this.someBarArray[this.someIndex].getSomeNumber();
Run Code Online (Sandbox Code Playgroud)
显然是一个糟糕的代码,但它说明了我的例子.在这些情况下,这仅仅取决于个人偏好吗?
当我学习JSF2时,我意识到我不确定支持组件应该是什么.从设计的角度来看,EJB和@ManagedBeans?之间有什么区别?
最后我将使用JPA,因此EJB是业务层的自然选择.它是直接从JSF使用EJB一个很好的做法(如解释在这里)?
目前,我倾向于使用@ManagedBeans不需要访问业务层的组件(例如视图助手)或处理请求/会话数据.出于其他目的,例如在网格中列出某些内容,我将直接访问EJB.
这是一个很好的设计吗?@ManagedBeans为了清除层分离,我是否可以使用所有支持bean,即使在某些情况下它们只委托给EJB?
我想访问一个我的模型字段verbose_name.
我可以通过像这样的现场指示得到它
model._meta._fields()[2].verbose_name
Run Code Online (Sandbox Code Playgroud)
但我需要动态地得到它.理想情况下,它会是这样的
model._meta._fields()['location_x'].verbose_name
Run Code Online (Sandbox Code Playgroud)
我看了几件事,但我找不到它.
使用BitNami在我的Windows 7 Ultimate 64bits上安装Trac后,我遇到了一些问题.问题是:
Subversion控件在安装过程中,当BitNami设置要求提供项目存储库目录时,它只接受您编写不存在的路径,否则无法继续.所以我被迫将路径指向"C:\ Repositories\TRAC"(一个新文件夹)而不是"C:\ Repositories\DBG"(我正在创建的项目的存储库).因此,在安装之后,我已经在密钥处更改了trac.ini文件
[trac]
repository_dir = C:\Repositories\TRAC
repository_type = svn
Run Code Online (Sandbox Code Playgroud)至
[trac]
repository_dir = C:\Repositories\DBG
repository_type = svn
Run Code Online (Sandbox Code Playgroud)
现在,当我在Trac中登录DBG项目时,它警告:
警告:无法与存储库同步('repository_dir'已更改,需要'trac-admin resync'操作.).查看Trac日志以获取更多信息.
当我去cmd时会发生以下情况:
C:\Users\Fernando>cd\
C:\>cd C:\Program Files\BitNami Trac Stack\trac\Scripts
C:\Program Files\BitNami Trac Stack\trac\Scripts>trac-admin resync
Welcome to trac-admin 0.11.6
Interactive Trac administration console.
Copyright (c) 2003-2009 Edgewall Software
Type: '?' or 'help' for help on commands.
Trac [C:\Program Files\BitNami Trac Stack\trac\Scripts\resync]> resync
Failed to open environment. [Errno 2] No such file or directory: 'C:\\Program Fi
les\\BitNami Trac Stack\\trac\\Scripts\\resync\\VERSION' …Run Code Online (Sandbox Code Playgroud) 一方面是Java,另一方面是Ruby/Groovy,我知道在第二个阵营中,我可以自由地制作拼写错误,直到运行时才会被抓住.所有动态类型的语言都是如此吗?
编辑:我被要求详细说明拼写错误的类型.在Ruby和Groovy中,您可以使用从未读取的意外名称分配给变量.你可以调用那些不存在的方法(显然你的测试应该记住它,已经说过了).您可以引用不存在的类等.基本上任何有效的语法,即使有印刷错误,在Ruby和Groovy中都是有效的.
这两个陈述中的哪一个是更快/更好的做法?
myList.Where(x =>
{
bool itemOne= x.ItemOne == paramItemOne;
bool itemTwo = x.ItemTwo == paramItemTwo;
return itemOne && itemTwo;
})
myList.Where(x => x.ItemOne == paramItemOne).Where(x=>x.ItemTwo == paramItemTwo)
Run Code Online (Sandbox Code Playgroud)
还是他们一样?
我需要对列表中的最后一个元素进行一些特殊操作.还有比这更好的方法吗?
array = [1,2,3,4,5]
for i, val in enumerate(array):
if (i+1) == len(array):
// Process for the last element
else:
// Process for the other element
我有一个应用程序,每15分钟左右从远程数据库复制一次.它只是使两个存储库保持同步.一旦进行此复制,就不可能再次执行此操作.我已经设置了以下结构,但我不确定它是否是正确的方法.
public class ReplicatorRunner {
private static Lock lock = new ReentrantLock();
public replicate() {
if (lock.tryLock()) {
try {
// long running process
} catch (Exception e) {
} finally {
lock.unlock();
}
} else {
throw new IllegalStateException("already replicating");
}
}
}
public class ReplicatorRunnerInvocator {
public void someMethod() {
try {
ReplicatorRunner replicator = new ReplicatorRunner();
replicator.replicate();
} catch (IllegalStateException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
的ReplicatorRunner是类拥有该方法replicate只能运行一次一个.
编辑.如果方法已在任何实例上运行,我需要下一次调用失败(不阻止).
我在开源ASP.NET Web Forms MVP项目上看到了一些声音,但我在哪里可以获得资源?
http://webformsmvp.com目前几乎已被删除.这似乎是Web Forms范例的一个引人注目的更新,并带来了使ASP.NET MVC变得更好的东西.我听说它本周将在MIX10上推出,但是有没有人有任何有用的网站/参考?