Program Language 7

๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ์ฒด์กฐ 8, ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์ด๋ž€

์ด๊ฑด ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์ ์šฉํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ์šฐํ…Œ์ฝ” ํ”„๋ฆฌ์ฝ”์Šค๋ฅผ ํ•˜๋ฉด์„œ, ๋œจ๊ฑฐ์šด ๊ฐ์ž๐Ÿฅ”์˜€๋˜ ์ผ๊ธ‰์ปฌ๋ ‰์…˜ ๋„๋Œ€์ฒด ์ด๊ฒŒ ๋ญ๊ธธ๋ž˜... ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ์ฒด์กฐ ์›์น™์—์„œ ์ˆ˜๋„์—†์ด ๊ฐ•์กฐํ•˜๊ณ  ์žˆ๋Š” ์ด ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(First Class Collection) ์†ŒํŠธ์›์Šค ์•ค์†”๋กœ์ง€์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ์ฒด์กฐ ํŒŒํŠธ์˜ ๊ทœ์น™ 8์—์„œ ์–ธ๊ธ‰๋œ ๋‚ด์šฉ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค. - ์ฝœ๋ ‰์…˜์„ ํฌํ•จํ•œ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ๋‹ค๋ฅธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค. - ๊ฐ ์ฝœ๋ ‰์…˜์€ ๊ทธ ์ž์ฒด๋กœ ํฌ์žฅ๋ผ ์žˆ์œผ๋ฏ€๋กœ ์ด์ œ ์ฝœ๋ ‰์…˜๊ณผ ๊ด€๋ จ๋œ ๋™์ž‘์€ ๊ทผ๊ฑฐ์ง€๊ฐ€ ๋งˆ๋ จ๋œ์…ˆ์ด๋‹ค. - ํ•„ํ„ฐ๊ฐ€ ์ด ์ƒˆ ํด๋ž˜์Šค์˜ ์ผ๋ถ€๊ฐ€ ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. - ํ•„ํ„ฐ๋Š” ๋˜ํ•œ ์Šค์Šค๋กœ ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. - ๋˜ํ•œ ์ƒˆ ํด๋ž˜์Šค๋Š” ๋‘ ๊ทธ๋ฃน์„ ๊ฐ™์ด ๋ฌถ๋Š”๋‹ค๋“ ๊ฐ€ ๊ทธ๋ฃน์˜ ..

ํ”„๋กœ์ ํŠธ, ํŒจํ‚ค์ง€, ๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ทœ์น™

๋‹ค๋“ค ์ž๋ฐ” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ํ•œ๋ฒˆ ์ฏค์€ ํ˜น์€ ์—ฌ์ „ํžˆ ๊ณ ๋ฏผํ•˜๊ณ  ๊ณ„์‹ค ๋„ค์ด๋ฐ ๊ทœ์น™ Tip์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ณตํ†ต ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ๊ตฌ๋ถ„๋˜๋ฉฐ ๊ธธ์ด์— ์ œํ•œ์ด ์—†๋‹ค. ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ํŠน์ˆ˜๋ฌธ์ž๋Š” '_' ํ˜น์€ '$'๋งŒ ํ—ˆ์šฉํ•œ๋‹ค. ํŒŒ์Šค์นผ ํ‘œ๊ธฐ๋ฒ•(PascalCase)๊ณผ ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•(camelCase)์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ˜์˜์–ด๋Š” ๋ฐ˜๋“œ์‹œ ๋Œ€์‘ํ•˜๋Š” ๊ฐœ๋…์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 1. Project(ํ”„๋กœ์ ํŠธ) ๋Œ€/์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์—†์ด ์‹œ์ž‘ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋Œ€๋ฌธ์ž ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค. 2. Package(ํŒจํ‚ค์ง€) ํŒจํ‚ค์ง€๋ช…์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ํ—ˆ์šฉ ํ•˜์ง€๋งŒ ํด๋ž˜์Šค๋ช…๊ณผ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์†Œ๋ฌธ์ž๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์›์น™ ์œผ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค. ํ‘œ์ค€ ํŒจํ„ด์„ ๋”ฐ๋ฅธ๋‹ค. Ex) [com].[Company].[Project].[toppackage]..

