主题 : 统计链接出错 |
级别: 举人
|
1# 发表于:2012-09-13 10:52:41 IP:114.14.*.*
|
||||
---|---|---|---|---|---|
级别: 举人
|
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 ,达不到共用对象的效果,倒不如实例化. |
||
---|---|---|---|
级别: 状元
|
4# 发表于:2012-09-13 11:00:37 IP:111.202.*.*
回复第3楼 您好!您的问题我会反映到研发部,如果确实有问题,会在及时改正,谢谢您的的建议
|
||
---|---|---|---|
级别: 举人
|
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 }); } |
||
---|---|---|---|
级别: 举人
|
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); } } } |
||
---|---|---|---|
1
共1页