guyanqing 8 months ago
parent
commit
a48d6d92f3
58 changed files with 501 additions and 616 deletions
  1. 0 33
      demobak/.gitignore
  2. BIN
      demobak/.mvn/wrapper/maven-wrapper.jar
  3. 0 2
      demobak/.mvn/wrapper/maven-wrapper.properties
  4. 0 308
      demobak/mvnw
  5. 0 205
      demobak/mvnw.cmd
  6. 0 41
      demobak/pom.xml
  7. 0 13
      demobak/src/main/java/com/sf/demo/DemoApplication.java
  8. 0 1
      demobak/src/main/resources/application.properties
  9. 0 13
      demobak/src/test/java/com/sf/demo/DemoApplicationTests.java
  10. BIN
      imgs/bg.jpg
  11. BIN
      imgs/boss.png
  12. BIN
      imgs/bossbullet.png
  13. BIN
      imgs/doubleshell.png
  14. BIN
      imgs/enemy1.png
  15. BIN
      imgs/enemy2.png
  16. BIN
      imgs/enemy2bullet.png
  17. BIN
      imgs/explode/e1.gif
  18. BIN
      imgs/explode/e10.gif
  19. BIN
      imgs/explode/e11.gif
  20. BIN
      imgs/explode/e12.gif
  21. BIN
      imgs/explode/e13.gif
  22. BIN
      imgs/explode/e14.gif
  23. BIN
      imgs/explode/e15.gif
  24. BIN
      imgs/explode/e16.gif
  25. BIN
      imgs/explode/e2.gif
  26. BIN
      imgs/explode/e3.gif
  27. BIN
      imgs/explode/e4.gif
  28. BIN
      imgs/explode/e5.gif
  29. BIN
      imgs/explode/e6.gif
  30. BIN
      imgs/explode/e7.gif
  31. BIN
      imgs/explode/e8.gif
  32. BIN
      imgs/explode/e9.gif
  33. BIN
      imgs/gift.png
  34. BIN
      imgs/littleboss1.png
  35. BIN
      imgs/littleboss1bullet.png
  36. BIN
      imgs/littleboss2.png
  37. BIN
      imgs/littleboss2bullet.png
  38. BIN
      imgs/plane.png
  39. BIN
      imgs/shell.png
  40. BIN
      imgs/tripleshell.png
  41. BIN
      imgs/warning.gif
  42. 7 0
      pom.xml
  43. 58 0
      src/main/java/com/sf/jdbc/TT.java
  44. 49 0
      src/main/java/com/sf/jdbc/day25/Account.java
  45. 115 0
      src/main/java/com/sf/jdbc/day25/BaseDao.java
  46. 93 0
      src/main/java/com/sf/jdbc/day25/JDBCUtil.java
  47. 108 0
      src/main/java/com/sf/jdbc/day25/TE.java
  48. 63 0
      src/main/java/com/sf/jdbc/day25/User.java
  49. 4 0
      src/main/resources/db.properties
  50. BIN
      target/classes/com/sf/jdbc/TT.class
  51. BIN
      target/classes/com/sf/jdbc/day24/T.class
  52. BIN
      target/classes/com/sf/jdbc/day24/User.class
  53. BIN
      target/classes/com/sf/jdbc/day25/Account.class
  54. BIN
      target/classes/com/sf/jdbc/day25/BaseDao.class
  55. BIN
      target/classes/com/sf/jdbc/day25/JDBCUtil.class
  56. BIN
      target/classes/com/sf/jdbc/day25/TE.class
  57. BIN
      target/classes/com/sf/jdbc/day25/User.class
  58. 4 0
      target/classes/db.properties

+ 0 - 33
demobak/.gitignore

@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/

BIN
demobak/.mvn/wrapper/maven-wrapper.jar


+ 0 - 2
demobak/.mvn/wrapper/maven-wrapper.properties

@@ -1,2 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.3/apache-maven-3.9.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar

+ 0 - 308
demobak/mvnw

