Banner

My Tech Blog (Coding/Java)

๐Ÿ”ฅ ๋ฌธ์ œ์ž๋ฐ” ์†Œ์ผ“ ํ†ต์‹ ์—์„œ 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 : ํ˜„์žฌ ํด๋ž˜..
โœ… 1. Runtime.addShutdownHook()Runtime.addShutdownHook()๋Š” ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ง์ „์— ํŠน์ • ์ž‘์—…(ํŒŒ์ผ ์ €์žฅ, ๋ฆฌ์†Œ์Šค ์ •๋ฆฌ ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. โœ… 2. JVM ์ข…๋ฃŒ ์ด๋ฒคํŠธ๋ž€?์—ฌ๊ธฐ์„œ ์ •์ƒ ๋˜๋Š” ๋น„์ •์ƒ ์ข…๋ฃŒ์˜ ์ •์˜๋Š” ๋ช…์„ธ์„œ์— ๋‚˜์™€ ์žˆ๋‹ค. ์ž๋ฐ”์˜ ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ ์ข…๋ฃŒํ•œ๋‹ค.์ •์ƒ ์ข…๋ฃŒํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ๋•ŒSystem.exit()๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋น„์ •์ƒ ์ข…๋ฃŒCtrl + C(์‚ฌ์šฉ์ž ์ธํ„ฐ๋ŸฝํŠธ)์‚ฌ์šฉ์ž ๋กœ๊ทธ์˜คํ”„ ๋˜๋Š” ์‹œ์Šคํ…œ ์ข…๋ฃŒ ๋“ฑ ์‹œ์Šคํ…œ ์ด๋ฒคํŠธโš ๏ธ ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.kill -9 (๊ฐ•์ œ ์ข…๋ฃŒ)OutOfMemoryError ๋ฐœ์ƒ๐Ÿ“Œ ..
๐Ÿ‘พ ๋ฌธ์ œ์ ์ฝ”ํ…Œ ๋ฌธ์ œ ํ’€๋‹ค๊ฐ€ ๋ฐœ๊ฒฌํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ์™€ ๋‚ด ์ฝ”๋“œ์˜ ์ฐจ์ด์  ๋‚ด๊ฐ€ ์“ด ์ฝ”๋“œ (ํ•˜์ˆ˜์˜ ์ฝ”๋“œ)Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1]); ๋‚จ์ด ์“ด ์ฝ”๋“œ (๊ณ ์ˆ˜์˜ ์ฝ”๋“œ)Arrays.sort(targets, (a, b) -> Integer.compare(a[1], b[1])); ์™œ ์ด ๋ถ„์€ Integer.compare() ๋ฉ”์„œ๋“œ๋ฅผ ์ผ์„๊นŒ?๐Ÿง ์›์ธ`Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1])` ๋ฐฉ์‹์€ ๋‘ ์ •์ˆ˜์˜ ๋บ„์…ˆ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด intํ˜•์˜ ๋บ„์…ˆ ์—ฐ์‚ฐ ๊ณผ์ •์—์„œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(overflow)๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, o1[..
1. Spring MVC ํŒจํ„ด์ด๋ž€?Spring MVC๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค. Spring MVC๋Š” ์„œ๋ธ”๋ฆฟ(Servlet) API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ์ด ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋“ˆํ™”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.์šฐ์„  Spring MVC ์— ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์–ด ๊ธฐ๋ณธ์ ์ธ MVCํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์ด MVCํŒจํ„ด์—์„œ ๋ฐœ์ „ํ•œ ๊ฒƒ์ด Spring MVC ์ด๋‹ค. MVC ํŒจํ„ด์€ ํฌ๊ฒŒ 3๊ฐ€์ง€ ์ฃผ์š” ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ๐Ÿฉ MVC ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํŽ˜์ด์ง€, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์ด ๋‘˜์„ ์ค‘๊ฐ„์—์„œ ์ œ์–ดํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๊ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์‹œ์Šคํ…œ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šฐ๋ฉฐ, ์ค‘๋ณต์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ณ , ์• ํ”Œ๋ฆฌ์ผ€..
1. ๋ฐ์ดํ„ฐ ์ „์†ก ๊ทœ์น™ 3๊ฐ€์ง€1-1. ์–ด๋””๋กœ (form ํƒœ๊ทธ์˜ action ์†์„ฑ)- ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋ชฉ์ ์ง€(servlet)๋ฅผ ์ง€์ •ํ•œ๋‹ค. - action ์†์„ฑ์— ์„œ๋ธ”๋ฆฟ URL ํŒจํ„ด์„ ์ž‘์„ฑํ•œ๋‹ค.์—ฌ๊ธฐ์„œ /MyServlet์€ ์„œ๋ธ”๋ฆฟ์˜ URL ๋งคํ•‘ ๊ฐ’์ด๋‹ค. ์„œ๋ธ”๋ฆฟ์˜ URL์€ @WebServlet์ด๋‚˜ web.xml์—์„œ ์„ค์ •๋œ๋‹ค. web.xml ๊ฒฝ๋กœWebContent/WEB-INF/web.xml ๋˜๋Š” src/main/webapp/WEB-INF/web.xml (ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)1-2. ์–ด๋–ค ๊ฐ’์„ (input ํƒœ๊ทธ์˜ name)- input ํƒœ๊ทธ์— name ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. - ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•ด name ์†์„ฑ์ด ํ•„์š”ํ•œ ๊ฒƒ. - Servlet ์—์„œ ๊ฐ’์„..
1. ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด๋ž€? URL์˜ ๋’ค์— ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ•์ด๋‹ค. ์›น๊ฐœ๋ฐœ์—์„œ ์›นํŽ˜์ด์ง€๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ  GET๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์“ฐ์ธ๋‹ค. POST๋ฐฉ์‹์€ ๋ณด์•ˆ์ˆ˜์ค€์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋†’์•„์„œ URL ์— ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  URL์˜ ๋์— ?๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ ๋’ค์— ํ‚ค-๊ฐ’ ์Œ์ด ์ด์–ด์ง€๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ๊ฒ€์ƒ‰์ฟผ๋ฆฌ๋‚˜ ํ•„ํ„ฐ๋ง์— ์‚ฌ์šฉ๋œ๋‹ค.  ๋„ค์ด๋ฒ„ ๊ฒ€์ƒ‰์ฐฝ์— '๋ฑ์Šค'๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์—”ํ„ฐ ์น˜๋ฉด ์ผ์–ด๋‚˜๋Š” ์ผ โ–ผ URL ์— ?๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด '๋ฑ์Šค'๊ฐ€ ๋์— ์ถ”๊ฐ€๋œ๋‹ค ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์ฐฝ์— '์†ํฅ๋ฏผ'์„ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด?์•„๋ž˜์ฒ˜๋Ÿผ ์ฃผ์†Œ์ฐฝ์—์„œ url ๋’ค์— ? ์™€ ๊ฐ์ข… ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ™๋Š”๋‹ค.2. ๊ตฌ์กฐhttps://www...
1. Cookie๋ž€?ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ๋˜๋Š” ํ‚ค์™€ ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐํŒŒ์ผ!์ค‘๋ณต๋˜์ง€ ์•Š๋Š” name๊ณผ value ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง์ˆœ์„œ๊ฐ€ ์—†๋‹ค๋งŒ๋ฃŒ ๊ธฐํ•œ(๋‚˜์ด)๋ฅผ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค, ๋‹จ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด Session ๊ฐ’์œผ๋กœ ์ €์žฅ๋œ๋‹ค.์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ, ์›น ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ฟ ํ‚ค๋ฅผ ํ—ค๋”์— ๋‹ด์•„ ์ „์†กํ•œ๋‹ค.2. Session์ด๋ž€?Session์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์—ฐ๊ฒฐ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์ด๋‹ค.ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ๊ณ ์œ ํ•œ Session ID๋ฅผ ์ƒ์„ฑํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.ํด๋ผ์ด์–ธํŠธ๋Š” Session ID๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ URL์— ํฌํ•จํ•ด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋ฉฐ, ์„œ๋ฒ„๋Š” ์ด ID๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.์„ธ์…˜ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š”..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'Coding/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