diff --git a/ojy-study/08.07/controller.PNG b/ojy-study/SpringBooot-Basic/08.07/controller.PNG similarity index 100% rename from ojy-study/08.07/controller.PNG rename to ojy-study/SpringBooot-Basic/08.07/controller.PNG diff --git a/ojy-study/08.07/gradlewbuild.PNG b/ojy-study/SpringBooot-Basic/08.07/gradlewbuild.PNG similarity index 100% rename from ojy-study/08.07/gradlewbuild.PNG rename to ojy-study/SpringBooot-Basic/08.07/gradlewbuild.PNG diff --git a/ojy-study/08.07/hello-spring/.idea/.gitignore b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/.gitignore similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/.gitignore rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/.gitignore diff --git a/ojy-study/08.07/hello-spring/.idea/codeStyles/Project.xml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/codeStyles/Project.xml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/codeStyles/Project.xml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/codeStyles/Project.xml diff --git a/ojy-study/08.07/hello-spring/.idea/codeStyles/codeStyleConfig.xml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/codeStyles/codeStyleConfig.xml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/codeStyles/codeStyleConfig.xml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/codeStyles/codeStyleConfig.xml diff --git a/ojy-study/08.07/hello-spring/.idea/gradle.xml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/gradle.xml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/gradle.xml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/gradle.xml diff --git a/ojy-study/08.07/hello-spring/.idea/hello-spring.iml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/hello-spring.iml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/hello-spring.iml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/hello-spring.iml diff --git a/ojy-study/08.07/hello-spring/.idea/jarRepositories.xml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/jarRepositories.xml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/jarRepositories.xml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/jarRepositories.xml diff --git a/ojy-study/08.07/hello-spring/.idea/misc.xml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/misc.xml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/misc.xml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/misc.xml diff --git a/ojy-study/08.07/hello-spring/.idea/modules.xml b/ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/modules.xml similarity index 100% rename from ojy-study/08.07/hello-spring/.idea/modules.xml rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/.idea/modules.xml diff --git a/ojy-study/08.07/hello-spring/hello-spring/.gitignore b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/.gitignore similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/.gitignore rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/.gitignore diff --git a/ojy-study/08.07/hello-spring/hello-spring/build.gradle b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/build.gradle similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/build.gradle rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/build.gradle diff --git a/ojy-study/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar diff --git a/ojy-study/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties diff --git a/ojy-study/08.07/hello-spring/hello-spring/gradlew b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradlew similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/gradlew rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradlew diff --git a/ojy-study/08.07/hello-spring/hello-spring/gradlew.bat b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradlew.bat similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/gradlew.bat rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/gradlew.bat diff --git a/ojy-study/08.07/hello-spring/hello-spring/settings.gradle b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/settings.gradle similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/settings.gradle rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/settings.gradle diff --git a/ojy-study/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java diff --git a/ojy-study/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java diff --git a/ojy-study/08.07/hello-spring/hello-spring/src/main/resources/application.properties b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/resources/application.properties similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/src/main/resources/application.properties rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/resources/application.properties diff --git a/ojy-study/08.07/hello-spring/hello-spring/src/main/resources/static/index.html b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/resources/static/index.html similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/src/main/resources/static/index.html rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/resources/static/index.html diff --git a/ojy-study/08.07/hello-spring/hello-spring/src/main/resources/templates/hello.html b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/resources/templates/hello.html similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/src/main/resources/templates/hello.html rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/main/resources/templates/hello.html diff --git a/ojy-study/08.07/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java b/ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java similarity index 100% rename from ojy-study/08.07/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java rename to ojy-study/SpringBooot-Basic/08.07/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java diff --git a/ojy-study/08.07/hello.PNG b/ojy-study/SpringBooot-Basic/08.07/hello.PNG similarity index 100% rename from ojy-study/08.07/hello.PNG rename to ojy-study/SpringBooot-Basic/08.07/hello.PNG diff --git a/ojy-study/08.07/html1.PNG b/ojy-study/SpringBooot-Basic/08.07/html1.PNG similarity index 100% rename from ojy-study/08.07/html1.PNG rename to ojy-study/SpringBooot-Basic/08.07/html1.PNG diff --git a/ojy-study/08.07/html2.PNG b/ojy-study/SpringBooot-Basic/08.07/html2.PNG similarity index 100% rename from ojy-study/08.07/html2.PNG rename to ojy-study/SpringBooot-Basic/08.07/html2.PNG diff --git a/ojy-study/08.07/index.PNG b/ojy-study/SpringBooot-Basic/08.07/index.PNG similarity index 100% rename from ojy-study/08.07/index.PNG rename to ojy-study/SpringBooot-Basic/08.07/index.PNG diff --git a/ojy-study/08.07/spring.PNG b/ojy-study/SpringBooot-Basic/08.07/spring.PNG similarity index 100% rename from ojy-study/08.07/spring.PNG rename to ojy-study/SpringBooot-Basic/08.07/spring.PNG diff --git "a/ojy-study/08.07/\353\217\231\354\236\221.PNG" "b/ojy-study/SpringBooot-Basic/08.07/\353\217\231\354\236\221.PNG" similarity index 100% rename from "ojy-study/08.07/\353\217\231\354\236\221.PNG" rename to "ojy-study/SpringBooot-Basic/08.07/\353\217\231\354\236\221.PNG" diff --git "a/ojy-study/08.07/\355\231\230\352\262\275\354\204\244\354\240\225.md" "b/ojy-study/SpringBooot-Basic/08.07/\355\231\230\352\262\275\354\204\244\354\240\225.md" similarity index 100% rename from "ojy-study/08.07/\355\231\230\352\262\275\354\204\244\354\240\225.md" rename to "ojy-study/SpringBooot-Basic/08.07/\355\231\230\352\262\275\354\204\244\354\240\225.md" diff --git a/ojy-study/08.08/api.PNG b/ojy-study/SpringBooot-Basic/08.08/api.PNG similarity index 100% rename from ojy-study/08.08/api.PNG rename to ojy-study/SpringBooot-Basic/08.08/api.PNG diff --git a/ojy-study/08.08/hello-api.PNG b/ojy-study/SpringBooot-Basic/08.08/hello-api.PNG similarity index 100% rename from ojy-study/08.08/hello-api.PNG rename to ojy-study/SpringBooot-Basic/08.08/hello-api.PNG diff --git a/ojy-study/08.08/hello-mvc.PNG b/ojy-study/SpringBooot-Basic/08.08/hello-mvc.PNG similarity index 100% rename from ojy-study/08.08/hello-mvc.PNG rename to ojy-study/SpringBooot-Basic/08.08/hello-mvc.PNG diff --git a/ojy-study/08.08/hello-spring.PNG b/ojy-study/SpringBooot-Basic/08.08/hello-spring.PNG similarity index 100% rename from ojy-study/08.08/hello-spring.PNG rename to ojy-study/SpringBooot-Basic/08.08/hello-spring.PNG diff --git a/ojy-study/08.08/hello-static.PNG b/ojy-study/SpringBooot-Basic/08.08/hello-static.PNG similarity index 100% rename from ojy-study/08.08/hello-static.PNG rename to ojy-study/SpringBooot-Basic/08.08/hello-static.PNG diff --git a/ojy-study/08.08/spring.PNG b/ojy-study/SpringBooot-Basic/08.08/spring.PNG similarity index 100% rename from ojy-study/08.08/spring.PNG rename to ojy-study/SpringBooot-Basic/08.08/spring.PNG diff --git a/ojy-study/08.08/static.PNG b/ojy-study/SpringBooot-Basic/08.08/static.PNG similarity index 100% rename from ojy-study/08.08/static.PNG rename to ojy-study/SpringBooot-Basic/08.08/static.PNG diff --git a/ojy-study/08.08/string.PNG b/ojy-study/SpringBooot-Basic/08.08/string.PNG similarity index 100% rename from ojy-study/08.08/string.PNG rename to ojy-study/SpringBooot-Basic/08.08/string.PNG diff --git a/ojy-study/08.08/template.PNG b/ojy-study/SpringBooot-Basic/08.08/template.PNG similarity index 100% rename from ojy-study/08.08/template.PNG rename to ojy-study/SpringBooot-Basic/08.08/template.PNG diff --git "a/ojy-study/08.08/\352\265\254\354\241\260.PNG" "b/ojy-study/SpringBooot-Basic/08.08/\352\265\254\354\241\260.PNG" similarity index 100% rename from "ojy-study/08.08/\352\265\254\354\241\260.PNG" rename to "ojy-study/SpringBooot-Basic/08.08/\352\265\254\354\241\260.PNG" diff --git "a/ojy-study/08.08/\352\265\254\354\241\2602.PNG" "b/ojy-study/SpringBooot-Basic/08.08/\352\265\254\354\241\2602.PNG" similarity index 100% rename from "ojy-study/08.08/\352\265\254\354\241\2602.PNG" rename to "ojy-study/SpringBooot-Basic/08.08/\352\265\254\354\241\2602.PNG" diff --git "a/ojy-study/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.md" "b/ojy-study/SpringBooot-Basic/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.md" similarity index 100% rename from "ojy-study/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.md" rename to "ojy-study/SpringBooot-Basic/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.md" diff --git "a/ojy-study/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.txt" "b/ojy-study/SpringBooot-Basic/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.txt" similarity index 100% rename from "ojy-study/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.txt" rename to "ojy-study/SpringBooot-Basic/08.08/\354\212\244\355\224\204\353\247\201\354\233\271\352\260\234\353\260\234\352\270\260\354\264\210.txt" diff --git a/ojy-study/AOP/AOP.md b/ojy-study/SpringBooot-Basic/AOP/AOP.md similarity index 100% rename from ojy-study/AOP/AOP.md rename to ojy-study/SpringBooot-Basic/AOP/AOP.md diff --git a/ojy-study/AOP/after.PNG b/ojy-study/SpringBooot-Basic/AOP/after.PNG similarity index 100% rename from ojy-study/AOP/after.PNG rename to ojy-study/SpringBooot-Basic/AOP/after.PNG diff --git a/ojy-study/AOP/after1.PNG b/ojy-study/SpringBooot-Basic/AOP/after1.PNG similarity index 100% rename from ojy-study/AOP/after1.PNG rename to ojy-study/SpringBooot-Basic/AOP/after1.PNG diff --git a/ojy-study/AOP/aop.PNG b/ojy-study/SpringBooot-Basic/AOP/aop.PNG similarity index 100% rename from ojy-study/AOP/aop.PNG rename to ojy-study/SpringBooot-Basic/AOP/aop.PNG diff --git a/ojy-study/AOP/before.PNG b/ojy-study/SpringBooot-Basic/AOP/before.PNG similarity index 100% rename from ojy-study/AOP/before.PNG rename to ojy-study/SpringBooot-Basic/AOP/before.PNG diff --git a/ojy-study/AOP/before1.PNG b/ojy-study/SpringBooot-Basic/AOP/before1.PNG similarity index 100% rename from ojy-study/AOP/before1.PNG rename to ojy-study/SpringBooot-Basic/AOP/before1.PNG diff --git a/ojy-study/AOP/container.PNG b/ojy-study/SpringBooot-Basic/AOP/container.PNG similarity index 100% rename from ojy-study/AOP/container.PNG rename to ojy-study/SpringBooot-Basic/AOP/container.PNG diff --git a/ojy-study/AOP/logic.PNG b/ojy-study/SpringBooot-Basic/AOP/logic.PNG similarity index 100% rename from ojy-study/AOP/logic.PNG rename to ojy-study/SpringBooot-Basic/AOP/logic.PNG diff --git a/ojy-study/AOP/startend.PNG b/ojy-study/SpringBooot-Basic/AOP/startend.PNG similarity index 100% rename from ojy-study/AOP/startend.PNG rename to ojy-study/SpringBooot-Basic/AOP/startend.PNG diff --git a/ojy-study/AOP/time.PNG b/ojy-study/SpringBooot-Basic/AOP/time.PNG similarity index 100% rename from ojy-study/AOP/time.PNG rename to ojy-study/SpringBooot-Basic/AOP/time.PNG diff --git a/ojy-study/hello-spring/.idea/.gitignore b/ojy-study/SpringBooot-Basic/hello-spring/.idea/.gitignore similarity index 100% rename from ojy-study/hello-spring/.idea/.gitignore rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/.gitignore diff --git a/ojy-study/hello-spring/.idea/codeStyles/Project.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/codeStyles/Project.xml similarity index 100% rename from ojy-study/hello-spring/.idea/codeStyles/Project.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/codeStyles/Project.xml diff --git a/ojy-study/hello-spring/.idea/codeStyles/codeStyleConfig.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/codeStyles/codeStyleConfig.xml similarity index 100% rename from ojy-study/hello-spring/.idea/codeStyles/codeStyleConfig.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/codeStyles/codeStyleConfig.xml diff --git a/ojy-study/hello-spring/.idea/compiler.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/compiler.xml similarity index 100% rename from ojy-study/hello-spring/.idea/compiler.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/compiler.xml diff --git a/ojy-study/hello-spring/.idea/gradle.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/gradle.xml similarity index 100% rename from ojy-study/hello-spring/.idea/gradle.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/gradle.xml diff --git a/ojy-study/hello-spring/.idea/hello-spring.iml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/hello-spring.iml similarity index 100% rename from ojy-study/hello-spring/.idea/hello-spring.iml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/hello-spring.iml diff --git a/ojy-study/hello-spring/.idea/jarRepositories.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/jarRepositories.xml similarity index 100% rename from ojy-study/hello-spring/.idea/jarRepositories.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/jarRepositories.xml diff --git a/ojy-study/hello-spring/.idea/misc.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/misc.xml similarity index 100% rename from ojy-study/hello-spring/.idea/misc.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/misc.xml diff --git a/ojy-study/hello-spring/.idea/modules.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/modules.xml similarity index 100% rename from ojy-study/hello-spring/.idea/modules.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/modules.xml diff --git a/ojy-study/hello-spring/.idea/vcs.xml b/ojy-study/SpringBooot-Basic/hello-spring/.idea/vcs.xml similarity index 100% rename from ojy-study/hello-spring/.idea/vcs.xml rename to ojy-study/SpringBooot-Basic/hello-spring/.idea/vcs.xml diff --git a/ojy-study/hello-spring/hello-spring/.gitignore b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/.gitignore similarity index 100% rename from ojy-study/hello-spring/hello-spring/.gitignore rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/.gitignore diff --git a/ojy-study/hello-spring/hello-spring/build.gradle b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/build.gradle similarity index 100% rename from ojy-study/hello-spring/hello-spring/build.gradle rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/build.gradle diff --git a/ojy-study/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from ojy-study/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.jar diff --git a/ojy-study/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from ojy-study/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradle/wrapper/gradle-wrapper.properties diff --git a/ojy-study/hello-spring/hello-spring/gradlew b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradlew similarity index 100% rename from ojy-study/hello-spring/hello-spring/gradlew rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradlew diff --git a/ojy-study/hello-spring/hello-spring/gradlew.bat b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradlew.bat similarity index 100% rename from ojy-study/hello-spring/hello-spring/gradlew.bat rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/gradlew.bat diff --git a/ojy-study/hello-spring/hello-spring/settings.gradle b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/settings.gradle similarity index 100% rename from ojy-study/hello-spring/hello-spring/settings.gradle rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/settings.gradle diff --git a/ojy-study/hello-spring/hello-spring/sql/ddl.sql b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/sql/ddl.sql similarity index 100% rename from ojy-study/hello-spring/hello-spring/sql/ddl.sql rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/sql/ddl.sql diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/HelloSpringApplication.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/SpringConfig.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/SpringConfig.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/SpringConfig.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/SpringConfig.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/aop/TimeTraceAop.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/aop/TimeTraceAop.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/aop/TimeTraceAop.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/aop/TimeTraceAop.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HelloController.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HomeController.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HomeController.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HomeController.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/HomeController.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberController.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberController.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberController.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberController.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberForm.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberForm.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberForm.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/controller/MemberForm.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/domain/Member.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/domain/Member.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/domain/Member.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/domain/Member.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcMemberRepository.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcMemberRepository.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcMemberRepository.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcMemberRepository.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcTemplateMemberRepository.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcTemplateMemberRepository.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcTemplateMemberRepository.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JdbcTemplateMemberRepository.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JpaMemberRepository.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JpaMemberRepository.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JpaMemberRepository.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/JpaMemberRepository.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemberRespository.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemberRespository.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemberRespository.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemberRespository.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemoryMemberRepository.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemoryMemberRepository.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemoryMemberRepository.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/MemoryMemberRepository.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/SpringDataJpaMemberRepository.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/SpringDataJpaMemberRepository.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/SpringDataJpaMemberRepository.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/repository/SpringDataJpaMemberRepository.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/service/MemberService.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/service/MemberService.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/java/hello/hellospring/service/MemberService.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/java/hello/hellospring/service/MemberService.java diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/application.properties b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/application.properties similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/application.properties rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/application.properties diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/static/hello-static.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/static/hello-static.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/static/hello-static.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/static/hello-static.html diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/static/index.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/static/index.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/static/index.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/static/index.html diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/templates/hello-template.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/hello-template.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/templates/hello-template.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/hello-template.html diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/templates/hello.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/hello.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/templates/hello.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/hello.html diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/templates/home.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/home.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/templates/home.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/home.html diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/templates/members/createMemberForm.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/members/createMemberForm.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/templates/members/createMemberForm.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/members/createMemberForm.html diff --git a/ojy-study/hello-spring/hello-spring/src/main/resources/templates/members/memberList.html b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/members/memberList.html similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/main/resources/templates/members/memberList.html rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/main/resources/templates/members/memberList.html diff --git a/ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/HelloSpringApplicationTests.java diff --git a/ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/repository/MemoryMemberRepositoryTest.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/repository/MemoryMemberRepositoryTest.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/repository/MemoryMemberRepositoryTest.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/repository/MemoryMemberRepositoryTest.java diff --git a/ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceIntegrationTest.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceIntegrationTest.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceIntegrationTest.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceIntegrationTest.java diff --git a/ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceTest.java b/ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceTest.java similarity index 100% rename from ojy-study/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceTest.java rename to ojy-study/SpringBooot-Basic/hello-spring/hello-spring/src/test/java/hello/hellospring/service/MemberServiceTest.java diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/change.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/change.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/change.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/change.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/container.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/container.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/container.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/container.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/createmember.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/createmember.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/createmember.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/createmember.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate1.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate1.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate1.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/integrate1.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/interface.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/interface.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/interface.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/interface.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc1.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc1.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc1.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc1.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc2.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc2.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc2.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc2.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc3.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc3.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc3.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc3.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc4.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc4.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc4.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc4.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc5.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc5.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc5.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbc5.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo1.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo1.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo1.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jdbcrepo1.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository1.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository1.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository1.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/jpamemberrepository1.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/member.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/member.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/member.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/member.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig1.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig1.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig1.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig1.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig2.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig2.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig2.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfig2.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfigjpa.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfigjpa.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfigjpa.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springconfigjpa.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springjpa.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springjpa.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springjpa.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/springjpa.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\352\265\254\354\241\260.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\352\265\254\354\241\260.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\352\265\254\354\241\260.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\352\265\254\354\241\260.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240.md" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240.md" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240.md" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240/\354\212\244\355\224\204\353\247\201 DB \354\240\221\352\267\274 \352\270\260\354\210\240.md" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/Container.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/Container.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/Container.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/Container.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberController.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberController.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberController.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberController.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberService.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberService.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberService.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemberService.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemoryMemberRepository.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemoryMemberRepository.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemoryMemberRepository.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/MemoryMemberRepository.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/SpringConfig.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/SpringConfig.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/SpringConfig.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/SpringConfig.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/bin.PNG" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/bin.PNG" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/bin.PNG" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/bin.PNG" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\236\220\353\260\224\354\275\224\353\223\234\353\241\234 \354\247\201\354\240\221 \354\212\244\355\224\204\353\247\201 \353\271\210 \353\223\261\353\241\235\355\225\230\352\270\260.md" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\236\220\353\260\224\354\275\224\353\223\234\353\241\234 \354\247\201\354\240\221 \354\212\244\355\224\204\353\247\201 \353\271\210 \353\223\261\353\241\235\355\225\230\352\270\260.md" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\236\220\353\260\224\354\275\224\353\223\234\353\241\234 \354\247\201\354\240\221 \354\212\244\355\224\204\353\247\201 \353\271\210 \353\223\261\353\241\235\355\225\230\352\270\260.md" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\236\220\353\260\224\354\275\224\353\223\234\353\241\234 \354\247\201\354\240\221 \354\212\244\355\224\204\353\247\201 \353\271\210 \353\223\261\353\241\235\355\225\230\352\270\260.md" diff --git "a/ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\273\264\355\217\254\353\204\214\355\212\270 \354\212\244\354\272\224\352\263\274 \354\236\220\353\217\231\354\235\230\354\241\264 \354\204\244\354\240\225.md" "b/ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\273\264\355\217\254\353\204\214\355\212\270 \354\212\244\354\272\224\352\263\274 \354\236\220\353\217\231\354\235\230\354\241\264 \354\204\244\354\240\225.md" similarity index 100% rename from "ojy-study/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\273\264\355\217\254\353\204\214\355\212\270 \354\212\244\354\272\224\352\263\274 \354\236\220\353\217\231\354\235\230\354\241\264 \354\204\244\354\240\225.md" rename to "ojy-study/SpringBooot-Basic/\354\212\244\355\224\204\353\247\201 \353\271\210\352\263\274 \354\235\230\354\241\264\352\264\200\352\263\204/\354\273\264\355\217\254\353\204\214\355\212\270 \354\212\244\354\272\224\352\263\274 \354\236\220\353\217\231\354\235\230\354\241\264 \354\204\244\354\240\225.md" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/member.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/member.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/member.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/member.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memberrepository.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memberrepository.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memberrepository.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memberrepository.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory2.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory2.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory2.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/memory2.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service2.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service2.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service2.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/service2.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest2.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest2.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest2.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest2.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest3.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest3.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest3.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest3.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest4.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest4.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest4.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/servicetest4.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test2.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test2.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test2.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test2.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test3.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test3.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test3.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/test3.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\354\233\271\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\354\233\271\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\354\233\271\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\354\233\271\354\225\240\355\224\214\353\246\254\354\274\200\354\235\264\354\205\230.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\201\264\353\236\230\354\212\244.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\201\264\353\236\230\354\212\244.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\201\264\353\236\230\354\212\244.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\201\264\353\236\230\354\212\244.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.md" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.md" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.md" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.md" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.txt" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.txt" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.txt" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234/\355\232\214\354\233\220\352\264\200\353\246\254\354\230\210\354\240\234-\353\260\261\354\227\224\353\223\234 \352\260\234\353\260\234.txt" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formcontroller.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formcontroller.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formcontroller.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formcontroller.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formhtml.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formhtml.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formhtml.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/formhtml.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/home.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/home.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/home.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/home.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/homecontroller.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/homecontroller.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/homecontroller.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/homecontroller.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/html.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/html.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/html.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/html.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list2.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list2.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list2.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/list2.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/listcontroller.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/listcontroller.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/listcontroller.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/listcontroller.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/memberform.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/memberform.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/memberform.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/memberform.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/postform.PNG" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/postform.PNG" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/postform.PNG" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/postform.PNG" diff --git "a/ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234- \354\233\271 MVC \352\260\234\353\260\234.md" "b/ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234- \354\233\271 MVC \352\260\234\353\260\234.md" similarity index 100% rename from "ojy-study/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234- \354\233\271 MVC \352\260\234\353\260\234.md" rename to "ojy-study/SpringBooot-Basic/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234-\354\233\271 MVC \352\260\234\353\260\234/\355\232\214\354\233\220 \352\264\200\353\246\254 \354\230\210\354\240\234- \354\233\271 MVC \352\260\234\353\260\234.md" diff --git a/ojy-study/java 8/Completable Future/CompletableFuture.md b/ojy-study/java 8/Completable Future/CompletableFuture.md new file mode 100644 index 0000000..bc086ec --- /dev/null +++ b/ojy-study/java 8/Completable Future/CompletableFuture.md @@ -0,0 +1,229 @@ +# CompletableFuture + +### 자바 Concurrent 프로그래밍 소개 + +--------------------------- + +**Concurrent 소프트웨어** +- 동시에 여러 작업을 할 수 있는 소프트웨어 +- ex) 웹브라우저로 유튜브를 보면서 키보드로 문서에 타이핑을 함 +- 백그라운드에서 여러 프로세스가 돌아가고 있음 + +자바에서 지원하는 컨커런트 프로그래밍 +- 멀티 프로세싱 +- 멀티쓰레드 + +**자바 멀티쓰레드 프로그래밍** +- Thread/ Runnable + +1. Thread 상속 + + ![thread](thread.PNG) + + - mythread가 먼저 출력될 것 같지만 main에 있는 hello가 먼저 출력됨 + +2. Runnable + + ![runnable](runnable.PNG) + +
+ +**쓰레드 주요기능** + +1. sleep: 다른쓰레드한테 우선권이 가서 먼저 처리할 수 있도록 함 + + ![sleep](sleep.PNG) + + - main이 무조건 우선순위를 차지하여 먼저 출력 + +2. Interupt : 다른 쓰레드를 깨워서 InteruptedException을 발생시킴. 종료시킬 수도 있고 계속 하던 일 할 수 도 있음 + + ![except](except.PNG) + + - 만약 interrupt를 받았음에도 종료하지 않는다면 계속 thread를 출력함 + +3. join : 다른 쓰레드가 끝날 때까지 기다림 + + ![join](join.PNG) + +*수십수백개의 프로그래밍에서 이러한 쓰레드를 직접 코딩으로 관리하기 힘듬 -> executors->future* + +
+ +### Executors + +--------------- + +**고수준 (High-Level) Concurrency 프로그래밍** +- 쓰레드를 만들고 관리하는 작업을 애플리케이션에서 분리 +- 이기능을 executors에게 위임 + +**Executors가 하는 일** +- 스레드 만들기: 애플리케이션이 사용할 쓰레드 풀을 만들어 관리 +- 쓰레드 곤리: 쓰레드 생명주기 관리 +- 작업 처리 및 실행:쓰레드로 실행할 작업 제공하는 API 제공 + +**주요 인터페이스** +- Executor: execute(Runnable) +- ExecutorService: Executor 상속 받은 인터페이스로 Callable도 실행 가능 + - 다른 작업이 들어올때까지 계속 대기함 + - 계속 프로세스가 돌아가기때문에 shutdown(지금돌고 있는 프로세스를 끝네고 중지)을 해야함 + + ![service](service.PNG) + + - 쓰레드 2개를 가진 excutor service도 만들 수 있음 + + ![multi](multi.PNG) + + - main 에서 thread 가 들어가기 전에 대기하는 프로세스들은 blocking q에 있음 + +- ScheduledExecutorService: : ExecutorService를 상속 받은 인터페이스로 특정 시간 +이후에 또는 주기적으로 작업을 실행 + ![schedule](schedule.PNG) + +
+ +### Callable과 Future + +---------------- + +Callable : Runnable과 유사하지만 작업의 결과를 받을 수 있음 + +Future : 비동기적인 작업의 현재상태를 조회하거나 결과를 가져올 수 있음 + +*결과를 get()으로 가져오기* + +![get](get.PNG) + +- 결과 값을 가져올때까지 기다림 +- 블록킹 콜 +- 타임아웃을 설정할 수 있음 + +*작업 상태 확인 isDone()* + +![isdone](isdone.PNG) + +- false면 대기 true면 실행중 + + +*작업 취소 cancel* + +- true면 현재 작업중인 프로세스를 인터럽트하고 종료, false는 대기 +- isDone은 true(cancel를 했기때문에 종료) +- get을 해서 가져올 수 없음(에러) + +*여러 작업 동시 실행invokeAll()* + +![invokeall](invokeall.PNG) +![invokeall2](invokeall2.PNG) + +- ojy,hello가 다끝났어도 java가 끝날때까지 기다림 +- 동시에 실행한 작업 중에 제일 오래 걸리는 작업 만큼 시간이 걸림 + +*여러 작업 중에 하나라도 먼저 응답이 오면 끝내기 invokeAny()* + +![invokeany](invokeany.PNG) + +- 블록킹 콜 +- 동시에 실행한 작업 중에 제일 짧게 걸리는 작업만큼 시간이 걸림 + +
+ +### CompletableFuture1 + +-------------------- + +*Future의 단점* + +- Future를 외부에서 완료 시킬 수 없음. 취소하거나 get()에 타임아웃을 설정할 수 없음 +- 블록킹 코드를 사용하지 않고서는 작업이 끝났을 대 롤백을 실행할 수 없음 +- 여러 Future 조합 x +- 예외처리용 API를 제공하지 않음 + +**Completable Future** +- 외부에서 명시적으로 complete를 시킬 수 있음 +- 명시적으로 executors를 만들어 사용할 필요 없음 + - 이것만 가지고 비동기적으로 작업들을 실행할 수 있음 + + ![future](future.PNG) + +
+ +**비동기로 작업 실행하기** + +1. 리턴값이 없는 경우: runAsync() + + ![future1](future1.PNG) + +2. 리턴값이 있는 경우: supplyAsunc() + + ![future2](future2.PNG) + + +*get은 꼭 있어야 일이 일어남* + + +**콜백 제공하기** + +1. thenAppy(Function): 리턴값을 받아 다른 값으로 바꾸는 콜백 + + ![thenapply](thenapply.PNG) + +2. thenAccept(Consumer): 리턴값을 또 다른 작업을 처리하는 콜백(리턴없이) + + ![thenaccept](thenaccept.PNG) + +3. thenRun(Runnable):리턴값 받지않고 다른 작업을 처리하는 콜백 + + ![thenrun](thenrun.PNG) + + +*별다른 executor사용하지 않아도 내부적으로 forkjoinpool에 있는 commonpool을 사용하지만 원한다면 얼마든지 만들어서 쓸 수 있음* + +![change](change.PNG) + +
+ +### CompletableFuture2 + +--------------------- + +**조합하기** + +1. thenCompose(): 두작업이 서로 이어서 실행하도록 조합 + + ![thencompose](thencompose.PNG) + +2. thenCombine(): 둘이 따로 실행하고 둘다 종료했을 때 콜백 실행 + + ![thencombine](thencombine.PNG) + + + +3. allOf(): 여러 작업을 모두 실행하고 모든 작업 결과에 콜백 실행 + - allof또한 둘다 실행하지만 결과값이 동일하다는 보장도 없고 에러가 났을 수도 있으므로 무의미함 + - null + - 아무것도 블럭킹이 일어나지 않음 + + ![allof](allof.PNG) + +4. anyOf(): 여러 작업중에 가장 빨리 끝난 하나의 결과에 콜백 실행 + + ![anyof](anyof.PNG) + + - 둘중에 먼저 끝나는 프로세스가 오므로 랜덤하게 출력됨 + + +
+ +**예외처리** + +1. exceptioinally(Function) + - 에러타입을 받아 function을 넘겨주어 default값을 출력할 수 있음 + + ![ex1](ex1.PNG) + +2. handle(BiFunction) + - 정상적으로 종료했을때랑 비정상적으로 종료했을때 두가지 모두 사용가능 + + ![handle](handle.PNG) \ No newline at end of file diff --git a/ojy-study/java 8/Completable Future/allof.PNG b/ojy-study/java 8/Completable Future/allof.PNG new file mode 100644 index 0000000..150eca7 Binary files /dev/null and b/ojy-study/java 8/Completable Future/allof.PNG differ diff --git a/ojy-study/java 8/Completable Future/anyof.PNG b/ojy-study/java 8/Completable Future/anyof.PNG new file mode 100644 index 0000000..514fb9e Binary files /dev/null and b/ojy-study/java 8/Completable Future/anyof.PNG differ diff --git a/ojy-study/java 8/Completable Future/change.PNG b/ojy-study/java 8/Completable Future/change.PNG new file mode 100644 index 0000000..b7632a7 Binary files /dev/null and b/ojy-study/java 8/Completable Future/change.PNG differ diff --git a/ojy-study/java 8/Completable Future/ex1.PNG b/ojy-study/java 8/Completable Future/ex1.PNG new file mode 100644 index 0000000..d9adcdd Binary files /dev/null and b/ojy-study/java 8/Completable Future/ex1.PNG differ diff --git a/ojy-study/java 8/Completable Future/except.PNG b/ojy-study/java 8/Completable Future/except.PNG new file mode 100644 index 0000000..2efa3bc Binary files /dev/null and b/ojy-study/java 8/Completable Future/except.PNG differ diff --git a/ojy-study/java 8/Completable Future/future.PNG b/ojy-study/java 8/Completable Future/future.PNG new file mode 100644 index 0000000..ef9b22d Binary files /dev/null and b/ojy-study/java 8/Completable Future/future.PNG differ diff --git a/ojy-study/java 8/Completable Future/future1.PNG b/ojy-study/java 8/Completable Future/future1.PNG new file mode 100644 index 0000000..354181a Binary files /dev/null and b/ojy-study/java 8/Completable Future/future1.PNG differ diff --git a/ojy-study/java 8/Completable Future/future2.PNG b/ojy-study/java 8/Completable Future/future2.PNG new file mode 100644 index 0000000..a08b160 Binary files /dev/null and b/ojy-study/java 8/Completable Future/future2.PNG differ diff --git a/ojy-study/java 8/Completable Future/get.PNG b/ojy-study/java 8/Completable Future/get.PNG new file mode 100644 index 0000000..b6dc73e Binary files /dev/null and b/ojy-study/java 8/Completable Future/get.PNG differ diff --git a/ojy-study/java 8/Completable Future/handle.PNG b/ojy-study/java 8/Completable Future/handle.PNG new file mode 100644 index 0000000..6561c2f Binary files /dev/null and b/ojy-study/java 8/Completable Future/handle.PNG differ diff --git a/ojy-study/java 8/Completable Future/invokeall.PNG b/ojy-study/java 8/Completable Future/invokeall.PNG new file mode 100644 index 0000000..6a9bdd9 Binary files /dev/null and b/ojy-study/java 8/Completable Future/invokeall.PNG differ diff --git a/ojy-study/java 8/Completable Future/invokeall2.PNG b/ojy-study/java 8/Completable Future/invokeall2.PNG new file mode 100644 index 0000000..52894c7 Binary files /dev/null and b/ojy-study/java 8/Completable Future/invokeall2.PNG differ diff --git a/ojy-study/java 8/Completable Future/invokeany.PNG b/ojy-study/java 8/Completable Future/invokeany.PNG new file mode 100644 index 0000000..1c32318 Binary files /dev/null and b/ojy-study/java 8/Completable Future/invokeany.PNG differ diff --git a/ojy-study/java 8/Completable Future/isdone.PNG b/ojy-study/java 8/Completable Future/isdone.PNG new file mode 100644 index 0000000..f1bb26d Binary files /dev/null and b/ojy-study/java 8/Completable Future/isdone.PNG differ diff --git a/ojy-study/java 8/Completable Future/join.PNG b/ojy-study/java 8/Completable Future/join.PNG new file mode 100644 index 0000000..c1f1f14 Binary files /dev/null and b/ojy-study/java 8/Completable Future/join.PNG differ diff --git a/ojy-study/java 8/Completable Future/multi.PNG b/ojy-study/java 8/Completable Future/multi.PNG new file mode 100644 index 0000000..d0067a0 Binary files /dev/null and b/ojy-study/java 8/Completable Future/multi.PNG differ diff --git a/ojy-study/java 8/Completable Future/runnable.PNG b/ojy-study/java 8/Completable Future/runnable.PNG new file mode 100644 index 0000000..016b9ae Binary files /dev/null and b/ojy-study/java 8/Completable Future/runnable.PNG differ diff --git a/ojy-study/java 8/Completable Future/schedule.PNG b/ojy-study/java 8/Completable Future/schedule.PNG new file mode 100644 index 0000000..8b43b21 Binary files /dev/null and b/ojy-study/java 8/Completable Future/schedule.PNG differ diff --git a/ojy-study/java 8/Completable Future/service.PNG b/ojy-study/java 8/Completable Future/service.PNG new file mode 100644 index 0000000..b4fb79e Binary files /dev/null and b/ojy-study/java 8/Completable Future/service.PNG differ diff --git a/ojy-study/java 8/Completable Future/sleep.PNG b/ojy-study/java 8/Completable Future/sleep.PNG new file mode 100644 index 0000000..aab4c80 Binary files /dev/null and b/ojy-study/java 8/Completable Future/sleep.PNG differ diff --git a/ojy-study/java 8/Completable Future/thenaccept.PNG b/ojy-study/java 8/Completable Future/thenaccept.PNG new file mode 100644 index 0000000..9206c15 Binary files /dev/null and b/ojy-study/java 8/Completable Future/thenaccept.PNG differ diff --git a/ojy-study/java 8/Completable Future/thenapply.PNG b/ojy-study/java 8/Completable Future/thenapply.PNG new file mode 100644 index 0000000..01b4f0c Binary files /dev/null and b/ojy-study/java 8/Completable Future/thenapply.PNG differ diff --git a/ojy-study/java 8/Completable Future/thencombine.PNG b/ojy-study/java 8/Completable Future/thencombine.PNG new file mode 100644 index 0000000..b7f22e2 Binary files /dev/null and b/ojy-study/java 8/Completable Future/thencombine.PNG differ diff --git a/ojy-study/java 8/Completable Future/thencompose.PNG b/ojy-study/java 8/Completable Future/thencompose.PNG new file mode 100644 index 0000000..91a9d8a Binary files /dev/null and b/ojy-study/java 8/Completable Future/thencompose.PNG differ diff --git a/ojy-study/java 8/Completable Future/thenrun.PNG b/ojy-study/java 8/Completable Future/thenrun.PNG new file mode 100644 index 0000000..32ac12a Binary files /dev/null and b/ojy-study/java 8/Completable Future/thenrun.PNG differ diff --git a/ojy-study/java 8/Completable Future/thread.PNG b/ojy-study/java 8/Completable Future/thread.PNG new file mode 100644 index 0000000..f5e5386 Binary files /dev/null and b/ojy-study/java 8/Completable Future/thread.PNG differ diff --git a/ojy-study/java 8/Date/Date.md b/ojy-study/java 8/Date/Date.md new file mode 100644 index 0000000..2c435c3 --- /dev/null +++ b/ojy-study/java 8/Date/Date.md @@ -0,0 +1,107 @@ +# Date + +### Date와 Time 소개 + +---------------- + +![date](date.PNG) + +- 작명이 제대로 되있지않음 + - date는 timestamp임(날짜에서 시간을 가져옴??) +- 버그 발생할 여지가 많음(타입 안정성이 업고, 월이 0부터 시작하기도 함) +- mutable하기 때문에 멀티쓰레드 환경에서 안전하게 쓰기 어려움 + - 오퍼레이션하는 중간에 다른쓰레드가 중간에 끼어들어 전혀 다른 값으로 바뀔 수 있음 +- 날짜 시간 처리가 복잡한 애플리케이션에서는 보통 Joda Time을 쓰곤했음 + - java8에서 표준으로 나오게 됨 + +
+ +**Date-Time API** +- clear +- Fluent : null을 리턴하거나 받지 않으므로 ...으로 이어감 +- Immutable : 기존의 인스턴스에 추가하면 새로운 인스턴스가 만들어짐 +- Extensible + +**주요 API** +- 기계용/사람용 시간이 있음 + ``` + long time = date.getTime() + + //기계용 시간 + ``` +- 인류용 시간은 localDate,localTime등이 있음 +- 기간을 표현할때는 Duration(시간, 몇초), Period(날짜)를 사용할 수 있음 +- DateTimeFormatter를 사용해서 일시를 특정한 문자열로 포매팅할 수 있음 + + +
+ +### Date와 Time API + +-------------------- + +**현재시간으로 표현** + +1. instant.now() : 현재 UTC(GMT) 리턴 + - local로 하고 싶다면 instant.atZone 이용 + - UTC == GMT + ``` + Instant now = Instant.now();System.out.println(now); + System.out.println(now.atZone(ZoneId.of("UTC"))); + ZonedDateTime zonedDateTime = now.atZone(ZoneId.systemDefault()); + System.out.println(zonedDateTime); + ``` + +
+ +**인류용 일시 표현** + +1. localDateTime.now(): 현재 로컬 시간을 가져옴 + +2. localDateTime.of(int, Month, int, int ,int ,int): 특정 로컬 시간을 리턴 + +3. ZonedDateTime.of(int, Month, int, int ,int ,int): 특정 zone 의 일시를 리턴 + + ![zone](zone.PNG) + + - Instant 후 zoned도 가능 + +
+ +**기간을 표현** + +1. period : 사람용 기간을 날짜 차이로 볼 수 있음 + + ![period](period.PNG) + +2. Duration : 기계용 시간 + + ![duration](duration.PNG) + +
+ +**파싱 또는 포매팅** + +1. DateTimeFormatter : 패턴을 정의 할 수 있음 + + ![mm](mm.PNG) + + - 미리 정의된 것도 있으니 참고해서 쓰면 좋음 + +2. parse + ``` + LocalDate parse = LocalDate.parse("30/08/2020",MMddyyyy); + ``` + +
+ +**레거시 API 지원** + +새로운 API들이 예전 API와 호환 + +ex) Date에서 Instant로 Instant에서 Date로 만들 수 있음 + +- GregorianCalendar와 Date타입의 인스턴스를 Instant나 ZonedDateTime으로 변환 가능 +- java.util.TimeZone에서 java.time.ZoneId로 상호 변환 가능 + + ![grego](grego.PNG) \ No newline at end of file diff --git a/ojy-study/java 8/Date/date.PNG b/ojy-study/java 8/Date/date.PNG new file mode 100644 index 0000000..64c86a8 Binary files /dev/null and b/ojy-study/java 8/Date/date.PNG differ diff --git a/ojy-study/java 8/Date/duration.PNG b/ojy-study/java 8/Date/duration.PNG new file mode 100644 index 0000000..fbe03c6 Binary files /dev/null and b/ojy-study/java 8/Date/duration.PNG differ diff --git a/ojy-study/java 8/Date/grego.PNG b/ojy-study/java 8/Date/grego.PNG new file mode 100644 index 0000000..71a2a8f Binary files /dev/null and b/ojy-study/java 8/Date/grego.PNG differ diff --git a/ojy-study/java 8/Date/mm.PNG b/ojy-study/java 8/Date/mm.PNG new file mode 100644 index 0000000..a4e5fe0 Binary files /dev/null and b/ojy-study/java 8/Date/mm.PNG differ diff --git a/ojy-study/java 8/Date/period.PNG b/ojy-study/java 8/Date/period.PNG new file mode 100644 index 0000000..ccde92d Binary files /dev/null and b/ojy-study/java 8/Date/period.PNG differ diff --git a/ojy-study/java 8/Date/zone.PNG b/ojy-study/java 8/Date/zone.PNG new file mode 100644 index 0000000..bebf465 Binary files /dev/null and b/ojy-study/java 8/Date/zone.PNG differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/executionHistory/executionHistory.bin b/ojy-study/java 8/Java8to111/.gradle/6.3/executionHistory/executionHistory.bin new file mode 100644 index 0000000..9e994d2 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/executionHistory/executionHistory.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/executionHistory/executionHistory.lock b/ojy-study/java 8/Java8to111/.gradle/6.3/executionHistory/executionHistory.lock new file mode 100644 index 0000000..c28ef5b Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/executionHistory/executionHistory.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/fileChanges/last-build.bin b/ojy-study/java 8/Java8to111/.gradle/6.3/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/fileChanges/last-build.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/fileContent/fileContent.lock b/ojy-study/java 8/Java8to111/.gradle/6.3/fileContent/fileContent.lock new file mode 100644 index 0000000..cb1043b Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/fileContent/fileContent.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/fileHashes/fileHashes.bin b/ojy-study/java 8/Java8to111/.gradle/6.3/fileHashes/fileHashes.bin new file mode 100644 index 0000000..a2e3730 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/fileHashes/fileHashes.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/fileHashes/fileHashes.lock b/ojy-study/java 8/Java8to111/.gradle/6.3/fileHashes/fileHashes.lock new file mode 100644 index 0000000..a733874 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/fileHashes/fileHashes.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/gc.properties b/ojy-study/java 8/Java8to111/.gradle/6.3/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/classAnalysis.bin b/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/classAnalysis.bin new file mode 100644 index 0000000..443bb48 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/classAnalysis.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/javaCompile.lock b/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/javaCompile.lock new file mode 100644 index 0000000..06b1581 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/javaCompile.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/taskHistory.bin b/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/taskHistory.bin new file mode 100644 index 0000000..a32a129 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.3/javaCompile/taskHistory.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.5/executionHistory/executionHistory.bin b/ojy-study/java 8/Java8to111/.gradle/6.5/executionHistory/executionHistory.bin new file mode 100644 index 0000000..1a05eaf Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.5/executionHistory/executionHistory.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.5/executionHistory/executionHistory.lock b/ojy-study/java 8/Java8to111/.gradle/6.5/executionHistory/executionHistory.lock new file mode 100644 index 0000000..a4b7032 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.5/executionHistory/executionHistory.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.5/fileChanges/last-build.bin b/ojy-study/java 8/Java8to111/.gradle/6.5/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.5/fileChanges/last-build.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.5/fileHashes/fileHashes.bin b/ojy-study/java 8/Java8to111/.gradle/6.5/fileHashes/fileHashes.bin new file mode 100644 index 0000000..7f00a8b Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.5/fileHashes/fileHashes.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.5/fileHashes/fileHashes.lock b/ojy-study/java 8/Java8to111/.gradle/6.5/fileHashes/fileHashes.lock new file mode 100644 index 0000000..2864a0b Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/6.5/fileHashes/fileHashes.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/6.5/gc.properties b/ojy-study/java 8/Java8to111/.gradle/6.5/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..c82de3a Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/cache.properties b/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..6ddf290 --- /dev/null +++ b/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Thu Aug 27 16:10:37 KST 2020 +gradle.version=6.3 diff --git a/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/outputFiles.bin b/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..7e819c3 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/ojy-study/java 8/Java8to111/.gradle/checksums/checksums.lock b/ojy-study/java 8/Java8to111/.gradle/checksums/checksums.lock new file mode 100644 index 0000000..7cbc445 Binary files /dev/null and b/ojy-study/java 8/Java8to111/.gradle/checksums/checksums.lock differ diff --git a/ojy-study/java 8/Java8to111/.gradle/vcs-1/gc.properties b/ojy-study/java 8/Java8to111/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/java 8/Java8to111/.idea/.gitignore b/ojy-study/java 8/Java8to111/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/ojy-study/java 8/Java8to111/.idea/codeStyles/Project.xml b/ojy-study/java 8/Java8to111/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..919ce1f --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/codeStyles/Project.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/.idea/codeStyles/codeStyleConfig.xml b/ojy-study/java 8/Java8to111/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/.idea/compiler.xml b/ojy-study/java 8/Java8to111/.idea/compiler.xml new file mode 100644 index 0000000..ac216bc --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/.idea/gradle.xml b/ojy-study/java 8/Java8to111/.idea/gradle.xml new file mode 100644 index 0000000..611e7c8 --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/gradle.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/.idea/jarRepositories.xml b/ojy-study/java 8/Java8to111/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/.idea/misc.xml b/ojy-study/java 8/Java8to111/.idea/misc.xml new file mode 100644 index 0000000..1b578d5 --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/.idea/uiDesigner.xml b/ojy-study/java 8/Java8to111/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/ojy-study/java 8/Java8to111/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ojy-study/java 8/Java8to111/build.gradle b/ojy-study/java 8/Java8to111/build.gradle new file mode 100644 index 0000000..95df5f5 --- /dev/null +++ b/ojy-study/java 8/Java8to111/build.gradle @@ -0,0 +1,14 @@ +plugins { + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.12' +} diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/App.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/App.class new file mode 100644 index 0000000..06335cc Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/App.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Bar.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Bar.class new file mode 100644 index 0000000..4e6c363 Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Bar.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Chicken.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Chicken.class new file mode 100644 index 0000000..1ae5f0c Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Chicken.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/ChickenContainer.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/ChickenContainer.class new file mode 100644 index 0000000..fe4b173 Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/ChickenContainer.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/DefaultFoo.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/DefaultFoo.class new file mode 100644 index 0000000..6c7275b Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/DefaultFoo.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Foo.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Foo.class new file mode 100644 index 0000000..04d7700 Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Foo.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Greeting.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Greeting.class new file mode 100644 index 0000000..95d1b16 Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Greeting.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/OnlineClass.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/OnlineClass.class new file mode 100644 index 0000000..25e682e Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/OnlineClass.class differ diff --git a/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Progress.class b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Progress.class new file mode 100644 index 0000000..6b50a11 Binary files /dev/null and b/ojy-study/java 8/Java8to111/build/classes/java/main/me/whiteship/java8to11/Progress.class differ diff --git a/ojy-study/java 8/Java8to111/gradle/wrapper/gradle-wrapper.jar b/ojy-study/java 8/Java8to111/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..62d4c05 Binary files /dev/null and b/ojy-study/java 8/Java8to111/gradle/wrapper/gradle-wrapper.jar differ diff --git a/ojy-study/java 8/Java8to111/gradle/wrapper/gradle-wrapper.properties b/ojy-study/java 8/Java8to111/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a4b4429 --- /dev/null +++ b/ojy-study/java 8/Java8to111/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/ojy-study/java 8/Java8to111/gradlew b/ojy-study/java 8/Java8to111/gradlew new file mode 100644 index 0000000..fbd7c51 --- /dev/null +++ b/ojy-study/java 8/Java8to111/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed 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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/ojy-study/java 8/Java8to111/gradlew.bat b/ojy-study/java 8/Java8to111/gradlew.bat new file mode 100644 index 0000000..5093609 --- /dev/null +++ b/ojy-study/java 8/Java8to111/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem 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, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/ojy-study/java 8/Java8to111/settings.gradle b/ojy-study/java 8/Java8to111/settings.gradle new file mode 100644 index 0000000..604b45e --- /dev/null +++ b/ojy-study/java 8/Java8to111/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'Java8to111' + diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/App.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/App.java new file mode 100644 index 0000000..7ffb25d --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/App.java @@ -0,0 +1,33 @@ +package me.whiteship.java8to11; + +import java.sql.SQLOutput; +import java.text.SimpleDateFormat; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.concurrent.*; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.function.UnaryOperator; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +public class App { + + public static void main(String[] args) throws ExecutionException, InterruptedException { + int size = 1500; + int[] numbers = new int[size]; + Random random = new Random(); + IntStream.range(0, size).forEach(i -> numbers[i] = random.nextInt()); + long start = System.nanoTime(); + Arrays.sort(numbers); + System.out.println("serial sorting took " + (System.nanoTime() - start)); + IntStream.range(0, size).forEach(i -> numbers[i] = random.nextInt()); + start = System.nanoTime(); + Arrays.parallelSort(numbers); + System.out.println("parallel sorting took " + (System.nanoTime() - start)); + } + +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Bar.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Bar.java new file mode 100644 index 0000000..16ad85f --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Bar.java @@ -0,0 +1,8 @@ +package me.whiteship.java8to11; + +public interface Bar { + + default void printNameUpperCase(){ + System.out.println("BAR"); + } +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Chicken.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Chicken.java new file mode 100644 index 0000000..fe89075 --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Chicken.java @@ -0,0 +1,11 @@ +package me.whiteship.java8to11; + +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE_USE) +@Repeatable(ChickenContainer.class) +public @interface Chicken { + String value(); + +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/ChickenContainer.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/ChickenContainer.java new file mode 100644 index 0000000..da957ed --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/ChickenContainer.java @@ -0,0 +1,12 @@ +package me.whiteship.java8to11; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE_USE) +public @interface ChickenContainer { + Chicken[] value(); +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/DefaultFoo.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/DefaultFoo.java new file mode 100644 index 0000000..462cb22 --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/DefaultFoo.java @@ -0,0 +1,25 @@ +package me.whiteship.java8to11; + +public class DefaultFoo implements Foo{ + + String name; + + public DefaultFoo(String name){ + this.name = name; + } + + @Override + public void printName() { + + System.out.println(this.name); + + } + + + + + @Override + public String getName(){ + return this.name; + } +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Foo.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Foo.java new file mode 100644 index 0000000..4126056 --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Foo.java @@ -0,0 +1,21 @@ +package me.whiteship.java8to11; + +import com.sun.source.util.SourcePositions; + +public interface Foo { + + void printName(); + + /** + * @implSpec 이 구현체는 getName()으로 가져온 문자열을 대문자로 출력한다. + */ + default void printNameUpperCase(){ + System.out.println(getName().toUpperCase()); + } + + static void printAnything(){ + System.out.println("Foo"); + } + String getName(); + +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Greeting.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Greeting.java new file mode 100644 index 0000000..0648664 --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Greeting.java @@ -0,0 +1,19 @@ +package me.whiteship.java8to11; + +public class Greeting { + private String name; + + public Greeting(){ + + } + public Greeting(String name) { + this.name = name; + } + + public String hello(String name){ + return "hello " + name; + } + public static String hi(String name){ + return "hi "+ name; + } +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/OnlineClass.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/OnlineClass.java new file mode 100644 index 0000000..d4e454f --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/OnlineClass.java @@ -0,0 +1,49 @@ +package me.whiteship.java8to11; + +import java.util.Optional; + +public class OnlineClass { + private Integer id; + private String title; + private boolean closed; + public Progress progress; + + + public OnlineClass(Integer id, String title, boolean closed) { + this.id = id; + this.title = title; + this.closed = closed; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public boolean isClosed() { + return closed; + } + + public void setClosed(boolean closed) { + this.closed = closed; + } + + public Integer getId(){ + return id; + } + + public Optional getProgress() { + return Optional.ofNullable(progress); + } + + public void setProgress(Progress progress) { + this.progress = progress; + } +} diff --git a/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Progress.java b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Progress.java new file mode 100644 index 0000000..a612f3f --- /dev/null +++ b/ojy-study/java 8/Java8to111/src/main/java/me/whiteship/java8to11/Progress.java @@ -0,0 +1,16 @@ +package me.whiteship.java8to11; + +import java.time.Duration; + +public class Progress { + private Duration studyDuration; + private boolean finished; + + public Duration getStudyDuration(){ + return studyDuration; + } + + public void setStudyDuration(Duration studyDuration) { + this.studyDuration = studyDuration; + } +} diff --git a/ojy-study/java 8/Optional/Optional.md b/ojy-study/java 8/Optional/Optional.md new file mode 100644 index 0000000..471af7c --- /dev/null +++ b/ojy-study/java 8/Optional/Optional.md @@ -0,0 +1,102 @@ +# Optional + +### Optional 소개 + +------------------------- + +![error](error.PNG) + +- NullPointerExcption이 나옴 +- if문으로 null 처리를 해도 에러를 만들기 좋은 코드라는 것 + - null 체크를 까먹을 수 있기 때문에 +- null을 리턴하는 것 자체가 문제 + +*메소드에서 작업 중 특별한 상황에서 값을 제대로 리턴할 수 없는 경우 선택할 수 있는 방법* + +- 예외를 던진다 + - stacktrace를 찍으므로 이 자체로 리소스를 쓰게되므로 로직에 리소스를 쓰는 것은 좋지 않음 + +- null을 리턴한다 + + + **Optional** + + - optional안에 값을 넣을 때 인퍼런스 타입이 널일 수 있으면 ofNullable을 씀 + - null이면 optional이 비어있는 것으로 처리함 + - of는 뒤에 null일 수가 없음 + - 리턴값으로만 쓰기를 권장함 + - 매개변수 타입으로 하면 체크를 해야하고 optional을 하는 의미도 없고 오히려 번거로움 + - map의 key타입으로 쓰는 것도 않좋은데 key는 null일 수 없는데 optional은 key를 null일수도 있게 함 + - 인스턴스 필드 타입은 프로그레스가 있을수도 있고 없을 수도 있게하는 것이 안좋음 +- 프리미티브 타입용 Optional이 따로 있음 + ``` + OptionalInt.of(10); + ``` +- Optional을 리턴하는 메소드에서 null을 리턴하지 말자 + - 차라리 Optional.empty()를 리턴하자 +- Collection, Map, Stream, Array, Optional은 Optional로 감싸지 말자 + - 이미 Optional로 되어있기 때문에 Optional로 감싸면 두번감싸는 꼴이 됨 + +
+ +### Optional API + +--------------------- + +**Optional 만들기** + +1. Optional.of() +2. Optional.ofNullable() +3. Optional.empty() + +**Optional에 값이 있는지 없는지 확인하기** + +1. isPresent() + + - 값이 있으면 + ![ispresent](ispresent.PNG) + + - 값이 없으면 + ![ispresent2](ispresent2.PNG) + +2. isEpty() + +**Optional에 값을 가져오기** + +1. get() : 있는 값 가져오기 + + ![get](get.PNG) + - optional이 비어있는데 무언가를 꺼낸다면 컴파일 에러가 뜸 + +2. ifPresent(Consumer) : optional에 값이 있는 경우에 그 값을 가지고 ~~를 하라 + + ![ifpresent](ifpresent.PNG) + +3. orElse(T) : 있으면 꺼내오고 없을 때는 ~~를 하라 + - 있을때는 꺼내오고 없으면 새로운 클래스를 만들어라 + - functional 인터페이스가 들어가는게 아니라 인스턴스가 들어가야함 + + ![orelse](orelse.PNG) + + - 이미 있더라도 클래스 생성 + +4. orElseGet(Supplier) : Optional에 값이 있으면 가져오고 없는 경우에 ~~를하라 + ![orelseget](orelseget.PNG) + + - 있다면 클래스를 만들지 않음 + +*상수로 이미 만들어져있는 것들을 참고할 때는 orElse가 좋고 동적으로 만들거나 추가해야할 때는 orElseGet이 좋음* + +5. orElseThrow() : 값이 있으면 가져오고 없는 경우 에러를 던짐 + - 원하는 에러를 선택하여 명시할 수 있음 + ``` + OnlinceClass onlinceClass = optional.orElseThrow(IllegalStateException::new); + ``` + +6. filter(Predicate) : Optional에 들어있는 값 걸러내기 + - 없으면 아무일도 일어나지 않음 + +7. map(Function) : optional에 들어있는 값 변환 + ![map](map.PNG) + +8. flatMap : map에 optional로 묶으면 2번 밖으로 다시 꺼내야하는데 flatMap은 Optional 안에 들어있는 인스턴스가 Optional인 경우에 사용하면 편리 diff --git a/ojy-study/java 8/Optional/error.PNG b/ojy-study/java 8/Optional/error.PNG new file mode 100644 index 0000000..6914dc6 Binary files /dev/null and b/ojy-study/java 8/Optional/error.PNG differ diff --git a/ojy-study/java 8/Optional/get.PNG b/ojy-study/java 8/Optional/get.PNG new file mode 100644 index 0000000..9167171 Binary files /dev/null and b/ojy-study/java 8/Optional/get.PNG differ diff --git a/ojy-study/java 8/Optional/ifpresent.PNG b/ojy-study/java 8/Optional/ifpresent.PNG new file mode 100644 index 0000000..f88af25 Binary files /dev/null and b/ojy-study/java 8/Optional/ifpresent.PNG differ diff --git a/ojy-study/java 8/Optional/ispresent.PNG b/ojy-study/java 8/Optional/ispresent.PNG new file mode 100644 index 0000000..cda3810 Binary files /dev/null and b/ojy-study/java 8/Optional/ispresent.PNG differ diff --git a/ojy-study/java 8/Optional/ispresent2.PNG b/ojy-study/java 8/Optional/ispresent2.PNG new file mode 100644 index 0000000..2f76757 Binary files /dev/null and b/ojy-study/java 8/Optional/ispresent2.PNG differ diff --git a/ojy-study/java 8/Optional/map.PNG b/ojy-study/java 8/Optional/map.PNG new file mode 100644 index 0000000..fdbcb73 Binary files /dev/null and b/ojy-study/java 8/Optional/map.PNG differ diff --git a/ojy-study/java 8/Optional/orelse.PNG b/ojy-study/java 8/Optional/orelse.PNG new file mode 100644 index 0000000..c7cbdd5 Binary files /dev/null and b/ojy-study/java 8/Optional/orelse.PNG differ diff --git a/ojy-study/java 8/Optional/orelseget.PNG b/ojy-study/java 8/Optional/orelseget.PNG new file mode 100644 index 0000000..ea66a98 Binary files /dev/null and b/ojy-study/java 8/Optional/orelseget.PNG differ diff --git "a/ojy-study/java 8/stream/Stream\354\206\214\352\260\234.md" "b/ojy-study/java 8/stream/Stream\354\206\214\352\260\234.md" new file mode 100644 index 0000000..d62bd64 --- /dev/null +++ "b/ojy-study/java 8/stream/Stream\354\206\214\352\260\234.md" @@ -0,0 +1,148 @@ +# Stream + +### Stream 소개 + +------------------ + +**Stream** + +- 데이터를 담고 있는 저장소를 소스로 사용하여 처리하는 것 +- Functional하다 , 스트림이 처리하는 데이터 소스를 변경하지 않는다 + ``` + public static void main(String[] args){ + + List name = new ArrayList<>(); + name.add("Keesun"); + name.add("whiteship"); + name.add("toby"); + name.add("foo"); + + Stream stringStream =name.stream().map(String::toUpperCase); + name.forEach(System.out::println); + } + + //stream에 넣으면 대문자가아니라 소문자로 코드변경 없이 그대로 출력함 + ``` + +4. 스트림으로 처리하는 데이터는 오직 한번만 처리함(위의 예시와 동일) + +5. 무제한일 수도 있다.(Short Circuit 메소드를 사용해서 제한할 수 있다) + +6. 중개 오퍼레이션은 근본적으로 lazy하다 + ``` + name.stream().map((s)->{ + System.out.println(s); + return s.toUpperCase(); + }); + //출력이 안됨 + ``` + - terminal 오퍼레이션이 오기전까지 일을하지않음 + - 중개형 오퍼레이션은 올수도 있고 안올 수 도 있는데 종료형 오퍼레이션은 반드시 와야함 + - 단지 정의한 것 뿐임 + +7. 손쉽게 병렬처리를 할 수 있다 + - for문은 병렬처리를 하지 못하지만 parallelStream()을 사용하면 병렬적 + 으로 처리를 함 + - 하지만 무조건 빨라지고 좋은것은 아니고 좀더 느려질 수도 있음 + +
+ +**스트림 파이프라인** + +- 0또는 다수의 중개 오퍼레이션과 하나의 종료 오퍼레이션으로 구성한다 +- 스트림의 데이터 소스는 오직 터미널 오퍼레이션을 실행할 때에만 처리한다 + +
+ +**중개 오퍼레이션** +- Stream 리턴 +- filter,map,limit... + +**종료 오퍼레이션** +- Stream을 리턴하지 않음 +- collect,allMatch,count,forEach,min,max + +
+ +### Stream API + +------------------------------- + +**걸러내기** + +1. Filter + - 오퍼레이션에서 필터를하고 그 다음 종료 오퍼레이션이 들어옴 + ``` + springClasses.stream() + .filter(oc->oc.getTitle().startsWith("spring")) + .forEach(oc -> System.out.println(oc.getId())); + ``` + + ``` + System.out.println("close되지 않은 수업"); + springClasses.stream() + .filter(Predicate.not(OnlineClass::isClosed)) + .forEach(oc -> System.out.println(oc.getId())); + ``` + +**변경하기** + +1. Map + - 들어올땐 online클래스로 들어오지만 나갈때는 다른 클래스로 나갈 수있음 + + oc->stream->forEach + ``` + springClasses.stream() + .map(oc-oc.getTitle) + .forEach(System.out::println); + ``` + +2. stream의 데이터가 list안으로 들어가는데 flat형태(online 클래스들을 다 풀어냄) + - 첫번째 리스트에 4개의 클래스, 두번째 리스트에 3개의 클래스가 들어있으면 + ->4->3으로 온라인클래스를 다루는 stream으로 flat시킬수 있음 + - operator를 작성할 때마다 operate가 달라질 수 있기 때문에 object type이 무엇인지 알아야한다 + + ``` + keesunEvents.stream().flatMap(Collection::stream) + .forEach(oc->System.out.println(oc.getId()); + `` + + +**생성하기** + +1. iterate + ``` + Stream.iterate(10,i->i+1) + .forEach(System.out::println); + + //무한대로 계속 출력 + ``` + +**스트림에 데이터가 특정 조건을 만족하는지 확인** +1. allMatch, anyMatch + ``` + javaClasses.stream().anyMatch(oc->oc.getTitle().contains("Test")); + + //자바 수업중에 Test가 들어있는 수업이 있는지 확인 + ``` + +
+ +*순서에 따라 오퍼레이트 타입 달라짐* + ``` + List spring = springClasses.stream() + .filter(oc->oc.getTitle().contains("spring")) + .map(OnlinceClass::getTitle) + .collect(Collectors.toList()); + + spring.forEach(System.out::println); + + //스프링 수업중에 제목이 spring이 들어간 제목만 모아서 List로 만들기 + ``` + ``` + List spring = springClasses.stream() + .map(OnlinceClass::getTitle) + .filter(t->t.contains("spring")) + .collect(Collectors.toList()); + + spring.forEach(System.out::println); diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app.PNG" new file mode 100644 index 0000000..2288895 Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app1.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app1.PNG" new file mode 100644 index 0000000..563e20b Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app1.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app2.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app2.PNG" new file mode 100644 index 0000000..a7a748e Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/app2.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken.PNG" new file mode 100644 index 0000000..539887a Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken1.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken1.PNG" new file mode 100644 index 0000000..49b34fd Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken1.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken2.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken2.PNG" new file mode 100644 index 0000000..407b300 Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/chicken2.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/container.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/container.PNG" new file mode 100644 index 0000000..dcbdb38 Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/container.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/sort.PNG" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/sort.PNG" new file mode 100644 index 0000000..a742395 Binary files /dev/null and "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/sort.PNG" differ diff --git "a/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/\352\267\270 \353\260\226\354\227\220.md" "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/\352\267\270 \353\260\226\354\227\220.md" new file mode 100644 index 0000000..210c2e9 --- /dev/null +++ "b/ojy-study/java 8/\352\267\270 \353\260\226\354\227\220/\352\267\270 \353\260\226\354\227\220.md" @@ -0,0 +1,77 @@ +# 그 밖에 ... + +### 에노테이션의 변화 + +--------------------- + +애노테이션 관련 두가지 큰 변화 +- 자바 8 부터 애노테이션을 타입 선언부에도 사용할 수 있게됨 +- 자바 8부터 애노테이션을 중복해서 사용할 수 있게됨 + +타입 선언부 +- 제네릭 타입 +- 변수 타입 +- 매개변수 타입 +- 예외 타입 + +타입에 사용할 수 있으려면 +- TYPE_PARAMETER: 타입 변수에만 사용 가능 + + ![app](app.PNG) + ![chicken](chicken.PNG) + +- TYPE_USE: 타입 변수를 포함해서 모든 타입 선언부에 사용할 수 있음 + + ![app1](app1.PNG) + ![chicken1](chicken1.PNG) + +
+ +**중복 사용할 수 있는 애노테이션** + +- chicken container안에 chicken 애노테이션의 retention(얼마동안 유지할것인가),target(어디에 선언할 것인가)라는 정보가 container애노테이션안에도 들어감 +- container용 리텐션,타겟 위치및 범위가 자신이 가지고 있는 애노테이션보다 같거나 넓어야함 + +![chicken2](chicken2.PNG) +![container](container.PNG) +![app2](app2.PNG) + +
+ +### 배열 병렬 정렬 + +-------------------- + +**Arrays.parallelSort()** +- Fork/join 프레임워크를 사용해서 배열을 정렬하는 기능을 제공 +- 쪼개고 쪼개다가 적당한 사이즈가 되었을때 합치면서 정렬함 + +*sort()와 parallelSort()비교* + +![sort](sort.PNG) + +- 알고리듬 효율성은 같음 +- 시간 O(n logN),공간 O(n) + +
+ +### Metaspace + +------------------ +JVM의 여러 메모리 영역 중에 PermGen 메모리 영역이 없어지고 Metaspace 영역이 생겼다 + +**PermGen** +- 클래스 메타데이터를 담는 곳 +- Heap영역에 속함 +- 고정된 사이즈 +- 클래스 로딩을 많이하거나 동적으로 클래스를 많이 생성할때 꽉 차는 경우가 생김 -> 에러가 생김 + - permgen size를 늘려도 근본적으로 해결되지는 않음 + +**Metaspace** +- 클래스 메타데이터를 담는 곳 +- Heap영역이 아니라 Native 메모리 영역 +- 초기 사이즈는 있지만 고정된 사이즈는 없음 + - Metaspace 최대 사이즈 설정 + - 모니터링을 해서 사이즈값을 주는 것이 좋음 + + diff --git "a/ojy-study/java 8/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224/foo.PNG" "b/ojy-study/java 8/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224/foo.PNG" new file mode 100644 index 0000000..79ee839 Binary files /dev/null and "b/ojy-study/java 8/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224/foo.PNG" differ diff --git "a/ojy-study/java 8/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224.md" "b/ojy-study/java 8/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224.md" new file mode 100644 index 0000000..7367fcf --- /dev/null +++ "b/ojy-study/java 8/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224/\354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\235\230 \353\263\200\355\231\224.md" @@ -0,0 +1,166 @@ +# 인터페이스의 변화 + +### 인터페이스 기본 메소드와 스태틱 메소드 + +---------------------------- + + +**기본 메소드(Defualt Methods)** + +ex) +1. interface foo + ``` + default void printNameUpperCase(){ + System.out.println(getName().toUpperCase()); + } + ``` + +2. default foo class + ``` + public class DefaultFoo implements Foo{ + + String name; + + public DefaultFoo(String name){ + this.name = name; + } + + @Override + public void printName() { + + System.out.println(this.name); + + } + + @Override + public String getName(){ + return this.name; + } + } + ``` + +3. App(main) + ``` + Foo foo = new DefaultFoo("keesun"); + + foo.printName(); + foo.printNameUpperCase(); + ``` + +4. Result + ``` + keesun + KEESUN + ``` + +
+ +- 인터페이스에서 다른 메소드들과 달리 default메소드는 인터페이스를 extends하는 클래스에 명시해주지 않아도 된다 + +- 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 +- 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있음 +- 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있음 + - 반드시 문서화할것(@implSpec 자바독 태그 사용) + + ![foo](foo.PNG) +- Object가 제공하는 기능(equals, hasCode)는 기본 메소드로 제공할 수 없다 + - 구현체가 재정의해야 한다(Override) + +- 인터페이스를 상속받는 인터페이스에서 다시 추상 메소드로 변경할 수 있다 + ``` + public interface Bar extends Foo{ + default void printNameUpperCase(); + } +- 같은 메소드를 가지느 두인터페이스가 있다면 충돌이되어 컴파일 에러가 나온다 + +
+ +**스태틱 메소드** + +- 해당 타입 관련 헬터 또는 유틸리티 메소드를 제공할 때 인터페이스에 스태틱 메소드를 제공할 수 있다 + + +
+ +### 자바 8 API의 기본 메소드와 스태틱 메소드 + +----------------------- + +**Iterable의 기본 메소드** + +``` +public static void main(String[] args){ + List name = new ArrayList<>(); + name.add("Keesun"); + name.add("whiteship"); + name.add("toby"); + name.add("foo"); +} +``` + +1. forEach(): 좀더 손쉽게 iterable을 할 수 있음(= for n in name) + ``` + name.forEach(System.out::println); + ``` + +2. spliterator(): 쪼갤수 있는 iterator) + ``` + Spliterator spliterator = name.spliterator(); + + spliterator.trySplit(); //2개로 쪼갬 + + while(spliterator.tryAcvance(System.out::println)); + // 없는경우 false return + ``` + + +**Collection의 기본 메소드** + +1. stream():element들을 stream으로 만들어 functional하게 처리할 수 있게 함 + ``` + name.stream().map(String::toUpperCase) + .filter(s->s.startsWith("K")) + .collect(Collectors.toSet()); + System.out.println(k); + + //k만 모아두어 갯수를 셈 + ``` + +2. removeIf(): 특정한것 삭제 + ``` + name.removeIf(s -> s.startsWith("k")); + + //k로 시작하는 문자 삭제 + ``` + +
+ +**Comparator의 기본 메소드 및 스태틱 메소드** + +1. reversed(): 문자열 정렬시 역순으로 할때 + ``` + Comparator compareToIgnoreCase = String::compareToIgnoreCase; + name.sort(compareToIgnoreCase.reversed()); + ``` + +2. thenComparing(): 또 다른 조건으로 compare하고 싶을때 + ``` + Comparator compareToIgnoreCase = String::compareToIgnoreCase; + name.sort(compareToIgnoreCase.reversed().thenComparing()); + ``` + +3. static 메소드들도 추가 + + +
+자바파일이전에는 +추상메소드 a,b,c를 가지고 있는 인터페이스가 있다면 +API를 제공하는 쪽에서 abstract인터페이스 (a,b,c구현체를 가지고 있는) 추상 클래스를 대부분 만들어다 + +A가 만들어져있고 B가만들어져있다면 C만 만들면되고 오버라이딩을 하고 싶다면 할수도있고 편의성을 제공함 + +현재는 인터페이스가 있다면 추상메소드가 아니라 기본메소드로 a,b,c를 만들고 implements를 하여 a,b,c를 함 + + +이전에는 상속을 써서 1개밖에 상속받지 못하였다면 현재는 인터페이스를 사용하여 상속이 자유로워지고 코드도 자유로워짐 + diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/basenumber.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/basenumber.PNG" new file mode 100644 index 0000000..1aaca89 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/basenumber.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/class.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/class.PNG" new file mode 100644 index 0000000..5088c35 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/class.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo1.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo1.PNG" new file mode 100644 index 0000000..92e5793 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo1.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo2.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo2.PNG" new file mode 100644 index 0000000..f7908aa Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo2.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo3.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo3.PNG" new file mode 100644 index 0000000..68c4f78 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo3.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo4.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo4.PNG" new file mode 100644 index 0000000..06daaab Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo4.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo5.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo5.PNG" new file mode 100644 index 0000000..4dede52 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/foo5.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/greeting.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/greeting.PNG" new file mode 100644 index 0000000..1953c49 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/greeting.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/plus10.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/plus10.PNG" new file mode 100644 index 0000000..ff4525a Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/plus10.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/shadow.PNG" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/shadow.PNG" new file mode 100644 index 0000000..4e1c3b5 Binary files /dev/null and "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/shadow.PNG" differ diff --git "a/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244.md" "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244.md" new file mode 100644 index 0000000..bef6d39 --- /dev/null +++ "b/ojy-study/java 8/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244/\355\225\250\354\210\230\355\230\225 \354\235\270\355\204\260\355\216\230\354\235\264\354\212\244\354\231\200 \353\236\214\353\213\244.md" @@ -0,0 +1,252 @@ +# 함수형 인터페이스와 람다 + + +### 람다식 표현 + +----------------- +**함수형 인터페이스** + +- SAM인터페이스 +- @FuncionalInterface에노테이션으 가지고 있는 인터페이스 +- 인터페이스 안에서 추상메서드가 2개 있으면 안됨 (abstract 생략가능) + + ``` + public interface RunSomething { + + void doIt(); //1개만 + + } + + ``` + +- static, default등 다른 메소드가 있더라도 추상메소드가 1개 있다면 functional interface이다 + + ``` + @functionalInterface + public interface RunSomething { + + void doIt(); //1개만 + + static void printName(){ + System.out.println("Jiyoung"); + } + + default void printAge(){ + System.out.println("24"); + } + } + + ``` + +위에 @funcionalInterface를 하면 좀더 견고해짐 + +
+ + +**람다 표현식** + +- 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있음 +- 코드를 줄일 수 있음 +- 메소드 매개변수, 리턴 타입, 변수로 만들어 사용할 수 있음 + +* 바꾸기 전 + ``` + RunSomething runSomething = new RunSomething(){ + @Override + public void doIt(){ + System.out.println("Hello"); + } + } + ``` + +* 람다 표현 + ``` + RunSomething runSomething = () -> System.out.println("Hello"); + ``` + +*함수 안에 한 줄만 있을 경우에만 가능* + +
+ +**자바에서 함수형 프로그래밍** + +- 함수를 First class object로 사용할 수 있음 +- 고차함수 + - 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있음 +- 순수함수 + - 사이드 이팩트가 없다(함수 밖에 있는 값을 변경하지 않음 + ) + - 상태가 없음(함수 밖에 있는 값을 사용하지 않음) +- 불변성 + +
+ +*수학적인 함수에서 가장 중요한것은 입력받은 값이 같은 경우 결과값이 같아야한다* + +- 순수하지 않은 함수 + ``` + -> int number =10; + RunSomething runSomething = new RunSomething(){ + -> int number =10; + @Override + public void doIt(){ + System.out.println("Hello"); + } + } + ``` + +
+ +### 자바에서 제공하는 함수형 인터페이스 + +------------------ + +**function은 어떤 값을 받아서 다른 곳에 리턴** +- apply라는 메소드만 구현하면 됨 + + ![plus10](plus10.PNG) + ![foo1](foo1.PNG) + + + *람다식으로 표현* + + ![foo2](foo2.PNG) + + +*함수 2개를 사용하여 값 반환* + +1. 함수 2개를 compose + + ![foo3](foo3.PNG) + + - compose를 쓰면 고차함수의 성격으로 multiply2를 먼저하고 그 값을 plus10에 입력값으로 삼음 + +2. 함수 2개를 1줄로 + + ![foo4](foo4.PNG) + +3. andThen 사용 + - +10을 가고 그 결과값을 이어서 multiply함수에 입력값으로 넣어줌 + + ![foo5](foo5.PNG) + + +**Consumer** + +``` + Consumer printT = (i) -> System.out.println(1); + + printT.accept(10); +``` + +**Supplier** + +``` +Supplier get10 = () -> 10; +System.out.println(get10); +``` + +**Predicate** + +``` +Predicate startWithOjy = (s) -> s.startsWith("Ojy"); +``` + +**UnaryOperator** + +``` +UnaryOperator plus10 = (i) -> i+10; +UnaryOperator multiply2 = (i) -> i+2; + +System.out.println(plus10.andThen(multiply2).apply(2)); +``` + +### 람다 표현식 + +*example* + +1. 인자가 1개일 경우 +ex1) + +``` +Supplier get10 = () -> { + return 10; + }; + +or + +Supplier get10 = () -> 10; +``` + +2. 인자가 2개 이상일 경우 + +``` +BinaryOperator sum = ( a, b) -> a+b; +``` + +***변수 캡처*** + +![class](class.PNG) + +- 로컬 변수 캡처 + - final이거나 effective final인경우에만 참조 가능 + - 그렇지 않을 경우 concurrency 문제가 생길 수 있어서 컴파일 방지한다 +- effective final + - 사실상 final인 변수 + - final 키워드 사용하지 않은 변수를 익명클래스 구현체 또는 람다에서 참조할 수 있다 +- 익명 클래스와 달리 람다는 쉐도잉 하지 않음 + - 익명 클래스는 새로 스콥을 만들지만, 람다는 람다를 감싸고 있는 스콥과 같다 + + ![shadow](shadow.PNG) + ![basenumber](basenumber.PNG) + + +### 메소드 레퍼런스 + +---------------------- + +람다가 하는 일이 기존 메소드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다 + +***메소드 참조하는 방법*** + +![greeting](greeting.PNG) + +1. 스태틱 메소드 참조 + +타입::스태틱 메소드 + +``` +public static void main(String[] args){ + UnaryOperator hi =Greeting::hi; + } +``` + +2. 특정 객체의 인스턴스 메소드 참조 + +객체 레퍼런스::인스턴스 메소드 + +``` +Function KeesunGreeting = Greeting::new; +Greeting keesun = KeesunGreeting.apply("Kessun"); + +Supplier newGreeting = Greeting::new; +``` + +3. 임의 객체의 인스턴스 메소드 참조 + +타입::인스턴스 메소드 + +``` +public static void main(String[] args){ + String[] names = {"keesun","whiteship","toby"}; + Arrays.sort(names,String::compareToIgnoreCase); + + System.out.println(Arrays.toString(names)); + } +``` + + +
+ + + diff --git a/ojy-study/junit/.gradle/6.3/executionHistory/executionHistory.lock b/ojy-study/junit/.gradle/6.3/executionHistory/executionHistory.lock new file mode 100644 index 0000000..273d1db Binary files /dev/null and b/ojy-study/junit/.gradle/6.3/executionHistory/executionHistory.lock differ diff --git a/ojy-study/junit/.gradle/6.3/fileChanges/last-build.bin b/ojy-study/junit/.gradle/6.3/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/ojy-study/junit/.gradle/6.3/fileChanges/last-build.bin differ diff --git a/ojy-study/junit/.gradle/6.3/fileHashes/fileHashes.lock b/ojy-study/junit/.gradle/6.3/fileHashes/fileHashes.lock new file mode 100644 index 0000000..9f5b09e Binary files /dev/null and b/ojy-study/junit/.gradle/6.3/fileHashes/fileHashes.lock differ diff --git a/ojy-study/junit/.gradle/6.3/gc.properties b/ojy-study/junit/.gradle/6.3/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/junit/.gradle/6.5/executionHistory/executionHistory.bin b/ojy-study/junit/.gradle/6.5/executionHistory/executionHistory.bin new file mode 100644 index 0000000..ed296ae Binary files /dev/null and b/ojy-study/junit/.gradle/6.5/executionHistory/executionHistory.bin differ diff --git a/ojy-study/junit/.gradle/6.5/executionHistory/executionHistory.lock b/ojy-study/junit/.gradle/6.5/executionHistory/executionHistory.lock new file mode 100644 index 0000000..513410a Binary files /dev/null and b/ojy-study/junit/.gradle/6.5/executionHistory/executionHistory.lock differ diff --git a/ojy-study/junit/.gradle/6.5/fileChanges/last-build.bin b/ojy-study/junit/.gradle/6.5/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/ojy-study/junit/.gradle/6.5/fileChanges/last-build.bin differ diff --git a/ojy-study/junit/.gradle/6.5/fileHashes/fileHashes.bin b/ojy-study/junit/.gradle/6.5/fileHashes/fileHashes.bin new file mode 100644 index 0000000..bf9aa64 Binary files /dev/null and b/ojy-study/junit/.gradle/6.5/fileHashes/fileHashes.bin differ diff --git a/ojy-study/junit/.gradle/6.5/fileHashes/fileHashes.lock b/ojy-study/junit/.gradle/6.5/fileHashes/fileHashes.lock new file mode 100644 index 0000000..8a061d3 Binary files /dev/null and b/ojy-study/junit/.gradle/6.5/fileHashes/fileHashes.lock differ diff --git a/ojy-study/junit/.gradle/6.5/gc.properties b/ojy-study/junit/.gradle/6.5/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/junit/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/ojy-study/junit/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..f1de2d1 Binary files /dev/null and b/ojy-study/junit/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/ojy-study/junit/.gradle/buildOutputCleanup/cache.properties b/ojy-study/junit/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..1a0aadb --- /dev/null +++ b/ojy-study/junit/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Mon Aug 31 01:52:01 KST 2020 +gradle.version=6.3 diff --git a/ojy-study/junit/.gradle/checksums/checksums.lock b/ojy-study/junit/.gradle/checksums/checksums.lock new file mode 100644 index 0000000..c0783e7 Binary files /dev/null and b/ojy-study/junit/.gradle/checksums/checksums.lock differ diff --git a/ojy-study/junit/.gradle/checksums/md5-checksums.bin b/ojy-study/junit/.gradle/checksums/md5-checksums.bin new file mode 100644 index 0000000..40c6be3 Binary files /dev/null and b/ojy-study/junit/.gradle/checksums/md5-checksums.bin differ diff --git a/ojy-study/junit/.gradle/checksums/sha1-checksums.bin b/ojy-study/junit/.gradle/checksums/sha1-checksums.bin new file mode 100644 index 0000000..1790056 Binary files /dev/null and b/ojy-study/junit/.gradle/checksums/sha1-checksums.bin differ diff --git a/ojy-study/junit/.gradle/vcs-1/gc.properties b/ojy-study/junit/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/junit/.idea/.gitignore b/ojy-study/junit/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/ojy-study/junit/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/ojy-study/junit/.idea/codeStyles/Project.xml b/ojy-study/junit/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..919ce1f --- /dev/null +++ b/ojy-study/junit/.idea/codeStyles/Project.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/ojy-study/junit/.idea/codeStyles/codeStyleConfig.xml b/ojy-study/junit/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/ojy-study/junit/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/ojy-study/junit/.idea/compiler.xml b/ojy-study/junit/.idea/compiler.xml new file mode 100644 index 0000000..ac216bc --- /dev/null +++ b/ojy-study/junit/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ojy-study/junit/.idea/gradle.xml b/ojy-study/junit/.idea/gradle.xml new file mode 100644 index 0000000..ba1ec5c --- /dev/null +++ b/ojy-study/junit/.idea/gradle.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/ojy-study/junit/.idea/jarRepositories.xml b/ojy-study/junit/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/ojy-study/junit/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ojy-study/junit/.idea/misc.xml b/ojy-study/junit/.idea/misc.xml new file mode 100644 index 0000000..1b578d5 --- /dev/null +++ b/ojy-study/junit/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ojy-study/junit/.idea/vcs.xml b/ojy-study/junit/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/ojy-study/junit/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ojy-study/junit/JUnit5.md b/ojy-study/junit/JUnit5.md new file mode 100644 index 0000000..e69de29 diff --git a/ojy-study/junit/build.gradle b/ojy-study/junit/build.gradle new file mode 100644 index 0000000..95df5f5 --- /dev/null +++ b/ojy-study/junit/build.gradle @@ -0,0 +1,14 @@ +plugins { + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.12' +} diff --git a/ojy-study/junit/gradle/wrapper/gradle-wrapper.jar b/ojy-study/junit/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..62d4c05 Binary files /dev/null and b/ojy-study/junit/gradle/wrapper/gradle-wrapper.jar differ diff --git a/ojy-study/junit/gradle/wrapper/gradle-wrapper.properties b/ojy-study/junit/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a4b4429 --- /dev/null +++ b/ojy-study/junit/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/ojy-study/junit/gradlew b/ojy-study/junit/gradlew new file mode 100644 index 0000000..fbd7c51 --- /dev/null +++ b/ojy-study/junit/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed 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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/ojy-study/junit/gradlew.bat b/ojy-study/junit/gradlew.bat new file mode 100644 index 0000000..5093609 --- /dev/null +++ b/ojy-study/junit/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem 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, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/ojy-study/junit/junit.PNG b/ojy-study/junit/junit.PNG new file mode 100644 index 0000000..fd4b033 Binary files /dev/null and b/ojy-study/junit/junit.PNG differ diff --git a/ojy-study/junit/settings.gradle b/ojy-study/junit/settings.gradle new file mode 100644 index 0000000..e01a80b --- /dev/null +++ b/ojy-study/junit/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'junit' +