@@ -1,308 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Apache Maven Wrapper startup batch script, version 3.2.0
-#
-# Required ENV vars:
-# ------------------
-#   JAVA_HOME - location of a JDK home dir
-#
-# Optional ENV vars
-# -----------------
-#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
-#     e.g. to debug Maven itself, use
-#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-# ----------------------------------------------------------------------------
-
-if [ -z "$MAVEN_SKIP_RC" ] ; then
-
-  if [ -f /usr/local/etc/mavenrc ] ; then
-    . /usr/local/etc/mavenrc
-  fi
-
-  if [ -f /etc/mavenrc ] ; then
-    . /etc/mavenrc
-  fi
-
-  if [ -f "$HOME/.mavenrc" ] ; then
-    . "$HOME/.mavenrc"
-  fi
-
-fi
-
-# OS specific support.  $var _must_ be set to either true or false.
-cygwin=false;
-darwin=false;
-mingw=false
-case "$(uname)" in
-  CYGWIN*) cygwin=true ;;
-  MINGW*) mingw=true;;
-  Darwin*) darwin=true
-    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
-    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
-    if [ -z "$JAVA_HOME" ]; then
-      if [ -x "/usr/libexec/java_home" ]; then
-        JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
-      else
-        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
-      fi
-    fi
-    ;;
-esac
-
-if [ -z "$JAVA_HOME" ] ; then
-  if [ -r /etc/gentoo-release ] ; then
-    JAVA_HOME=$(java-config --jre-home)
-  fi
-fi
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched
-if $cygwin ; then
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
-fi
-
-# For Mingw, ensure paths are in UNIX format before anything is touched
-if $mingw ; then
-  [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
-    JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
-fi
-
-if [ -z "$JAVA_HOME" ]; then
-  javaExecutable="$(which javac)"
-  if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
-    # readlink(1) is not available as standard on Solaris 10.
-    readLink=$(which readlink)
-    if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
-      if $darwin ; then
-        javaHome="$(dirname "\"$javaExecutable\"")"
-        javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
-      else
-        javaExecutable="$(readlink -f "\"$javaExecutable\"")"
-      fi
-      javaHome="$(dirname "\"$javaExecutable\"")"
-      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
-      JAVA_HOME="$javaHome"
-      export JAVA_HOME
-    fi
-  fi
-fi
-
-if [ -z "$JAVACMD" ] ; then
-  if [ -n "$JAVA_HOME"  ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-    fi
-  else
-    JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
-  fi
-fi
-
-if [ ! -x "$JAVACMD" ] ; then
-  echo "Error: JAVA_HOME is not defined correctly." >&2
-  echo "  We cannot execute $JAVACMD" >&2
-  exit 1
-fi
-
-if [ -z "$JAVA_HOME" ] ; then
-  echo "Warning: JAVA_HOME environment variable is not set."
-fi
-
-# traverses directory structure from process work directory to filesystem root
-# first directory with .mvn subdirectory is considered project base directory
-find_maven_basedir() {
-  if [ -z "$1" ]
-  then
-    echo "Path not specified to find_maven_basedir"
-    return 1
-  fi
-
-  basedir="$1"
-  wdir="$1"
-  while [ "$wdir" != '/' ] ; do
-    if [ -d "$wdir"/.mvn ] ; then
-      basedir=$wdir
-      break
-    fi
-    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
-    if [ -d "${wdir}" ]; then
-      wdir=$(cd "$wdir/.." || exit 1; pwd)
-    fi
-    # end of workaround
-  done
-  printf '%s' "$(cd "$basedir" || exit 1; pwd)"
-}
-
-# concatenates all lines of a file
-concat_lines() {
-  if [ -f "$1" ]; then
-    # Remove \r in case we run on Windows within Git Bash
-    # and check out the repository with auto CRLF management
-    # enabled. Otherwise, we may read lines that are delimited with
-    # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
-    # splitting rules.
-    tr -s '\r\n' ' ' < "$1"
-  fi
-}
-
-log() {
-  if [ "$MVNW_VERBOSE" = true ]; then
-    printf '%s\n' "$1"
-  fi
-}
-
-BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
-if [ -z "$BASE_DIR" ]; then
-  exit 1;
-fi
-
-MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
-log "$MAVEN_PROJECTBASEDIR"
-
-##########################################################################################
-# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-# This allows using the maven wrapper in projects that prohibit checking in binary data.
-##########################################################################################
-wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
-if [ -r "$wrapperJarPath" ]; then
-    log "Found $wrapperJarPath"
-else
-    log "Couldn't find $wrapperJarPath, downloading it ..."
-
-    if [ -n "$MVNW_REPOURL" ]; then
-      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-    else
-      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-    fi
-    while IFS="=" read -r key value; do
-      # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
-      safeValue=$(echo "$value" | tr -d '\r')
-      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
-      esac
-    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
-    log "Downloading from: $wrapperUrl"
-
-    if $cygwin; then
-      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
-    fi
-
-    if command -v wget > /dev/null; then
-        log "Found wget ... using wget"
-        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
-        else
-            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
-        fi
-    elif command -v curl > /dev/null; then
-        log "Found curl ... using curl"
-        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
-        else
-            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
-        fi
-    else
-        log "Falling back to using Java to download"
-        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
-        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
-        # For Cygwin, switch paths to Windows format before running javac
-        if $cygwin; then
-          javaSource=$(cygpath --path --windows "$javaSource")
-          javaClass=$(cygpath --path --windows "$javaClass")
-        fi
-        if [ -e "$javaSource" ]; then
-            if [ ! -e "$javaClass" ]; then
-                log " - Compiling MavenWrapperDownloader.java ..."
-                ("$JAVA_HOME/bin/javac" "$javaSource")
-            fi
-            if [ -e "$javaClass" ]; then
-                log " - Running MavenWrapperDownloader.java ..."
-                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
-            fi
-        fi
-    fi
-fi
-##########################################################################################
-# End of extension
-##########################################################################################
-
-# If specified, validate the SHA-256 sum of the Maven wrapper jar file
-wrapperSha256Sum=""
-while IFS="=" read -r key value; do
-  case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
-  esac
-done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
-if [ -n "$wrapperSha256Sum" ]; then
-  wrapperSha256Result=false
-  if command -v sha256sum > /dev/null; then
-    if echo "$wrapperSha256Sum  $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
-      wrapperSha256Result=true
-    fi
-  elif command -v shasum > /dev/null; then
-    if echo "$wrapperSha256Sum  $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
-      wrapperSha256Result=true
-    fi
-  else
-    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
-    echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
-    exit 1
-  fi
-  if [ $wrapperSha256Result = false ]; then
-    echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
-    echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
-    echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
-    exit 1
-  fi
-fi
-
-MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
-  [ -n "$JAVA_HOME" ] &&
-    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
-  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
-    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
-fi
-
-# Provide a "standardized" way to retrieve the CLI args that will
-# work with both Windows and non-Windows executions.
-MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
-export MAVEN_CMD_LINE_ARGS
-
-WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-# shellcheck disable=SC2086 # safe args
-exec "$JAVACMD" \
-  $MAVEN_OPTS \
-  $MAVEN_DEBUG_OPTS \
-  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
-  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 0 - 205
demobak/mvnw.cmd

@@ -1,205 +0,0 @@
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    https://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Apache Maven Wrapper startup batch script, version 3.2.0
-@REM
-@REM Required ENV vars:
-@REM JAVA_HOME - location of a JDK home dir
-@REM
-@REM Optional ENV vars
-@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
-@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
-@REM     e.g. to debug Maven itself, use
-@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
-@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
-@REM ----------------------------------------------------------------------------
-
-@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
-@echo off
-@REM set title of command window
-title %0
-@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
-@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
-
-@REM set %HOME% to equivalent of $HOME
-if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
-
-@REM Execute a user defined script before this one
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
-@REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
-if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
-:skipRcPre
-
-@setlocal
-
-set ERROR_CODE=0
-
-@REM To isolate internal variables from possible post scripts, we use another setlocal
-@setlocal
-
-@REM ==== START VALIDATION ====
-if not "%JAVA_HOME%" == "" goto OkJHome
-
-echo.
-echo Error: JAVA_HOME not found in your environment. >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-:OkJHome
-if exist "%JAVA_HOME%\bin\java.exe" goto init
-
-echo.
-echo Error: JAVA_HOME is set to an invalid directory. >&2
-echo JAVA_HOME = "%JAVA_HOME%" >&2
-echo Please set the JAVA_HOME variable in your environment to match the >&2
-echo location of your Java installation. >&2
-echo.
-goto error
-
-@REM ==== END VALIDATION ====
-
-:init
-
-@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
-@REM Fallback to current working directory if not found.
-
-set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
-IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
-
-set EXEC_DIR=%CD%
-set WDIR=%EXEC_DIR%
-:findBaseDir
-IF EXIST "%WDIR%"\.mvn goto baseDirFound
-cd ..
-IF "%WDIR%"=="%CD%" goto baseDirNotFound
-set WDIR=%CD%
-goto findBaseDir
-
-:baseDirFound
-set MAVEN_PROJECTBASEDIR=%WDIR%
-cd "%EXEC_DIR%"
-goto endDetectBaseDir
-
-:baseDirNotFound
-set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
-cd "%EXEC_DIR%"
-
-:endDetectBaseDir
-
-IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
-
-@setlocal EnableExtensions EnableDelayedExpansion
-for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
-@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
-
-:endReadAdditionalConfig
-
-SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
-set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-
-set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-
-FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
-)
-
-@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
-@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
-if exist %WRAPPER_JAR% (
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Found %WRAPPER_JAR%
-    )
-) else (
-    if not "%MVNW_REPOURL%" == "" (
-        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
-    )
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Couldn't find %WRAPPER_JAR%, downloading it ...
-        echo Downloading from: %WRAPPER_URL%
-    )
-
-    powershell -Command "&{"^
-		"$webclient = new-object System.Net.WebClient;"^
-		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
-		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
-		"}"^
-		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
-		"}"
-    if "%MVNW_VERBOSE%" == "true" (
-        echo Finished downloading %WRAPPER_JAR%
-    )
-)
-@REM End of extension
-
-@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
-SET WRAPPER_SHA_256_SUM=""
-FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
-)
-IF NOT %WRAPPER_SHA_256_SUM%=="" (
-    powershell -Command "&{"^
-       "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
-       "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
-       "  Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
-       "  Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
-       "  Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
-       "  exit 1;"^
-       "}"^
-       "}"
-    if ERRORLEVEL 1 goto error
-)
-
-@REM Provide a "standardized" way to retrieve the CLI args that will
-@REM work with both Windows and non-Windows executions.
-set MAVEN_CMD_LINE_ARGS=%*
-
-%MAVEN_JAVA_EXE% ^
-  %JVM_CONFIG_MAVEN_PROPS% ^
-  %MAVEN_OPTS% ^
-  %MAVEN_DEBUG_OPTS% ^
-  -classpath %WRAPPER_JAR% ^
-  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
-  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
-if ERRORLEVEL 1 goto error
-goto end
-
-:error
-set ERROR_CODE=1
-
-:end
-@endlocal & set ERROR_CODE=%ERROR_CODE%
-
-if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
-@REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
-if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
-:skipRcPost
-
-@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%"=="on" pause
-
-if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
-
-cmd /C exit /B %ERROR_CODE%

