diff --git a/kit.json b/kit.json index 2ca3d87..5949328 100644 --- a/kit.json +++ b/kit.json @@ -25,6 +25,10 @@ { "func": "mkdir", "path": "%out_path%/jar/dependences" + }, + { + "func": "mkdir", + "path": "%out_path%/doc" } ], "dependencies": [{ @@ -37,11 +41,6 @@ "gen" : [{ "cmd" : "dproto" }], - "doc" : [{ - "func" : "cp", - "from" : "./doc", - "to" : "%out_path%/doc" - }], "build": [ { "cmd": "mvn package -DskipTests", diff --git a/pack/doc/黄金交易所数据库加密 java 接口新增.docx b/pack/doc/黄金交易所数据库加密 java 接口新增.docx new file mode 100644 index 0000000..d7c563d Binary files /dev/null and b/pack/doc/黄金交易所数据库加密 java 接口新增.docx differ diff --git a/src/main/java/com/sunyard/sge/database/SydApi.java b/src/main/java/com/sunyard/sge/database/SydApi.java index 1d4b00c..0979580 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi.java +++ b/src/main/java/com/sunyard/sge/database/SydApi.java @@ -9,6 +9,9 @@ import java.util.List; public interface SydApi { + void warmUpMode(boolean use); + + /** * 建立到指定地址和端口号的签名服务器的 TCP/IP 连接,返回 API 操作对象 SydApi。 * 如果采用短连接,交易结束,要调用 SydApi 的方法SYD_Disconnect_Ex 进行释放连接。 diff --git a/src/main/java/com/sunyard/sge/database/SydApi4Database.java b/src/main/java/com/sunyard/sge/database/SydApi4Database.java index 0d4ccc8..665e6cc 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi4Database.java +++ b/src/main/java/com/sunyard/sge/database/SydApi4Database.java @@ -20,6 +20,11 @@ public class SydApi4Database implements SydApi private SydApi4j api4j = null; + @Override + public void warmUpMode(boolean use) { + this.api4j.warmUpMode( use ); + } + @Override public SydApi SYD_Connect_Ex(String[] pcIpList, int[] iPortList, int iConnectTimeOut, int iDealTimeOut) { diff --git a/src/test/java/test/Pref.java b/src/test/java/test/Pref.java new file mode 100644 index 0000000..7a0856b --- /dev/null +++ b/src/test/java/test/Pref.java @@ -0,0 +1,119 @@ +package test; + +import com.sunyard.proto.Util; +import com.sunyard.sge.database.Consts; +import com.sunyard.sge.database.SydApi; +import com.sunyard.sge.database.SydApi4Database; +import org.junit.Assert; + +import java.util.ArrayList; +import java.util.List; + +public class Pref +{ + public static void main(String[] args) throws InterruptedException { + + // System.setProperty("com.sunyard.sydapi4j.debug", "true"); + + final SydApi api = new SydApi4Database(); + try { + + api.SYD_Connect_Ex( + new String[]{ "192.168.0.200" }, + new int[]{ 8889 }, + 10, + 20 + ); + + // api.warmUpMode( true ); + + // 预热 + final int max = 1; + for (int i = 0; i < max; i ++) { + shortData( api ); +// batchData( api ); + } + + + + + + Thread t = new Thread(new Runnable() { + @Override + public void run() { + // 短数据 + long st = System.currentTimeMillis(); + shortData( api ); + long et = System.currentTimeMillis(); + System.out.println("short t1=" + ( et -st )); + + + // 批量 + st = System.currentTimeMillis(); + batchData( api ); + et = System.currentTimeMillis(); + System.out.println("batch t1=" + ( et -st )); + } + }); + + + t.start(); + t.join(); + + + // api.warmUpMode( false ); + + // 短数据 + long st = System.currentTimeMillis(); + shortData( api ); + long et = System.currentTimeMillis(); + System.out.println("short t1=" + ( et -st )); + + + // 批量 + st = System.currentTimeMillis(); + batchData( api ); + et = System.currentTimeMillis(); + System.out.println("batch t1=" + ( et -st )); + } finally { + if ( null != api ) { + api.SYD_Disconnect_Ex(); + } + } + } + + public static void shortData(SydApi api){ + // 密钥索引 + int keyIdx = 0; + // 测试数据 + byte[] data = new byte[16]; + byte[] encData = new byte[16]; + try { + encData = api.SYD_SM4_ShortData( keyIdx , data, Consts.ECB_ENC ); + }catch ( Exception e){} + try { + byte[] orgData = api.SYD_SM4_ShortData( keyIdx , encData, Consts.ECB_DEC ); + }catch ( Exception e){} +// System.out.println( "HEX=" + Util.bytes2HexString( encData ) ); +// Assert.assertArrayEquals( orgData, data ); + } + + public static void batchData(SydApi api){ + // 密钥索引 + int[] keyIdx = new int[]{ 0, 1, 2 }; + // 测试数据 + List data = new ArrayList<>(); + data.add( new byte[8] ); + data.add( new byte[16] ); + data.add( new byte[1024] ); + + List encData = api.SYD_SM4_BatchData( keyIdx , data, Consts.ECB_ENC ); + List orgData = api.SYD_SM4_BatchData( keyIdx , encData, Consts.ECB_DEC ); + + for ( int i = 0 ; i < data.size() ; i++ ) { + System.out.println( "HEX=" + Util.bytes2HexString( encData.get( i ) ) ); + Assert.assertArrayEquals( orgData.get( i ), data.get( i ) ); + } + + } +} diff --git a/说明.txt b/说明.txt new file mode 100644 index 0000000..b5d8a47 --- /dev/null +++ b/说明.txt @@ -0,0 +1,9 @@ +- doc 文档 +- sample 示例代码 +- jar + - sydapi-database-1.0.1db66d06.jar 接口 API + - dependences 所有依赖 + - groovy-all-2.3.2 通信协议支持 + - proto-1.0-20220412 通信协议支持 + - slf4j-api-1.7.10 日志接口 + - sydapi-1.12.dd63df.jar 加密机通信包