Redian新闻
>
回国开什么卡方便啊
avatar
回国开什么卡方便啊# Money - 海外理财
m*l
1
要实现下面的功能,可是一点儿idea都没有,该用什么类什么思路实现
恳请java前辈指点
万分感谢!!
将类似这样的一个比较长的.log文件解析开
[18/09/2011 06:53:21:021 PM] ERROR Main 70: Running logger, watch out!
java.lang.IndexOutOfBoundsException: Index: 99, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
[18/09/2011 06:53:21:021 PM] INFO Main 73: Running logger, watch out!
[18/09/2011 06:53:21:021 PM] INFO Main 73: Identity manager starting.
。。。。。。。
按时间解析开,比如上面的一段就是按时间分的3条
要求是:
+不能用stream把整个文件load到内存
+还要把每个时间和后面的内容解析开
+最好用普通的方法不用特别的类
其实我也不知道解析到什么地方怎么表达
原题要求
- Must not load entire file in memory (stream)
- Must capture the entire entry (single and multiple lines)
- Must split the entry also in two parts, timestamp and the rest of the
entry
- Must use a regular expression to parse
- Must be configurable to parse log files in slightly different formats
并且最后一条要求都不太理解什么意思
还请前辈指点
avatar
G*u
2
回国开什么卡方便 省钱还有cash back呀
avatar
d*x
3
正则呗。。两个匹配之间断开
其实这玩意先用sed处理下,把每个时间段的都合成一行,然后再用java处理会方便很
多的。。

【在 m***l 的大作中提到】
: 要实现下面的功能,可是一点儿idea都没有,该用什么类什么思路实现
: 恳请java前辈指点
: 万分感谢!!
: 将类似这样的一个比较长的.log文件解析开
: [18/09/2011 06:53:21:021 PM] ERROR Main 70: Running logger, watch out!
: java.lang.IndexOutOfBoundsException: Index: 99, Size: 0
: at java.util.ArrayList.RangeCheck(ArrayList.java:547)
: [18/09/2011 06:53:21:021 PM] INFO Main 73: Running logger, watch out!
: [18/09/2011 06:53:21:021 PM] INFO Main 73: Identity manager starting.
: 。。。。。。。

avatar
f*n
4
discover
avatar
m*l
5
还请前辈指教
正则是什么意思? 两个匹配是什么意思?
sed处理?
万分感谢

【在 d**********x 的大作中提到】
: 正则呗。。两个匹配之间断开
: 其实这玩意先用sed处理下,把每个时间段的都合成一行,然后再用java处理会方便很
: 多的。。

avatar
x*9
6
capital one no foreign transaction fee
avatar
h*e
7
最近写了两个 个c++的 parse xml 的小程序 大体思路是 每次读 进一个 字符 判
断[ 如果是的话 进入时间 tag函数 处理里面的时间 tag 之后 读入 后面的字符直
到】
理论上 正文 不会有 【字符。。碰到下一个[字符 开始新的一组时间函数。 关键你要
自己查一下生成这个log文件的程序 或者找相关人士 明确一下log 文件的语法。。
比如我parse xml就要压栈什么的。。这个log文件似乎用不到。
avatar
d*x
8
正则表达式啊。。

【在 m***l 的大作中提到】
: 还请前辈指教
: 正则是什么意思? 两个匹配是什么意思?
: sed处理?
: 万分感谢

avatar
p*p
9
不需要正则吧
时间都是在[]里的,建一个HashMap>,key是时间,array
里放后面的就行了
while(true)里每次读一行从括号里解出时间字符串,扔到map里

【在 m***l 的大作中提到】
: 要实现下面的功能,可是一点儿idea都没有,该用什么类什么思路实现
: 恳请java前辈指点
: 万分感谢!!
: 将类似这样的一个比较长的.log文件解析开
: [18/09/2011 06:53:21:021 PM] ERROR Main 70: Running logger, watch out!
: java.lang.IndexOutOfBoundsException: Index: 99, Size: 0
: at java.util.ArrayList.RangeCheck(ArrayList.java:547)
: [18/09/2011 06:53:21:021 PM] INFO Main 73: Running logger, watch out!
: [18/09/2011 06:53:21:021 PM] INFO Main 73: Identity manager starting.
: 。。。。。。。

avatar
m*l
10
这个要求用java
我不懂c++的能否参考到java里面?

【在 h*******e 的大作中提到】
: 最近写了两个 个c++的 parse xml 的小程序 大体思路是 每次读 进一个 字符 判
: 断[ 如果是的话 进入时间 tag函数 处理里面的时间 tag 之后 读入 后面的字符直
: 到】
: 理论上 正文 不会有 【字符。。碰到下一个[字符 开始新的一组时间函数。 关键你要
: 自己查一下生成这个log文件的程序 或者找相关人士 明确一下log 文件的语法。。
: 比如我parse xml就要压栈什么的。。这个log文件似乎用不到。

avatar
m*l
11
谢指点
请问如果不能用stream的话应该怎么读入呢?

array

【在 p*****p 的大作中提到】
: 不需要正则吧
: 时间都是在[]里的,建一个HashMap>,key是时间,array
: 里放后面的就行了
: while(true)里每次读一行从括号里解出时间字符串,扔到map里

avatar
m*l
12
还想请教第5条要求该如何理解和用什么途径实现比较好
非常感谢
avatar
p*r
13
俺说下思路及考官意图,个人看法。
#1 绝对不一次性读入整个文件!!!!
这个是考你处理大文件的方法,
一次性读入,3行还行,如果3百万行,那就是坑爹
所以类似readline的方式,分行读入,但是不是只读1行!
【注意点】
读单项(不是单行!!!)的时候做一个判断,是否读到结尾了,因为不一定一行包括
了所有信息。
是否结尾标志,用regular expression判断,一旦读到第2个时间,结束,进入数据拆
分!
【可能会加分的,但是有点showoff,遇到考官装X的会起反效果。】
你可以在读文件前再做一个判断,文件小于类似10k,直接读文件,不然就分行读。
也就是说你知道如何处理大文件,但是对小文件也不扯淡。。
#2 必须用regular expression,要求#4里说得很清楚!!!!
正则表达式分离数据,必须学会,以后会用很多。
判断日期格式,有很多种表达式。
如果不懂,就先去研究一把,这个题目只是分离日期以及后面数据,算简单的。
#3 把数据分离成2部分就不说了,这个你肯定会。
#4 第5条要求的意思其实是为了cross platform等后期需要,
所以建议用xml(rss)或json等格式re-format数据,我个人建议用json,更精简。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。