Skip to content

Commit 122f84d

Browse files
committed
Java并发:分布式应用限流实践
1 parent 8456677 commit 122f84d

File tree

14 files changed

+740
-0
lines changed

14 files changed

+740
-0
lines changed

‎spring-boot-limit/.gitignore‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/target/
2+
!.mvn/wrapper/maven-wrapper.jar
3+
4+
### STS ###
5+
.apt_generated
6+
.classpath
7+
.factorypath
8+
.project
9+
.settings
10+
.springBeans
11+
.sts4-cache
12+
13+
### IntelliJ IDEA ###
14+
.idea
15+
*.iws
16+
*.iml
17+
*.ipr
18+
19+
### NetBeans ###
20+
/nbproject/private/
21+
/build/
22+
/nbbuild/
23+
/dist/
24+
/nbdist/
25+
/.nb-gradle/
46.5 KB
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip

‎spring-boot-limit/mvnw‎

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
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+
# http://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+
# Maven2 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 Migwn, 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+
# TODO classpath?
118+
fi
119+
120+
if [ -z"$JAVA_HOME" ];then
121+
javaExecutable="`which javac`"
122+
if [ -n"$javaExecutable" ] &&! [ "`expr \"$javaExecutable\":'\([^ ]*\)'`"="no" ];then
123+
# readlink(1) is not available as standard on Solaris 10.
124+
readLink=`which readlink`
125+
if [ !`expr "$readLink":'\([^ ]*\)'`="no" ];then
126+
if$darwin;then
127+
javaHome="`dirname \"$javaExecutable\"`"
128+
javaExecutable="`cd \"$javaHome\"&&pwd -P`/javac"
129+
else
130+
javaExecutable="`readlink -f \"$javaExecutable\"`"
131+
fi
132+
javaHome="`dirname \"$javaExecutable\"`"
133+
javaHome=`expr "$javaHome":'\(.*\)/bin'`
134+
JAVA_HOME="$javaHome"
135+
export JAVA_HOME
136+
fi
137+
fi
138+
fi
139+
140+
if [ -z"$JAVACMD" ] ;then
141+
if [ -n"$JAVA_HOME" ] ;then
142+
if [ -x"$JAVA_HOME/jre/sh/java" ] ;then
143+
# IBM's JDK on AIX uses strange locations for the executables
144+
JAVACMD="$JAVA_HOME/jre/sh/java"
145+
else
146+
JAVACMD="$JAVA_HOME/bin/java"
147+
fi
148+
else
149+
JAVACMD="`which java`"
150+
fi
151+
fi
152+
153+
if [ !-x"$JAVACMD" ] ;then
154+
echo"Error: JAVA_HOME is not defined correctly.">&2
155+
echo" We cannot execute $JAVACMD">&2
156+
exit 1
157+
fi
158+
159+
if [ -z"$JAVA_HOME" ] ;then
160+
echo"Warning: JAVA_HOME environment variable is not set."
161+
fi
162+
163+
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
164+
165+
# traverses directory structure from process work directory to filesystem root
166+
# first directory with .mvn subdirectory is considered project base directory
167+
find_maven_basedir(){
168+
169+
if [ -z"$1" ]
170+
then
171+
echo"Path not specified to find_maven_basedir"
172+
return 1
173+
fi
174+
175+
basedir="$1"
176+
wdir="$1"
177+
while [ "$wdir"!='/' ] ;do
178+
if [ -d"$wdir"/.mvn ] ;then
179+
basedir=$wdir
180+
break
181+
fi
182+
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
183+
if [ -d"${wdir}" ];then
184+
wdir=`cd "$wdir/.."; pwd`
185+
fi
186+
# end of workaround
187+
done
188+
echo"${basedir}"
189+
}
190+
191+
# concatenates all lines of a file
192+
concat_lines(){
193+
if [ -f"$1" ];then
194+
echo"$(tr -s '\n'''<"$1")"
195+
fi
196+
}
197+
198+
BASE_DIR=`find_maven_basedir "$(pwd)"`
199+
if [ -z"$BASE_DIR" ];then
200+
exit 1;
201+
fi
202+
203+
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
204+
echo$MAVEN_PROJECTBASEDIR
205+
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config")$MAVEN_OPTS"
206+
207+
# For Cygwin, switch paths to Windows format before running java
208+
if$cygwin;then
209+
[ -n"$M2_HOME" ] &&
210+
M2_HOME=`cygpath --path --windows "$M2_HOME"`
211+
[ -n"$JAVA_HOME" ] &&
212+
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
213+
[ -n"$CLASSPATH" ] &&
214+
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
215+
[ -n"$MAVEN_PROJECTBASEDIR" ] &&
216+
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
217+
fi
218+
219+
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
220+
221+
exec"$JAVACMD" \
222+
$MAVEN_OPTS \
223+
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
224+
"-Dmaven.home=${M2_HOME}""-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
225+
${WRAPPER_LAUNCHER}$MAVEN_CONFIG"$@"

