我想知道是否有人可以建议:我有一个场景,由Quartz运行的预定作业将每小时更新一个对象的arraylist.
但我需要这些对象的arraylist对Tomcat创建的所有会话都是可见的.所以我想的是我每隔一小时从运行的Quartz作业中的某个地方写这个对象,这样每个会话都可以访问它.
任何人都可以说这可能会达到最佳效果吗?我想知道从Quartz作业写入servlet上下文的对象?另一种方法是让每个会话从数据库表中填充对象的arraylist.
谢谢
摩根先生.
任何人都可以建议一种方法来设置一个Cron触发器每小时运行一半的时间?
到目前为止,我按照"0 0/60***?"每小时工作一次.
我在看"0 0/30***?" 什么?
摩根先生.
我有Quartz编码如下,第一个作业完美运行:
JobDetail jd = null;
CronTrigger ct = null;
jd = new JobDetail("Job1", "Group1", Job1.class);
ct = new CronTrigger("cronTrigger1","Group1","0/5 * * * * ?");
scheduler.scheduleJob(jd, ct);
jd = new JobDetail("Job2", "Group2", Job2.class);
ct = new CronTrigger("cronTrigger2","Group2","0/20 * * * * ?");
scheduler.scheduleJob(jd, ct);
Run Code Online (Sandbox Code Playgroud)
但我发现Job2是Job1的一个完全独立的工作,它不会执行.
调度程序使用Java中的侦听器启动.我也尝试过使用scheduler.addJob(jd,true); 但没有变化.我在Windows 7上通过JVM运行Java.
我正在使用Java StreamTokenizer来提取字符串的各种单词和数字,但是遇到了一个问题,其中包含逗号的数字,例如10,567被读作10.0和567.
我还需要从可能出现的数字中删除所有非数字字符,例如$ 678.00应为678.00或-87应为87.
我相信这些可以通过whiteSpace和wordChars方法实现,但有没有人知道如何做到这一点?
目前基本的streamTokenizer代码是:
BufferedReader br = new BufferedReader(new StringReader(text));
StreamTokenizer st = new StreamTokenizer(br);
st.parseNumbers();
st.wordChars(44, 46); // ASCII comma, - , dot.
st.wordChars(48, 57); // ASCII 0 - 9.
st.wordChars(65, 90); // ASCII upper case A - Z.
st.wordChars(97, 122); // ASCII lower case a - z.
while (st.nextToken() != StreamTokenizer.TT_EOF) {
if (st.ttype == StreamTokenizer.TT_WORD) {
System.out.println("String: " + st.sval);
}
else if (st.ttype == StreamTokenizer.TT_NUMBER) {
System.out.println("Number: " + st.nval);
}
}
br.close();
Run Code Online (Sandbox Code Playgroud)
或者有人建议REGEXP来实现这一目标吗?我不确定REGEXP在这里是否有用,因为在从字符串中读取标记之后会发生任何parding. …
我阅读了很多关于使用StringBuffer和String的内容,特别是在Java中涉及串联以及是否是线程安全的情况下.
那么,在各种Java方法中应该使用哪些?
例如,在PreparedStatement中,应查询为StringBuffer:
String query = ("SELECT * " +
"FROM User " +
"WHERE userName = ?;");
try {
ps = connection.prepareStatement(query);
Run Code Online (Sandbox Code Playgroud)
然后,在一个String实用程序方法中,例如:
public static String prefixApostrophesWithBackslash(String stringIn) {
String stringOut = stringIn.replaceAll("'", "\\\\'");
return stringOut;
}
Run Code Online (Sandbox Code Playgroud)
和:
// Removes a char from a String.
public static String removeChar(String stringIn, char c) {
String stringOut = ("");
for (int i = 0; i < stringIn.length(); i++) {
if (stringIn.charAt(i) != c) {
stringOut += stringIn.charAt(i);
}
}
return stringOut; …Run Code Online (Sandbox Code Playgroud) 有没有一种直接的方法将Java SQL Date从格式yyyy-MM-dd转换为dd MMMM yyyy格式?
我可以将日期转换为字符串,然后操纵它,但我宁愿将其保留为Java SQL日期.在我需要这样做的时候,数据已经从MySQL数据库中读取,所以我不能在那里进行更改.