在java webapp中显示/使用修订号的最佳方法是什么?
我们只使用ant来构建我们的.war存档,没有构建服务器等.我希望有一些如果$ ref我可以在资源文件中写入,但只有在提交相关文件时才会更新.我需要全球.
你会推荐什么?更新某些文件的提交后触发器?自定义ant脚本?有没有更黑的方式这样做?或者最好让我自己的版本号独立于svn.
编辑:很棒的建议!非常感谢你的答案!
我有一堆sql脚本,应该在java Web应用程序启动时升级数据库.
我尝试使用ibatis scriptrunner,但它在定义触发器时失败了,其中";" 字符不标记声明的结尾.
现在我已经编写了我自己的脚本运行版本,它基本上可以完成这项工作,但会破坏可能的格式和注释,尤其是在"创建或替换视图"中.
public class ScriptRunner {
private final DataSource ds;
public ScriptRunner(DataSource ds) {
this.ds = ds;
}
public void run(InputStream sqlStream) throws SQLException, IOException {
sqlStream.reset();
final Statement statement = ds.getConnection().createStatement();
List<String> sqlFragments = createSqlfragments(sqlStream);
for (String toRun : sqlFragments) {
if (toRun.length() > 0) {
statement.execute(toRun);
}
}
}
private static List<String> createSqlfragments(InputStream sqlStream) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(sqlStream));
List<String> ret = new ArrayList<String>();
String line;
StringBuilder script = new …Run Code Online (Sandbox Code Playgroud) 分析了在tomcat中运行的轻量级Web应用程序,使用JMX控制台,结果发现"PS Old Gen"正在缓慢但不变地增长.它从200MB开始,每小时增长约80MB.
CPU不是问题,它平均运行在0-1%,但它在某处泄漏内存,因此在部署后几天它会变得不稳定.
我如何找出堆上分配的对象?你知道有什么好的教程或工具吗?
是否有相当于MultiMaps的漂亮MapMaker?目前我创建这样的缓存:
public static Map<Session,List<Person>> personCache = new MapMaker().weakKeys().makeMap();
Run Code Online (Sandbox Code Playgroud)
MultiMap的重点是避免嵌套的List值.有没有办法用弱键构造多图?
在jdk中是否有一个事实上的不可变类列表?
技术上不可变类包括明显的Integer,Double等.
事实上,不可变的将包括例如java.lang.String - 它在技术上可能是可变的,但实际上它不是.
另外,是否需要接口/抽象类(如javadoc中所述)是不可变的?
如果你不能提供一个完整的List,如果你知道一堆在javadoc中声明不变性的类,我会很高兴的.
我有一个使用条件api动态组合的hibernate查询.如果按原样执行,它会生成难以忍受的慢速查询.
但我已经注意到,如果我在查询前加上/*+ FIRST_ROWS(10)*/,它们的速度提高了大约1000%.我怎么能用标准api做到这一点?
我尝试过criteria.setComment(..),但这似乎被忽略了.
在hibernate docs中,3.4.1.7.提到了查询提示,但它明确指出:"请注意,这些不是SQL查询提示"
查询的结果将被分页,因此在99%的情况下,我将显示结果1-10.
我只是偶然发现了这个评论.
public static int lowestOneBit(int i) {
// HD, Section 2-1
return i & -i;
}
Run Code Online (Sandbox Code Playgroud)
在1.5 java源代码中.这个评论是什么意思?它是一本书的参考?一个规格?
是否有任何现成的JSF组件允许选择日期+事件的时间?我知道的所有组件只允许日期.手动添加时间是单调乏味的.
我正在寻找一个特定的数据结构,但我忘了它的名字.如果我知道它的名字将是微不足道的,我会在维基百科中查找:)
基本上,它就像一个集合 - 除了你不能迭代它.
你把一些值放进去,比方说80k邮政编码.
然后你可以测试一个给定的字符串肯定不是一个邮政编码,但如果插入太多的邮政编码,你最终会得到误报.
这种结构的内存消耗很小.
它的名字是什么,在java中有实现吗?
我在Tomcat中有一个init servlet来加载关键数据.有时需要在某些错误上中止启动.
如何在不调用的情况下优雅地关闭已部署的应用程序/整个应用程序服务器 System.exit(1)
我想避免通过端口调用关闭servlet,因为我的安装中没有配置.
在web.xml中定义的关闭时,可能需要从侦听器运行任务
所以我使用过滤器来捕获servlet异常(因为我们使用混合的jsf/plain servlets)
当捕获ServletException并调用printstacktrace时,大部分信息都会丢失.
"真正的"根异常似乎隐藏在"有趣"的表达背后
((ServletException) e.getRootCause().getCause()).getRootCause().getCause().getCause().getCause()
Run Code Online (Sandbox Code Playgroud)
这显然不是这样做的方法.
是打印此类例外的"完整"信息的简便方法.有人可以解释一下为什么异常这样包裹?
是否有任何javascript库,只要某个元素在浏览器画布中可见,它就会为我提供自定义事件?
基本的想法是,一旦列表中的最后一个元素在屏幕上变得可见,我想加载接下来的10个元素,这样用户就不需要点击"下一页"按钮.为了实现这一点,一旦显示最后一个元素就会触发的onBecomesVisible事件将非常方便.有这样的事吗?
Slashdot以这种方式进行首页加载.
java ×9
oracle ×2
sql ×2
tomcat ×2
ajax ×1
algorithm ×1
bloom-filter ×1
comments ×1
components ×1
criteria ×1
date ×1
exception ×1
guava ×1
heap ×1
hibernate ×1
immutability ×1
inputstream ×1
javascript ×1
jmx ×1
jsf ×1
multimap ×1
pagination ×1
picker ×1
revision ×1
scripting ×1
servlets ×1
shutdown ×1
stack-trace ×1
svn ×1
time ×1