+ 0 - 41
demobak/pom.xml

@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>3.1.2</version>
-		<relativePath/> <!-- lookup parent from repository -->
-	</parent>
-	<groupId>com.sf</groupId>
-	<artifactId>demo</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<name>demo</name>
-	<description>这是一个名为demo的springboot项目</description>
-	<properties>
-		<java.version>17</java.version>
-	</properties>
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>

+ 0 - 13
demobak/src/main/java/com/sf/demo/DemoApplication.java

@@ -1,13 +0,0 @@
-package com.sf.demo;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class DemoApplication {
-
-	public static void main(String[] args) {
-		SpringApplication.run(DemoApplication.class, args);
-	}
-
-}

+ 0 - 1
demobak/src/main/resources/application.properties

@@ -1 +0,0 @@
-

+ 0 - 13
demobak/src/test/java/com/sf/demo/DemoApplicationTests.java

@@ -1,13 +0,0 @@
-package com.sf.demo;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class DemoApplicationTests {
-
-	@Test
-	void contextLoads() {
-	}
-
-}

BIN
imgs/bg.jpg


BIN
imgs/boss.png


BIN
imgs/bossbullet.png


BIN
imgs/doubleshell.png


BIN
imgs/enemy1.png


BIN
imgs/enemy2.png


BIN
imgs/enemy2bullet.png


