๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋ (118)
Bibi's DevLog ๐ค๐
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. (์ด์ด์) ๋น๋ํ๊ณ ์คํํ๊ธฐ ๋ง๋ ํ์ผ์ ์ธํ ๋ฆฌJํ๊ฒฝ์ด ์๋ cmd ํ๊ฒฝ์์ ์คํํด ๋ณธ๋ค. ์๋ฒ์์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ํด๋นํ๋ค (cmd๋ง ์ฌ์ฉ ๊ฐ๋ฅ) - ์ค๋ฌด์์ ๊ฐ๋ฐํ ๋๋ cmd๋ง์ผ๋ก ๋น๋๋ฅผ ํด์ผ ํ ๋๋ ๋ง๋ค. (์๋์ฐ ๊ธฐ์ค) ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ด๊ณ cd ๋๋ ํ ๋ฆฌ๋ช ์ ํตํด ์คํ๋ง ํ์ผ์ด ์๋ ์์น๋ก ์ด๋ํ๋ค. cd ๋๋ ํ ๋ฆฌ๋ช : ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋ dir : =ls. ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ๋ณด์ฌ ์ค dir๋ก ํ์ธํ์ ๋ gradlewํ์ผ์ด ๋ณด์ด๋ฉด, gradlew build ๋ช ๋ น์ด๋ก ๊ทธ๋๋ค์ ์คํํ๋ค. ์ ์ ๊ธฐ๋ค๋ฆฌ๋ฉด ํ์ํ ํ์ผ๋ค์ ์ค์นํ๊ณ ๋น๋๊ฐ ์๋ฃ๋๋ค. BUILD SUCCESSFUL ์ด ๋์ค๋ฉด ๋น๋๊ฐ ์ ๋ ๊ฒ. ๋น๋๊ฐ ์ ..
์ธํ๋ฐ - ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์(๋ฌด๋ฃ) ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์์๊ฐ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํด ๋ณด๋ ๊ฐ์ข์ด๋ค. ์คํ๋ง ํ๋ก์ ํธ ์์ฑ ์คํ๋ง ๋ถํธ๋ก ์น์๋ฒ ์คํ ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ ์น MVC ๊ฐ๋ฐ DB์ฐ๋ - JDBC, JPA, ์คํ๋ง๋ฐ์ดํฐ JPA ํ ์คํธ ์ผ์ด์ค ์์ฑ ํฌ์ธํธ ์คํ๋ง ๊ธฐ์ ๊ทธ ์์ฒด์ ๋งค๋ชฐ๋๊ธฐ๋ณด๋ค ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง์ ์ด์ ์ ๋ง์ถ๋ค. ์ค๋ฌด์์ ๊ฑฐ์ ์ฐ์ง ์๋ ์ค๋๋, ๋ง์ด๋ํ ์คํ๋ง ๊ธฐ์ ์ ์ ์ธํ๋ค. ์คํ๋ง์ ๋งค์ฐ ๊ฑฐ๋ํ๊ณ ๊น์ด์๋ ๊ธฐ์ ์ด๊ธฐ ๋๋ฌธ์, ํ์ํ ๊ฒ ๋ถํฐ ๋ฐฐ์ด๋ค. ํ๋ก์ ํธ ์์ฑ java 11 IntelliJ ๋๋ Eclipse ์ค์น ์คํ๋ง ํ๋ก์ ํธ ์์ฑ https://start.spring.io/ ์์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ..
๋ฐ๋๋ฝ DeadLock ๋ฐ๋๋ฝ (๊ต์ฐฉ ์ํ) ์ด๋? : ํ๋ก์ธ์ค๊ฐ ์์์ ์ป์ง ๋ชปํด ๋ค์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ ์ํ. ๋ ๊ฐ ์ด์์ ์์ ์ด ์๋ก ์๋๋ฐฉ์ ์์ ์ด ๋๋๊ธฐ๋ง์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ฌด๊ฒ๋ ์๋ฃ๋์ง ๋ชปํ๋ ์ํ๋ฅผ ๋งํจ. ๋ฐ๋๋ฝ ๋ฐ์ ์ํฉ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์, ์์คํ ์ ์ผ๋ก ํ์ ๋ ์์์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ค. ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์์์ ์์ฒญํ์ ๋, ๊ทธ ์๊ฐ์ ๊ทธ ์์์ ์ฌ์ฉํ ์ ์๋ ์ํฉ์ด ๋ฐ์ ์ด๋ฐ ๊ฒฝ์ฐ ํด๋น ํ๋ก์ธ์ค๋ ๋๊ธฐ ์ํ๊ฐ ๋จ ๋๊ธฐ ์ํ์ ํ๋ก์ธ์ค๋ค์ด ์คํ ์ํ๋ก ๋ณ๊ฒฝ๋ ์ ์์ ๋๋ฅผ ๊ต์ฐฉ ์ํ๋ผ๊ณ ํ๋ค. ๋ฐ๋๋ฝ ๋ฐ์ ์กฐ๊ฑด ๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๋ ค๋ฉด ๋ค์์ ๋ค ํ์ ์กฐ๊ฑด์ ์ถฉ์กฑ์์ผ์ผ ํ๋ค. ์ฆ, ์๋ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ๋ง์กฑํ์ง ์์ผ๋ฉด ๊ต์ฐฉ ์ํ๋ ๋ฐ์ํ์ง ์๋๋ค...
ํฉํ ๋ฆฌ ๋ฉ์๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด Factory Method Pattern ์ด๋? ์๋ฐ ๋์์ธํจํด์ ํ๋๋ก, ๊ฐ์ฒด ์์ฑ์ ๋์ ์ํํด ์ฃผ๋ ๊ณต์ฅ์ ๋น์ ํ ์ ์๋ค. ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๋์ , ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์์ฑ ํ ๋ฐํํ๋ ๋ฐฉ์. (๊ฐ์ ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋์ ์์ฑํด ์ฃผ๋ ๋ฉ์๋๋ฅผ ํฉํ ๋ฆฌ๋ฉ์๋๋ผ๊ณ ํ๋ค) ์ฅ์ ์์ฑํ ํด๋์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ง ๋ชปํด๋ ํฉํ ๋ฆฌ ํด๋์ค๊ฐ ๊ฐ์ฒด ์์ฑ์ ๋ด๋นํด ์ค๋ค. ๊ฐ์ฒด์ ์๋ฃํ์ด ํ์ํด๋์ค์ ์ํด ๊ฒฐ์ ๋๋ค - ํ์ฅ์ด ์ฉ์ดํ๋ค ํ์ฅ์ฑ ์๋ ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ๋์ผํ ํํ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค. ๋จ์ ๊ฐ์ฒด๊ฐ ๋์ด๋ ๋ ๋ง๋ค ํ์ํด๋์ค๋ฅผ ์ฌ์ ์ํด์ผ ํ๋ฏ๋ก ๋ถํ์ํ ๋ง์ ํด๋์ค๊ฐ ์์ฑ๋ ์ ์๋ค. ์์ Shape.java public interface Shape { ..
static import๊ณผ static ๋ฉ์๋ static ๋ฉ์๋๋ ์๋ฐ์์ ๋ฉ์๋๋ฅผ static์ผ๋ก ์ ์ธํ๋ฉด, ํด๋์ค ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋ฐ๋ก ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. int i = Math.abs(-3) ์ฒ๋ผ ์ฌ์ฉํ๋ค. (java.lang.Mathํด๋์ค์ abs()๋ฉ์๋) static import๋ static import๋ ์ด๋ฐ static๋ฉ์๋๋ฅผ ๋์ฑ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ผ๋ฐ import์ ๋ค๋ฅด๊ฒ ๋ฉ์๋/๋ณ์๋ฅผ ํจํค์ง, ํด๋์ค๋ช ์์ด ์ ๊ทผํ ์ ์๊ฒ ํด ์ค๋ค. import static java.lang.Math.abs;์ ๊ฐ์ด static import ํ ๋ค์๋ int i = abs(-3)๊ณผ ๊ฐ์ด ํด๋น static๋ฉ์๋๋ฅผ ํด๋์ค๋ช ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค. โป ๋จ..
๋ฆฌ๋ทฐ์ด ๋ถ๊ป์ ๋ง์ง๋ง ์ฝ๋ฉํธ๋ฅผ ๋ฌ์ ์ฃผ์ ๋ด์ฉ์ ๋ฐฐ์ธ ์ ์ด ๋ง์์, ๊ทธ ๋ถ๋ถ์ ์ ๋ฆฌํ๋ค. ์๋ฐ ์์์ ์์ ์ปจ๋ฒค์ Q. ์๋ฐ ์์๋ช ์ ๋ชจ๋ ๋๋ฌธ์์ Snake Case๋ฅผ ์ด๋ค, ์ง์ญ๋ณ์๋ ์๋ฌธ์์ Camel Case๋ฅผ ์ด๋ค ์ด ์ ๋๋ง ์๊ณ ์๋๋ฐ, ์์ ๊ฐ์ด ์ง์ญ๋ณ์์ธ ์์์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ์ง์ด์ผ ํ๋์?๐ค ์ฐ์ ์ ์์๋๊น ๋๋ฌธ์๋ก ์ฐ๊ธด ํ๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ ์์์ด๊ธฐ ์ ์ ์ง์ญ๋ณ์์ด๋ฏ๋ก start end์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ ๊ฑด๊ฐ์? ์ฝ๋ฉํธ ๊ฐ์ฌํฉ๋๋ค!๐โ๏ธ A. The names of variables declared class constants and of ANSI constants should be all uppercase with words separated by underscores ("_"..
๊ฐํ๋ฌธ์ - System.getProperty("line.separator"), System.lineSeparator() ๊ฐํ๋ฌธ์(์ค๋ฐ๊ฟ๋ฌธ์, new line)๋? : ์ปดํจํฐ์์ ์ค๋ฐ๊ฟ์ ๋ํ๋ค๋ ์ ์ด๋ฌธ์. ์ค๋ฐ๊ฟ๋ฌธ์, ์์ค๋ฌธ์, ๋ผ์ธ์๋ฉ, ๋ณต๊ท๊ฐํ.. ๋ฑ์ผ๋ก๋ ๋ถ๋ฆฐ๋ค. (newLine, line ending, end-of-line,EOL, line break ..) ๊ฐํ๋ฌธ์์๋ ๋ ์ข ๋ฅ๊ฐ ์๋ค. LF : new Line Feed, ๋ผ์ธํผ๋, ๋ด๋ผ์ธ. ์ปค์๋ฅผ ํ ์นธ ์๋๋ก ์ด๋ํด ์๋ก์ด ๋ผ์ธ์ ์ถ๊ฐ \n ์์คํค์ฝ๋ : 10 CR : Carrige Return, ์บ๋ฆฌ์ง๋ฆฌํด, ๋ฆฌํด. ์ปค์๋ฅผ ๋งจ ์ผ์ชฝ์ผ๋ก ์ด๋(์์ ์์น๋ก ๋ณต๊ท) \r ์์คํค์ฝ๋ : 13 ์ํฐํค์ ๊ฐ๋ค. ์ด์์ฒด์ ๋ณ ์ค๋ฐ๊ฟ๋ฌธ์ ์ค๋ฐ๊ฟ ๋ฌธ์(๊ฐํ๋ฌธ..
์คํธ๋ฆผ Stream ์คํธ๋ฆผ์ด๋? : ๋ฐฐ์ด, ์ปฌ๋ ์ , ํ์ผ ๋ฑ ์ธ์คํด์ค์ ์ ์ฅ ์์๋ฅผ ์ฝ๊ฒ ์ฐธ์กฐํ๊ฒ ํด ์ฃผ๋ ๋ฐ๋ณต์. (์ถ์ฒ) ๋ฐ์ดํฐ ์์ค๋ฅผ ์ถ์ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค์ ์ ์ํด ๋์. '๋ฐ์ดํฐ ์์ค์ ์ถ์ํ'์ ์๋ฏธ? : ๋ฐ์ดํฐ ์์ค(๋ฐฐ์ด/์ปฌ๋ ์ /ํ์ผ ..)๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ค๋ฃฐ ์ ์๋ค. : ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค. // String[] ๊ณผ List์ด๋ผ๋ ๋ ๋ฐ์ดํฐ์์ค String[] strArr = {"aaa", "bbb", "ccc"}; List strList = Arrays.asList(strArr); // Stream ์์ฑ Stream strStream1 = Arrays.stream(strArr); Stream strStream2 = ..