week 3 incheol - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
๊ธฐ์ ๋ฌธ์
-
JAVA (๋ฐํจ์)
-
Java8์ heap ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํด์ฃผ์ธ์ ๊ทธ๋ฆฌ๊ณ ํ์์ญ๊ณผ ์คํ์์ญ์ ๋ํด์ ์ค๋ช ํ์์ค
-
stack
์ฐ๋ฆฌ๊ฐ ํ์ฌ๊น์ง ์์ฑํ๋ ๋ฉ์๋ ๋ด์์ ์ ์ํ๋ ๊ธฐ๋ณธ ์๋ฃํ(int, double, byte, long, boolean ๋ฑ)์ ํด๋น๋๋ ์ง์ญ๋ณ์(๋งค๊ฐ ๋ณ์ ๋ฐ ๋ธ๋ญ๋ฌธ ๋ด ๋ณ์ ํฌํจ)์ ๋ฐ์ดํฐ์ ๊ฐ์ด ์ ์ฅ๋๋ ๊ณต๊ฐ์ด Stack(์คํ) ์์ญ์ด๋ค.
-
heap
์ฐธ์กฐํ(Reference Type)์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ๋ ๊ฐ์ฒด(์ธ์คํด์ค), ๋ฐฐ์ด ๋ฑ์ Heap ์์ญ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค. ์ด๋ ๋ณ์(๊ฐ์ฒด, ๊ฐ์ฒด๋ณ์, ์ฐธ์กฐ๋ณ์)๋ Stack ์์ญ์ ๊ณต๊ฐ์์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ Heap ์์ญ์ ์ฐธ์กฐ๊ฐ(reference value, ํด์์ฝ๋ / ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์ฃผ์๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๊ฐ)์ new ์ฐ์ฐ์๋ฅผ ํตํด ๋ฆฌํด ๋ฐ๋๋ค. ๋ค์ ๋งํ๋ฉด ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ Heap ์์ญ์ ์ฐธ์กฐ ๊ฐ์ Stack ์์ญ์ ๊ฐ์ฒด๊ฐ ๊ฐ๊ณ ์๋ค. ์ด๋ ๊ฒ ๋ฆฌํด ๋ฐ์ ์ฐธ์กฐ ๊ฐ์ ๊ฐ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ํตํด์๋ง ํด๋น ์ธ์คํด์ค๋ฅผ ํธ๋ค ํ ์ ์๋ค.
-
-
์๋ฐ8์์ ์๊ฐ๋ ๋๋ค์๊ณผ ๋ฉ์๋ ๋ ํผ๋ฐ์ค๋ฅผ ์ค๋ช ํ๋ผ.
- ๋๋ค๋ ์๋ณ์ ์์ด ์คํ ๊ฐ๋ฅํ ํจ์์ด๋ค.
- ๋๋ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์๋ ์ธํฐํ์ด์ค ํ๋์ ๋ฉ์๋ ํ๋๋ง ์ ๊ณตํด์ผ ํ๋ค. ์ด๊ฒ์ด ํจ์ํ ์ธํฐํ์ด์ค์ด๋ค.
- ๋๋ค์ ์ฅ์
- ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ์์ ๊ฐ๋ฐ์์ ์๋๊ฐ ๋ช ํํ ๋๋ฌ๋๋ฏ๋ก ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
- ํจ์๋ฅผ ๋ง๋๋ ๊ณผ์ ์์ด ํ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๊ธฐ์ ์ฝ๋ฉํ๋ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.
- ๋ณ๋ ฌํ๋ก๊ทธ๋๋ฐ์ด ์ฉ์ดํฉ๋๋ค.
- ๋๋ค์ ๋จ์
- ๋๋ค๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ง๋๋ ๋ฌด๋ช ํจ์๋ ์ฌ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ๋๋ฒ๊น ์ด ๋ค์ ๊น๋ค๋กญ์ต๋๋ค.
- ๋๋ค๋ฅผ ๋จ๋ฐํ๋ฉด ์ฝ๋๊ฐ ์ง์ ๋ถํด์ง ์ ์์ต๋๋ค. (๋น์ทํ ํจ์๋ฅผ ๊ณ์ ์ค๋ณต์์ฑ ํ ๊ฐ๋ฅ์ฑ์ด ๋์)
- ์ฌ๊ท๋ก ๋ง๋ค๊ฒฝ์ฐ์๋ ๋ค์ ๋ถ์ ํฉํ๋ฉด์ด ์์ต๋๋ค.
- Stream์ด๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ํ์คํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
-
checked-exception VS unchecked-exception ์ฐจ์ด์ ์ ์ค๋ช ํด๋ณด์ธ์.
- Checked Exception
- ๋ฐ๋์ ์์ธ๋ฅผ ์ฒ๋ฆฌ ํด์ผ ํ๋ค.
- ์ปดํ์ผ ์๊ฐ์ ํ์ธ ํ ์ ์๋ค.
- ์์ธ ๋ฐ์ ์ ๋กค๋ฐฑ ๋ถ๊ฐ๋ฅ ํ๋ค.
- ์ข
๋ฅ
- IOException
- SQLException
- UnChecked Exception
- ๋ช ์์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ ํ์ง ์๋๋ค.
- ๋ฐํ์์ ํ์ธ ํ ์ ์๋ค.
- ์์ธ ๋ฐ์ ์ ๋กค๋ฐฑ ๊ฐ๋ฅํ๋ค.
- ์ข
๋ฅ
- NullPointerException
- IllegalArgumentException
- IndexOutOfBoundsException
- SystemException
- ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
- ์์ธ ๋ณต๊ตฌ : try, catch, finally ๋ธ๋ก์ ํตํด ์์ธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋์ฒํ๋ค.
- ์์ธ ์ฒ๋ฆฌ ํํผ : throws ํ์ฌ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค.
- ์์ธ ์ ํ : ์์ธ๊ฐ ๋ฐ์ํ๋ฉด catch ๋ธ๋ก์์์ ๋ด๋ถ ๊ท์ ์ ํต์ฉ๋๋ ์์ธ๋ก ๋ณํํ์ฌ ์์ํ๋ค.
- Checked Exception
-
-
SPRING (์ฃผ์ข ํ)
-
@Service, @Component์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ?
- ์คํ ๋ ์ค ํ์ : ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์คํ๋ง ๊ด๋ฆฌ ์ปดํฌ๋ํธ๋ก ์๋ณํ๊ฒ ํด์ฃผ๋ ๋จ์ํ ๋ง์ปค๋ค.
- @Component : ๋น์ผ๋ก ๊ฐ์ฃผ๋์ด DI ์ปจํ ์ด๋์์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ณธ ์ด๋ ธํ ์ด์ ์ด๋ค.
- @Service : Hibernate์๊ฒ Transaction์ ๊ฐ์ง์ ์๋๋ก ์๋ ค์ค๋ค.
- @Repository : ๊ฒ์ฌ ๋์ง ์์ ์์ธ(DAO ๋ฉ์๋์์ ๋ฐ์)๋ฅผ Spring DataAccessException์ผ๋ก ๋ณํ ํ ์ ์๊ฒ ํด์ค๋ค.
- @Controller : Dispatcher Sevlet์์ ์ ๊ณต๋๋ฉฐ ์ฌ๊ธฐ์ @RequestMapping ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์์ฒญ์ ํน์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํ ์ ์๊ฒ ํด์ค๋ค.
-
์คํ๋ง MVC ์น ์์ฒญ ์ฒ๋ฆฌ๊ณผ์ ์ ์ค๋ช ํ์์ค
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ด๋ค ์์ฒญ์ ํ๋ฉด DispatcherServlet์ด๋ผ๋ ํด๋์ค๊ฐ ์์ฒญ์ ๊ฐ๋ก์ฑ๋ค.
- DispatcherServlet์ด ๊ฐ๋ก์ฑ ์์ฒญ์ HandlerMapping์๊ฒ ๋ณด๋ด ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ Controller๋ฅผ ์ฐพ๋๋ค.
- ๋ชจ๋ ๋ก์ง์ ๋๋ธ ์๋น์ค๋ ์ปจํธ๋กค๋ฌ์ ๋๊ธฐ๊ณ ์ปจํธ๋กค๋ฌ๋ Model๊ฐ์ฒด์ ๊ฒฐ๊ณผ๋ฌผ์ ์ด๋ค view๋ก ๋ณด์ฌ์ค ๊ฒ์ธ์ง ์ ๋ณด๋ฅผ ๋ด์ ๋์คํจ์ฒ์๋ธ๋ฆฟ์๊ฒ ๋ณด๋ธ๋ค.
- DispatcherServlet์ ์๋ตํ View๋ฅผ ์ฐพ๊ณ View๋ ์๋ต๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
- DispatcherServlet์ด ํด๋ผ์ด์ธํธ์๊ฒ ๋ ๋๋ง๋ View๋ฅผ ์๋ตํ๋ค.
-
@EnableWebMvc ๋ ์ด๋์ ํ์ํ์ง ์ค๋ช ํ์์ค
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import(DelegatingWebMvcConfiguration.class) public @interface EnableWebMvc { }
@Import(DelegatingWebMvcConfiguration.class)ํด๋น ๋ถ๋ถ์ Importํ๊ฒ ๋๋๋ฐ ํด๋น ํด๋ ์ค์ ๊ทธ ์์์ ์์ํ๋ WebMvcConfigurationSupport๋ฅผ ๋ณด๋ฉด MVC์์ ํ์ํ ๊ธฐ๋ณธ์ ์ธ ์ธํ ์ ํด์ฃผ๊ฑฐ๋, ์น ๊ด๋ จ ์ค์ ์ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ DelegatingWebMvcConfiguration๋ WebMvcConfigurer ๋ฅผ implementํ ๋น๋ค์ ํตํด์ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๊ฒ ๋์์ฃผ๋ ํด๋ ์ค๋ก ๋ณผ ์ ์์ผ๋ฉฐ, DelegatingWebMvcConfiguration ์์ protected๋ก ์ง์ํด๋ ํจ์์ ์ค๋ช ์ ๋ณด๋ฉด ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ ๋ฆฌ์คํธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค
WebMvcConfigurer ์ธํฐํ์ด์ค๋ฅผ implements ๋๋ ๋์ง๋ง, ๋ชจ๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋์ด ํด์ค์ผ ํ๋ค. ๋ฐ๋ผ์, WebMvcConfigurer ๋ณด๋ค๋ WebMvcConfigurerAdapter ํด๋์ค๋ฅผ extends ํด์ ํ์ํ ๋ฉ์๋๋ง ์ค๋ฒ๋ผ์ด๋ฉ ํด์ฃผ๋ ํธ์ด ๋ ๊น๋ํ๋ค.
-
-
Infra/์ด์ (์ ์ ํ)
-
heap dump๋ฅผ ํ๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
-
๋ ๋์ค ์บ์๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผํ๋?
๋ ๋์ค๋ฅผ ์ ์ฌ์ฉํ๋๊ฐ
๋ฐ์ดํฐ ๋๋ถ๋ถ์ ๋์คํฌ ๋๋ SSD์ ์ ์ฅํ๋ PostgreSQL, Cassandra, MongoDB ๋ฑ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ฌ๋ฆฌ ๋ชจ๋ Redis ๋ฐ์ดํฐ๋ ์๋ฒ์ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํฉ๋๋ค. ์์ ์ ์ํด ๋๋ถ๋ถ ๋์คํฌ๊น์ง ์๋ณตํด์ผ ํ๋ ์ ํต์ ์ธ ๋์คํฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์กฐ์ ์ผ๋ก, Redis์ ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์คํ ์ด๋ ์ด์ ๊ฐ์ ๋จ์ ์ด ์์ต๋๋ค
Cache์ ๋์์ด ๋๋ ์ ๋ณด๋ค
- ๋จ์ํ, ๋๋ ๋จ์ํ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ -> ์ ๋ณด์ ๋จ์์ฑ
- ๋ฐ๋ณต์ ์ผ๋ก ๋์ผํ๊ฒ ์ ๊ณตํด์ผ ํ๊ฑฐ๋ -> ๋น๋ฒํ ๋์ผ์์ฒญ์ ๋ฐ๋ณต
- ์ ๋ณด์ ๋ณ๊ฒฝ์ฃผ๊ธฐ๊ฐ ๋น๋ฒํ์ง ์๊ณ , ๋จ์์ฒ๋ฆฌ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์ ๋ณด์ด๊ณ -> ๋์ ๋จ์์ฒ๋ฆฌ๋น์ฉ
- ์ ๋ณด์ ์ต์ ํ๊ฐ ๋ฐ๋์ ์ค์๊ฐ์ผ๋ก ์ด๋ค์ง์ง ์์๋ ์๋น์ค ํ์ง์ ์ํฅ์ ๊ฑฐ์ ์ฃผ์ง ์๋ ์ ๋ณด
๋ ๋ง์ ์กฐ๊ฑด๋ค์ด ์๊ฒ ์ผ๋,์ ์กฐ๊ฑด๋ค ์ค 2๊ฐ์ด์ ํฌํจ๋๋ ์ฑ๊ฒฉ์ ์๋น์ค์ ์ ๋ณด๋ผ๋ฉดCache๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํด ๋ณด์๋ ํฐ ๋ฌด๋ฆฌ๊ฐ ์์ ๊ฒ ๊ฐ๋ค.
์ด๋ค ์ ๋ณด๋ค์ Cache๋ก ์ฌ์ฉํ๋?
- ํฌํ์ ๊ฒ์์ด
- ์ผํ๋ชฐ์ ํซ๋์ํ, ๋ฒ ์คํธ์ ๋ฌ, ์ถ์ฒ์ํ๋ฑ
- ์ํ์ ์นดํ ๊ณ ๋ฆฌ์ ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ฑ๋ก์ํ ์
- ๋ฐฉ๋ฌธ์์, ์กฐํ์, ์ถ์ฒ์
- 1ํ์ฑ ์ธ์ฆ์ ๋ณด (SMS ๋ณธ์ธ์ธ์ฆ์ ๋ณด, IP์ ๋ณด๋ฑ)
- ๊ณต์ง์ฌํญ, Q&A
-
SSL ํธ๋์์ดํน ๊ณผ์ ์?
ํธ๋์์ดํฌ ๋จ๊ณ
-
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๋ค.(Client Hello)
์๋ฒ์ ์ ์ก๋๋ ๋ฐ์ดํฐ
-
ํด๋ผ์ด์ธํธ์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
-
ํด๋ผ์ด์ธํธ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์๋ค
-
์ธ์ ์์ด๋
-
-
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์๋ต(์ ์ก)ํ๋ค.(Server Hello)
ํด๋ผ์ด์ธํธ์ ์ ์ก๋๋ ๋ฐ์ดํฐ
-
์๋ฒ์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
-
์๋ฒ๊ฐ ์ ํํ ํด๋ผ์ด์ธํธ์ ์ํธํ ๋ฐฉ์
-
์ธ์ฆ์(์๋ฒ์ ๊ณต๊ฐํค๊ฐ ํฌํจ๋จ)
-
3-1. ํด๋ผ์ด์ธํธ๋ ํด๋ผ์ด์ธํธ(์น๋ธ๋ผ์ฐ์ )์ CA๋ฆฌ์คํธ๋ฅผ ํ์ธํ์ฌ ์ธ์ฆ์๊ฐ CA์ ์ํด์ ๋ฐ๊ธ๋ ๊ฒ์ธ์ง ํ์ธํ๋ค. ์น๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋ CA์ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด์ ์ธ์ฆ์๋ฅผ ๋ณตํธํํ๋ ๋ฐ ์ฑ๊ณตํ๋ฉด ์ด ์ธ์ฆ์๋ฅผ ์ ์กํ ์๋ฒ๊ฐ ์ ๋ขฐ๊ฐ๋ฅํ ์๋ฒ๋ผ๋ ๊ฒ์ด ๋ณด์ฆ๋๋ค. ๋ฐ๋ฉด, ๋ฆฌ์คํธ์ ์๊ฑฐ๋ ๋ณตํธํ์ ์คํจํ๋ฉด ์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค.
3-2. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ์์ ์์ฑ๋ ๋๋ค ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํด์ Pre-Master Secret ํค๋ฅผ ์์ฑํ๋ค. (์ด ํค๋ ๋ค์์ ์ดํด๋ณผ '์ธ์ ๋จ๊ณ'์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ํธํํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค. ์ด ๋ ์ฌ์ฉํ ์ํธํ ๊ธฐ๋ฒ์ ๋์นญํค ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ pre master secret ๊ฐ์ ์ 3์์๊ฒ ์ ๋๋ก ๋ ธ์ถ๋์ด์๋ ์๋๋ค)
3-3. ์ธ์ฆ์์ ํฌํจ๋ ๊ณต๊ฐํค๋ก pre master secret ๊ฐ์ ์ํธํํด์ ์๋ฒ๋ก ์ ์กํ๋ค.
4-1. ์๋ฒ๋ ์์ ์ ๋น๊ณต๊ฐํค๋ก ์์ ํ๊ฒ ๋ณตํธํํ๋ค. (์ด ์์ ์ C/S๊ฐ ๋ชจ๋ Pre-Master Secret ๊ฐ์ ๊ฐ์ง๊ฒ ๋์๋ค.)
4-2. C/S ๋ชจ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ Pre-Master Secret ๊ฐ์ Master Secret ๊ฐ์ผ๋ก ๋ง๋ ๋ค.
4-3. master secret์ session key๋ฅผ ์์ฑํ๋ค.
- C/S๋ ์๋ก์๊ฒ ํธ๋์์ดํฌ ๋จ๊ณ์ ์ข ๋ฃ๋ฅผ ์๋ฆฐ๋ค.
-
-
์ถ์ฒ
https://yonguri.tistory.com/82[๋๋์ฅ ์ผ์ ๋ธ๋ก๊ทธ]