‎spring-boot-limit/mvnw.cmd‎

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
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 http://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 Maven2 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 key stroke 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+
@echooff
38+
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
39+
@if "%MAVEN_BATCH_ECHO%"=="on"echo%MAVEN_BATCH_ECHO%
40+
41+
@REM set %HOME% to equivalent of $HOME
42+
if"%HOME%"=="" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
43+
44+
@REM Execute a user defined script before this one
45+
ifnot"%MAVEN_SKIP_RC%"==""goto skipRcPre
46+
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
47+
ifexist"%HOME%\mavenrc_pre.bat"call"%HOME%\mavenrc_pre.bat"
48+
ifexist"%HOME%\mavenrc_pre.cmd"call"%HOME%\mavenrc_pre.cmd"
49+
:skipRcPre
50+
51+
@setlocal
52+
53+
setERROR_CODE=0
54+
55+
@REM To isolate internal variables from possible post scripts, we use another setlocal
56+
@setlocal
57+
58+
@REM ==== START VALIDATION ====
59+
ifnot"%JAVA_HOME%"==""goto OkJHome
60+
61+
echo.
62+
echo Error: JAVA_HOME not found in your environment. >&2
63+
echo Please set the JAVA_HOME variable in your environment to match the >&2
64+
echo location of your Java installation. >&2
65+
echo.
66+
goto error
67+
68+
:OkJHome
69+
ifexist"%JAVA_HOME%\bin\java.exe"goto init
70+
71+
echo.
72+
echo Error: JAVA_HOME is set to an invalid directory. >&2
73+
echo JAVA_HOME = "%JAVA_HOME%">&2
74+
echo Please set the JAVA_HOME variable in your environment to match the >&2
75+
echo location of your Java installation. >&2
76+
echo.
77+
goto error
78+
79+
@REM ==== END VALIDATION ====
80+
81+
:init
82+
83+
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
84+
@REM Fallback to current working directory if not found.
85+
86+
setMAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
87+
IFNOT"%MAVEN_PROJECTBASEDIR%"==""goto endDetectBaseDir
88+
89+
setEXEC_DIR=%CD%
90+
setWDIR=%EXEC_DIR%
91+
:findBaseDir
92+
IFEXIST"%WDIR%"\.mvn goto baseDirFound
93+
cd ..
94+
IF"%WDIR%"=="%CD%"goto baseDirNotFound
95+
setWDIR=%CD%
96+
goto findBaseDir
97+
98+
:baseDirFound
99+
setMAVEN_PROJECTBASEDIR=%WDIR%
100+
cd"%EXEC_DIR%"
101+
goto endDetectBaseDir
102+
103+
:baseDirNotFound
104+
setMAVEN_PROJECTBASEDIR=%EXEC_DIR%
105+
cd"%EXEC_DIR%"
106+
107+
:endDetectBaseDir
108+
109+
IFNOTEXIST"%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config"goto endReadAdditionalConfig
110+
111+
@setlocal EnableExtensions EnableDelayedExpansion
112+
for /F "usebackq delims="%%ain ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") dosetJVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS!%%a
113+
@endlocal&setJVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
114+
115+
:endReadAdditionalConfig
116+
117+
SETMAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
118+
119+
setWRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
120+
setWRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
121+
122+
%MAVEN_JAVA_EXE%%JVM_CONFIG_MAVEN_PROPS%%MAVEN_OPTS%%MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR%"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%"%WRAPPER_LAUNCHER%%MAVEN_CONFIG%%*
123+
ifERRORLEVEL1goto error
124+
goto end
125+
126+
:error
127+
setERROR_CODE=1
128+
129+
:end
130+
@endlocal&setERROR_CODE=%ERROR_CODE%
131+
132+
ifnot"%MAVEN_SKIP_RC%"==""goto skipRcPost
133+
@REM check for post script, once with legacy .bat ending and once with .cmd ending
134+
ifexist"%HOME%\mavenrc_post.bat"call"%HOME%\mavenrc_post.bat"
135+
ifexist"%HOME%\mavenrc_post.cmd"call"%HOME%\mavenrc_post.cmd"
136+
:skipRcPost
137+
138+
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
139+
if"%MAVEN_BATCH_PAUSE%"=="on"pause
140+
141+
if"%MAVEN_TERMINATE_CMD%"=="on"exit%ERROR_CODE%
142+
143+
exit /B %ERROR_CODE%

0 commit comments

Comments
(0)