๐ฑ CS Study13 ๋ก๊ทธ ๋ ๋ฒจ Goal 1. ๋ก๊ทธ ๋ ๋ฒจ ์ค๋ช ํ๊ธฐ 2. ๋ก๊ทธ ๋ ๋ฒจ ์์์ ์ ์ ์์๋ณด๊ธฐ ๋ก๊ทธ ๋ ๋ฒจ (Log level)์ด๋? ๊ฐ๋ฐ์๋ค์ด ๊ฐ๋ฐ ๋จ๊ณ์์ ์ฝ๋ ์คํ์ ์ด๋์ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๊ธฐ ์ํ ๊ธฐ๋ก(๋ก๊ทธ)์ ์ผ๋ง๋ ์์ธํ๊ฒ ํ์ธํ๊ณ ์ถ์์ง ๋ฏธ๋ฆฌ ์ค์ ํ ์ ์๋ค. ๊ทธ๊ฒ์ด Logger ํด๋์ค์์ ์ค์ ํ๋ ๋ก๊ทธ ๋ ๋ฒจ์ด๋ค. ์ด๋ฏธ Logger ํด๋์ค์์ ์ ํด์ง ๋ก๊ทธ ๋ ๋ฒจ์ ์ฌ์ฉํด๋ ๋๊ณ ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๋ ๋ฒจ์ ์ง์ ์ ์ํ ์๋ ์๋ค. ๋ก๊ทธ ๋ ๋ฒจ ์์์ ์ ์ ๋ก๊ทธ ๋ ๋ฒจ์ ์ฌ๊ฐํ ์ ๋์ ๋ฐ๋ผ ๋ ๋ฒจ ๋จ์๋ก ๋๋์ด์ ธ ์๋ค. ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF ๊ธฐ๋ณธ ๋ ๋ฒจ์ DEBUG์ด๋ค. ๋ ๋ฒจ Log4j Logback ์ ์ ALL โ โ ๋ชจ๋ ๋ ๋ฒจ์ ๋ก๊ทธ๊ฐ ํ.. 2023. 3. 5. Spring Security๋? Goal 1. Spring Security๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ธฐ 2. ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ์ฐจ์ด ์ดํด๋ณด๊ธฐ Spring Security๋? ์ธ์ฆ(authentication)๊ณผ ์ธ๊ฐ(authorization) ์ ๊ณต ๋ฐ ๊ถํ ์ ์ด์ ํ์ํ ํํฐ์ ๋ชจ์์ด๋ฉฐ ํ์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด์ ํ์์ด๋ค ์ธ๋ถ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ์ฌ๋ฌ๊ฐ์ง ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์คํ๋ง์ ํ๋ ์์ํฌ์ด๋ค ์๋ธ๋ฆฟ ํํฐ ์ฒด์ธ์ ๊ตฌ์ฑํ๋๋ฐ ํํฐ ์ฒด์ธ์ด๋ ์ฌ๋ฌ๊ฐ์ ํํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฉํ๋ ๊ฒ์ด๋ค ์ธ์ฆ vs. ์ธ๊ฐ ์ฉ์ด ๋ป ๊ด๋ จ ์ธํฐํ์ด์ค/ํด๋์ค ์ธ์ฆ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ๋ณด์ DB์ ์๋ ์ ๋ณด๋ฅผ ๋น๊ตํด์ ์ ์์ ํ์ธํ๋ ๊ณผ์ AuthenticationManager (์ด๊ฑธ ์ค์ ํด์ค์ผํจ), Authentication ์ธ๊ฐ ์ธ์ฆ์ ํตํด ์ฌ์ฉ์๊ฐ ๊ฐ์ง ๊ถํ์ด ํ์ธ๋ ํ ํด๋น ์ฌ์ฉ.. 2023. 3. 1. ์ค๋ฒ๋ก๋ฉ๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฐจ์ด Goal 1. ์ค๋ฒ๋ก๋ฉ๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฐจ์ด์ ์ค๋ช ํ๊ธฐ ์ค๋ฒ๋ก๋ฉ vs. ์ค๋ฒ๋ผ์ด๋ฉ ์ฐจ์ด์ ์ค๋ฒ๋ก๋ฉ ์ค๋ฒ๋ผ์ด๋ฉ ์ ์ ํ ํด๋์ค ๋ด์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ํ๋ ๊ฒ ์์ ๋ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ ๊ฒ ๋ฉ์๋ ์ด๋ฆ ๊ฐ์ ๊ฐ์ ๋ฉ์๋ ๋งค๊ฐ๋ณ์ ๊ฐ์, ํ์ ๋ค๋ฆ ๊ฐ์ ์คํ ์ฝ๋ ๋ค๋ฆ (๋งค๊ฐ๋ณ์๋ ํ์ ์ด ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋ค๋ฅผ ์ ๋ฐ์ ์์) ๋ค๋ฆ ๋ฐํ ํ์ ์๊ด ์์ ๊ฐ์ ์ด๋ ธํ ์ด์ ์์ @Override 2023. 2. 19. ์ฝ๋ฐฑํจ์, ์ฝ๋ฐฑ์ง์ฅ Goal 1. ์ฝ๋ฐฑํจ์ ๊ฐ๋ ์ดํดํ๊ธฐ 2. ์ฝ๋ฐฑ์ง์ฅ์์ ๋ฒ์ด๋ ์ ์๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ ์ฝ๋ฐฑํจ์๋? ์ฝ๋ฐฑํจ์๋ ๊ฐ๋จํ๊ฒ ์๊ธฐํ์๋ฉด ์ฝ๋๊ฐ ์๋ฃ๋๋ฉด ์คํ๋๋ ๋ถ๋ถ์ด๋ค ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๋ ํ๋ก์ธ์ค๋ค์ ์ฝ๋ฐฑํจ์๋ฅผ ํ๋์ฉ ๊ฐ์ง๊ณ ์์ด์ Web API์์ ์คํ๋ ๋น๋๊ธฐ ํจ์๋ค์ด ์ธ์ ๋๋ฌ๋์ง ์ ์ ์๋ค Web API์์ ๋๋ ๋น๋๊ธฐ ํจ์๋ค์ ์ฝ๋ฐฑํจ์๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์ ์คํ๋๋๋ก ์ด๋ฒคํธ ๋ฃจํ(event loop)๊ฐ ํ๋์ฉ ์ฒ๋ฆฌํ๋ค ์ฝ๋ฐฑ์ง์ฅ์ด๋? ์ฝ๋ฐฑํจ์ ์์ ์ฝ๋ฐฑํจ์ ์์ ์ฝ๋ฐฑํจ์ ์์ ์ฝ๋ฐฑํจ์ ์์ … ์ฌ๋ฌ ์ฝ๋ฐฑํจ์๋ค์ด ๊ดํธ ์์ ๊ดํธ ์์ ๊ดํธ ์์ ๊ณ์ ๋ค์ด๊ฐ ์๋ ์ฝ๋ ํํ๋ฅผ ์ฝ๋ฐฑ์ง์ฅ์ด๋ผ๊ณ ํ๋ค ์ด๋ฐ ๊ฒฝ์ฐ ์ฝ๋์ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๊ณ ์ค์ ์ํ๋ ์ปค์ง๋ค ์ฝ๋ฐฑ์ง์ฅ ๋์ฒ ๋ฐฉ๋ฒ Promise (ES6 ๋ฒ์ ๋ถํฐ).. 2023. 2. 16. ๋น๋๊ธฐ์ ๋๊ธฐ Goal 1. ๋น๋๊ธฐ์ ๋๊ธฐ ์ฝ๋์ ์ฐจ์ด ์ดํดํ๊ธฐ ๋น๋๊ธฐ vs. ๋๊ธฐ ์ฐจ์ด์ ๋น๋๊ธฐ ๋๊ธฐ ์ ์ ์์ฒญํ ํ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋์์ ๋ค๋ฅธ ์์ ์ ์ํํ๋ ๋ฐฉ์ ์๊ฐ๊ณผ ๊ด๊ณ์์ด ์์ฒญ์ ๋ํ ์๋ต์ด ์ฌ ๋๊น์ง ํ๋ก๊ทธ๋จ ์ํ์ ๋ฉ์ถ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์ ์ฉ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ์ํํ ๋ ํํ ์ฌ์ฉ ์์ฐจ์ ์ผ๋ก ์งํ๋์ด์ผ ํ๋ ์์ ์ฒ๋ฆฌ ์ค๋ ๋ ์ค๋ ๋๋ ํ๋ก์ธ์ค๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ํ๋ฒ์ ๋๊ณ ์์ ํ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์งํ ์์ง ๋ธ๋ผ์ฐ์ ๋ Node.js์์ ์ด์ํ๋ Web API์์ ์คํ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ์คํ ์ฝ๋ ์์ฑ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ํ๋ฒ์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ๋ก์ง์ ๊ตฌ์ฑํ๊ธฐ ์ด๋ ค์ธ ์ ์์ ์์ฐจ์ ์ผ๋ก ์งํ๋๊ธฐ ๋๋ฌธ์ ์ดํด๊ฐ ์ฝ๊ณ ์์ฑํ๊ธฐ ์ฌ์ 2023. 2. 15. ์์กด์ฑ, ์์กด๊ด๊ณ ์ฃผ์ Goal 1. ์์กด์ฑ / ์์กด๊ด๊ณ์ ์ฃผ์ ์ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ 2. ์์ฑ์ ์ฃผ์ ์ ๊ถ์ฅํ๋ ์ด์ ์ค๋ช ํ๊ธฐ ์์กด์ฑ / ์์กด๊ด๊ณ๋? A๊ฐ B๋ฅผ ์์กดํ๋ค = B๊ฐ ๋ณํ๋ฉด A์๊ฒ๋ ์ํฅ์ ๋ฏธ์น๋ค ์๋ฐ์์ ํด๋์ค ๊ฐ ์์กด๊ด๊ณ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๋ก ๋ณผ ์ ์๋ค. ๋ฐฉ๋ฒ ์ค๋ช ๊ถ์ฅ @Autowired ํ๋ ์ฃผ์ ์ ๋ฐฉ๋ฒ ์๋ ์ฌ์ฉํ์๋๋ฐ ์ด์ ๋ IntelliJ์์ ์์ฑ์ ์ฃผ์ ์ ๋ฐฉ๋ฒ ์ฐ๋ผ๊ณ ๊ฒฝ๊ณ ๋ธ @Setter ์์ ์ ์ฃผ์ ์ ๋ฐฉ๋ฒ Public ๋ฉ์๋๋ฅผ ํตํด ์๋ฌด๋ ์์ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ฑ ๋ฌธ์ ๊ฐ ์ @RequiredArgsConstructor ์์ฑ์ ์ฃผ์ ์ ๋ฐฉ๋ฒ ***๊ฐ์ฅ ๊ถ์ฅ ํ๋ ๋ฐฉ๋ฒ*** 1. ํ๋ ์ฃผ์ ์ ๋ฐฉ๋ฒ new ํค์๋ ์จ์ ์์กดํ๊ฒ ๋๋ฉด Driver๊ฐ ์์ฑ๋ ๋ ์ด๋ฏธ ์ด๋ค ์ฐจ๋ฅผ ๊ฐ์ง๋์ง ์ ํด์ ธ ์๊ธฐ ๋.. 2023. 2. 11. Java, JIT Compiler, JVM Goal 1. ์๋ฐ์ ์ปดํ์ผ ๊ณผ์ ์ดํดํ๊ธฐ 2. JVM์ ์ญํ ์ค๋ช ํ๊ธฐ Q. ์๋ฐ ์์ค์ฝ๋๊ฐ ์ปดํ์ผ ๋๋ ๊ณผ์ ์ ์ค๋ช ํด ๋ณด์์ค. A. ๊ฐ๋ฐ์๊ฐ ์๋ฐ ์์ค์ฝ๋๋ฅผ ์์ฑํ๋ค (*.java) ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์์ค์ฝ๋ ํ์ผ์ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ ํ๋ค (*.class) ๋ฐ์ดํธ์ฝ๋๋ฅผ JVM (Java Virtual Machine)์ ํด๋์ค ๋ก๋์ ์ ๋ฌํ๋ค ํด๋์ค ๋ก๋๋ ๋์ ๋ก๋ฉ์ ํตํด ํ์ํ ํด๋์ค๋ค์ ๋ก๋ฉ ๋ฐ ๋งํฌํ์ฌ JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค ์คํ ์์ง(์ธํฐํ๋ฆฌํฐ ๋๋ JIT ์ปดํ์ผ๋ฌ)์ JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋๋ค์ ๋ช ๋ น์ด ๋จ์๋ก ํ๋์ฉ ๊ฐ์ ธ์ ์คํํ๋ค ๐ ๋ฐ์ดํธ์ฝ๋ : ๊ฐ ๋ช ๋ น์ด๋ 1๋ฐ์ดํธ ํฌ๊ธฐ์ Opcode์ ์ถ๊ฐ ํผ์ฐ์ฐ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ ํ์ผ (์ปดํจํฐ๊ฐ ์ฝ์ ์ ์์) ๐ ์ธํฐํ๋ฆฌํฐ : ๋ฐ์ดํธ ์ฝ๋ .. 2023. 2. 8. ํ๋ก์ธ์ค(Process) vs. ์ค๋ ๋ (Thread) Goal 1. ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ์ค๋ช ํ๊ธฐ 2. ๋ฉํฐ ํ๋ก์ธ์ค ๋์ ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ดํดํ๊ธฐ Q. ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ? A. ํ๋ก์ธ์ค๋ ์ด์์ฒด์ (OS)๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ์ ์คํ ๋๋ ํ๋ก๊ทธ๋จ์ ์์ ๋จ์๋ฅผ ์๊ธฐํ๊ณ , ์ค๋ ๋๋ ์ด๋ฌํ ํ๋ก์ธ์ค์ ์์์ ์ชผ๊ฐ์ ์ฌ์ฉํ๋ ์คํ ๋จ์์ ๋๋ค. ํ๋ก์ธ์ค๋ 1๊ฐ ์ด์์ ์ค๋ ๋๋ก ์คํ๋๊ณ , ์์ ๋ง์ ๊ณ ์ ํ ์ฃผ์๊ณต๊ฐ์ ํ ๋น ๋ฐ์ต๋๋ค. ์ค๋ ๋๋ ์ด ์ค์ stack๋ง ๋ฐ๋ก ํ ๋น ๋ฐ๊ณ ๋๋จธ์ง ์์ญ์ ์ค๋ ๋๋ผ๋ฆฌ ๊ณต์ ํฉ๋๋ค. ๋ค๋ฅธ์ ํ๋ก์ธ์ค ์ค๋ ๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ์ ์คํ๋๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์์ ๋จ์ ํ๋ก์ธ์ค๊ฐ ํ ๋น ๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ ๋จ์ (์ฆ, 1๊ฐ์ ํ๋ก์ธ์ค๋ 1๊ฐ ์ด์์ ์ค๋ ๋๋ฅผ ๊ฐ์ง) ์์คํ ์์ OS๋ก๋ถํฐ ๊ณ ์ ํ.. 2023. 2. 7. ๋จ๋ฝ ํ๊ฐ (short-circuit evaluation) ๋จ๋ฝ ํ๊ฐ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ค and์ or์๋ ๋จ๋ฝ ํ๊ฐ๋ผ๋ ๊ฒ์ด ์์ฉํ๋ค. ์ด ์๋ฆฌ๋ ์๊ฐ๋ณด๋ค ๋ง์ด ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ์์๋๋ฉด ์๋ฌ ์ก๋๋ฐ ์ ์ฉํ๋ค. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ๋จ๋ฝ ํ๊ฐ๋ ์ฒซ๋ฒ์งธ ๊ฐ์์ ์ด๋ฏธ ๋ฐํ ๊ฐ์ด ํ์คํด์ก๋ค๋ฉด ๋๋ฒ์งธ ๊ฐ์ ํ์ธํ์ง ์๋ ๊ฒ์ด๋ค. A Operator A and/or B Output Notes True and True and 'rabbit' rabbit ์ฒซ๋ฒ์งธ ๊ฐ์ด True๋ฉด ๋๋ฒ์งธ ๊ฐ์ ๋จ๋ฝ ํ๊ฐ๊ฐ ์ ์ฉ ๋ผ ๋๋ฒ์งธ ๊ฐ์ ๋ฌด์กฐ๊ฑด ๋ฐํํ๋ค. False False and 'rabbit' False and์์๋ ์์ชฝ ๋ชจ๋ True๊ฐ ๋์ด์ผ True๋ฅผ ๋ฐํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฒซ๋ฒ์งธ ๊ฐ์ด False๊ฐ ๋์ค๋ฉด ๋จ๋ฝ ํ๊ฐ๊ฐ ์ ์ฉ ๋ผ ์ฒซ๋ฒ์งธ ๊ฐ์ธ False๊ฐ ๋ฐํ๋๋ค. True or Tr.. 2022. 7. 26. ์ด์ 1 2 ๋ค์