๊ฐ์ฒด์ง€ํ–ฅ์„ ์œ„ํ•œ ์ƒํ™œ์ฒด์กฐ, ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋ฅผ ๊ฐ€์žฅ ๊ฐ์ฒด์ง€ํ–ฅ์Šค๋Ÿฝ๊ฒŒ ์“ฐ๊ธฐ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค. - ์ต์ˆ™ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์˜์‹ํ•˜๋ฉฐ ์ ์šฉํ•ด๋ณด์ž ํ•œ ๋ฉ”์„œ๋“œ์— ์˜ค์ง ํ•œ ๋‹จ๊ณ„์˜ ๋“ค์—ฌ์“ฐ๊ธฐ(indent)๋งŒ ํ•œ๋‹ค. for ๋ฌธ ๋‚ด๋ถ€์—์„œ if ๋ฌธ์ด ํฌํ•จ๋˜๋Š” ์ˆœ๊ฐ„ 2 indent ๊ฐ€ ๋œ๋‹ค. else ์˜ˆ์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ์›์‹œ ๊ฐ’๊ณผ ๋ฌธ์ž์—ด์„ ํฌ์žฅ(VO)ํ•œ๋‹ค. ํ•œ ์ค„์— ์ ์„ ํ•˜๋‚˜๋งŒ ์ฐ๋Š”๋‹ค. ์ค„์—ฌ ์“ฐ์ง€ ์•Š๋Š”๋‹ค(์ถ•์•ฝ ๊ธˆ์ง€). ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•œ๋‹ค. 3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์“ฐ์ง€ ์•Š ๋Š”๋‹ค. ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์“ด๋‹ค. ๋ฌด์˜๋ฏธํ•œ getter/setter/ํ”„๋กœํผํ‹ฐ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. Getter ๋Œ€์‹  ๋ฉ”์‹œ์ง€์— ์ง์ ‘ ๋ณด๋‚ด๊ธฐ https://tecoble.techcourse.co.kr/post/2020-04-28-ask-instead-of-g..

์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ณ  ์“ฐ๋ฉด ์‚ฌ์ˆ˜ํ•œํ…Œ ๋“ฑ์ง ์Šค๋งค์‹œ ๋งž๋Š” Thread, ๋‹น์‹ ๋„ ๋ชจ๋ฅด๋Š” ์‚ฌ์ด ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค?

์ž๋ฐ”๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋ฉด, ๋งˆ์ง€๋ง‰ ์ฆˆ์Œ์— ๋ฐฐ์šฐ๊ฒŒ ๋˜๋Š” Thread๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค. ์ทจ์—…์„ ํ•˜๊ณ , ์‹ค๋ฌด์—์„œ spring, spring boot๋ฅผ ๋‹ค๋ฃจ๋ฉฐ ์ง์ ‘์ ์œผ๋กœ Thread๋ผ๋Š” ์ฝ”๋“œ ๋ณธ ๊ฒƒ์€ ์•ฝ,, 1-2๋ฒˆ? ์ด์—ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค. ๋ถ„๋ช… ์ž๋ฐ” ๋ฐฐ์šธ ๋•Œ ๋ฐฐ์› ๋˜ ๊ฐœ๋…์ธ๋ฐ ์‹ค๋ฌด์—์„œ๋Š” ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์€๊ฒƒ์ธ๊ฐ€? ํ•˜๋Š” - ์ด์ƒํ•œ ํ˜ธ๊ธฐ์‹ฌ์ด ์ƒ๊ฒผ๋‹ค. Thread? ๊ทธ๊ฑฐ ์™œ ์”€? ์ž๋ฐ”์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ €๋Š” ๋ฉ€ํ‹ฐ๊ฐ€ ์•ˆ๋˜๋Š” ์‚ฌ๋žŒ์ด๋ผ... ํ•œ ๋ฒˆ์— ํ•œ๊ฐ€์ง€ ์ผ ๋ฐ–์— ๋ชปํ•˜์ง€๋งŒ,... ์ปดํ“จํ„ฐ๋Š” ๋˜‘๋˜‘ํ•˜๋‹ˆ๊นŒ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์„ ํ•˜๋ฉด ๋‹น์—ฐํžˆ ํšจ์œจ์ ์ด์ž–์•„์š”? โ— โ€ฟโ—  ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—... Thread๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๊ผญ ์•Œ์•„์•ผ ๋” ์ž˜ Thread๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” Process๋ฅผ ๋จผ์ € ์•Œ๊ณ  ๊ฐ‘์‹œ๋‹ค.แŸ.แŸ..

์ง€๊ธˆ๊นŒ์ง€ ๋‹น์—ฐํ•˜๊ฒŒ ์“ฐ๋˜ Java8, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋‹ค์‹œ ์ดํ•ดํ•˜๊ธฐ

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ต์ˆ™ํ•˜์ง€๋งŒ Java ๋ฒ„์ „์— ๋Œ€ํ•ด์„œ๋Š” ๋ฌด์ง€ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋ฌด์ƒ๊ฐ์—†์ด ์•ˆ์ •ํ™”๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ง‰์ƒ ํ•ด๋‹น ๋ฒ„์ „์—์„œ ๊ฐ–๋Š” ํŠน์„ฑ์„ ์ดํ•ดํ•ด๋ณผ ์ƒ๊ฐ์€ ํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿผ Java8์€ ์–ด๋–ค ํŠน์ง•์ด ์žˆ์„๊นŒ? Lambda Expression java8 ๋ถ€ํ„ฐ๋Š” ๋žŒ๋‹คํ‘œํ˜„์‹(๋žŒ๋‹ค์‹)์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ java8 ์ด์ „๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์‹œ๋˜ ๋ถ„์ด๋ผ๋ฉด ๋žŒ๋‹ค์‹์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์œผ์‹ค ์ˆ˜ ์žˆ๋Š”๋ฐ ์‚ฌ์‹ค ๋žŒ๋‹ค์‹, ๋˜๋Š” ๋žŒ๋‹คํ•จ์ˆ˜๋Š” java8์—์„œ ์ฒ˜์Œ ๋‚˜์˜จ ๊ฐœ๋…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋žŒ๋‹ค์‹์€ ์ˆ˜ํ•™ ๋žŒ๋‹ค ๊ณ„์‚ฐ๋ฒ•์—์„œ ์‚ฌ์šฉ๋œ ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ๋Š” LISP์— ์ฒซ ๋„์ž…์ด ๋˜์–ด ์ดํ›„ C#, Scala, Python ๋“ฑ ํ˜„์žฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์—์„œ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค์‹์€ ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ์ง€์นญํ•˜๋Š” ์šฉ์–ด๋กœ์„œ ๋ง ๊ทธ๋Œ€๋กœ ์„ ์–ธ๋˜์–ด์žˆ์ง€ ์•Š์€ ํ•จ์ˆ˜๋ฅผ ์ž์ฒด..

