diff --git a/pom.xml b/pom.xml
index b4fc8bd..5165e0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,7 @@
UTF-8
4.2.4.RELEASE
+ 2.5
@@ -88,12 +89,29 @@
2.4
jdk15
-
+
com.caucho
hessian
4.0.38
+
+ redis.clients
+ jedis
+ 2.8.0
+
+
+ mysql
+ mysql-connector-java
+ 5.1.38
+
+
+
+ javax.servlet
+ servlet-api
+ ${servlet.version}
+ provided
+
useful-code
diff --git a/src/main/java/osc/git/eh3/redis/JRedisPoolConfig.java b/src/main/java/osc/git/eh3/redis/JRedisPoolConfig.java
new file mode 100644
index 0000000..975f896
--- /dev/null
+++ b/src/main/java/osc/git/eh3/redis/JRedisPoolConfig.java
@@ -0,0 +1,44 @@
+package osc.git.eh3.redis;
+
+import java.io.InputStream;
+import java.util.Properties;
+
+public class JRedisPoolConfig {
+
+ public static String REDIS_IP;
+ public static int REDIS_PORT;
+ public static String REDIS_PASSWORD;
+ public static int MAX_ACTIVE;
+ public static int MAX_IDLE;
+ public static long MAX_WAIT;
+ public static boolean TEST_ON_BORROW;
+ public static boolean TEST_ON_RETURN;
+
+ static {
+ init();
+ }
+
+ public static void init() {
+ try {
+ InputStream propFile = JRedisPoolConfig.class.getResourceAsStream("redis.properties");
+ if(propFile != null){
+ Properties p = new Properties();
+ p.load(propFile);
+ REDIS_IP = p.getProperty("redis.ip");
+ REDIS_PORT = Integer.parseInt(p.getProperty("redis.port"));
+ REDIS_PASSWORD = p.getProperty("redis.password");
+ MAX_ACTIVE = Integer.parseInt(p.getProperty("redis.pool.maxActive"));
+ MAX_IDLE = Integer.parseInt(p.getProperty("redis.pool.maxIdle"));
+ MAX_WAIT = Integer.parseInt(p.getProperty("redis.pool.maxWait"));
+ TEST_ON_BORROW = Boolean.parseBoolean(p.getProperty("redis.pool.testOnBorrow"));
+ TEST_ON_RETURN = Boolean.parseBoolean(p.getProperty("redis.pool.testOnReturn"));
+ propFile.close();
+ propFile=null;
+ }else{
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/osc/git/eh3/redis/JedisUtil.java b/src/main/java/osc/git/eh3/redis/JedisUtil.java
new file mode 100644
index 0000000..0eb017d
--- /dev/null
+++ b/src/main/java/osc/git/eh3/redis/JedisUtil.java
@@ -0,0 +1,380 @@
+package osc.git.eh3.redis;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.springframework.util.StringUtils;
+
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+
+public class JedisUtil {
+
+
+ private static JedisPool jedisPool = null;
+
+ /** 缓存生存时间 */
+ private final static int expire = 60000;
+
+ private final static String PUBLISH_CHANNEL = "dsp_news";
+
+ private static final int DEFAULT_SINGLE_EXPIRE_TIME = 3;
+
+ private static final String CONST_STR = "_storm";
+
+ static {
+ JedisPoolConfig config = new JedisPoolConfig();
+ config.setMaxTotal(JRedisPoolConfig.MAX_ACTIVE);
+ config.setMaxIdle(JRedisPoolConfig.MAX_IDLE);
+ config.setMaxWaitMillis(JRedisPoolConfig.MAX_WAIT);
+ config.setTestOnBorrow(JRedisPoolConfig.TEST_ON_BORROW);
+ config.setTestOnReturn(JRedisPoolConfig.TEST_ON_RETURN);
+ // redis如果设置了密码:
+ if (StringUtils.isEmpty(JRedisPoolConfig.REDIS_PASSWORD)) {
+ jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
+ JRedisPoolConfig.REDIS_PORT, 10000);
+ } else {
+ jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
+ JRedisPoolConfig.REDIS_PORT, 10000,
+ JRedisPoolConfig.REDIS_PASSWORD);
+ }
+ }
+
+ public static JedisPool getPool() {
+ return jedisPool;
+ }
+
+ /**
+ * 从jedis连接池中获取获取jedis对象
+ */
+ public static Jedis getJedis() {
+ return jedisPool.getResource();
+ }
+
+ /**
+ * 回收jedis
+ */
+ public static void returnJedis(Jedis jedis) {
+ if (jedis != null)
+ jedisPool.returnResource(jedis);
+ }
+
+ /**
+ * 设置过期时间
+ */
+ public static void expire(String key, int seconds) {
+ if (seconds <= 0) {
+ return;
+ }
+ Jedis jedis = getJedis();
+ jedis.expire(key, seconds);
+ returnJedis(jedis);
+ }
+
+ /**
+ * 设置默认过期时间
+ */
+ public static void expire(String key) {
+ expire(key, expire);
+ }
+
+ public static void set(String key, String value) {
+ if (isBlank(key))
+ return;
+ Jedis jedis = getJedis();
+ jedis.set(key, value);
+ returnJedis(jedis);
+ }
+
+ public static void set(String key, Object value) {
+ if (isBlank(key))
+ return;
+ Jedis jedis = getJedis();
+ jedis.set(key.getBytes(), SerializeUtil.serialize(value));
+ returnJedis(jedis);
+ }
+
+ public static void set(String key, int value) {
+ if (isBlank(key))
+ return;
+ set(key, String.valueOf(value));
+ }
+
+ public static void set(String key, long value) {
+ if (isBlank(key))
+ return;
+ set(key, String.valueOf(value));
+ }
+
+ public static void set(String key, float value) {
+ if (isBlank(key))
+ return;
+ set(key, String.valueOf(value));
+ }
+
+ public static void set(String key, double value) {
+ if (isBlank(key))
+ return;
+ set(key, String.valueOf(value));
+ }
+
+ public static Float getFloat(String key) {
+ if (isBlank(key))
+ return null;
+ return Float.valueOf(getStr(key));
+ }
+
+ public static Double getDouble(String key) {
+ if (isBlank(key))
+ return null;
+ return Double.valueOf(getStr(key));
+ }
+
+ public static Long getLong(String key) {
+ if (isBlank(key))
+ return null;
+ return Long.valueOf(getStr(key));
+ }
+
+ public static Integer getInt(String key) {
+ if (isBlank(key))
+ return null;
+ return Integer.valueOf(getStr(key));
+ }
+
+ public static String getStr(String key) {
+ if (isBlank(key))
+ return null;
+ Jedis jedis = getJedis();
+ String value = jedis.get(key);
+ returnJedis(jedis);
+ return value;
+ }
+
+ public static Object getObj(String key) {
+ if (isBlank(key))
+ return null;
+ Jedis jedis = getJedis();
+ if(jedis.get(key.getBytes()) == null) {
+ return null;
+ }
+ byte[] bits = jedis.get(key.getBytes());
+ Object obj = SerializeUtil.unserialize(bits);
+ returnJedis(jedis);
+ return obj;
+ }
+
+ public static void delete(String key) {
+ Jedis jedis = getJedis();
+ if (jedis.get(key) != null) {
+ jedis.del(key);
+ }
+ returnJedis(jedis);
+ }
+
+ public static String[] getKeys(String pattern) {
+ if(isBlank(pattern)) {
+ return null;
+ }
+ Jedis jedis = getJedis();
+ Set keySet = jedis.keys(pattern);
+ String[] keys = new String[keySet.size()];
+ int index = 0;
+ for(String key : keySet) {
+ keys[index] = key;
+ index ++;
+ }
+ returnJedis(jedis);
+ return keys;
+ }
+
+ public static void deleteByPattern(String pattern) {
+ Jedis jedis = getJedis();
+ String[] keys = getKeys(pattern);
+ if(keys != null && keys.length != 0) {
+ if(keys.length == 1) {
+ jedis.del(keys[0]);
+ }else {
+ jedis.del(keys);
+ }
+ }
+ returnJedis(jedis);
+ }
+
+ public static Set sget(String key) {
+ Jedis jedis = getJedis();
+ returnJedis(jedis);
+ return jedis.smembers(key);
+ }
+
+ public static void sset(String key, String... members) {
+ Jedis jedis = getJedis();
+ jedis.sadd(key, members);
+ returnJedis(jedis);
+ }
+
+ public static boolean sismember(String key, String member) {
+ Jedis jedis = getJedis();
+ boolean res = jedis.sismember(key, member);
+ returnJedis(jedis);
+ return res;
+ }
+
+ public static void sdelete(String key, String... members) {
+ Jedis jedis = getJedis();
+ jedis.srem(key, members);
+ returnJedis(jedis);
+ }
+
+ public static void hset(String key, Map value) {
+ Jedis jedis = getJedis();
+ jedis.hmset(key, value);
+ returnJedis(jedis);
+ }
+
+ public static void hdelete(String key) {
+ Jedis jedis = getJedis();
+ if (jedis.hgetAll(key) != null) {
+ jedis.del(key);
+ }
+ returnJedis(jedis);
+ }
+
+ public static boolean isBlank(String str) {
+ return str == null || "".equals(str.trim());
+ }
+
+ public static boolean exists(String key) {
+ Jedis jedis = getJedis();
+ boolean isexist = jedis.exists(key);
+ returnJedis(jedis);
+ return isexist;
+ }
+
+ public static void publishNews(String str){
+ Jedis jedis = getJedis();
+ jedis.publish(PUBLISH_CHANNEL, str);
+ returnJedis(jedis);
+ }
+
+ /**
+ * 锁在给定的等待时间内空闲,则获取锁成功 返回true, 否则返回false
+ * @param key
+ * @param timeout
+ * @param unit
+ * @return
+ */
+ @SuppressWarnings("resource")
+ private static boolean trylock(String key) {
+ Jedis jedis = null;
+ try {
+ jedis = getJedis();
+ do {
+ Long i = jedis.setnx(key + CONST_STR, key);
+ if (i == 1) {
+ jedis.expire(key + CONST_STR, DEFAULT_SINGLE_EXPIRE_TIME);
+ return Boolean.TRUE;
+ }
+ Thread.sleep(100);
+ } while (true);
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } finally {
+ returnJedis(jedis);
+ }
+ return Boolean.FALSE;
+ }
+
+ /**
+ * 释放锁
+ * @param key
+ */
+ public static void unlock(String key) {
+ delete(key + CONST_STR);
+ }
+
+ public static void setWithLock(String key, String value) {
+ Jedis jedis = null;
+ try {
+ jedis = getJedis();
+ jedis.set(key, value);
+ if (jedis.get(key + CONST_STR) != null) {
+ unlock(key);
+ }
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ } finally {
+ returnJedis(jedis);
+ }
+ }
+
+ public static String getStrWithLock(String key) {
+ String value = null;
+ Jedis jedis = null;
+ try {
+ jedis = getJedis();
+ if (jedis.get(key) != null && trylock(key)) {
+ value = jedis.get(key);
+ if (value == null) {
+ unlock(key);
+ }
+ }
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ } finally {
+ returnJedis(jedis);
+ }
+ return value;
+ }
+
+
+ public static void main(String[] args) {
+
+ }
+ public static void lpush(String key, String value) {
+ if (isBlank(key))
+ return;
+ Jedis jedis = getJedis();
+ jedis.lpush(key, value);
+ returnJedis(jedis);
+ }
+
+ public static String[] hkeys(String key){
+ if (isBlank(key))
+ return null;
+ Jedis jedis = getJedis();
+ Set keySet = jedis.hkeys(key);
+ List keys = new ArrayList();
+ for(String hkey : keySet) {
+ keys.add(hkey);
+ }
+ returnJedis(jedis);
+ return keys.toArray(new String[keys.size()]);
+ }
+
+ public static String hget(String key, String hkey) {
+ if (isBlank(key)||isBlank(hkey))
+ return "";
+ Jedis jedis = getJedis();
+ String value = jedis.hget(key, hkey);
+ returnJedis(jedis);
+
+ return value;
+ }
+
+ public static List hmget(String key, String[] hkey) {
+ if (isBlank(key))
+ return null;
+ Jedis jedis = getJedis();
+ List value = jedis.hmget(key, hkey);
+ returnJedis(jedis);
+
+ return value;
+ }
+}
diff --git a/src/main/java/osc/git/eh3/redis/SerializeUtil.java b/src/main/java/osc/git/eh3/redis/SerializeUtil.java
new file mode 100644
index 0000000..ea7ea8b
--- /dev/null
+++ b/src/main/java/osc/git/eh3/redis/SerializeUtil.java
@@ -0,0 +1,49 @@
+package osc.git.eh3.redis;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+public class SerializeUtil {
+ /**
+ * 序列化
+ *
+ * @param object
+ * @return
+ */
+ public static byte[] serialize(Object object) {
+ ObjectOutputStream oos = null;
+ ByteArrayOutputStream baos = null;
+ try {
+ // 序列化
+ baos = new ByteArrayOutputStream();
+ oos = new ObjectOutputStream(baos);
+ oos.writeObject(object);
+ byte[] bytes = baos.toByteArray();
+ return bytes;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 反序列化
+ *
+ * @param bytes
+ * @return
+ */
+ public static Object unserialize(byte[] bytes) {
+ ByteArrayInputStream bais = null;
+ try {
+ // 反序列化
+ bais = new ByteArrayInputStream(bytes);
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ return ois.readObject();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/osc/git/eh3/redis/redis.properties b/src/main/java/osc/git/eh3/redis/redis.properties
new file mode 100644
index 0000000..d5132a8
--- /dev/null
+++ b/src/main/java/osc/git/eh3/redis/redis.properties
@@ -0,0 +1,9 @@
+redis.pool.maxActive=1024
+redis.pool.maxIdle=200
+redis.pool.maxWait=1000
+redis.pool.testOnBorrow=true
+redis.pool.testOnReturn=true
+redis.ip=192.168.3.140
+#redis.ip=pxene12
+redis.port=7389
+redis.password=
\ No newline at end of file
diff --git a/src/main/java/osc/git/eh3/test/DirList.java b/src/main/java/osc/git/eh3/test/DirList.java
index 5126943..425db40 100644
--- a/src/main/java/osc/git/eh3/test/DirList.java
+++ b/src/main/java/osc/git/eh3/test/DirList.java
@@ -4,12 +4,7 @@ import java.io.File;
import java.io.FilenameFilter;
public class DirList {
- /**
- * @param args
- * The file pattern that need to be matched.
- */
public static void main(String[] args) {
- // TODO Auto-generated method stub
File path = new File("D://");
String arg = "dsp_impclk_15";
String[] list;
@@ -25,13 +20,11 @@ public class DirList {
class DirFilter implements FilenameFilter {
String afn;
-
DirFilter(String afn) {
this.afn = afn;
}
public boolean accept(File dir, String name) {
- // Strip path information.
String f = new File(name).getName();
return f.indexOf(afn) != -1;
}
diff --git a/src/main/java/osc/git/eh3/test/TestCode.java b/src/main/java/osc/git/eh3/test/TestCode.java
index ddfd0aa..794238b 100644
--- a/src/main/java/osc/git/eh3/test/TestCode.java
+++ b/src/main/java/osc/git/eh3/test/TestCode.java
@@ -1,6 +1,8 @@
package osc.git.eh3.test;
import java.math.BigDecimal;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -31,14 +33,14 @@ public class TestCode {
// Map resultMap = new HashMap();
// System.out.println((String)resultMap.get("dd"));
- // try {
- // String str = null;
- // str.equals("");
- // } catch (Exception e) {
- // System.out.println(e.getMessage());
- // e.printStackTrace();
- // }
- // System.out.println("fffff");
+// try {
+// String str = null;
+// str.equals("");
+// } catch (Exception e) {
+// System.out.println(e.getMessage());
+// e.printStackTrace();
+// }
+// System.out.println("fffff");
// String[] s = {"111","eee"};
// System.out.println(Arrays.toString(s));
@@ -51,67 +53,83 @@ public class TestCode {
//
// System.out.println(list.toString());
-// JSONArray areaTarget = new JSONArray();
-// areaTarget.add("3");
-// areaTarget.add("5");
-// areaTarget.add("4");
-// areaTarget.add("7");
-// System.out.println(JSONArray.toList(areaTarget));
-
-
-// String whiteStr = "2,4,5,8,3";
-// System.out.println(JSONArray.fromObject(whiteStr.split(",")));
-
-// for (int i = 0;i<2;i++) {
-//
-// if ("1".equals("1")) {
-// if ("1".equals("1")) {
-// System.out.println("111111111111111");
-// continue;
-// }
-// System.out.println("2222222222222222");
-// }
-// System.out.println("3333333333333333333333");
-// }
-
-// String str = "http://www.test.com";
-// System.out.println(str.replace("http://www.", "").replace("www.", ""));
-
-// SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
-// SimpleDateFormat sdf = new SimpleDateFormat("HH");
-// String str = "23:59:59";
-// System.out.println(sdf.format(formatter.parse(str)));
-
+ // JSONArray areaTarget = new JSONArray();
+ // areaTarget.add("3");
+ // areaTarget.add("5");
+ // areaTarget.add("4");
+ // areaTarget.add("7");
+ // System.out.println(JSONArray.toList(areaTarget));
+
+ // String whiteStr = "2,4,5,8,3";
+ // System.out.println(JSONArray.fromObject(whiteStr.split(",")));
+
+ // for (int i = 0;i<2;i++) {
+ //
+ // if ("1".equals("1")) {
+ // if ("1".equals("1")) {
+ // System.out.println("111111111111111");
+ // continue;
+ // }
+ // System.out.println("2222222222222222");
+ // }
+ // System.out.println("3333333333333333333333");
+ // }
+
+ // String str = "http://www.test.com";
+ // System.out.println(str.replace("http://www.", "").replace("www.",
+ // ""));
+
+ // SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
+ // SimpleDateFormat sdf = new SimpleDateFormat("HH");
+ // String str = "23:59:59";
+ // System.out.println(sdf.format(formatter.parse(str)));
// Spring Hessian代理Servelet
-// String url = "http://localhost:8080/sync-logs/remote/readlogs";
-// HessianProxyFactory factory = new HessianProxyFactory();
-//
-// IReadLogs readLogs = (IReadLogs) factory.create(IReadLogs.class, url);
-// JSONArray result = JSONArray.fromObject(readLogs.readFile("2016-02-22 15:00:00", "00000000000000"));
-// System.out.println(result);
+ // String url = "http://localhost:8080/sync-logs/remote/readlogs";
+ // HessianProxyFactory factory = new HessianProxyFactory();
+ //
+ // IReadLogs readLogs = (IReadLogs) factory.create(IReadLogs.class,
+ // url);
+ // JSONArray result = JSONArray.fromObject(readLogs.readFile("2016-02-22
+ // 15:00:00", "00000000000000"));
+ // System.out.println(result);
+
+ // JSONArray jonsArr = new JSONArray();
+ // JSONArray arr = new JSONArray();
+ // jonsArr = JSONArray.fromObject("[ { 'category': 2, 'clks': 4, 'cost':
+ // 13, 'createtime': null, 'creativeid':
+ // 'cf0714f4-8b92-41f2-a843-19c94fe3af74', 'downloads': 0, 'flag': 0,
+ // 'imprs': 5, 'regists': 0, 'time': null } ]");
+ // arr.addAll(JSONArray.toCollection(jonsArr));
+ // System.out.println(arr);
+
+ // String str =
+ // "20160222,18:59:50.523,DBG,ip:36.100.240.103,adx:3,bid:08a2d93b-0153-1000-fd75-3f89c5394190,mapid:62367312-d881-426d-81b4-fe635d1db989,deviceid:726e14bf3ba615e5387c256059e9f24a94721f76,deviceidtype:97,mtype:m";
+ // for(String dd : str.split(",")){
+ //
+ // System.out.println(dd);
+ // }
+
+ // BigDecimal dd = new BigDecimal("1111.10");
+ // JSONObject jj = new JSONObject();
+ // jj.put("test", dd);
+ // System.out.println(jj.optDouble("test"));
+
+ // JSONObject jj = new JSONObject();
+ // System.out.println(jj.optString("pring"));
-// JSONArray jonsArr = new JSONArray();
-// JSONArray arr = new JSONArray();
-// jonsArr = JSONArray.fromObject("[ { 'category': 2, 'clks': 4, 'cost': 13, 'createtime': null, 'creativeid': 'cf0714f4-8b92-41f2-a843-19c94fe3af74', 'downloads': 0, 'flag': 0, 'imprs': 5, 'regists': 0, 'time': null } ]");
-// arr.addAll(JSONArray.toCollection(jonsArr));
-// System.out.println(arr);
-
-// String str = "20160222,18:59:50.523,DBG,ip:36.100.240.103,adx:3,bid:08a2d93b-0153-1000-fd75-3f89c5394190,mapid:62367312-d881-426d-81b4-fe635d1db989,deviceid:726e14bf3ba615e5387c256059e9f24a94721f76,deviceidtype:97,mtype:m";
-// for(String dd : str.split(",")){
-//
-// System.out.println(dd);
-// }
-
-// BigDecimal dd = new BigDecimal("1111.10");
-// JSONObject jj = new JSONObject();
-// jj.put("test", dd);
-// System.out.println(jj.optDouble("test"));
-
- JSONObject jj = new JSONObject();
- System.out.println(jj.optString("pring"));
+ // 根据网卡取本机配置的IP
+ InetAddress inet = null;
+ try {
+ inet = InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ }
+ String ipAddress = inet.getHostAddress();
+ System.out.println(ipAddress);
+
}
public static Long parseDate(String s) {
diff --git a/src/main/java/osc/git/eh3/test/TestJdbc.java b/src/main/java/osc/git/eh3/test/TestJdbc.java
new file mode 100644
index 0000000..d4b3a81
--- /dev/null
+++ b/src/main/java/osc/git/eh3/test/TestJdbc.java
@@ -0,0 +1,131 @@
+package osc.git.eh3.test;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.json.JSONObject;
+import osc.git.eh3.redis.JedisUtil;
+
+public class TestJdbc {
+ private static Connection getConn() {
+ String driver = "com.mysql.jdbc.Driver";
+ String url = "jdbc:mysql://192.168.3.166:3306/wins-dsp-new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&connectTimeout=60000&socketTimeout=60000";
+ String username = "root";
+ String password = "pxene";
+ Connection conn = null;
+ try {
+ Class.forName(driver); // classLoader,加载对应驱动
+ conn = (Connection) DriverManager.getConnection(url, username, password);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return conn;
+ }
+
+ private static Integer getAll() {
+ Connection conn = getConn();
+ String sql = "SELECT v.* FROM dsp_v_app_motionclick_day_count v WHERE v.time BETWEEN 1433088000000 AND 1453046400000 ";
+ // String sql = "SELECT * FROM dsp_t_ad_group_adx_creative WHERE groupid
+ // = 'd092c630-abfd-45a1-92f3-d0530c1caee8' LIMIT 1,3;";
+ PreparedStatement pstmt;
+ try {
+ pstmt = (PreparedStatement) conn.prepareStatement(sql);
+ ResultSet rs = pstmt.executeQuery();
+ ResultSetMetaData metaData = rs.getMetaData();
+ while (rs.next()) {
+ JSONObject jsonObject = new JSONObject();
+ String time = "";
+ String mapid = "";
+ String appid = "";
+ String adxtype = "";
+ for (int i = 1; i <= metaData.getColumnCount(); i++) {
+ String columnName = metaData.getColumnName(i);
+ if ("time".equals(columnName)) {
+ time = rs.getString(i);
+ }
+ if ("mapid".equals(columnName)) {
+ mapid = rs.getString(i);
+ }
+ if ("appid".equals(columnName)) {
+ appid = rs.getString(i);
+ }
+ if ("adxtype".equals(columnName)) {
+ adxtype = rs.getString(i);
+ }
+
+ jsonObject.put(columnName, rs.getString(i));
+ }
+ Map map = new HashMap<>();
+ map.put(time + "_" + appid + "_" + adxtype, jsonObject.toString());
+ JedisUtil.hset("HistoryAPPData_" + mapid, map);
+
+ // JedisUtil.lpush("HistoryAPPData_"+mapid+"_"+time,
+ // jsonObject.toString());
+ System.out.println("HistoryAPPData_" + mapid);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static void main(String[] args) {
+ // getAll();
+ JedisUtil.deleteByPattern("HistoryAPPData_*");
+ /*
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date start = new Date();
+
+ List mapids = getMapid();
+ // String[] keys = JedisUtil.getKeys("HistoryAPPData_*");
+ List alldata = new ArrayList();
+ for (String mapid : mapids) {
+ String key = "HistoryAPPData_" + mapid;
+ String[] hkeys = JedisUtil.hkeys(key);
+// for (String hkey : hkeys) {
+// System.out.println(JedisUtil.hget(key, hkey));
+// }
+ if(hkeys.length>0){
+ List hmget = JedisUtil.hmget(key, hkeys);
+ alldata.addAll(hmget);
+ }
+ }
+ System.out.println(alldata.size());
+ Date end = new Date();
+ System.out.println(sdf.format(start));
+ System.out.println(sdf.format(end));
+ */
+ }
+
+ private static List getMapid() {
+ List mapids = new ArrayList();
+ Connection conn = getConn();
+ String sql = "SELECT t2.id AS mapid FROM dsp_t_ad_group_creative t2 LEFT JOIN dsp_t_ad_group t3 ON t2.groupid = t3.id LEFT JOIN dsp_t_campaign t4 ON t3.campaignid = t4.id LEFT JOIN dsp_t_advertiser_account t5 ON t4.accountid = t5.id LEFT JOIN dsp_t_advertiser t6 ON t5.advertiserid = t6.id WHERE ( t4.accountid IN ( SELECT id FROM dsp_t_advertiser_account t6 WHERE t6.advertiserid IN ( SELECT id FROM dsp_t_advertiser t7 WHERE t7.parentid = 'dfecbd8a-2d7e-4941-bd89-e39c576c5ee5' ) ) OR t4.accountid = 'dfecbd8a-2d7e-4941-bd89-e39c576c5ee5' )";
+ // String sql = "SELECT * FROM dsp_t_ad_group_adx_creative WHERE groupid
+ // = 'd092c630-abfd-45a1-92f3-d0530c1caee8' LIMIT 1,3;";
+ PreparedStatement pstmt;
+ try {
+ pstmt = (PreparedStatement) conn.prepareStatement(sql);
+ ResultSet rs = pstmt.executeQuery();
+ ResultSetMetaData metaData = rs.getMetaData();
+ while (rs.next()) {
+ for (int i = 1; i <= metaData.getColumnCount(); i++) {
+ mapids.add(rs.getString(i));
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return mapids;
+ }
+}
diff --git a/src/main/java/osc/git/eh3/test/TestReadFile.java b/src/main/java/osc/git/eh3/test/TestReadFile.java
new file mode 100644
index 0000000..daee96a
--- /dev/null
+++ b/src/main/java/osc/git/eh3/test/TestReadFile.java
@@ -0,0 +1,83 @@
+package osc.git.eh3.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class TestReadFile {
+
+ public static void readFile() {
+ File file = new File("C:/Users/lixiangrong/Desktop/IPB.txt");
+ BufferedReader reader = null;
+ Map resultMap = null;
+ List startList = null;
+ List endList = null;
+ try {
+ resultMap = new HashMap();
+ startList = new ArrayList();
+ endList = new ArrayList();
+
+ reader = new BufferedReader(new FileReader(file));
+ String tempString = null;
+ while ((tempString = reader.readLine()) != null) {
+ String[] tempArr = tempString.split(" ");
+
+ resultMap.put(tempArr[0], tempArr);
+ startList.add(Long.parseLong(tempArr[0]));
+ endList.add(Long.parseLong(tempArr[1]));
+ }
+ reader.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException e1) {
+ }
+ }
+ }
+
+ long des = 17301504l;
+ long key = binarySearch(startList.toArray(new Long[startList.size()]), des);
+ String[] tempArr = (String[]) resultMap.get(key);
+ for (int i = 0; i < tempArr.length; i++) {
+ System.out.println(tempArr[i]);
+ }
+ }
+
+ public static void main(String[] args) {
+ readFile();
+ }
+
+ /**
+ * * 二分查找算法 * *
+ *
+ * @param srcArray
+ * 有序数组 *
+ * @param des
+ * 查找元素 *
+ * @return des的数组下标,没找到返回-1
+ */
+ public static long binarySearch(Long[] srcArray, long des) {
+ int low = 0;
+ int high = srcArray.length - 1;
+ while (low <= high) {
+ int middle = (low + high) / 2;
+ if (des == srcArray[middle]) {
+ return middle;
+ } else if (des < srcArray[middle]) {
+ high = middle - 1;
+ } else {
+ low = middle + 1;
+ }
+ }
+ return -1;
+ }
+}
diff --git a/src/main/java/osc/git/eh3/utils/CommonUtils.java b/src/main/java/osc/git/eh3/utils/CommonUtils.java
index 32ead28..77c62e7 100644
--- a/src/main/java/osc/git/eh3/utils/CommonUtils.java
+++ b/src/main/java/osc/git/eh3/utils/CommonUtils.java
@@ -2,11 +2,15 @@ package osc.git.eh3.utils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+
public class CommonUtils {
/**
* 对象转换成另一个类对象
@@ -99,4 +103,40 @@ public class CommonUtils {
}
return dataBean;
}
+
+ /**
+ * 获取当前网络ip
+ *
+ * @param request
+ * @return
+ */
+ public static String getIpAddr(HttpServletRequest request) {
+ String ipAddress = request.getHeader("x-forwarded-for");
+ if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("Proxy-Client-IP");
+ }
+ if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getRemoteAddr();
+ if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) {
+ // 根据网卡取本机配置的IP
+ InetAddress inet = null;
+ try {
+ inet = InetAddress.getLocalHost();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ }
+ ipAddress = inet.getHostAddress();
+ }
+ }
+ // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+ if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()=15
+ if (ipAddress.indexOf(",") > 0) {
+ ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+ }
+ }
+ return ipAddress;
+ }
}