2
私は以下のプログラムでフレーム化された問題があります。a =、symbol =、uid =、cidの後ろにある値のようなURL文字列から値を抽出しようとしています=、o =。URLを処理エラーで解析して必要な値を抽出する最も効率的な方法
プログラムで宣言された配列に表示されているサンプルURLに対して、これらの値を抽出する最適な方法は何ですか?
私は、プログラムの出力ステートメントに示されている解析時間を最小限に抑えたがっています。
package com.xyz.urlagent;
import java.util.Date;
import java.util.Random;
public class UrlExtract {
public static String[] urlArray = {"https://example.com/grid/p/login?cid=testcidcombo4&uid=testuidcombo4&a=testadcodecombo4&o=testoffercodecombo4",
"https://example.com/grid/p/site#r=jPage/https://research-example.com/grid/wwws/research/stocks/earnings?c_name=hvfkhfk_VENDOR&symbol=IBM",
"https://example.com/grid/p/login?a=testadcode3",
"https://example.com/grid/p/site#r=jPage/https://research-example.com/grid/wwws/fixedIncome/bondTicker.asp?c_name=_jhcjhfhyjkh_VENDOR&Extra=",
"https://example.com/grid/p/site#r=jPage/https://example.com/grid/wwws/ideas/overview/overview.asp?YYY600_4TasO+9+jFhYnkq2U5YXohiZ9qsMKu/jUh6HR8N5EWKAOlRWVhC18/dapBTvnqGaqgNGUMvWP3EfysyWRfCNYsqUFBc1pxuB8/ho+4G2BBo=&c_name=khhfjkuk_VENDOR",
"https://example.com/grid/p/site#r=jPage/https://research-example.com/grid/wwws/research/stocks/earnings?symbol=AAPL&c_name=jkvkjgljlj_VENDOR",
"https://example.com/grid/p/login?CID=testcid1"};
public static int numurl = 2000;
public static Random rand = new Random(System.currentTimeMillis());
public static void main(String[] args) {
Date StartDate= new Date();
for(int i=0; i<numurl;i++){
String SampleURL = urlArray[rand.nextInt(urlArray.length)];
////////////############ CODE To Extract symbol Values from URL(value after symbol=)
////////////############ CODE To Extract UID Values from URL(value after uid=)
////////////############ CODE To Extract CID Values from URL(value after cid=)
////////////############ CODE To Extract O Values from URL(value after o=)
////////////############ CODE To Extract A Values from URL(value after a=)
System.out.println("Values extracted from Sample URL: "+ "(Extracted Values are printed HERE)");
}
Date EndDate= new Date();
long diff = (EndDate.getTime()-StartDate.getTime())/(1000%60);
System.out.println("Time taken to parse "+numurl+ " url's is: "+diff+ " seconds.");
}
}
率直に言えば、ここでは効率以上の正しさが好きです。 URLパラメータのすべてのエンコード規則では、これは正しく行うために重要ではありません。良いライブラリを使用してください。 – Henry
ここで見ることができます:http://stackoverflow.com/a/31600846/1475228 –
おかげでHenryは一番大事ですが、私は毎秒大量のデータでこれをやっていますので、できるだけ早い解決策も探しています。 – RAJESH