BIN
imgs/explode/e1.gif


BIN
imgs/explode/e10.gif


BIN
imgs/explode/e11.gif


BIN
imgs/explode/e12.gif


BIN
imgs/explode/e13.gif


BIN
imgs/explode/e14.gif


BIN
imgs/explode/e15.gif


BIN
imgs/explode/e16.gif


BIN
imgs/explode/e2.gif


BIN
imgs/explode/e3.gif


BIN
imgs/explode/e4.gif


BIN
imgs/explode/e5.gif


BIN
imgs/explode/e6.gif


BIN
imgs/explode/e7.gif


BIN
imgs/explode/e8.gif


BIN
imgs/explode/e9.gif


BIN
imgs/gift.png


BIN
imgs/littleboss1.png


BIN
imgs/littleboss1bullet.png


BIN
imgs/littleboss2.png


BIN
imgs/littleboss2bullet.png


BIN
imgs/plane.png


BIN
imgs/shell.png


BIN
imgs/tripleshell.png


BIN
imgs/warning.gif


+ 7 - 0
pom.xml

@@ -41,6 +41,13 @@
     </dependency>
 
 
+    <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
+    <dependency>
+      <groupId>com.alibaba</groupId>
+      <artifactId>druid</artifactId>
+      <version>1.2.6</version>
+    </dependency>
+
     <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>