์ธํ„ฐํŽ˜์ด์Šค ๋„ค์ด๋ฐ์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด, service๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  implementsํ•ด์„œ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์–ด๋Š์ƒŒ๊ฐ€๋ถ€ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹จ์ผ ๊ตฌํ˜„์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๊ธฐ๊ณ„์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์™”๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๋ฉฐ ํฌ์ŠคํŒ…์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์ฒด Impl ์ ‘๋ฏธ์‚ฌ๋Š” ์ง€์–‘ํ•ด์•ผํ•œ๋‹ค ํ—๊ฐ€๋ฆฌ์•ˆ ํ‘œ๊ธฐ๋ฒ•์˜ ์ž”์žฌ ํ•™๊ต๋‚˜ ๋‹จ์ˆœํ•œ ์ฝ”๋“œ ๊ฐœ๋ฐœ ๋“ฑ ์ƒ๊ฐ๋ณด๋‹ค ๊ฝค ๋งŽ์€ ๊ณณ์—์„œ ์•„์ง๊นŒ์ง€ ์ด๋Ÿฐ layout์„ ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌํ˜„์ฒด์—๋Š” Impl ์ ‘๋ฏธ์‚ฌ๊ฐ€ ๋ถ™์€ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํ—๊ฐ€๋ฆฌ์•ˆ ํ‘œ๊ธฐ๋ฒ•์˜ ์ž”์žฌ๋กœ, ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๋„ค์ด๋ฐ ๋ฐฉ๋ฒ• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋„ค์ด๋ฐํ•  ๋•Œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์„ ๊ทธ ์˜๋ฏธ ์ž์ฒด์— ๋”ฐ๋ผ ์ง€์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ง„go()), ํ›„์ง„(back()), ํ˜„์žฌ ์œ„์น˜ ๋ฐ˜ํ™˜(ge..

์„ฑ์ ์ฒ˜๋ฆฌ ํ”„๋กœ๊ทธ๋žจ - index ๊ฐ’์œผ๋กœ ํ‰๊ท , ์„์ฐจ ๊ตฌํ•˜๊ธฐ

ํŒŒ์ด์ฌ์„ ์ด์šฉํ•œ ์„ฑ์ ์ฒ˜๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐฐ๊ฒฝ 3๋ช…์˜ ํ•™์ƒ๋“ค์€ ๊ฐ๊ฐ ์ค‘๊ฐ„๊ณ ์‚ฌ์™€ ๊ธฐ๋ง๊ณ ์‚ฌ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋‘ ๊ฐœ์˜ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐœ์ธ์˜ ์„์ฐจ๋ฅผ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์„์ฐจ๋Š” ๋‘ ๊ฐ€์ง€ ์‹œํ—˜ ์ ์ˆ˜(์ค‘๊ฐ„๊ณ ์‚ฌ, ๊ธฐ๋ง๊ณ ์‚ฌ)์˜ ํ‰๊ท ์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. ํ•„์ˆ˜ ์กฐ๊ฑด * ํ•™๋ฒˆ, ์ด๋ฆ„, ์ค‘๊ฐ„๊ณ ์‚ฌ ์ ์ˆ˜, ๊ธฐ๋ง๊ณ ์‚ฌ ์ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. * Score ํด๋ž˜์Šคํ˜• ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. * ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๊ตฌํ˜„ ํฌ์ธํŠธ ์ตœ๋Œ€ํ•œ ์„์ฐจ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด ์ธ๋ฑ์Šค ๊ฐ’์„ ์„์ฐจ๋กœ ํ™œ์šฉํ•œ ์˜ˆ์ œ์ด๋‹ค. ํ•ต์‹ฌ์€ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ key์™€ value๋กœ ์ด๋ฆ„๊ณผ ์ ์ˆ˜๋ฅผ mapping ํ•ด์ฃผ์–ด index๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ, ์ƒ๊ฐํ•ด๋ด์•ผ ํ•  ๋ฌธ์ œ๋กœ๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๋ฆฌ์ŠคํŠธํ™” ํ•˜์—ฌ์•ผ index์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ์ด๋‹ค..