| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- url
- 2024-08-20
- IOC
- reflection
- URN
- ํ๋ IT&E
- ์ด๋ ธํ ์ด์
- 2024-08-21
- Android Studio
- menutab
- udp
- datepicker
- swagger
- AndroidStudio
- Dialog
- OOP
- di
- Python
- Factory Method Pattern
- fontstyle
- tcp
- ๊ธฐ์ด100์
- OpenAPI
- ์ฑ์ฉํ์ ํ
- http method
- Kotlin
- FACTORY
- uri
- ์ฝ๋์
๋ชฉ๋ก์ ์ฒด ๊ธ (77)
dingdong coding
Spring ? • ์๋ฐ ์ธ์ด ๊ธฐ๋ฐ( ๊ฐ์ฒด์งํฅ ์ธ์ด )์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ ํ๋ ์์ํฌ • ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ๊ณผ์ ์ ๋น ๋ฅด๊ณ ํธ๋ฆฌํ๋ฉฐ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ค. • ์ด๊ธฐ์ ๊ธฐ๋ณธ ์ค์ ๊ณผ ๊ธฐ์ ์ ์ ์ค์ ํ๋ฉด ์คํ๋ง๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ API์ ๋ํด ๊ฐ๋ฐ์๊ฐ ๊ฑฐ์ ์ ๊ฒฝ ์ธ ์ผ์ด ์๋ค. • ์ด๋ Spring Boot, Spring Framework์ ๋ํด ์์๋ณธ๋ค๋ฉด Spring์ด ์ผ๋ง๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋์ง ์ ์ ์๋ค. • spring framework, spring boot๋ฅผ ๋ชจ๋ ํฌํจํ ์คํ๋ง ์ํ๊ณ • ๊ฐ์ฒด์งํฅ ์ธ์ด๊ฐ ๊ฐ์ง ํน์ง์ ์ด๋ ค๋ด ์ข์ ๊ฐ์ฒด์งํฅ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋ค. • Spring์ ํต์ฌ ํน์ง์ธ ์ ์ด์ ์ญ์ (Ioc), ์์กด๊ด๊ณ ์ฃผ์ (DI)์ ์ด์ฉํด ๋คํ์ฑ์ ์ ์งํค๋ฉฐ..
์คํ๋ง ๋น(Spring Bean) ์ด๋? ๋น ( Bean ) Spring Ioc ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ์๋ฐ ๊ฐ์ฒด. ์ฆ, ์คํ๋ง ์ปจํ ์ด๋์ ์ํด์ ์๋ฐ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด ์ง๊ฒ ๋๋ฉด ์ด ๊ฐ์ฒด๋ฅผ ์คํ๋ง์ ์คํ๋ง ๋น์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ๋๋ค. ์ ์ด์ ์ญ์ Ioc ๊ธฐ์กด์ Java ํ๋ก๊ทธ๋๋ฐ์์๋ ํด๋์ค๋ฅผ ์์ฑํ๊ณ new๋ก ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉํ์ต๋๋ค. ํ์ง๋ง Spring์์๋ new๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ ๊ฐ์ฒด๊ฐ ์๋, Spring์ ์ํด ๊ด๋ฆฌ๋์ด์ง๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, Spring์ ์ํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ Bean์ด๋ผ ํฉ๋๋ค. Spring Bean, Ioc Container์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ 1. Annotation ์ด์ฉ • @Component ์ ๋ ธํ ์ด์ ์ด ์๋ค๋ฉด ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก ๋ฉ..
spring-boot-starter-web์ ์ ํํ๋ค๋ฉด ์๋์ผ๋ก spring-boot-starter-test ์์กด์ฑ์ด ์ถ๊ฐ๋์ด์์ต๋๋ค. spring-boot-starter์ junit5๊ฐ ์์ด ๋ฐ๋ก junit5๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. build.gradle > dependecies testImplementation 'org.springframework.boot:spring-boot-starter-test' RuntimeException์ด ๋ฐ์ํ๋ ๋ฉ์๋ public class DoSomething { public static void func() { throw new RuntimeException("some exception message..."); } } 1. assertThrows Assertions..
SQL Injection ์ด๋? • ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ๋ณด์์์ ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ์กฐ์๋ SQL query๋ฌธ์ DataBase์ ์ฃผ์ ์์ผ ๋น์ ์์ ๋ช ๋ น์ ์คํ์ํค๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ ( web hacking techniques ) • ํด๋น ๊ณต๊ฒฉ์ ๋ฐ์ผ๋ฉด ์กฐ์ง ๋ด๋ถ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ํ๋ํ ์ ์์ผ๋ฉฐ, ์ฌ๊ฐํ ๊ฒฝ์ฐ ์กฐ์ง ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ์ฅ์ ํ๊ฑฐ๋ ์์์ํฌ ์ ์์ต๋๋ค. ๊ณต๊ฒฉ ๋ฐฉ๋ฒ 1 ) ์ธ์ฆ์ฐํ • SQL injection์ ๋ณดํต ์ฌ์ฉ์์๊ฒ ๋ก๊ทธ์ธ(username, userid)๊ณผ ๊ฐ์ ์ ๋ ฅ ์์ฒญ ์ ๋ฐ์ํฉ๋๋ค. • ์ ์์ ์ธ ๊ณ์ ์ ๋ณด ์์ด๋ ๋ก๊ทธ์ธ์ ์ฐํํ์ฌ ์ธ์ฆ์ ํ๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์ด๋๊ฐ abc, ๋น๋ฐ๋ฒํธ๊ฐ 1234์ผ ๋ ์ฟผ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ก๋ ๊ฒ์ ๋๋ค. SELECT * FROM US..
1. ๋ชจํ๊ฐ ๊ธธ๋ • ๋ฌธ์ ํ ๋ง์์ ๋ชจํ๊ฐ๊ฐ N๋ช ์์ต๋๋ค. ๋ชจํ๊ฐ ๊ธธ๋์์๋ N๋ช ์ ๋ชจํ๊ฐ๋ฅผ ๋์์ผ๋ก '๊ณตํฌ๋'๋ฅผ ์ธก์ ํ๋๋ฐ, '๊ณตํฌ๋'๊ฐ ๋์ ๋ชจํ๊ฐ๋ ์ฝ๊ฒ ๊ณตํฌ๋ฅผ ๋๊ปด ์ํ ์ํฉ์์ ์ ๋๋ก ๋์ฒํ ๋ฅ๋ ฅ์ด ๋จ์ด์ง๋๋ค. ๋ชจํ๊ฐ ๊ธธ๋์ฅ์ธ ๋๋น์ด๋ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ์์ ํ๊ฒ ๊ตฌ์ฑํ๊ณ ์ ๊ณตํฌ๋๊ฐ X์ธ ๋ชจํ๊ฐ๋ ๋ฐ๋์ X๋ช ์ด์์ผ๋ก ๊ตฌ์ฑํ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ์ฐธ์ฌํด์ผ ์ฌํ์ ๋ ๋ ์ ์๋๋ก ๊ท์ ํ์ต๋๋ค. ๋๋น์ด๋ ํ๋ ๋ช ๊ฐ์ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ๋ง๋ค ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ** ๋ชจ๋ ๋ชจํ๊ฐ๋ฅผ ํน์ ํ ๊ทธ๋ฃน์ ๋ฃ์ ํ์๋ ์์ต๋๋ค. ** • ์ ๋ ฅ์กฐ๊ฑด - ์ฒซ์งธ ์ค์ ๋ชจํ๊ฐ์ ์ N์ด ์ฃผ์ด์ง๋ค. ( 1 ≤ N ≤ 100,000 ) - ๋์งธ ์ค์๋ ๊ฐ ๋ชจํ๊ฐ์ ๊ณตํฌ๋ ๊ฐ์ N ์ดํ์ ์์ฐ์๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ..
MVC๋? MVC ํจํด์ ์ํคํ ์ณ๋ฅผ ์ค๊ณํ๊ธฐ ์ํ ๋์์ธ ํจํด์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ ๊ตฌ์ฑ์์๋ฅผ 3๊ฐ์ง๋ก ๋๋๋๋ค. ์ด๋ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ๋ถ์์ผ ์๋ก ์ํฅ์์ด ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. • M ( Model ) "๋ฌด์์" - ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปดํฌ๋ํธ - ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถํ ๋, ์์ฒญ์ ๋ง๋ ์ญํ ์ ์ํํฉ๋๋ค. - ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ์์ญ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค. • V ( View ) - ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI) ์ปดํฌ๋ํธ - Controller๋ก ๋ถํฐ ๋ฐ์ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ๊ณ ์ถ๋ ฅํ ํ๋ฉด์ ๋ง๋๋ ์ผ์ ํฉ๋๋ค. - ์์ฑ๋ ํ๋ฉด์ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์กํ๊ณ ์ถ๋ ฅํ๊ฒ ๋ง๋ญ๋๋ค. - ์ฌ์ฉ์์ ์ํธ์์ฉ(๋ฐ์ดํฐํ์, ์ ๋ ฅ ํผ ๋ฑ)์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ..
RESTful API REST์ ๊ธฐ๋ณธ ์์น์ ์ฑ์คํ ์งํจ API REST ๋? : REpresenrational State Transfer ( + ful ~ํ ) ์ ์ค์๋ง๋ก ์ฆ, ์น์ ์ํ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์ํคํ ์ณ ์คํ์ผ์ ๋๋ค. ๋คํธ์ํฌ ๊ธฐ๋ฐ ์ํคํ ์ณ ๊ณ ๋ ค์ฌํญ์๋ ์ฑ๋ฅ, ๊ท๋ชจํ์ฅ์ฑ(Scalability), ๋จ์์ฑ, ์์ ์ฉ์ด์ฑ(Modifiability), ๊ฐ์์ฑ(Visibility), ์ด์์ฑ(Portability), ์ ๋ขฐ์ฑ(Reliability) ์ด ์์ต๋๋ค. REST๋ ํ๋์ Architecture๋ก Resource Oriented Architecture ์ฆ, " API ์ค๊ณ ์ค์ฌ์ ์์์ด ์๊ณ HTTP Method๋ฅผ ํตํด ์์์ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณํ๋ ๊ฒ" ์ ๋๋ค. ๋ฐ๋ผ์ REST์ ๊ธฐ๋ณธ ์์น์ ์ฑ์คํ ์ง..
Optional ์ด๋? ๊ฐ๋ฐ์ ํ ๋ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ํ๋ ์์ธ ์ค ํ๋๋ ๋ฐ๋ก NullPointerException ์ ๋๋ค. NullPointerException ์ ํผํ๊ณ null ์ฒดํฌํ๋ ๋ก์ง์ ์ค์ด๊ธฐ ์ํด ๋น ๊ฐ์ผ ๋ null ๋์ ์ด๊ธฐ๊ฐ์ ์ฌ์ฉํ๊ธธ ๊ถ์ฅํ๊ณค ํฉ๋๋ค. List names = getNames(); names.sort(); // names ๊ฐ null ์ด๋ผ๋ฉด NullPointerException ์ด ์ผ์ด๋๋ค. ์๋ฐ 8์์๋ Optional ํด๋์ค๋ฅผ ์ด์ฉํด์ NullPointerException ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ฆ, ๋ณต์กํ ์กฐ๊ฑด๋ฌธ ์์ด๋ ๋(null) ๊ฐ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค. public final class Optional { // If non-nu..
• ์๋ก์ ์งํฉ (Disjoint Sets) : ๊ณตํต ์์๊ฐ ์๋ ๋ ์งํฉ์ ์๋ฏธํฉ๋๋ค. • ์๋ก์ ๋ถ๋ถ ์งํฉ๋ค๋ก ๋๋์ด์ง ์์๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. • ์๋ก์ ์งํฉ ์๋ฃ๊ตฌ์กฐ๋ ๋ ์ข ๋ฅ์ ์ฐ์ฐ์ ์ง์ํฉ๋๋ค. • ํฉ์งํฉ(Union) : ๋ ๊ฐ์ ์์๊ฐ ํฌํจ๋ ์งํฉ์ ํ๋์ ์งํฉ์ผ๋ก ํฉ์น๋ ์ฐ์ฐ์ ๋๋ค. • ์ฐพ๊ธฐ(Find) : ํน์ ํ ์์๊ฐ ์ํ ์งํฉ์ด ์ด๋ค ์งํฉ์ธ์ง ์๋ ค์ฃผ๋ ์ฐ์ฐ์ ๋๋ค. • ์๋ก์ ์งํฉ ์๋ฃ๊ตฌ์กฐ๋ ํฉ์น๊ธฐ ์ฐพ๊ธฐ(Union Find) ์๋ฃ๊ตฌ์กฐ๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค. • ์ฌ๋ฌ ๊ฐ์ ํฉ์น๊ธฐ ์ฐ์ฐ์ด ์ฃผ์ด์ก์ ๋ ์๋ก์ ์งํฉ ์๋ฃ๊ตฌ์กฐ์ ๋์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1. ํฉ์งํฉ(Union) ์ฐ์ฐ์ ํ์ธํ๋ฉฐ, ์๋ก ์ฐ๊ฒฐ๋ ๋ ๋ ธ๋ A, B๋ฅผ ํ์ธํฉ๋๋ค. 1) A์ B์ ๋ฃจํธ ๋ ธ๋ A'..
์ด๋ ธํ ์ด์ ์ด๋? • @ ์ฌ์ธ ํ๋๋ก ๋ง์ ์ปจํ ์คํธ๋ค์ ์ ๊ณต ๋ฐ์ ์ ์๊ฒ ํ๋ค. • @ ์ฌ์ธ์ผ๋ก ์์ํ๋ ๊ฒ์ ์ด๋ ธํ ์ด์ ์ด๋ผ๊ณ ํ๋ค. Spring์ผ๋ก ๊ฐ๋ฐํ ๋ ์ด๋ ธํ ์ด์ ์์ด ๊ฐ๋ฐํ๋ ๊ฒ์ ๊ฑฐ์ ๋ณผ ์ ์๋ค. Controller ๋ฑ๋ก์ด๋ Service, Repository, Test ๋ฑ ์์ฐ์ด๋ ๊ณณ์ด ์์ ์ ๋๋ค. ๋ง์ด ์ฐ์์๋ ๊ฐ๋ฐํ๋ค๊ฐ ๊ฐ๋ ์๊ฐ์ด ์๋๊ฑฐ๋ ๊น๋จน์ ๋๊ฐ ์๊ธฐ์ ์ง๊ธ์ด๋ผ๋ ์กฐ๊ธ์ฉ ์ ๋ฆฌํ ์๊ฐ์ด๋ค. ํฌ์คํธ์ ์ฒ๋ผ ๊ณ์ ์ถ๊ฐํ ์์ โ๏ธ @AfterEach : ๊ฐ ํ ์คํธ๊ฐ ์ข ๋ฃ๋ ๋๋ง๋ค ์คํ 1) Test Case๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ : ๋ฉ๋ชจ๋ฆฌ DB์ ๋จ์์๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค. (์ง์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํด์ค) clearStore ๋ฉ์๋ public void clearStore(){ st..