|
|
|
@ -1,10 +1,14 @@
|
|
|
|
|
package com.mh.user; |
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSONObject; |
|
|
|
|
import com.mh.user.constants.Constant; |
|
|
|
|
import com.mh.user.model.SysUser; |
|
|
|
|
import com.mh.user.serialport.SerialPortThread; |
|
|
|
|
import com.mh.user.utils.ComThreadPoolService; |
|
|
|
|
import io.jsonwebtoken.Claims; |
|
|
|
|
import io.jsonwebtoken.Jwts; |
|
|
|
|
import io.jsonwebtoken.SignatureAlgorithm; |
|
|
|
|
import org.checkerframework.checker.units.qual.K; |
|
|
|
|
import sun.security.provider.MD5; |
|
|
|
|
|
|
|
|
|
import java.math.BigInteger; |
|
|
|
@ -13,6 +17,8 @@ import java.security.NoSuchAlgorithmException;
|
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.concurrent.CountDownLatch; |
|
|
|
|
import java.util.concurrent.ThreadPoolExecutor; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author ljf |
|
|
|
@ -131,6 +137,7 @@ public class TestJwtUtils {
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
static ThreadPoolExecutor comThreadPool = ComThreadPoolService.getInstance(); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* eyJhbGciOiJIUzI1NiJ9. |
|
|
|
@ -139,41 +146,90 @@ public class TestJwtUtils {
|
|
|
|
|
* |
|
|
|
|
* @param args |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
|
jsonObject.put("no", "abc"); |
|
|
|
|
jsonObject.put("model", 1); |
|
|
|
|
jsonObject.put("scheme", 202); |
|
|
|
|
String inputString = "85b5cebb6132a189570d51bf5e34d93c"+jsonObject.toJSONString(); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// 获取MessageDigest实例用于MD5算法
|
|
|
|
|
MessageDigest md = MessageDigest.getInstance("MD5"); |
|
|
|
|
|
|
|
|
|
// 将输入字符串转换为字节数组并进行更新
|
|
|
|
|
byte[] messageBytes = inputString.getBytes(); |
|
|
|
|
md.update(messageBytes); |
|
|
|
|
|
|
|
|
|
// 完成哈希计算并获取结果字节数组
|
|
|
|
|
byte[] digestBytes = md.digest(); |
|
|
|
|
|
|
|
|
|
// 将字节数组转换为大写的十六进制字符串表示形式
|
|
|
|
|
BigInteger no = new BigInteger(1, digestBytes); |
|
|
|
|
String hashtext = no.toString(16); |
|
|
|
|
|
|
|
|
|
// 如果生成的十六进制字符串长度小于32,则前面补0以达到32位
|
|
|
|
|
while (hashtext.length() < 32) { |
|
|
|
|
hashtext = "0" + hashtext; |
|
|
|
|
public static void main(String[] args) throws InterruptedException { |
|
|
|
|
// JSONObject jsonObject = new JSONObject();
|
|
|
|
|
// jsonObject.put("no", "abc");
|
|
|
|
|
// jsonObject.put("model", 1);
|
|
|
|
|
// jsonObject.put("scheme", 202);
|
|
|
|
|
// String inputString = "85b5cebb6132a189570d51bf5e34d93c"+jsonObject.toJSONString();
|
|
|
|
|
//
|
|
|
|
|
// try {
|
|
|
|
|
// // 获取MessageDigest实例用于MD5算法
|
|
|
|
|
// MessageDigest md = MessageDigest.getInstance("MD5");
|
|
|
|
|
//
|
|
|
|
|
// // 将输入字符串转换为字节数组并进行更新
|
|
|
|
|
// byte[] messageBytes = inputString.getBytes();
|
|
|
|
|
// md.update(messageBytes);
|
|
|
|
|
//
|
|
|
|
|
// // 完成哈希计算并获取结果字节数组
|
|
|
|
|
// byte[] digestBytes = md.digest();
|
|
|
|
|
//
|
|
|
|
|
// // 将字节数组转换为大写的十六进制字符串表示形式
|
|
|
|
|
// BigInteger no = new BigInteger(1, digestBytes);
|
|
|
|
|
// String hashtext = no.toString(16);
|
|
|
|
|
//
|
|
|
|
|
// // 如果生成的十六进制字符串长度小于32,则前面补0以达到32位
|
|
|
|
|
// while (hashtext.length() < 32) {
|
|
|
|
|
// hashtext = "0" + hashtext;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// System.out.println("MD5 Hash: " + hashtext);
|
|
|
|
|
//
|
|
|
|
|
// } catch (NoSuchAlgorithmException e) {
|
|
|
|
|
// // 处理MD5算法不可用的情况
|
|
|
|
|
// e.printStackTrace();
|
|
|
|
|
// }
|
|
|
|
|
for (int a = 0; a < 100; a++) { |
|
|
|
|
if (comThreadPool.isShutdown()) { |
|
|
|
|
comThreadPool = ComThreadPoolService.getInstance(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
System.out.println("MD5 Hash: " + hashtext); |
|
|
|
|
|
|
|
|
|
} catch (NoSuchAlgorithmException e) { |
|
|
|
|
// 处理MD5算法不可用的情况
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
Map<String, Object> dataComMap = new HashMap<>(); |
|
|
|
|
dataComMap.put("1", "1"); |
|
|
|
|
dataComMap.put("2", "1"); |
|
|
|
|
dataComMap.put("3", "1"); |
|
|
|
|
dataComMap.put("4", "1"); |
|
|
|
|
dataComMap.put("5", "1"); |
|
|
|
|
dataComMap.put("6", "1"); |
|
|
|
|
dataComMap.put("7", "1"); |
|
|
|
|
dataComMap.put("8", "1"); |
|
|
|
|
dataComMap.put("9", "1"); |
|
|
|
|
dataComMap.put("10", "1"); |
|
|
|
|
dataComMap.put("11", "1"); |
|
|
|
|
dataComMap.put("12", "1"); |
|
|
|
|
int batchSize = 5; // 定义一个批次大小
|
|
|
|
|
int index = 0; |
|
|
|
|
for (int k = 0; k < dataComMap.size(); ) { |
|
|
|
|
System.out.println("第几轮==>" + k); |
|
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(Math.min(batchSize, dataComMap.size() - k)); |
|
|
|
|
index = k; |
|
|
|
|
for (int j = 0; j < Math.min(batchSize, dataComMap.size() - k); j++) { |
|
|
|
|
if (Constant.WEB_FLAG) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
// 获取data_com口
|
|
|
|
|
String dataCom = dataComMap.keySet().toArray(new String[0])[index]; |
|
|
|
|
index++; |
|
|
|
|
CountDownLatch finalCountDownLatch = countDownLatch; |
|
|
|
|
Thread thread = new Thread(() -> { |
|
|
|
|
finalCountDownLatch.countDown(); |
|
|
|
|
System.out.println(Thread.currentThread() + ": " + dataCom); |
|
|
|
|
}); |
|
|
|
|
comThreadPool.execute(thread); |
|
|
|
|
} |
|
|
|
|
// 等待执行完成
|
|
|
|
|
countDownLatch.await(); |
|
|
|
|
// 释放资源
|
|
|
|
|
countDownLatch = null; |
|
|
|
|
// 检查是否需要继续创建新的线程(未达到数据总数量且WEB_FLAG为false)
|
|
|
|
|
if (k + batchSize < dataComMap.size() && !Constant.WEB_FLAG) { |
|
|
|
|
k += batchSize; |
|
|
|
|
} else { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
System.out.println("结束==》"+a); |
|
|
|
|
comThreadPool.shutdown(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|