主题 : 统计链接出错
级别: 举人
UID: 32717
积分:143 加为好友
威望: 0 精华: 0
主题:8 回复:65
注册时间:2012-04-20
在线时长:0
1#   发表于:2012-09-13 10:52:41  IP:114.14.*.*


点击以下链接时,报类似上面的错
http://www.xxxx.com/flow_statistic.jspx?page=http%3A%2F%2Fwww.xxxx.com%2F&referer=
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
2#   发表于:2012-09-13 10:56:50  IP:111.202.*.*
您好!您那下面那链接是个英文网站,您是使用我们系统那里出错了?
功成由勤,业精于勤。
级别: 举人
UID: 32717
积分:143 加为好友
威望: 0 精华: 0
主题:8 回复:65
注册时间:2012-04-20
在线时长:0
3#   发表于:2012-09-13 10:57:18  IP:222.40.*.*
俺研究了一下代码,觉得实现的有问题
public class Util {

private static StringBuilder sb = new StringBuilder();
public static String getIpStringFromBytes(byte[] ip) {
sb.delete(0, sb.length());
上面的操作在多线程环境下注定是要出问题的!!! 多个请求操作同一个静态的 sb ,达不到共用对象的效果,倒不如实例化.
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
4#   发表于:2012-09-13 11:00:37  IP:111.202.*.*
回复第3楼 您好!您的问题我会反映到研发部,如果确实有问题,会在及时改正,谢谢您的的建议
功成由勤,业精于勤。
级别: 举人
UID: 32717
积分:143 加为好友
威望: 0 精华: 0
主题:8 回复:65
注册时间:2012-04-20
在线时长:0
5#   发表于:2012-09-13 11:00:52  IP:222.40.*.*
front.js里有下面的脚本,在向服务器请求时出的错:
/**
 * 站点流量统计
 */
Cms.siteFlow = function(base, page, referer) {
$.getJSON(base + "/flow_statistic.jspx", {
page : page,
referer : referer
});
}
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
6#   发表于:2012-09-13 11:04:47  IP:111.202.*.*
好的!会反馈到研发部
功成由勤,业精于勤。
级别: 举人
UID: 32717
积分:143 加为好友
威望: 0 精华: 0
主题:8 回复:65
注册时间:2012-04-20
在线时长:0
7#   发表于:2012-09-13 11:16:51  IP:222.40.*.*
建议改成以下这样:
package com.jeecms.common.ipseek;

import java.io.UnsupportedEncodingException;
import java.util.StringTokenizer;

/**
 * 工具类,提供一些方便的方法
 */
public class Util {

//private static StringBuilder sb = new StringBuilder();

/**
 * 从ip的字符串形式得到字节数组形式
 * 
 * @param ip
 *            字符串形式的ip
 * @return 字节数组形式的ip
 */
public static byte[] getIpByteArrayFromString(String ip) {
byte[] ret = new byte[4];
StringTokenizer st = new StringTokenizer(ip, ".");
try {
ret[0] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
ret[1] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
ret[2] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
ret[3] = (byte) (Integer.parseInt(st.nextToken()) & 0xFF);
} catch (Exception e) {
// LogFactory.log("从ip的字符串形式得到字节数组形式报错", Level.ERROR, e);
}
return ret;
}

/**
 * @param ip
 *            ip的字节数组形式
 * @return 字符串形式的ip
 */
public static String getIpStringFromBytes(byte[] ip) {
StringBuilder sb = new StringBuilder();
//sb.delete(0, sb.length());
sb.append(ip[0] & 0xFF);
sb.append('.');
sb.append(ip[1] & 0xFF);
sb.append('.');
sb.append(ip[2] & 0xFF);
sb.append('.');
sb.append(ip[3] & 0xFF);
return sb.toString();
}

/**
 * 根据某种编码方式将字节数组转换成字符串
 * 
 * @param b
 *            字节数组
 * @param offset
 *            要转换的起始位置
 * @param len
 *            要转换的长度
 * @param encoding
 *            编码方式
 * @return 如果encoding不支持,返回一个缺省编码的字符串
 */
public static String getString(byte[] b, int offset, int len,
String encoding) {
try {
return new String(b, offset, len, encoding);
} catch (UnsupportedEncodingException e) {
return new String(b, offset, len);
}
}
}
级别: 状元
UID: 33380
积分:50625 加为好友
威望: 21 精华: 3
主题:88 回复:30687
注册时间:2012-05-07
在线时长:0
8#   发表于:2012-09-13 11:22:15  IP:111.202.*.*
功成由勤,业精于勤。
1 共1页