存储到数据库
正在显示
16 个修改的文件
包含
172 行增加
和
652 行删除
mvnw
deleted
100644 → 0
1 | #!/bin/sh | ||
2 | # ---------------------------------------------------------------------------- | ||
3 | # Licensed to the Apache Software Foundation (ASF) under one | ||
4 | # or more contributor license agreements. See the NOTICE file | ||
5 | # distributed with this work for additional information | ||
6 | # regarding copyright ownership. The ASF licenses this file | ||
7 | # to you under the Apache License, Version 2.0 (the | ||
8 | # "License"); you may not use this file except in compliance | ||
9 | # with the License. You may obtain a copy of the License at | ||
10 | # | ||
11 | # https://www.apache.org/licenses/LICENSE-2.0 | ||
12 | # | ||
13 | # Unless required by applicable law or agreed to in writing, | ||
14 | # software distributed under the License is distributed on an | ||
15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
16 | # KIND, either express or implied. See the License for the | ||
17 | # specific language governing permissions and limitations | ||
18 | # under the License. | ||
19 | # ---------------------------------------------------------------------------- | ||
20 | |||
21 | # ---------------------------------------------------------------------------- | ||
22 | # Maven Start Up Batch script | ||
23 | # | ||
24 | # Required ENV vars: | ||
25 | # ------------------ | ||
26 | # JAVA_HOME - location of a JDK home dir | ||
27 | # | ||
28 | # Optional ENV vars | ||
29 | # ----------------- | ||
30 | # M2_HOME - location of maven2's installed home dir | ||
31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven | ||
32 | # e.g. to debug Maven itself, use | ||
33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 | ||
34 | # MAVEN_SKIP_RC - flag to disable loading of mavenrc files | ||
35 | # ---------------------------------------------------------------------------- | ||
36 | |||
37 | if [ -z "$MAVEN_SKIP_RC" ] ; then | ||
38 | |||
39 | if [ -f /etc/mavenrc ] ; then | ||
40 | . /etc/mavenrc | ||
41 | fi | ||
42 | |||
43 | if [ -f "$HOME/.mavenrc" ] ; then | ||
44 | . "$HOME/.mavenrc" | ||
45 | fi | ||
46 | |||
47 | fi | ||
48 | |||
49 | # OS specific support. $var _must_ be set to either true or false. | ||
50 | cygwin=false; | ||
51 | darwin=false; | ||
52 | mingw=false | ||
53 | case "`uname`" in | ||
54 | CYGWIN*) cygwin=true ;; | ||
55 | MINGW*) mingw=true;; | ||
56 | Darwin*) darwin=true | ||
57 | # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home | ||
58 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html | ||
59 | if [ -z "$JAVA_HOME" ]; then | ||
60 | if [ -x "/usr/libexec/java_home" ]; then | ||
61 | export JAVA_HOME="`/usr/libexec/java_home`" | ||
62 | else | ||
63 | export JAVA_HOME="/Library/Java/Home" | ||
64 | fi | ||
65 | fi | ||
66 | ;; | ||
67 | esac | ||
68 | |||
69 | if [ -z "$JAVA_HOME" ] ; then | ||
70 | if [ -r /etc/gentoo-release ] ; then | ||
71 | JAVA_HOME=`java-config --jre-home` | ||
72 | fi | ||
73 | fi | ||
74 | |||
75 | if [ -z "$M2_HOME" ] ; then | ||
76 | ## resolve links - $0 may be a link to maven's home | ||
77 | PRG="$0" | ||
78 | |||
79 | # need this for relative symlinks | ||
80 | while [ -h "$PRG" ] ; do | ||
81 | ls=`ls -ld "$PRG"` | ||
82 | link=`expr "$ls" : '.*-> \(.*\)$'` | ||
83 | if expr "$link" : '/.*' > /dev/null; then | ||
84 | PRG="$link" | ||
85 | else | ||
86 | PRG="`dirname "$PRG"`/$link" | ||
87 | fi | ||
88 | done | ||
89 | |||
90 | saveddir=`pwd` | ||
91 | |||
92 | M2_HOME=`dirname "$PRG"`/.. | ||
93 | |||
94 | # make it fully qualified | ||
95 | M2_HOME=`cd "$M2_HOME" && pwd` | ||
96 | |||
97 | cd "$saveddir" | ||
98 | # echo Using m2 at $M2_HOME | ||
99 | fi | ||
100 | |||
101 | # For Cygwin, ensure paths are in UNIX format before anything is touched | ||
102 | if $cygwin ; then | ||
103 | [ -n "$M2_HOME" ] && | ||
104 | M2_HOME=`cygpath --unix "$M2_HOME"` | ||
105 | [ -n "$JAVA_HOME" ] && | ||
106 | JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | ||
107 | [ -n "$CLASSPATH" ] && | ||
108 | CLASSPATH=`cygpath --path --unix "$CLASSPATH"` | ||
109 | fi | ||
110 | |||
111 | # For Mingw, ensure paths are in UNIX format before anything is touched | ||
112 | if $mingw ; then | ||
113 | [ -n "$M2_HOME" ] && | ||
114 | M2_HOME="`(cd "$M2_HOME"; pwd)`" | ||
115 | [ -n "$JAVA_HOME" ] && | ||
116 | JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" | ||
117 | fi | ||
118 | |||
119 | if [ -z "$JAVA_HOME" ]; then | ||
120 | javaExecutable="`which javac`" | ||
121 | if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then | ||
122 | # readlink(1) is not available as standard on Solaris 10. | ||
123 | readLink=`which readlink` | ||
124 | if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then | ||
125 | if $darwin ; then | ||
126 | javaHome="`dirname \"$javaExecutable\"`" | ||
127 | javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" | ||
128 | else | ||
129 | javaExecutable="`readlink -f \"$javaExecutable\"`" | ||
130 | fi | ||
131 | javaHome="`dirname \"$javaExecutable\"`" | ||
132 | javaHome=`expr "$javaHome" : '\(.*\)/bin'` | ||
133 | JAVA_HOME="$javaHome" | ||
134 | export JAVA_HOME | ||
135 | fi | ||
136 | fi | ||
137 | fi | ||
138 | |||
139 | if [ -z "$JAVACMD" ] ; then | ||
140 | if [ -n "$JAVA_HOME" ] ; then | ||
141 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
142 | # IBM's JDK on AIX uses strange locations for the executables | ||
143 | JAVACMD="$JAVA_HOME/jre/sh/java" | ||
144 | else | ||
145 | JAVACMD="$JAVA_HOME/bin/java" | ||
146 | fi | ||
147 | else | ||
148 | JAVACMD="`which java`" | ||
149 | fi | ||
150 | fi | ||
151 | |||
152 | if [ ! -x "$JAVACMD" ] ; then | ||
153 | echo "Error: JAVA_HOME is not defined correctly." >&2 | ||
154 | echo " We cannot execute $JAVACMD" >&2 | ||
155 | exit 1 | ||
156 | fi | ||
157 | |||
158 | if [ -z "$JAVA_HOME" ] ; then | ||
159 | echo "Warning: JAVA_HOME environment variable is not set." | ||
160 | fi | ||
161 | |||
162 | CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher | ||
163 | |||
164 | # traverses directory structure from process work directory to filesystem root | ||
165 | # first directory with .mvn subdirectory is considered project base directory | ||
166 | find_maven_basedir() { | ||
167 | |||
168 | if [ -z "$1" ] | ||
169 | then | ||
170 | echo "Path not specified to find_maven_basedir" | ||
171 | return 1 | ||
172 | fi | ||
173 | |||
174 | basedir="$1" | ||
175 | wdir="$1" | ||
176 | while [ "$wdir" != '/' ] ; do | ||
177 | if [ -d "$wdir"/.mvn ] ; then | ||
178 | basedir=$wdir | ||
179 | break | ||
180 | fi | ||
181 | # workaround for JBEAP-8937 (on Solaris 10/Sparc) | ||
182 | if [ -d "${wdir}" ]; then | ||
183 | wdir=`cd "$wdir/.."; pwd` | ||
184 | fi | ||
185 | # end of workaround | ||
186 | done | ||
187 | echo "${basedir}" | ||
188 | } | ||
189 | |||
190 | # concatenates all lines of a file | ||
191 | concat_lines() { | ||
192 | if [ -f "$1" ]; then | ||
193 | echo "$(tr -s '\n' ' ' < "$1")" | ||
194 | fi | ||
195 | } | ||
196 | |||
197 | BASE_DIR=`find_maven_basedir "$(pwd)"` | ||
198 | if [ -z "$BASE_DIR" ]; then | ||
199 | exit 1; | ||
200 | fi | ||
201 | |||
202 | ########################################################################################## | ||
203 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central | ||
204 | # This allows using the maven wrapper in projects that prohibit checking in binary data. | ||
205 | ########################################################################################## | ||
206 | if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then | ||
207 | if [ "$MVNW_VERBOSE" = true ]; then | ||
208 | echo "Found .mvn/wrapper/maven-wrapper.jar" | ||
209 | fi | ||
210 | else | ||
211 | if [ "$MVNW_VERBOSE" = true ]; then | ||
212 | echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." | ||
213 | fi | ||
214 | if [ -n "$MVNW_REPOURL" ]; then | ||
215 | jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | ||
216 | else | ||
217 | jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | ||
218 | fi | ||
219 | while IFS="=" read key value; do | ||
220 | case "$key" in (wrapperUrl) jarUrl="$value"; break ;; | ||
221 | esac | ||
222 | done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" | ||
223 | if [ "$MVNW_VERBOSE" = true ]; then | ||
224 | echo "Downloading from: $jarUrl" | ||
225 | fi | ||
226 | wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" | ||
227 | if $cygwin; then | ||
228 | wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` | ||
229 | fi | ||
230 | |||
231 | if command -v wget > /dev/null; then | ||
232 | if [ "$MVNW_VERBOSE" = true ]; then | ||
233 | echo "Found wget ... using wget" | ||
234 | fi | ||
235 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then | ||
236 | wget "$jarUrl" -O "$wrapperJarPath" | ||
237 | else | ||
238 | wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" | ||
239 | fi | ||
240 | elif command -v curl > /dev/null; then | ||
241 | if [ "$MVNW_VERBOSE" = true ]; then | ||
242 | echo "Found curl ... using curl" | ||
243 | fi | ||
244 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then | ||
245 | curl -o "$wrapperJarPath" "$jarUrl" -f | ||
246 | else | ||
247 | curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f | ||
248 | fi | ||
249 | |||
250 | else | ||
251 | if [ "$MVNW_VERBOSE" = true ]; then | ||
252 | echo "Falling back to using Java to download" | ||
253 | fi | ||
254 | javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" | ||
255 | # For Cygwin, switch paths to Windows format before running javac | ||
256 | if $cygwin; then | ||
257 | javaClass=`cygpath --path --windows "$javaClass"` | ||
258 | fi | ||
259 | if [ -e "$javaClass" ]; then | ||
260 | if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then | ||
261 | if [ "$MVNW_VERBOSE" = true ]; then | ||
262 | echo " - Compiling MavenWrapperDownloader.java ..." | ||
263 | fi | ||
264 | # Compiling the Java class | ||
265 | ("$JAVA_HOME/bin/javac" "$javaClass") | ||
266 | fi | ||
267 | if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then | ||
268 | # Running the downloader | ||
269 | if [ "$MVNW_VERBOSE" = true ]; then | ||
270 | echo " - Running MavenWrapperDownloader.java ..." | ||
271 | fi | ||
272 | ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") | ||
273 | fi | ||
274 | fi | ||
275 | fi | ||
276 | fi | ||
277 | ########################################################################################## | ||
278 | # End of extension | ||
279 | ########################################################################################## | ||
280 | |||
281 | export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} | ||
282 | if [ "$MVNW_VERBOSE" = true ]; then | ||
283 | echo $MAVEN_PROJECTBASEDIR | ||
284 | fi | ||
285 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" | ||
286 | |||
287 | # For Cygwin, switch paths to Windows format before running java | ||
288 | if $cygwin; then | ||
289 | [ -n "$M2_HOME" ] && | ||
290 | M2_HOME=`cygpath --path --windows "$M2_HOME"` | ||
291 | [ -n "$JAVA_HOME" ] && | ||
292 | JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` | ||
293 | [ -n "$CLASSPATH" ] && | ||
294 | CLASSPATH=`cygpath --path --windows "$CLASSPATH"` | ||
295 | [ -n "$MAVEN_PROJECTBASEDIR" ] && | ||
296 | MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` | ||
297 | fi | ||
298 | |||
299 | # Provide a "standardized" way to retrieve the CLI args that will | ||
300 | # work with both Windows and non-Windows executions. | ||
301 | MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" | ||
302 | export MAVEN_CMD_LINE_ARGS | ||
303 | |||
304 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain | ||
305 | |||
306 | exec "$JAVACMD" \ | ||
307 | $MAVEN_OPTS \ | ||
308 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ | ||
309 | "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ | ||
310 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" |
mvnw.cmd
deleted
100644 → 0
1 | @REM ---------------------------------------------------------------------------- | ||
2 | @REM Licensed to the Apache Software Foundation (ASF) under one | ||
3 | @REM or more contributor license agreements. See the NOTICE file | ||
4 | @REM distributed with this work for additional information | ||
5 | @REM regarding copyright ownership. The ASF licenses this file | ||
6 | @REM to you under the Apache License, Version 2.0 (the | ||
7 | @REM "License"); you may not use this file except in compliance | ||
8 | @REM with the License. You may obtain a copy of the License at | ||
9 | @REM | ||
10 | @REM https://www.apache.org/licenses/LICENSE-2.0 | ||
11 | @REM | ||
12 | @REM Unless required by applicable law or agreed to in writing, | ||
13 | @REM software distributed under the License is distributed on an | ||
14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
15 | @REM KIND, either express or implied. See the License for the | ||
16 | @REM specific language governing permissions and limitations | ||
17 | @REM under the License. | ||
18 | @REM ---------------------------------------------------------------------------- | ||
19 | |||
20 | @REM ---------------------------------------------------------------------------- | ||
21 | @REM Maven Start Up Batch script | ||
22 | @REM | ||
23 | @REM Required ENV vars: | ||
24 | @REM JAVA_HOME - location of a JDK home dir | ||
25 | @REM | ||
26 | @REM Optional ENV vars | ||
27 | @REM M2_HOME - location of maven2's installed home dir | ||
28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands | ||
29 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending | ||
30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven | ||
31 | @REM e.g. to debug Maven itself, use | ||
32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 | ||
33 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files | ||
34 | @REM ---------------------------------------------------------------------------- | ||
35 | |||
36 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' | ||
37 | @echo off | ||
38 | @REM set title of command window | ||
39 | title %0 | ||
40 | @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' | ||
41 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% | ||
42 | |||
43 | @REM set %HOME% to equivalent of $HOME | ||
44 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") | ||
45 | |||
46 | @REM Execute a user defined script before this one | ||
47 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre | ||
48 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending | ||
49 | if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" | ||
50 | if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" | ||
51 | :skipRcPre | ||
52 | |||
53 | @setlocal | ||
54 | |||
55 | set ERROR_CODE=0 | ||
56 | |||
57 | @REM To isolate internal variables from possible post scripts, we use another setlocal | ||
58 | @setlocal | ||
59 | |||
60 | @REM ==== START VALIDATION ==== | ||
61 | if not "%JAVA_HOME%" == "" goto OkJHome | ||
62 | |||
63 | echo. | ||
64 | echo Error: JAVA_HOME not found in your environment. >&2 | ||
65 | echo Please set the JAVA_HOME variable in your environment to match the >&2 | ||
66 | echo location of your Java installation. >&2 | ||
67 | echo. | ||
68 | goto error | ||
69 | |||
70 | :OkJHome | ||
71 | if exist "%JAVA_HOME%\bin\java.exe" goto init | ||
72 | |||
73 | echo. | ||
74 | echo Error: JAVA_HOME is set to an invalid directory. >&2 | ||
75 | echo JAVA_HOME = "%JAVA_HOME%" >&2 | ||
76 | echo Please set the JAVA_HOME variable in your environment to match the >&2 | ||
77 | echo location of your Java installation. >&2 | ||
78 | echo. | ||
79 | goto error | ||
80 | |||
81 | @REM ==== END VALIDATION ==== | ||
82 | |||
83 | :init | ||
84 | |||
85 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn". | ||
86 | @REM Fallback to current working directory if not found. | ||
87 | |||
88 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% | ||
89 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir | ||
90 | |||
91 | set EXEC_DIR=%CD% | ||
92 | set WDIR=%EXEC_DIR% | ||
93 | :findBaseDir | ||
94 | IF EXIST "%WDIR%"\.mvn goto baseDirFound | ||
95 | cd .. | ||
96 | IF "%WDIR%"=="%CD%" goto baseDirNotFound | ||
97 | set WDIR=%CD% | ||
98 | goto findBaseDir | ||
99 | |||
100 | :baseDirFound | ||
101 | set MAVEN_PROJECTBASEDIR=%WDIR% | ||
102 | cd "%EXEC_DIR%" | ||
103 | goto endDetectBaseDir | ||
104 | |||
105 | :baseDirNotFound | ||
106 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR% | ||
107 | cd "%EXEC_DIR%" | ||
108 | |||
109 | :endDetectBaseDir | ||
110 | |||
111 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig | ||
112 | |||
113 | @setlocal EnableExtensions EnableDelayedExpansion | ||
114 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a | ||
115 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% | ||
116 | |||
117 | :endReadAdditionalConfig | ||
118 | |||
119 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" | ||
120 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" | ||
121 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain | ||
122 | |||
123 | set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | ||
124 | |||
125 | FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( | ||
126 | IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B | ||
127 | ) | ||
128 | |||
129 | @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central | ||
130 | @REM This allows using the maven wrapper in projects that prohibit checking in binary data. | ||
131 | if exist %WRAPPER_JAR% ( | ||
132 | if "%MVNW_VERBOSE%" == "true" ( | ||
133 | echo Found %WRAPPER_JAR% | ||
134 | ) | ||
135 | ) else ( | ||
136 | if not "%MVNW_REPOURL%" == "" ( | ||
137 | SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | ||
138 | ) | ||
139 | if "%MVNW_VERBOSE%" == "true" ( | ||
140 | echo Couldn't find %WRAPPER_JAR%, downloading it ... | ||
141 | echo Downloading from: %DOWNLOAD_URL% | ||
142 | ) | ||
143 | |||
144 | powershell -Command "&{"^ | ||
145 | "$webclient = new-object System.Net.WebClient;"^ | ||
146 | "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ | ||
147 | "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ | ||
148 | "}"^ | ||
149 | "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ | ||
150 | "}" | ||
151 | if "%MVNW_VERBOSE%" == "true" ( | ||
152 | echo Finished downloading %WRAPPER_JAR% | ||
153 | ) | ||
154 | ) | ||
155 | @REM End of extension | ||
156 | |||
157 | @REM Provide a "standardized" way to retrieve the CLI args that will | ||
158 | @REM work with both Windows and non-Windows executions. | ||
159 | set MAVEN_CMD_LINE_ARGS=%* | ||
160 | |||
161 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* | ||
162 | if ERRORLEVEL 1 goto error | ||
163 | goto end | ||
164 | |||
165 | :error | ||
166 | set ERROR_CODE=1 | ||
167 | |||
168 | :end | ||
169 | @endlocal & set ERROR_CODE=%ERROR_CODE% | ||
170 | |||
171 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost | ||
172 | @REM check for post script, once with legacy .bat ending and once with .cmd ending | ||
173 | if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" | ||
174 | if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" | ||
175 | :skipRcPost | ||
176 | |||
177 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' | ||
178 | if "%MAVEN_BATCH_PAUSE%" == "on" pause | ||
179 | |||
180 | if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% | ||
181 | |||
182 | exit /B %ERROR_CODE% |
... | @@ -126,6 +126,20 @@ | ... | @@ -126,6 +126,20 @@ |
126 | </executions> | 126 | </executions> |
127 | </plugin> | 127 | </plugin> |
128 | </plugins> | 128 | </plugins> |
129 | <resources> | ||
130 | <resource> | ||
131 | <directory>src/main/resources</directory> | ||
132 | <filtering>true</filtering> | ||
133 | </resource> | ||
134 | <resource> | ||
135 | <directory>src/main/java</directory> | ||
136 | <includes> | ||
137 | <include>**/*.xml</include> | ||
138 | <include>**/*.json</include> | ||
139 | <include>**/*.ftl</include> | ||
140 | </includes> | ||
141 | </resource> | ||
142 | </resources> | ||
129 | </build> | 143 | </build> |
130 | 144 | ||
131 | </project> | 145 | </project> | ... | ... |
1 | package com.it.controller; | ||
2 | |||
3 | import com.it.entity.admin; | ||
4 | import com.it.service.IAdminService; | ||
5 | import org.springframework.beans.factory.annotation.Autowired; | ||
6 | import org.springframework.web.bind.annotation.*; | ||
7 | import java.util.List; | ||
8 | |||
9 | @RestController | ||
10 | @RequestMapping("/admin") | ||
11 | public class HelloController { | ||
12 | |||
13 | @Autowired | ||
14 | private IAdminService adminService; | ||
15 | |||
16 | @GetMapping("/getAll") | ||
17 | public List<admin> getAll() { | ||
18 | return adminService.getAll(); | ||
19 | } | ||
20 | |||
21 | //保存和更新采用json格式传参 | ||
22 | @PostMapping("/save") | ||
23 | public boolean save(@RequestBody admin admin) { | ||
24 | return adminService.save(admin); | ||
25 | } | ||
26 | |||
27 | @GetMapping("/getById/{id}") | ||
28 | public admin getById(@PathVariable("id") Integer id) { | ||
29 | return adminService.getById(id); | ||
30 | } | ||
31 | } |
... | @@ -36,14 +36,14 @@ public class ThirdController { | ... | @@ -36,14 +36,14 @@ public class ThirdController { |
36 | 36 | ||
37 | //初始化数据 | 37 | //初始化数据 |
38 | private JSONObject initData(String resMsg) { | 38 | private JSONObject initData(String resMsg) { |
39 | resMsg = "{\"Gateway\":\"10030049\"," + | 39 | // resMsg = "{\"Gateway\":\"10030049\"," + |
40 | "\"NodeId\":\"CB8A1DEB\"," + | 40 | // "\"NodeId\":\"CB8A1DEB\"," + |
41 | "\"SystemId\":\"10990145\"," + | 41 | // "\"SystemId\":\"10990145\"," + |
42 | "\"Type\":\"location_pos\"," + | 42 | // "\"Type\":\"location_pos\"," + |
43 | "\"group\":\"5\"," + | 43 | // "\"group\":\"5\"," + |
44 | "\"groupNumber\":1," + | 44 | // "\"groupNumber\":1," + |
45 | "\"position\":{\"x\":214.44541185285127,\"y\":210.15474327170986}," + | 45 | // "\"position\":{\"x\":214.44541185285127,\"y\":210.15474327170986}," + |
46 | "\"scale\":0}"; | 46 | // "\"scale\":0}"; |
47 | System.out.println("***"+System.currentTimeMillis()+"报文***"+resMsg); | 47 | System.out.println("***"+System.currentTimeMillis()+"报文***"+resMsg); |
48 | JSONObject jsonObject = new JSONObject(); | 48 | JSONObject jsonObject = new JSONObject(); |
49 | jsonObject = JSONObject.parseObject(resMsg); | 49 | jsonObject = JSONObject.parseObject(resMsg); | ... | ... |
1 | package com.it.entity; | 1 | package com.it.entity; |
2 | 2 | ||
3 | import com.baomidou.mybatisplus.annotation.IdType; | ||
4 | import com.baomidou.mybatisplus.annotation.TableId; | ||
3 | import lombok.Data; | 5 | import lombok.Data; |
6 | import net.sf.jsqlparser.expression.DateTimeLiteralExpression; | ||
4 | 7 | ||
5 | @Data | 8 | @Data |
6 | public class ThirdPosition { | 9 | public class ThirdPosition { |
7 | 10 | ||
8 | //主键 | 11 | //主键 |
12 | @TableId(type = IdType.UUID) | ||
9 | private String positionId; | 13 | private String positionId; |
10 | 14 | ||
11 | //胸牌ID | 15 | //胸牌ID |
... | @@ -29,4 +33,10 @@ public class ThirdPosition { | ... | @@ -29,4 +33,10 @@ public class ThirdPosition { |
29 | //位置Y坐标 | 33 | //位置Y坐标 |
30 | private String positiony; | 34 | private String positiony; |
31 | 35 | ||
36 | //创建时间 | ||
37 | private java.util.Date createTime; | ||
38 | |||
39 | //创建人 | ||
40 | private String createBy; | ||
41 | |||
32 | } | 42 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -8,5 +8,5 @@ import org.apache.ibatis.annotations.Param; | ... | @@ -8,5 +8,5 @@ import org.apache.ibatis.annotations.Param; |
8 | @Mapper | 8 | @Mapper |
9 | public interface ThirdMapper extends BaseMapper<ThirdPosition> { | 9 | public interface ThirdMapper extends BaseMapper<ThirdPosition> { |
10 | 10 | ||
11 | boolean addMsg(@Param("sql") String sql); | 11 | boolean addDataToDataBase(@Param("sql") String sql); |
12 | } | 12 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | package com.it.mapper; | ||
2 | |||
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
4 | import com.it.entity.admin; | ||
5 | import org.apache.ibatis.annotations.Mapper; | ||
6 | import org.springframework.stereotype.Repository; | ||
7 | |||
8 | @Mapper | ||
9 | @Repository | ||
10 | public interface adminMapper extends BaseMapper<admin> { | ||
11 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 2 | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
3 | <mapper namespace="com.it.mapper.ThirdMapper"> | 3 | <mapper namespace="com.it.mapper.ThirdMapper"> |
4 | 4 | ||
5 | <insert id="addMsg"> | 5 | <insert id="addDataToDataBase"> |
6 | ${sql} | 6 | ${sql} |
7 | </insert> | 7 | </insert> |
8 | 8 | ... | ... |
1 | package com.it.service; | 1 | package com.it.service; |
2 | 2 | ||
3 | import com.alibaba.fastjson.JSONObject; | 3 | import com.alibaba.fastjson.JSONObject; |
4 | import com.it.entity.ThirdPosition; | ||
5 | import com.it.entity.admin; | ||
6 | |||
7 | import java.util.List; | ||
8 | 4 | ||
9 | public interface IThirdService { | 5 | public interface IThirdService { |
10 | 6 | ... | ... |
1 | package com.it.service.impl; | ||
2 | |||
3 | import com.it.mapper.adminMapper; | ||
4 | import com.it.entity.admin; | ||
5 | import com.it.service.IAdminService; | ||
6 | import org.springframework.beans.factory.annotation.Autowired; | ||
7 | import org.springframework.data.redis.core.RedisTemplate; | ||
8 | import org.springframework.stereotype.Service; | ||
9 | |||
10 | import java.util.List; | ||
11 | |||
12 | @Service | ||
13 | public class IAdminServiceImpl implements IAdminService { | ||
14 | |||
15 | public static final String CACHE_KEY_USER = "user:"; | ||
16 | |||
17 | @Autowired | ||
18 | private adminMapper adminMapper; | ||
19 | |||
20 | @Autowired | ||
21 | private RedisTemplate redisTemplate; | ||
22 | |||
23 | @Override | ||
24 | public Boolean save(admin admin) { | ||
25 | //1 先插入mysql并成功 | ||
26 | int i = adminMapper.insert(admin); | ||
27 | if(i > 0) | ||
28 | { | ||
29 | //2 需要再次查询一下mysql将数据捞回来并ok | ||
30 | admin = adminMapper.selectById(admin.getUserid()); | ||
31 | //3 将捞出来的user存进redis,完成新增功能的数据一致性。 | ||
32 | String key = CACHE_KEY_USER+admin.getUserid(); | ||
33 | redisTemplate.opsForValue().set(key,admin); | ||
34 | } | ||
35 | |||
36 | // 插入删除等操作返回的都是影响行数,即是数字。那么则大于0为真,其他情况为假 | ||
37 | return true; | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public admin getById(Integer id) { | ||
42 | admin ad = null; | ||
43 | String key = CACHE_KEY_USER+id; | ||
44 | //1 先从redis里面查询,如果有直接返回结果,如果没有再去查询mysql | ||
45 | ad = (admin) redisTemplate.opsForValue().get(key); | ||
46 | System.out.println(ad); | ||
47 | if (ad == null){ | ||
48 | //2 redis里面无,继续查询mysql | ||
49 | ad = adminMapper.selectById(id); | ||
50 | if (ad == null){ | ||
51 | //3.1 redis+mysql 都无数据 | ||
52 | //你具体细化,防止多次穿透,我们规定,记录下导致穿透的这个key回写redis | ||
53 | return ad; | ||
54 | }else { | ||
55 | //3.2 mysql有,需要将数据写回redis,保证下一次的缓存命中率 | ||
56 | redisTemplate.opsForValue().set(key,ad); | ||
57 | } | ||
58 | } | ||
59 | return ad; | ||
60 | } | ||
61 | |||
62 | @Override | ||
63 | public List<admin> getAll() { | ||
64 | return adminMapper.selectList(null); | ||
65 | } | ||
66 | } |
1 | package com.it.service.impl; | 1 | package com.it.service.impl; |
2 | 2 | ||
3 | import com.alibaba.fastjson.JSONObject; | 3 | import com.alibaba.fastjson.JSONObject; |
4 | import com.fasterxml.jackson.annotation.ObjectIdGenerators; | ||
4 | import com.it.entity.CommonConstant; | 5 | import com.it.entity.CommonConstant; |
5 | import com.it.entity.ThirdPosition; | 6 | import com.it.entity.ThirdPosition; |
6 | import com.it.mapper.ThirdMapper; | 7 | import com.it.mapper.ThirdMapper; |
7 | import com.it.service.IThirdService; | 8 | import com.it.service.IThirdService; |
8 | import com.it.tool.RedisUtil; | 9 | import com.it.tool.RedisUtil; |
10 | import com.it.tool.UUIDGenerator; | ||
9 | import org.springframework.beans.factory.annotation.Autowired; | 11 | import org.springframework.beans.factory.annotation.Autowired; |
10 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
11 | 13 | ||
12 | import java.text.DecimalFormat; | 14 | import java.text.DecimalFormat; |
15 | import java.text.SimpleDateFormat; | ||
16 | import java.util.Date; | ||
13 | import java.util.Map; | 17 | import java.util.Map; |
14 | 18 | ||
15 | @Service | 19 | @Service |
... | @@ -19,22 +23,29 @@ public class IThirdServiceImpl implements IThirdService { | ... | @@ -19,22 +23,29 @@ public class IThirdServiceImpl implements IThirdService { |
19 | private ThirdMapper thirdMapper; | 23 | private ThirdMapper thirdMapper; |
20 | 24 | ||
21 | private static DecimalFormat df = new DecimalFormat("######0.0000"); | 25 | private static DecimalFormat df = new DecimalFormat("######0.0000"); |
26 | private static SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||
22 | 27 | ||
23 | @Autowired | 28 | @Autowired |
24 | private RedisUtil redisUtil; | 29 | private RedisUtil redisUtil; |
25 | 30 | ||
26 | @Override | 31 | @Override |
27 | public void savePosition(JSONObject jsonObject) { | 32 | public void savePosition(JSONObject jsonObject) { |
28 | addMsgLog(jsonObject);//添加接收报文日志 | 33 | Date t = new Date(); |
29 | ThirdPosition thirdPosition = new ThirdPosition(); | 34 | boolean ok = addMsgLog(jsonObject,sf.format(t));//添加接收报文日志 |
30 | thirdPosition.setNodeId(jsonObject.getString("NodeId")); | 35 | if(ok){ |
31 | Map xyMap = jsonObject.getObject("position",Map.class); | 36 | ThirdPosition thirdPosition = new ThirdPosition(); |
32 | thirdPosition.setPositionx(xyMap.get("x").toString()); | 37 | thirdPosition.setNodeId(jsonObject.getString("NodeId")); |
33 | thirdPosition.setPositiony(xyMap.get("y").toString()); | 38 | Map xyMap = jsonObject.getObject("position",Map.class); |
34 | thirdPosition.setSystemId(jsonObject.getString("SystemId")); | 39 | thirdPosition.setPositionx(xyMap.get("x").toString()); |
35 | thirdPosition.setType(jsonObject.getString("Type")); | 40 | thirdPosition.setPositiony(xyMap.get("y").toString()); |
36 | thirdPosition.setGroup(jsonObject.getString("group")); | 41 | thirdPosition.setSystemId(jsonObject.getString("SystemId")); |
37 | thirdPosition.setGroupNumber(jsonObject.getInteger("groupNumber")); | 42 | thirdPosition.setType(jsonObject.getString("Type")); |
43 | thirdPosition.setGroup(jsonObject.getString("group")); | ||
44 | thirdPosition.setGroupNumber(jsonObject.getInteger("groupNumber")); | ||
45 | thirdPosition.setCreateTime(t); | ||
46 | changCoordinate(thirdPosition); | ||
47 | } | ||
48 | |||
38 | 49 | ||
39 | } | 50 | } |
40 | 51 | ||
... | @@ -42,18 +53,24 @@ public class IThirdServiceImpl implements IThirdService { | ... | @@ -42,18 +53,24 @@ public class IThirdServiceImpl implements IThirdService { |
42 | * 收报文日志 | 53 | * 收报文日志 |
43 | * @param jsonObject | 54 | * @param jsonObject |
44 | */ | 55 | */ |
45 | private void addMsgLog(JSONObject jsonObject) { | 56 | private boolean addMsgLog(JSONObject jsonObject, String format) { |
46 | String sql = "INSERT INTO sys_msg_log ( mag_log ) VALUES ( '"+jsonObject.toJSONString()+"' )"; | 57 | String sql = "INSERT INTO sys_msg_log ( mag_log,create_by,create_time ) VALUES ( '"+jsonObject.toJSONString()+"','cmcc','"+format+"' )"; |
47 | System.out.println("**********"+sql); | 58 | System.out.println("**********"+sql); |
48 | thirdMapper.addMsg(sql); | 59 | boolean ok = addDataToDataBase(sql); |
60 | return ok; | ||
49 | } | 61 | } |
50 | 62 | ||
51 | public static void main(String[] args) { | 63 | //SQL插入数据库 |
52 | changCoordinate("101.1636962890625","325.2133483886719"); | 64 | private boolean addDataToDataBase(String sql) { |
65 | boolean ok = thirdMapper.addDataToDataBase(sql); | ||
66 | return ok; | ||
53 | } | 67 | } |
54 | 68 | ||
55 | 69 | private void changCoordinate(ThirdPosition thirdPosition) { | |
56 | private static void changCoordinate(String x1, String y1) { | 70 | // String x1 = "101.1636962890625"; |
71 | // String y1 = "325.2133483886719"; | ||
72 | String x1 = thirdPosition.getPositionx(); | ||
73 | String y1 = thirdPosition.getPositiony(); | ||
57 | double blc = 100/2.54;//比例尺 | 74 | double blc = 100/2.54;//比例尺 |
58 | 75 | ||
59 | double fd_x = blc*(Double.valueOf(x1)-CommonConstant.LT_B1_X)+CommonConstant.LT_B1_X; | 76 | double fd_x = blc*(Double.valueOf(x1)-CommonConstant.LT_B1_X)+CommonConstant.LT_B1_X; |
... | @@ -72,5 +89,19 @@ public class IThirdServiceImpl implements IThirdService { | ... | @@ -72,5 +89,19 @@ public class IThirdServiceImpl implements IThirdService { |
72 | // double new_fd_x = 10*(Double.valueOf(x)-CommonConstant.MQ_B1_X)+CommonConstant.MQ_B1_X; | 89 | // double new_fd_x = 10*(Double.valueOf(x)-CommonConstant.MQ_B1_X)+CommonConstant.MQ_B1_X; |
73 | // double new_fd_y = 10*(Double.valueOf(y)+CommonConstant.MQ_B1_Y)-CommonConstant.MQ_B1_Y; | 90 | // double new_fd_y = 10*(Double.valueOf(y)+CommonConstant.MQ_B1_Y)-CommonConstant.MQ_B1_Y; |
74 | // System.out.println("新放大后的坐标为:X:"+new_fd_x+",Y:"+new_fd_y); | 91 | // System.out.println("新放大后的坐标为:X:"+new_fd_x+",Y:"+new_fd_y); |
92 | thirdPosition.setPositionx(String.valueOf(x)); | ||
93 | thirdPosition.setPositiony(String.valueOf(y)); | ||
94 | addPositionInfo(thirdPosition);//添加转换后坐标信息 | ||
95 | } | ||
96 | |||
97 | private boolean addPositionInfo(ThirdPosition thirdPosition) { | ||
98 | String uuid = UUIDGenerator.creatUUID(); | ||
99 | String sql = "INSERT INTO sys_cmcc_position ( `position_id`,`node_id`,`system_id`,`type`,`group`," + | ||
100 | "`group_number`,`position_x`,`position_y`,`create_by`,`create_time` ) VALUES " + | ||
101 | " ( '"+uuid+"','"+thirdPosition.getNodeId()+"','"+thirdPosition.getSystemId()+"','"+thirdPosition.getType()+"','"+thirdPosition.getGroup()+"'," + | ||
102 | ""+thirdPosition.getGroupNumber()+",'"+thirdPosition.getPositionx()+"','"+thirdPosition.getPositiony()+"','cmcc','"+sf.format(thirdPosition.getCreateTime())+"' )"; | ||
103 | System.out.println("**********"+sql); | ||
104 | boolean ok = addDataToDataBase(sql); | ||
105 | return ok; | ||
75 | } | 106 | } |
76 | } | 107 | } | ... | ... |
src/main/java/com/it/tool/UUIDGenerator.java
0 → 100644
1 | package com.it.tool; | ||
2 | |||
3 | import java.net.InetAddress; | ||
4 | import java.util.UUID; | ||
5 | |||
6 | public class UUIDGenerator { | ||
7 | private static final int IP; | ||
8 | private static short counter; | ||
9 | private static final int JVM; | ||
10 | |||
11 | static { | ||
12 | int ipadd; | ||
13 | try { | ||
14 | ipadd = toInt(InetAddress.getLocalHost().getAddress()); | ||
15 | } catch (Exception var2) { | ||
16 | ipadd = 0; | ||
17 | } | ||
18 | |||
19 | IP = ipadd; | ||
20 | counter = 0; | ||
21 | JVM = (int)(System.currentTimeMillis() >>> 8); | ||
22 | } | ||
23 | |||
24 | public UUIDGenerator() { | ||
25 | } | ||
26 | |||
27 | public static String generate() { | ||
28 | return (new StringBuilder(32)).append(format(getIP())).append(format(getJVM())).append(format(getHiTime())).append(format(getLoTime())).append(format(getCount())).toString(); | ||
29 | } | ||
30 | |||
31 | public static String creatUUID() { | ||
32 | String temp = UUID.randomUUID().toString(); | ||
33 | String result = temp.replaceAll("-", ""); | ||
34 | return result; | ||
35 | } | ||
36 | |||
37 | private static final String format(int intval) { | ||
38 | String formatted = Integer.toHexString(intval); | ||
39 | StringBuilder buf = new StringBuilder("00000000"); | ||
40 | buf.replace(8 - formatted.length(), 8, formatted); | ||
41 | return buf.toString(); | ||
42 | } | ||
43 | |||
44 | private static final String format(short shortval) { | ||
45 | String formatted = Integer.toHexString(shortval); | ||
46 | StringBuilder buf = new StringBuilder("0000"); | ||
47 | buf.replace(4 - formatted.length(), 4, formatted); | ||
48 | return buf.toString(); | ||
49 | } | ||
50 | |||
51 | private static final int getJVM() { | ||
52 | return JVM; | ||
53 | } | ||
54 | |||
55 | private static final short getCount() { | ||
56 | Class var0 = UUIDGenerator.class; | ||
57 | synchronized(UUIDGenerator.class) { | ||
58 | if (counter < 0) { | ||
59 | counter = 0; | ||
60 | } | ||
61 | |||
62 | short var10000 = counter; | ||
63 | counter = (short)(var10000 + 1); | ||
64 | return var10000; | ||
65 | } | ||
66 | } | ||
67 | |||
68 | private static final int getIP() { | ||
69 | return IP; | ||
70 | } | ||
71 | |||
72 | private static final short getHiTime() { | ||
73 | return (short)((int)(System.currentTimeMillis() >>> 32)); | ||
74 | } | ||
75 | |||
76 | private static final int getLoTime() { | ||
77 | return (int)System.currentTimeMillis(); | ||
78 | } | ||
79 | |||
80 | private static final int toInt(byte[] bytes) { | ||
81 | int result = 0; | ||
82 | |||
83 | for(int i = 0; i < 4; ++i) { | ||
84 | result = (result << 8) - -128 + bytes[i]; | ||
85 | } | ||
86 | |||
87 | return result; | ||
88 | } | ||
89 | } |
-
请 注册 或 登录 后发表评论