+ 58 - 0
src/main/java/com/sf/jdbc/TT.java

@@ -0,0 +1,58 @@
+package com.sf.jdbc;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class TT {
+    @Test
+    public void t1() {
+        /**
+         *   java   后端语言   c  c++  python go
+         *   简单?   java  --干啥   就业    环境     打代码
+         *
+         *   java ?   了解  ?  数据类型
+         *   基本数据类型   byte  short   int   long
+         *  4?  空间      1      2       4     8      1 字节          = 8   位
+         *              表数范围:0000 0000
+         *
+           *   int  num  = 98;
+         *
+         *   计算人的年龄
+         *   int   age = ?;
+         *   byte  age = ?
+         *   short  age = ?
+         *
+         *
+         * 听啥   java     顾虑
+         *
+         *
+         */
+        byte num = -128;
+        List<String> list = new ArrayList<>();
+        list.add("abc");
+        list.add("aof");
+        list.add("bcd");
+        list.add("cdf");
+        System.out.println(list);
+//        //   删除包含a字母的元素
+//        for (int i = 0 ; i <list.size();i++){
+//            //代码体
+//            if(list.get(i).contains("a") ){
+//                list.remove(i);
+//                i--;
+//            }
+//
+//        }
+//        System.out.println(list);
+        Iterator<String> iterator = list.iterator();
+        while (iterator.hasNext()){
+            if(iterator.next().contains("a")){
+                iterator.remove();
+            }
+        }
+        System.out.println(list);
+    }
+}

+ 49 - 0
src/main/java/com/sf/jdbc/day25/Account.java

