Banner

My Tech Blog (ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด/Java)

์˜ค๋Š˜์˜ ๋ช…์–ธ
์ž๋ฐ”๊ฐ€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ์œ„์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์€ ์ตํžˆ ์•Œ๋ ค์ง„ ์‚ฌ์‹ค์ด๋‹ค. ์ดํด๋ฆฝ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ๋Š” ์ดํด๋ฆฝ์Šค ๋ฒ„์ „์— ํ˜ธํ™˜๋˜๋Š” JDK๋„ ํ•จ๊ป˜ ์„ค์น˜ํ•œ๋‹ค.๋˜ํ•œ, ์ดํด๋ฆฝ์Šค ์„ค์ •์—์„œ [Installed JREs]์—์„œ JRE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ, ๊ธฐ์กด์— ๋‘๋ฃจ๋ญ‰์ˆ ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋˜ JDK์™€ JRE์˜ ์ฐจ์ด๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๊ฐœ๋…์„ ๋ช…ํ™•ํžˆ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.  1. JDK vs JRE vs JVM ์ฐจ์ด์ง„์งœ ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด  ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ โ†’ JDK ํ•„์š” (์ปดํŒŒ์ผ๋Ÿฌ ํฌํ•จ)๊ทธ๋ƒฅ ์‹คํ–‰๋งŒ ํ•  ๋•Œ โ†’ JRE๋งŒ ์žˆ์–ด๋„ ๋จ์‹ค์ œ ์‹คํ–‰ ๋‹ด๋‹น โ†’ JVM ์œ„์—์„œ ๋Œ์•„๊ฐ...  JRE๋Š” ์‹คํ–‰์šฉ, JDK๋Š” ๊ฐœ๋ฐœ์šฉ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค. โ–  JDK (Java Development Kit)`.java` ํŒŒ์ผ์„ `.class(๋ฐ”์ดํŠธ์ฝ”๋“œ)`๋กœ ..
Spring ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์„œ๋น„์Šค ๋ ˆ์ด์–ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค(*Mgr.java)์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค(*MgrImpl.java)๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, F3(Open Declaration)๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋งŒ ์ด๋™ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Open Implementation ๊ธฐ๋Šฅ์„ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค(Ctrl + F3)๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌ ํ•ด ๋ณธ๋‹ค. ๐Ÿ”น ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: Open Implementation ๋‹จ์ถ•ํ‚ค ์„ค์ •ํ•˜๊ธฐ 1. Eclipse ํ™˜๊ฒฝ์„ค์ • Window โ†’ Preferences (๋˜๋Š” Alt + W, P)2. ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ General โ†’ Keys ์„ ํƒ3. "Open Implementation" ๋‹จ์ถ•ํ‚ค ์ง€์ • type filter text์— Open Implementation ์ž…๋ ฅ Binding(๋‹จ์ถ•..
1. ์ž๋ฐ”์˜ ์ฃผ์„์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์€ // ํ•œ ์ค„ ์ฃผ์„์„ ๋‚จ๋ฐœํ•˜๋ฉฐ ํ•œ ์ค„ ํ•œ ์ค„์”ฉ ์ฃผ์„์„ ๋‹ค๋Š” ์Šต๊ด€์„ ๊ฐ€์ง„๋‹ค. ๋‚˜ ์—ญ์‹œ ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šธ ๋•Œ ๊ทธ๋Ÿฌํ–ˆ๋‹ค. ์กฐ๊ธˆ ์ฝ”๋”ฉ์„ ํ•ด ๋ณธ ์‚ฌ๋žŒ๋“ค์€ /* ... */์„ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ์ค„์„ ํ•œ๊บผ๋ฒˆ์— ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง„์งœ ๊ณ ์ˆ˜๋“ค์€ /** ... */ Javadoc ์ฃผ์„์„ ํ™œ์šฉํ•œ๋‹ค. ์ด ์ฃผ์„์€ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ๋“ฑ์˜ ์„ค๋ช…์„ ํฌํ•จํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์˜ค๋Š˜์€ ์ด ์„ธ ๊ฐ€์ง€ ์ฃผ์„์˜ ์ฐจ์ด์ ๊ณผ ํ•จ๊ป˜, ์ž๋ฐ”์—์„œ ์ฃผ์„์„ ๋น ๋ฅด๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋‹จ์ถ•ํ‚ค๋ฅผ ์•Œ์•„๋ณด๊ฒ ๋‹ค. 2. ๋‹จ์ถ•ํ‚ค์ž๋ฐ”์—์„œ ์ฃผ์„์„ ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๋‹จ์ถ•ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 2-1. ํ•œ ์ค„ ์ฃผ์„ (//) ๋‹จ์ถ•ํ‚คCtrl + / (Cmd + / on macOS)์—ฌ๋Ÿฌ ์ค„์„ ์„ ํƒํ•œ ํ›„ Ctrl + /๋ฅผ ..
Java ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญํ•˜๋ฉด Build Path๊ฐ€ ๋‚˜์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ Oracle JDBC ๋“œ๋ผ์ด๋ฒ„(ojdbc8.jar) ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ MySQL Connection(mysql-connector-java.jar)์ด๋ผ๋“ ์ง€ Getter์™€ Setter์„ ์ž๋™์ƒ์„ฑํ•˜๋Š” Lombok(lombok.jar) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋ก ํ•ด ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.  ํ•„์ž๋Š” ํ•ญ์ƒ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ถ”๊ฐ€ํ• ๋•Œ Classpath, Module Path ์ค‘ ์–ด๋””์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. Buildpath๋Š” ์ž๋ฐ”์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ฉฐ, ์–ด๋–ค ๊ฒƒ์„ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š”์ง€๋Š” ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ๊ณผ ์‚ฌ์šฉ ๊ธฐ์ˆ ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด๋ก ์ ์ธ ์„ค๋ช…์€ ๊ฑด๋„ˆ  ๋›ฐ๊ณ  ์–ธ์ œ ModulePath..
โš ๏ธ ๋ฌธ์ œ* ์ œ์ด์œ ๋‹›์€ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ฝ˜์†”์—์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  JUnit ํƒญ์—์„œ ํ™•์ธํ•œ๋‹ค. * ์›์น™์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ฅด๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜์žˆ๋‹ค.JUnit ํ…Œ์ŠคํŠธ ์‹คํ–‰ (Run As โ†’ JUnit Test) Eclipse ํ•˜๋‹จ "JUnit" ํƒญ ํด๋ฆญ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™•์ธ (์„ฑ๊ณตํ•˜๋ฉด ๋…น์ƒ‰, ์‹คํŒจํ•˜๋ฉด ๋นจ๊ฐ„์ƒ‰)ํ•˜์ง€๋งŒ ์ œ์ด์œ ๋‹› ํƒญ์—์„œ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋œจ์ง€ ์•Š๊ณ   ์ฝ˜์†”์— ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋Š” ํ˜„์ƒjava.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters๐Ÿง ์›์ธ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” ํ™˜๊ฒฝ์„ค์ •์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.JUnit์„ ์ถ”๊ฐ€ํ• ๋•Œ Modulepath์— ์ถ”๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.โšก ํ•ด๊ฒฐ๋ฒ•์ œ์ด์œ ๋‹› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Cl..
โš ๏ธ๋ฌธ์ œ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์›๊ฒฉ์œผ๋กœ ํ‘ธ์‰ฌํ•˜๋Š” ๊ณผ์ •์—์„œ ํŒจํ‚ค์ง€ ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์ด ๋‹ค ๋‚ ์•„๊ฐ”๋‹ค.git restore ๋ช…๋ น์–ด๋กœ ํŒŒ์ผ์„ ๋ณต๊ตฌํ–ˆ๋Š”๋ฐ ์ดํด๋ฆฝ์Šค ํŒจํ‚ค์ง€ ์ต์Šคํ”Œ๋กœ๋Ÿฌ์—๋Š” ๋ณต๊ตฌํ•œ ํŒŒ์ผ์ด ์•ˆ ๋œจ๋Š” ๋ฌธ์ œ  ๐Ÿ’ก ํ•ด๊ฒฐ๋ฒ•์ดํด๋ฆฝ์Šค์—์„œ git restore๋กœ ๋ณต๊ตฌํ•œ ํŒŒ์ผ์ด ํŒจํ‚ค์ง€ ์ต์Šคํ”Œ๋กœ๋Ÿฌ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์ดํด๋ฆฝ์Šค๊ฐ€ ํŒŒ์ผ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  ํŒจํ‚ค์ง€๋ช…์„ ํด๋ฆญ(Ctrl๋กœ ์ผ๊ด„ ํด๋ฆญ ๊ฐ€๋Šฅ) > F5 ๋ˆŒ๋Ÿฌ์„œ Refresh๊ทธ๋ž˜๋„ ์•ˆ ๋ณด์ด๋ฉด Project > Clean...
๐Ÿ”ฅ ๋ฌธ์ œ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹ ์—์„œ Gson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ + BufferedWriter ์‚ฌ์šฉ ์ค‘ host ๊ด€๋ จ ์—๋Ÿฌ ๋ฐœ์ƒํ•จ์ž๋ฐ”์—์„œ ๋ฐ๋ชฌ์„ ๋งŒ๋“ค๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ ค ํ–ˆ๋Š”๋ฐ ํ†ต์‹ ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๐Ÿ” ์›์ธ๊ฒฐ๊ตญ TCP/IP ๋ฌธ์ œ์˜€๊ณ , ์„œ๋ฒ„๋Š” IPv4, ํด๋ผ์ด์–ธํŠธ(๋‚˜)๋Š” IPv6๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ํ˜ธํ™˜์ด ์•ˆ ๋œ ๊ฒƒ์ด์—ˆ๋‹ค.๋„คํŠธ์›Œํฌ ๋‹ด๋‹น์ž๊ฐ€ ์„œ๋ฒ„์˜ TCP/IP ๋ฒ„์ „์„ IPv4๋กœ ์„ค์ •ํ–ˆ๋Š”๋ฐ ๋‚˜๋Š” ๊ทธ๋ƒฅ Runnable JAR์„ ์‹คํ–‰ํ•ด์„œ IPv6๋กœ ๋™์ž‘ํ•œ ๊ฒƒ์ด ์›์ธ์ด๋‹ค. โญ ํ•ด๊ฒฐ๋ฒ•WSL์— nohup ๋ช…๋ น์–ด๋กœ JVM ์˜ต์…˜ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐ ๊ฐ€๋Šฅnohup java -Djava.net.preferIPv4Stack=true -Dpath="๊ฒฝ๋กœ" -jar ์ด๋ฆ„.jar >> server.log 2>&1 &nohup โ†’ ํ„ฐ๋ฏธ..
1. ์ž๋™ ์ž„ํฌํŠธ & ์ •๋ฆฌ ๊ด€๋ จ ๋‹จ์ถ•ํ‚คCtrl + Shift + O : ์ž๋™ ์ž„ํฌํŠธ (Organize Imports) โ†’ ํ•„์š”ํ•œ import ์ถ”๊ฐ€ ๋ฐ ๋ถˆํ•„์š”ํ•œ import ์ •๋ฆฌCtrl + Shift + F : ์ฝ”๋“œ ์ž๋™ ์ •๋ ฌ (Format Code) โ†’ ์ฝ”๋“œ ์Šคํƒ€์ผ์— ๋งž์ถฐ ์ •๋ฆฌCtrl + Shift + S : ๋ชจ๋“  ํŒŒ์ผ ์ €์žฅCtrl + / : ํ•œ ์ค„ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐCtrl + Shift + / : ์—ฌ๋Ÿฌ ์ค„์„ ์„ ํƒํ•œ ํ›„ ์ „์ฒด๋ฅผ ๋ธ”๋ก ์ฃผ์„(/* */)์œผ๋กœ ๊ฐ์‹ธ๊ธฐCtrl + Shift + \ : ๋ธ”๋ก ์ฃผ์„ ํ•ด์ œ (/* */ ์‚ญ์ œ)2. ์ฝ”๋“œ ์ด๋™ ๊ด€๋ จ ๋‹จ์ถ•ํ‚คCtrl + Click : ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค ์ •์˜๋กœ ์ด๋™F3 : ์„ ์–ธ๋œ ๊ณณ์œผ๋กœ ์ด๋™ (Open Declaration)Ctrl + O : ํ˜„์žฌ ํด๋ž˜..
์ƒ๋‹จ์œผ๋กœ