小编Teg*_*egi的帖子

使用SimpleDateFormat.parse()时获取错误的数据

当我尝试将字符串解析为日历时,我收到了最奇怪的错误.它似乎弄乱了我用来设置结果日历时间的Date对象.错误非常不一致(或者我看不到任何逻辑).谁能指出我可能做错了什么?

public class caltest{
public static final SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss.SSS");

public static void main(String[] args) {
    String date1 = "1992-03-11 12:00:12.123";
    String date2 = "1993-03-11 12:00:12.123";
    String date3 = "1994-03-11 12:00:12.123";
    String date4 = "1995-03-11 12:00:12.123";
    parseStringAsCalendar(date1);
    parseStringAsCalendar(date2);
    parseStringAsCalendar(date3);
    parseStringAsCalendar(date4);
}
public static String calendarToString(Calendar cal) {
    return sdf.format(cal.getTime());
}

public static Calendar parseStringAsCalendar(String s) {
    Date time = null;
    try {
        time = sdf.parse(s);
    } catch (ParseException e) {
        System.out.println("Exception");
        e.printStackTrace();
    }
    System.out.println(time.toString());
    GregorianCalendar ret = …
Run Code Online (Sandbox Code Playgroud)

java parsing date simpledateformat date-formatting

10
推荐指数
1
解决办法
7411
查看次数

Log4j2 WebLookup 未得到解决

我有以下 log4j2 配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
    <Appenders>
        <RollingRandomAccessFile name="SQLTiming" fileName="${web:rootDir}/log/SQLTiming.log"
            filePattern="${web:rootDir}/log/SQLTiming-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{2} - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingRandomAccessFile>
        <Console name="CONSOLE">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{2} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="jdbc.sqltiming" level="info" additivity="false">
            <AppenderRef ref="SQLTiming" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="CONSOLE" />
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 slf4j 获取记录器时

    protected static Logger logger = LoggerFactory.getLogger(DbConn.class);
Run Code Online (Sandbox Code Playgroud)

Log4j 创建附加程序失败。我查看了 log4j2 源代码,它尝试创建文件C:\Program Files\eclipse\${web:rootDir}\log\SQLTiming.log(它失败了),所以 log4j 似乎没有处理查找。

我在 Tomcat 7.0.4 中运行该应用程序,并使用http://logging.apache.org/log4j/2.x/manual/lookups.html建议的语法。我尝试使用 $${web:rootDir} (带有 2 个 …

lookup log4j2

5
推荐指数
1
解决办法
3546
查看次数

Oracle SQL中的查询优化

假设我有一个像这样的oracle数据库模式:
tournaments(id,name)player(id,name)gameinfo(id,pid(引用players.id),tid(引用tournaments.id),日期)
所以在gameinfo表意味着某个玩家在给定日期的比赛中玩某个游戏.锦标赛有大约20个记录,玩家大约有16万,游戏信息大约有200万.我必须写一个查询列出锦标赛(tid在1-4范围内)以及参加该锦标赛的第一场比赛的球员数量.
我想出了以下查询:

select tid, count(pid)
from gameinfo g
where g.date = (select min(date) from gameinfo g1 where g1.player = g.player)
and g.tid in (1,2,3,4) group by tid;

这显然不是最理想的(它运行了大约58分钟).我有另一个想法,我可以看到:

select pid, tid, min(date)
from gameinfo
where tid in(1,2,3,4)
group by pid, tid;

并在此视图上运行我的查询,因为它只有大约60万条记录,但这似乎仍然不是最优的.

你能就如何优化这个提出任何建议吗?

sql oracle query-optimization

-1
推荐指数
1
解决办法
189
查看次数