@@ -0,0 +1,49 @@
+package com.sf.jdbc.day25;
+
+public class Account {
+    private Integer accountId;
+    private String accountName;
+    private Double money;
+
+    public Account() {
+    }
+
+    public Account(Integer accountId, String accountName, Double money) {
+        this.accountId = accountId;
+        this.accountName = accountName;
+        this.money = money;
+    }
+
+    public Integer getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(Integer accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getAccountName() {
+        return accountName;
+    }
+
+    public void setAccountName(String accountName) {
+        this.accountName = accountName;
+    }
+
+    public Double getMoney() {
+        return money;
+    }
+
+    public void setMoney(Double money) {
+        this.money = money;
+    }
+
+    @Override
+    public String toString() {
+        return "Account{" +
+                "accountId=" + accountId +
+                ", accountName='" + accountName + '\'' +
+                ", money=" + money +
+                '}';
+    }
+}

+ 115 - 0
src/main/java/com/sf/jdbc/day25/BaseDao.java

@@ -0,0 +1,115 @@
+package com.sf.jdbc.day25;
+
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Field;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class BaseDao<T> {
+    /**
+     * 封装操作数据库Dao层的通用类
+     * <增 删  改></>
+     */
+    public int update(Connection connection,String sql ,Object ... args) throws SQLException {
+        PreparedStatement preparedStatement = connection.prepareStatement(sql);
+        // 参数绑定
+        if(args != null  &&  args.length > 0){
+            for (int i = 0;i<args.length;i++){
+                preparedStatement.setObject(i+1,args[i]);
+            }
+        }
+        return preparedStatement.executeUpdate();
+    }
+
+
+    /**
+     * 查询全部
+     * @return
+     */
+    public List<T> getList(Connection connection,String sql,Class<T> clazz,Object ...args) throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
+        List<T> list = new ArrayList<>();
+        T t = null;
+        //获取PreparedStatement
+        PreparedStatement ps = connection.prepareStatement(sql);
+        //赋值
+        if(args!=null && args.length>0) {
+            for(int i=0;i<args.length;i++) {
+                ps.setObject(i+1, args[i]);
+            }
+        }
+        //执行
+        ResultSet rs = ps.executeQuery();
+        //获取数据库表的元数据信息
+        ResultSetMetaData rsmd = rs.getMetaData();
+        //获取数据库表的列总数
+        int columnCount = rsmd.getColumnCount();
+        while(rs.next()) {
+            //实例化对象
+            t=clazz.newInstance();
+            //循环获取列名
+            for(int i=0;i<columnCount;i++) {
+                //通过列的下标获取列名
+                String columnLabel = rsmd.getColumnLabel(i+1);
+                //通过列标签获取列值
+                Object columnValue = rs.getObject(columnLabel);
+                //反射通过名称获取java对象中描述属性的对象
+                Field field = clazz.getDeclaredField(columnLabel);//dept_id as deptId
+                //取消私有权限
+                field.setAccessible(true);
+                //给属性对象赋值
+                field.set(t, columnValue);
+            }
+            list.add(t);
+        }
+        return list;
+    }
+
+    /**
+     * 查询单个
+     * @return
+     */
+    public T getT(Connection connection,String sql,Class<T> clazz,Object ...args) throws SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
+        T t = null;
+        //获取PreparedStatement
+        PreparedStatement ps = connection.prepareStatement(sql);
+        //赋值
+        if(args!=null && args.length>0) {
+            for(int i=0;i<args.length;i++) {
+                ps.setObject(i+1, args[i]);
+            }
+        }
+        //执行
+        ResultSet rs = ps.executeQuery();
+        //获取数据库表的元数据信息
+        ResultSetMetaData rsmd = rs.getMetaData();
+        //获取数据库表的列总数
+        int columnCount = rsmd.getColumnCount();
+        if(rs.next()) {
+            //实例化对象
+            t=clazz.newInstance();
+            //循环获取列名
+            for(int i=0;i<columnCount;i++) {
+                //通过列的下标获取列名
+                String columnLabel = rsmd.getColumnLabel(i+1);
+                //通过列标签获取列值
+                Object columnValue = rs.getObject(columnLabel);
+                //反射通过名称获取java对象中描述属性的对象
+                Field field = clazz.getDeclaredField(columnLabel);//dept_id as deptId
+                //取消私有权限
+                field.setAccessible(true);
+                //给属性对象赋值
+                field.set(t, columnValue);
+            }
+        }
+        return t;
+    }
+    @Test
+    public void t1() throws SQLException, NoSuchFieldException, InstantiationException, IllegalAccessException {
+        update(JDBCUtil.getConnection(),"INSERT INTO  user(user_name,price,create_time) values (?,?,?)","qqqqq",123.12,new Date(System.currentTimeMillis()));
+        getList(JDBCUtil.getConnection(),"SELECT user_name as userName,price as price,create_time as createTime FROM user", (Class<T>) User.class);
+
+    }
+}

