我想知道人们如何决定是否将方法定义为静态方法.我知道如果一个方法不需要访问实例字段,那么它只能被定义为静态.因此,假设我们有一个不访问实例字段的方法,您是否始终将此方法定义为静态,或者仅在您需要静态调用它时(不引用实例).
也许另一种问同一个问题的方法是你使用静态还是非静态作为默认值?
我通过添加"动态Web模块"方面从Eclipse部署.war应用程序,然后右键单击项目并选择"Run As - > Run on Server".
这很好用,但默认情况下项目部署到/webTomcat 的上下文,因为项目名称是web.有没有办法从Eclipse部署到Tomcat而无需将项目名称更改为ROOT?
在Grails应用程序中,我了解您通过添加为每个域类启用第二级缓存
static mapping {
cache true
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,第二级缓存仅在get()调用时使用,但也可以通过添加cache true到查询中用于条件查询和动态查找器.
但是,我仍然不确定我是否理解查询缓存的工作原理.我最好的猜测是:
Author.findByName('bob', [cache: true])执行类似查询之前,计算缓存键,该缓存键基于域类(作者),查询(findByName)和查询参数('bob').如果在作者查询缓存中找到该键,则返回缓存的结果而不是执行查询在我们考虑返回Book实例的查询可以加入Author表之前,这似乎是合理的.在这种情况下,在保存,删除或更新作者时,有必要刷新Book和Author查询缓存.这让我怀疑可能只有一个查询缓存,并且只要保存了任何缓存的域类,它就会被清除?
在Grails文档中,它提到了这一点
除了使用Hibernate的二级缓存来缓存实例的能力之外,您还可以缓存对象的集合(关联).
例如:
class Author {
static hasMany = [books: Book]
static mapping = {
cache true // Author uses the 2nd level cache
books cache: true // associated books use the 2nd level cache
}
}
class Book {
static belongsTo = [author: Author]
static mapping = {
cache true // Book uses the 2nd …Run Code Online (Sandbox Code Playgroud) 我有一个SVN项目的工作副本.应用程序从此工作副本中删除文件.当我使用SVN命令行提交工作副本时,我想从存储库中删除这些已删除的文件.
如果我使用svn commit它提交工作副本不会从项目中删除文件(因为它们没有在本地删除svn delete.有没有办法我可以告诉SVN删除(从存储库)任何缺少的文件工作副本?
我已经养成了在任何地方使用Closures代替常规方法的习惯,即使我不需要访问自由变量.所以,我会用这个:
def addNumbers = { left, right -> left + right }
..而不是这个:
def addNumbers (left,right) { left + right }
这是不好的做法吗?我更喜欢使用闭包而不是方法时获得的额外功能,我更喜欢语法.
谢谢!
我在我的pom.xml中配置了一些Maven插件.我只是想,如果正在运行测试,执行这些插件(测试可以使用任何被跳过-Dmaven.test.skip=true或-DskipTests).
其中一个插件绑定到process-classes构建生命周期阶段,另一个绑定到pre-integration-test阶段.
我使用最近的Ganymede版本的Eclipse,特别是Java EE和Web开发人员的发行版.我已经安装了一些额外的插件(例如Subclipse,Spring,FindBugs)并删除了所有的Mylyn插件.
我没有在Eclipse中做任何特别重要的事情,例如启动应用服务器或连接到数据库,但由于某种原因,经过几个小时的使用后,我发现Eclipse使用的是接近500MB的内存.
有谁知道Eclipse为什么会使用这么多内存(漏洞?),更重要的是,如果我能做些什么来改进这个?
我想部署两个应用程序foo.war并部署bar.war到同一个Tomcat实例.他们是否可以在不同的端口上侦听连接,例如foo侦听端口81,bar监听端口82?如果是这样,我该如何配置?我意识到应用程序不必在不同的端口上进行侦听,但这就是我想要实现的目标.
另外,我是否正确地说,如果我重命名foo.war为ROOT.war在根上下文中运行,那么对此Tomcat实例的所有请求都将由foo应用程序处理,因此必须将bar部署到单独的Tomcat实例?
我的几个页面同时使用JQuery和Protoype.由于我升级到JQuery的1.3版本,这似乎导致了问题,因为两个库都定义了一个名为'$'的函数.
JQuery提供了一个函数noConflict(),它将$的控制放弃到可能正在使用它的其他库.所以看起来我需要浏览所有看起来像这样的页面:
<head>
<script type="text/javascript" src="/obp/js/prototype.js"></script>
<script type="text/javascript" src="/obp/js/jquery.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
并将它们更改为如下所示:
<head>
<script type="text/javascript" src="/obp/js/prototype.js"></script>
<script type="text/javascript" src="/obp/js/jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
var $j = jQuery;
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
然后,我应该能够为Prototype使用'$',为JQuery使用'$ j'(或'jQuery').我并不完全乐意在每个相关页面中复制这两行代码,并期望在某些时候有人可能忘记将它们添加到新页面.我宁愿能够做到以下几点
query-noconflict.js"包含" 的文件j jquery.js和上面显示的2行代码jquery-noconflict.js(而不是jquery.js)但是,我不确定是否可以以我描述的方式将一个JS文件包含在另一个JS文件中?当然另一种解决方案就是直接将上面两行代码添加到jquery.js中,但如果我这样做,我需要记住每次升级JQuery时都要这样做.
我正在寻找一个可以用来测试Java代码片段的REPL shell.桌面应用程序或Web应用程序(如Groovy Web控制台).理想情况下,常用的Java包如:
java.io.*
java.util.*
Run Code Online (Sandbox Code Playgroud)
应该自动导入,以便我可以从类复制和粘贴代码,而无需添加一堆导入.这样的事情存在吗?