From 1886d0513c3333739f5c734025cffabcd723b390 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 30 Jun 2021 14:30:40 +0000 Subject: [PATCH 1/5] Refactor StringUtils.isContains --- .../java/org/tron/keystore/StringUtils.java | 20 +------------------ .../org/tron/keystore/StringUtilsTest.java | 5 +++++ 2 files changed, 6 insertions(+), 19 deletions(-) mode change 100644 => 100755 src/main/java/org/tron/keystore/StringUtils.java mode change 100644 => 100755 src/test/java/org/tron/keystore/StringUtilsTest.java diff --git a/src/main/java/org/tron/keystore/StringUtils.java b/src/main/java/org/tron/keystore/StringUtils.java old mode 100644 new mode 100755 index d2224a508..a6676277b --- a/src/main/java/org/tron/keystore/StringUtils.java +++ b/src/main/java/org/tron/keystore/StringUtils.java @@ -57,25 +57,7 @@ public static boolean isContains(char[] a, char[] b) { if (ArrayUtils.isEmpty(a) || ArrayUtils.isEmpty(b)) { return false; } - - int alen = a.length; - int blen = b.length; - - for (int i = 0; i < alen; i++) { - if (alen - i < blen) { - return false; - } - int j; - for (j = 0; j < blen; j++) { - if (a[i + j] != b[j]) { - break; - } - } - if (j == blen) { - return true; - } - } - return false; + return new String(a).contains(new String(b)); } public static void clear(char[] a) { diff --git a/src/test/java/org/tron/keystore/StringUtilsTest.java b/src/test/java/org/tron/keystore/StringUtilsTest.java old mode 100644 new mode 100755 index 194cc82db..6204fc308 --- a/src/test/java/org/tron/keystore/StringUtilsTest.java +++ b/src/test/java/org/tron/keystore/StringUtilsTest.java @@ -30,6 +30,11 @@ public void isContains() { char[] b = "ghijkl".toCharArray(); char[] c = "defghi".toCharArray(); char[] d = "abcdefghijkl".toCharArray(); + char[] empty = "".toCharArray(); + + Assert.assertFalse(StringUtils.isContains(empty, d)); + Assert.assertFalse(StringUtils.isContains(d, empty)); + Assert.assertTrue(StringUtils.isContains(d, d)); Assert.assertTrue(StringUtils.isContains(d, a)); Assert.assertTrue(StringUtils.isContains(d, b)); From 9606fe230ec7830b21b611e3361fadbe157d2824 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 1 Jul 2021 09:06:55 +0000 Subject: [PATCH 2/5] Use KMP --- src/main/java/org/tron/keystore/KMP.java | 52 +++++++++++++++++++ .../java/org/tron/keystore/StringUtils.java | 5 +- .../org/tron/keystore/StringUtilsTest.java | 6 ++- 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/tron/keystore/KMP.java diff --git a/src/main/java/org/tron/keystore/KMP.java b/src/main/java/org/tron/keystore/KMP.java new file mode 100644 index 000000000..363a5ef61 --- /dev/null +++ b/src/main/java/org/tron/keystore/KMP.java @@ -0,0 +1,52 @@ +package org.tron.keystore; + +public class KMP { + public static boolean search(char[] text, char[] pattern) { + int patternLength = pattern.length; + int textLength = text.length; + int[] lps = new int[patternLength]; + + prepareLPSArray(pattern, lps); + + int i = 0; + int j = 0; + while (i < textLength) { + if (text[i] == pattern[j]) { + i++; + j++; + } + + if (j == patternLength) { + return true; + } + + if (i < textLength && text[i] != pattern[j]) { + if (j != 0) { + j = lps[j - 1]; + } else { + i++; + } + } + } + return false; + } + + private static void prepareLPSArray(char[] pattern, int lps[]) { + int patternLength = pattern.length; + int len = 0, i = 1; + while (i < patternLength) { + if (pattern[i] == pattern[len]) { + len++; + lps[i] = len; + i++; + } else { + if (len == 0) { + lps[i] = len; + i++; + } else { + len = lps[len - 1]; + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/org/tron/keystore/StringUtils.java b/src/main/java/org/tron/keystore/StringUtils.java index a6676277b..1e447bba9 100755 --- a/src/main/java/org/tron/keystore/StringUtils.java +++ b/src/main/java/org/tron/keystore/StringUtils.java @@ -57,7 +57,10 @@ public static boolean isContains(char[] a, char[] b) { if (ArrayUtils.isEmpty(a) || ArrayUtils.isEmpty(b)) { return false; } - return new String(a).contains(new String(b)); + if (a.length < b.length) { + return false; + } + return KMP.search(a, b); } public static void clear(char[] a) { diff --git a/src/test/java/org/tron/keystore/StringUtilsTest.java b/src/test/java/org/tron/keystore/StringUtilsTest.java index 6204fc308..ac0282a70 100755 --- a/src/test/java/org/tron/keystore/StringUtilsTest.java +++ b/src/test/java/org/tron/keystore/StringUtilsTest.java @@ -7,7 +7,6 @@ public class StringUtilsTest { - @Test public void isCharEqual() { char[] a = "aaaaaa".toCharArray(); @@ -32,6 +31,11 @@ public void isContains() { char[] d = "abcdefghijkl".toCharArray(); char[] empty = "".toCharArray(); + char[] longarr = "xxxxxxxx123xxxxxxxxx".toCharArray(); + char[] shortarr = "123".toCharArray(); + Assert.assertFalse(StringUtils.isContains(shortarr, longarr)); + Assert.assertTrue(StringUtils.isContains(longarr, shortarr)); + Assert.assertFalse(StringUtils.isContains(empty, d)); Assert.assertFalse(StringUtils.isContains(d, empty)); From 286c254a55737f5017eb6716792024e613c20a5e Mon Sep 17 00:00:00 2001 From: Dr Lai Date: Wed, 28 Jul 2021 13:00:41 +0100 Subject: [PATCH 3/5] Add length check --- src/main/java/org/tron/keystore/KMP.java | 52 ------------------- .../java/org/tron/keystore/StringUtils.java | 20 ++++++- 2 files changed, 18 insertions(+), 54 deletions(-) delete mode 100644 src/main/java/org/tron/keystore/KMP.java diff --git a/src/main/java/org/tron/keystore/KMP.java b/src/main/java/org/tron/keystore/KMP.java deleted file mode 100644 index 363a5ef61..000000000 --- a/src/main/java/org/tron/keystore/KMP.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.tron.keystore; - -public class KMP { - public static boolean search(char[] text, char[] pattern) { - int patternLength = pattern.length; - int textLength = text.length; - int[] lps = new int[patternLength]; - - prepareLPSArray(pattern, lps); - - int i = 0; - int j = 0; - while (i < textLength) { - if (text[i] == pattern[j]) { - i++; - j++; - } - - if (j == patternLength) { - return true; - } - - if (i < textLength && text[i] != pattern[j]) { - if (j != 0) { - j = lps[j - 1]; - } else { - i++; - } - } - } - return false; - } - - private static void prepareLPSArray(char[] pattern, int lps[]) { - int patternLength = pattern.length; - int len = 0, i = 1; - while (i < patternLength) { - if (pattern[i] == pattern[len]) { - len++; - lps[i] = len; - i++; - } else { - if (len == 0) { - lps[i] = len; - i++; - } else { - len = lps[len - 1]; - } - } - } - } -} \ No newline at end of file diff --git a/src/main/java/org/tron/keystore/StringUtils.java b/src/main/java/org/tron/keystore/StringUtils.java index 1e447bba9..d722340db 100755 --- a/src/main/java/org/tron/keystore/StringUtils.java +++ b/src/main/java/org/tron/keystore/StringUtils.java @@ -57,10 +57,26 @@ public static boolean isContains(char[] a, char[] b) { if (ArrayUtils.isEmpty(a) || ArrayUtils.isEmpty(b)) { return false; } - if (a.length < b.length) { + int alen = a.length; + int blen = b.length; + if (alen < blen) { return false; } - return KMP.search(a, b); + for (int i = 0; i < alen; i++) { + if (alen - i < blen) { + return false; + } + int j; + for (j = 0; j < blen; j++) { + if (a[i + j] != b[j]) { + break; + } + } + if (j == blen) { + return true; + } + } + return false; } public static void clear(char[] a) { From e6c54bf250f478d25c3d78563b267c2cfa383768 Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Tue, 24 Sep 2024 15:02:11 +0800 Subject: [PATCH 4/5] update gradle to 6.4 and protobufVersion,grpcVersion --- build.gradle | 92 +++++++++++++----------- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/build.gradle b/build.gradle index 166a51994..54cada71b 100644 --- a/build.gradle +++ b/build.gradle @@ -10,12 +10,12 @@ sourceCompatibility = 1.8 targetCompatibility = JavaVersion.VERSION_1_8 [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' -compileJava.options*.compilerArgs = [ - "-Xlint:serial", "-Xlint:varargs", "-Xlint:classfile", "-Xlint:dep-ann", - "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally", "-Xlint:overrides", - "-Xlint:path", "-Xlint:static", "-Xlint:try", "-Xlint:fallthrough", - "-Xlint:deprecation", "-Xlint:unchecked", "-Xlint:-options" -] +//compileJava.options*.compilerArgs = [ +// "-Xlint:serial", "-Xlint:varargs", "-Xlint:classfile", "-Xlint:dep-ann", +// "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally", "-Xlint:overrides", +// "-Xlint:path", "-Xlint:static", "-Xlint:try", "-Xlint:fallthrough", +// "-Xlint:deprecation", "-Xlint:unchecked", "-Xlint:-options" +//] repositories { mavenLocal() @@ -23,6 +23,9 @@ repositories { maven { url 'https://jitpack.io' } } +def protobufVersion = "3.25.5" +def grpcVersion = "1.60.0" + sourceSets { main { proto { @@ -33,8 +36,8 @@ sourceSets { srcDir 'src/main/java' } } - } + buildscript { repositories { mavenLocal() @@ -43,59 +46,58 @@ buildscript { } mavenCentral() } - ext { - projectVersion = '1.3.0-RELEASE' - grpcVersion = '1.60.0' - protobufVersion = '3.21.12' - protobufGradlePluginVersion = '0.8.0' - } dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2' - classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.3' - classpath "gradle.plugin.com.liferay:gradle-plugins-node:4.3.0" + classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0' + classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12' + classpath "gradle.plugin.com.liferay:gradle-plugins-node:7.0.2" } } -task wrapper(type: Wrapper) { - gradleVersion = '3.3' -} dependencies { - compile group: 'junit', name: 'junit', version: '4.13.2' - compile group: 'com.beust', name: 'jcommander', version: '1.82' + implementation group: 'junit', name: 'junit', version: '4.13.2' + implementation group: 'com.beust', name: 'jcommander', version: '1.82' //compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' - compile group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.25' - compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.13' + implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.25' + implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.13' + + compileOnly 'org.projectlombok:lombok:1.18.24' + annotationProcessor 'org.projectlombok:lombok:1.18.24' + testCompileOnly 'org.projectlombok:lombok:1.18.24' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' // google grpc - compile group: 'io.grpc', name: 'grpc-netty', version: "${grpcVersion}" - compile group: 'io.grpc', name: 'grpc-protobuf', version: "${grpcVersion}" - compile group: 'io.grpc', name: 'grpc-stub', version: "${grpcVersion}" - - compile group: 'com.googlecode.protobuf-java-format', name: 'protobuf-java-format', version: '1.4' - compile group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: '1.78.1' - compile group: 'com.typesafe', name: 'config', version: '1.3.2' - compile "org.apache.commons:commons-lang3:3.14.0" - compile group: 'com.google.api.grpc', name: 'googleapis-common-protos', version: '0.0.3' - compile 'com.alibaba:fastjson:1.2.83' - - compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.1' - compile group: 'org.projectlombok', name: 'lombok', version: '1.18.2' - - compile group: 'org.jline', name: 'jline', version: '3.25.0' - compile 'io.github.tronprotocol:zksnark-java-sdk:1.0.0' + implementation group: 'io.grpc', name: 'grpc-netty', version: grpcVersion + implementation group: 'io.grpc', name: 'grpc-protobuf', version: grpcVersion + implementation group: 'io.grpc', name: 'grpc-stub', version: grpcVersion + + implementation group: 'com.google.protobuf', name: 'protobuf-java', version: protobufVersion + implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: protobufVersion + + implementation group: 'com.google.code.gson', name: 'gson', version: '2.11.0' + + implementation group: 'com.googlecode.protobuf-java-format', name: 'protobuf-java-format', version: '1.4' + implementation group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: '1.78.1' + implementation group: 'com.typesafe', name: 'config', version: '1.3.2' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.14.0' + implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.83' + + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.1' + implementation group: 'org.projectlombok', name: 'lombok', version: '1.18.12' + + implementation group: 'org.jline', name: 'jline', version: '3.25.0' + implementation 'io.github.tronprotocol:zksnark-java-sdk:1.0.0' } protobuf { - generatedFilesBaseDir = "$projectDir/src/" + generatedFilesBaseDir = "$projectDir/src" protoc { - artifact = "com.google.protobuf:protoc:${protobufVersion}" - + artifact = "com.google.protobuf:protoc:$protobufVersion" } plugins { grpc { - artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" + artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion" } } generateProtoTasks { @@ -114,6 +116,10 @@ protobuf { } } +clean.doFirst { + delete "src/main/gen" +} + run { standardInput = System.in mainClassName = 'org.tron.walletcli.Client' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a0ac4c699..a7b108d65 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip From 1503b4040939dff9b67d848f67a6f12a5841146c Mon Sep 17 00:00:00 2001 From: jiangyuanshu <317787106@qq.com> Date: Tue, 24 Sep 2024 15:14:54 +0800 Subject: [PATCH 5/5] reorg gradle --- build.gradle | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 54cada71b..b954b21cf 100644 --- a/build.gradle +++ b/build.gradle @@ -62,16 +62,12 @@ dependencies { implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.25' implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.13' - compileOnly 'org.projectlombok:lombok:1.18.24' - annotationProcessor 'org.projectlombok:lombok:1.18.24' - testCompileOnly 'org.projectlombok:lombok:1.18.24' - testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' - - // google grpc + // grpc implementation group: 'io.grpc', name: 'grpc-netty', version: grpcVersion implementation group: 'io.grpc', name: 'grpc-protobuf', version: grpcVersion implementation group: 'io.grpc', name: 'grpc-stub', version: grpcVersion + // google protobuf implementation group: 'com.google.protobuf', name: 'protobuf-java', version: protobufVersion implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: protobufVersion @@ -82,12 +78,15 @@ dependencies { implementation group: 'com.typesafe', name: 'config', version: '1.3.2' implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.14.0' implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.83' - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.1' - implementation group: 'org.projectlombok', name: 'lombok', version: '1.18.12' + + compileOnly 'org.projectlombok:lombok:1.18.24' + annotationProcessor 'org.projectlombok:lombok:1.18.24' + testCompileOnly 'org.projectlombok:lombok:1.18.24' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' implementation group: 'org.jline', name: 'jline', version: '3.25.0' - implementation 'io.github.tronprotocol:zksnark-java-sdk:1.0.0' + implementation group: 'io.github.tronprotocol', name: 'zksnark-java-sdk', version: '1.0.0' } protobuf {