+ 93 - 0
src/main/java/com/sf/jdbc/day25/JDBCUtil.java

@@ -0,0 +1,93 @@
+package com.sf.jdbc.day25;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.*;
+import java.util.Properties;
+
+public class JDBCUtil {
+    private static Properties properties = null;
+    static {
+        try {
+            InputStream in = JDBCUtil.class.getClassLoader().getResourceAsStream("db.properties");
+            properties = new Properties();
+            properties.load(in);
+            Class.forName(properties.getProperty("driverClassName"));
+        } catch (IOException | ClassNotFoundException e) {
+            System.out.println("error!");
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 获取数据库连接
+     * @throws SQLException
+     */
+    public static Connection getConnection() throws SQLException {
+        return DriverManager.getConnection(properties.getProperty("url"), properties.getProperty("username"), properties.getProperty("password"));
+    }
+
+    /**
+     * 关闭连接
+     */
+    public static void close(Connection connection, Statement statement, ResultSet resultSet){
+         if(connection != null){
+             try {
+                 connection.close();
+             } catch (SQLException e) {
+                 e.printStackTrace();
+             }
+         }
+
+         if(statement != null){
+             try {
+                 statement.close();
+             } catch (SQLException e) {
+                 e.printStackTrace();
+             }
+         }
+         if(resultSet != null){
+             try {
+                 resultSet.close();
+             } catch (SQLException e) {
+                 e.printStackTrace();
+             }
+         }
+    }
+
+    public static void close(Connection connection , Statement statement){
+        if(connection != null){
+            try {
+                connection.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+
+        if(statement != null){
+            try {
+                statement.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void close(Connection connection, PreparedStatement preparedStatement){
+        if(connection != null){
+            try {
+                connection.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+
+        if(preparedStatement != null){
+            try {
+                preparedStatement.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}

+ 108 - 0
src/main/java/com/sf/jdbc/day25/TE.java

@@ -0,0 +1,108 @@
+package com.sf.jdbc.day25;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidDataSourceFactory;
+import org.junit.jupiter.api.Test;
+
+import javax.sql.DataSource;
+import java.io.InputStream;
+import java.sql.*;
+import java.util.Properties;
+
+/**
+ * jdbc - day02
+ */
+public class TE {
+    @Test
+    public void t1() throws ClassNotFoundException, SQLException {
+        Class.forName("com.mysql.jdbc.Driver");
+        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8", "root", "root");
+        PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO user(user_name,price,create_time) values (?,?,?)");
+        preparedStatement.setString(1,"lisa");
+        preparedStatement.setDouble(2,123.12);
+        preparedStatement.setDate(3,new Date(System.currentTimeMillis()));
+        int i = preparedStatement.executeUpdate();
+//        int a = 1/0;    ///  出现问题
+        System.out.println(i);
+    }
+
+    /**
+     * z3给l4转账500元
+     */
+    @Test
+    public void t2(){
+        Connection connection  = null;
+        //加载驱动
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            //获取连接
+             connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8", "root", "root");
+            //取消数据库的默认提交方式
+            connection.setAutoCommit(false);
+            //创建statement对象
+            Statement statement = connection.createStatement();
+            String sql1 = "UPDATE account SET money = money - 500 WHERE account_name='z3' ";
+            String sql2 = "UPDATE account SET money = money + 500 WHERE account_name='l4' ";
+            int row1 = statement.executeUpdate(sql1);
+//            int a  = 1/0;
+            int row2 = statement.executeUpdate(sql2);
+            System.out.println(row1);
+            System.out.println(row2);
+            //  手动提交
+            connection.commit();
+        } catch (ClassNotFoundException | SQLException e) {
+              if(connection != null){
+                  try {
+                      connection.rollback();
+                  } catch (SQLException ex) {
+                      ex.printStackTrace();
+                  }
+              }
+            e.printStackTrace();
+            System.out.println("connection is null");
+        }
+    }
+
+    /**
+     * druid
+     */
+    @Test
+    public void t3() throws SQLException {
+        ////创建Druid的核心连接池对象DruidDataSource
+        DruidDataSource ds = new DruidDataSource();
+        ds.setUrl("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8");
+        ds.setUsername("root");
+        ds.setPassword("root");
+        ds.setDriverClassName("com.mysql.jdbc.Driver");
+        Connection connection = ds.getConnection();
+        String sql  = "INSERT INTO  user(user_name,price,create_time) values (?,?,?)";
+        PreparedStatement preparedStatement = connection.prepareStatement(sql);
+        preparedStatement.setString(1,"zzxx");
+        preparedStatement.setDouble(2,123.31);
+        preparedStatement.setDate(3,new Date(System.currentTimeMillis()));
+        int row = preparedStatement.executeUpdate();
+        System.out.println(row);
+    }
+
+    /**
+     * 使用DruidDataSourceFactory工厂类获取DruidDataSource对象
+     * @throws SQLException
+     */
+    @Test
+    public void t4() throws Exception {
+      //加载外部配置文件
+        InputStream in = TE.class.getClassLoader().getResourceAsStream("db.properties");
+        Properties p = new Properties();
+        p.load(in);
+        DataSource dataSource = DruidDataSourceFactory.createDataSource(p);
+        Connection connection = dataSource.getConnection();
+        //......
+        String sql  = "INSERT INTO  user(user_name,price,create_time) values (?,?,?)";
+        PreparedStatement preparedStatement = connection.prepareStatement(sql);
+        preparedStatement.setString(1,"ccvv");
+        preparedStatement.setDouble(2,123.31);
+        preparedStatement.setDate(3,new Date(System.currentTimeMillis()));
+        int row = preparedStatement.executeUpdate();
+        System.out.println(row);
+    }
+}

+ 63 - 0
src/main/java/com/sf/jdbc/day25/User.java

@@ -0,0 +1,63 @@
+package com.sf.jdbc.day25;
+
+
+import java.util.Date;
+
+public class User {
+    private Integer userId;
+    private String userName;
+    private Double price;
+    private Date createTime;
+
+    public User() {
+    }
+
+    public User(Integer userId, String userName, Double price, Date createTime) {
+        this.userId = userId;
+        this.userName = userName;
+        this.price = price;
+        this.createTime = createTime;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "userId=" + userId +
+                ", userName='" + userName + '\'' +
+                ", price=" + price +
+                ", createTime=" + createTime +
+                '}';
+    }
+}

+ 4 - 0
src/main/resources/db.properties

@@ -0,0 +1,4 @@
+url=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8
+username=root
+password=root
+driverClassName=com.mysql.jdbc.Driver

BIN
target/classes/com/sf/jdbc/TT.class


BIN
target/classes/com/sf/javase/day24/T.class → target/classes/com/sf/jdbc/day24/T.class


BIN
target/classes/com/sf/javase/day24/User.class → target/classes/com/sf/jdbc/day24/User.class


BIN
target/classes/com/sf/jdbc/day25/Account.class


BIN
target/classes/com/sf/jdbc/day25/BaseDao.class


BIN
target/classes/com/sf/jdbc/day25/JDBCUtil.class


BIN
target/classes/com/sf/jdbc/day25/TE.class


BIN
target/classes/com/sf/jdbc/day25/User.class


+ 4 - 0
target/classes/db.properties

@@ -0,0 +1,4 @@
+url=jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8
+username=root
+password=root
+driverClassName=com.mysql.jdbc.Driver