1.基本类
<!-- start logs dependency -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
1.1BaseIO
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import com.klsjnh.K;
import com.klsjnh.KC;
import java.io.Reader;
import java.io.Closeable;
import java.sql.ResultSet;
import java.io.BufferedReader;
public class BaseIO {
private static Logger logger = LogManager.getLogger(BaseIO.class);
protected static String processReader(String funcName, Reader reader) {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(reader);
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append(System.getProperty("line.separator"));
}
return stringBuilder.toString();
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
} finally {
close(funcName, bufferedReader);
}
return "";
}
protected static void close(String funcName, Object o) {
if (K.objectIsNull(o)) {
return;
} else if (o instanceof Closeable) {
try {
Closeable closeable = (Closeable) o;
closeable.close();
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
}
} else if (o instanceof ResultSet) {
try {
ResultSet closeable = (ResultSet) o;
closeable.close();
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
}
} else {
logger.info(String.format("unknown instance %s ...", o.toString()));
}
}
}
1.2 K(转换格式)
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import com.google.gson.*;
import java.io.Closeable;
import java.sql.ResultSet;
import java.util.*;
public class K {
private static Logger logger = LogManager.getLogger(K.class);
private static Gson g = new Gson();
public static String svo(Object o) {
if (o == null) {
return "";
}
return String.valueOf(o);
}
public static String captureFirst(String s) {
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
public static int parseInt(Object o) {
return parseInt(o, 0);
}
public static long parseLong(Object o) {
String s = o.toString().trim();
return s.matches("-?\\d+") ? Long.parseLong(s) : 0L;
}
public static int parseInt(Object o, int defaultValue) {
if (o != null && !o.equals("")) {
String s = o.toString().trim();
return !s.matches("-?\\d+") ? defaultValue : Integer.parseInt(s);
} else {
return defaultValue;
}
}
public static String getMapString(HashMap<String, Object> m, String key) {
return m.containsKey(key) ? svo(m.get(key)) : "";
}
public static int getMapNumber(HashMap<String, Object> m, String key) {
return m.containsKey(key) ? parseInt(m.get(key)) : 0;
}
public static HashMap<String, Object> getMapFromList(LinkedList<HashMap<String, Object>> dataList, String key, String value) {
for (HashMap<String, Object> data : dataList) {
if (data.containsKey("key")) {
if (getMapString(data, key).equalsIgnoreCase(value)) {
return data;
}
}
}
return null;
}
public static JsonObject getJsonObject(String json) throws FrameException {
checkObject(json, "json");
return new JsonParser().parse(json).getAsJsonObject();
}
public static JsonArray getJsonArray(String json) throws FrameException {
checkObject(json, "json");
return new JsonParser().parse(json).getAsJsonArray();
}
public static <T> T jsonToObject(Class<T> cls, String json) {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json1, typeOfT, context) -> new Date(json1.getAsJsonPrimitive().getAsLong()));
Gson gson = builder.create();
return gson.fromJson(json, cls);
}
public static String objectToJson(Object object) {
return g.toJson(object);
}
public static boolean objectIsNull(Object o) {
if (o == null) {
return true;
} else if (o instanceof String) {
return ((String) o).isEmpty();
} else if (o instanceof Map) {
return ((Map) o).isEmpty();
} else if (o instanceof Collection) {
return ((Collection) o).isEmpty();
} else if (o instanceof Closeable) {
return o == null;
} else if (o instanceof ResultSet) {
return o == null;
} else {
logger.info(String.format("unknow object %s ...", o.getClass()));
}
return true;
}
public static boolean objectIsNotNull(Object o) {
return !objectIsNull(o);
}
public static void checkObject(Object o, String name) throws FrameException {
if (K.objectIsNull(o)) {
throw new FrameException(KC.PARAM_CAN_NOT_NULL, String.format(KC.PARAM_CAN_NOT_NULL_MESSAGE, name));
}
}
}
1.3KC(常量)
public class KC {
public final static String LINE_SEPARATOR = System.getProperty("line.separator");
public final static String FILE_SEPARATOR = System.getProperty("file.separator");
public final static String OS = System.getProperty("os.name");
public static final String DEFAULT_ENCODING = "utf-8";
public static final int DEFAULT_HASH_MAP_SIZE = 16;
public static final String DEFAULT_STATUS01 = "1";
public static final String DEFAULT_EXCEPTION = "%s exception, maybe %s ...";
public static final String BUSINESS_EXCEPTION = "60100";
public static final String BUSINESS_EXCEPTION_MESSAGE = "%s business exception, maybe %s ...";
public static final String PARAM_CAN_NOT_NULL = "60110";
public static final String PARAM_CAN_NOT_NULL_MESSAGE = "param %s can't null ...";
public static final String PARAM_EXISTS = "60120";
public static final String PARAM_EXISTS_MESSAGE = "param %s is exists ...";
}
2.公共工具类
2.1HttpUtil(http工具类)
import com.klsjnh.K;
import com.klsjnh.KC;
import com.klsjnh.core.base.BaseIO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUtil extends BaseIO {
private static final Logger logger = LogManager.getLogger(HttpUtil.class);
private static int TIME_OUT = 5000;
public static String get(String url) {
return executeGet(url, KC.DEFAULT_ENCODING);
}
public static String post(String url, String data) {
return executePost(url, data, "", KC.DEFAULT_ENCODING);
}
public static String postWithForm(String url, String data) {
return executePost(url, data, "form", KC.DEFAULT_ENCODING);
}
private static String executeGet(String url, String encode) {
String funcName = "execute get";
try {
K.checkObject(url, "url");
HttpURLConnection httpConnection = getHttpConnection(url, "GET");
assert httpConnection != null;
httpConnection.setRequestProperty("Accept", "text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8");
return getStream(httpConnection.getInputStream(), encode);
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
}
return "";
}
private static String executePost(String url, String data, String method, String encode) {
String funcName = "execute post";
OutputStream outputStream = null;
try {
K.checkObject(funcName, "url");
K.checkObject(funcName, "data");
HttpURLConnection httpConnection = getHttpConnection(url, "POST");
assert httpConnection != null;
if ("form".equalsIgnoreCase(method)) {
httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
} else {
httpConnection.setRequestProperty("Content-Type", "application/json;");
}
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
outputStream = httpConnection.getOutputStream();
if (method.equalsIgnoreCase("form")) {
outputStream.write(data.getBytes(encode));
} else {
outputStream.write(data.getBytes(encode));
}
return getStream(httpConnection.getInputStream(), encode);
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
} finally {
close(funcName, outputStream);
}
return null;
}
private static String getStream(InputStream inputStream, String encode) {
String funcName = "get stream";
try {
InputStreamReader reader = new InputStreamReader(inputStream, encode);
return processReader(funcName, reader);
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
}
return "";
}
private static HttpURLConnection getHttpConnection(String url, String method) {
String funcName = "get http connection";
try {
URL Url = new URL(url);
HttpURLConnection httpConnection = (HttpURLConnection) Url.openConnection();
httpConnection.setConnectTimeout(TIME_OUT);
httpConnection.setReadTimeout(TIME_OUT);
httpConnection.setRequestProperty("Connection", "keep-alive");
httpConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0");
httpConnection.setRequestMethod(method);
return httpConnection;
} catch (Exception ex) {
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
}
return null;
}
}
2.2 MD5工具类
import com.klsjnh.KC;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.security.MessageDigest;
public class MD5Util {
private static final Logger logger = LogManager.getLogger(HttpUtil.class);
public static String encode(String content){
String funcName = "encode";
try{
MessageDigest md5 = MessageDigest.getInstance("MD5");
char[] charArray = content.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++){
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}catch (Exception ex){
logger.error(String.format(KC.DEFAULT_EXCEPTION, funcName, ex.getMessage()));
}
return "";
}
}