๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์ž๋ฐ”19

์ž๋ฐ” ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ์˜ˆ์ƒ ์งˆ๋ฌธ 1. ์ž๋ฐ”์˜ ์žฅ๋‹จ์  ์ž๋ฐ”์˜ ์žฅ์ ์€ ๊ฐ€์ƒ๋จธ์‹ ์˜ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์ด์‹์„ฑ์ด ๋†’์•„ ์–ด๋–ค ์šด์˜์ฒด์ œ์—๋„ ์ข…์†๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ์ ์€ ๋ฐ”๋กœ ์ปดํŒŒ์ผ์ด ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ jvm์„ ๊ฑฐ์ณ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ๋ง์ด ๋Šฆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•˜๋“œ์›จ์–ด ๋ฐœ๋‹ฌ๊ณผ jit ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋“ฑ์žฅ์œผ๋กœ ์†๋„์˜ ๊ฒฉ์ฐจ๊ฐ€ ์ค„์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. 2. ๋ฆฌ์ŠคํŠธ, ๋งต, ์…‹์˜ ์ฐจ์ด ๋ฆฌ์ŠคํŠธ์™€ ์…‹์€ ์ปฌ๋ ‰์…˜์— ํฌํ•จ๋˜์–ด ์žˆ๊ณ  ๋งต์€ ๋งต์— ํฌํ•จ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์ŠคํŠธ๋Š” ์ค‘๋ณต ์ €์žฅ์„ ํ—ˆ์šฉํ•˜๊ณ  ์ˆœ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์…‹์€ ์ค‘๋ณต ์ €์žฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆœ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋งต์€ ํ‚ค๊ฐ’์€ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ๋ฐธ๋ฅ˜๊ฐ’์€ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. 3. ๋ฆฌ์ŠคํŠธ, ๋งต, ์…‹์˜ ์žฅ๋‹จ์  ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ€๋ณ€์ ์ธ ๋ฐฐ์—ด๋กœ ๋น„์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋’ค์ชฝ์— ์œ„์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์ˆœํšŒํ•ด์„œ ์ฐพ๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ ๋‹ค.. 2023. 4. 17.
[์ž๋ฐ” ๊ฐœ๋… ์ •๋ฆฌ] JAVA STREAM ์ŠคํŠธ๋ฆผ(STREAM)์ด๋ž€? stream์€ iterator์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๋ฐ˜๋ณต์ž - ๋žŒ๋‹ค์‹์œผ๋กœ ์š”์†Œ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ œ๊ณต - ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค - ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ์™€ ์ตœ์ข… ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ ITERATOR์™€ STREAM์˜ ์ฐจ์ด์  - iterator๋Š” ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•ด์•ผ ํ•จ - stream์€ ๋žŒ๋‹ค์‹์œผ๋กœ ์š”์†Œ ์ฒ˜๋ฆฌ ๋‚ด์šฉ๋งŒ ์ „๋‹ฌ, ๋ฐ˜๋ณต์€ ์ปฌ๋ ‰์…˜ ๋‚ด๋ถ€์—์„œ ์ผ์–ด๋‚œ๋‹ค. ์ฝœ๋ ‰์…˜ / ๋ฐฐ์—ด /์ˆซ์ž ๋ฒ”์œ„ / ํŒŒ์ผ / ๋””๋ ‰ํ† ๋ฆฌ๋กœ๋ถ€ํ„ฐ ์ŠคํŠธ๋ฆผ ์–ป๊ธฐ ์ฝœ๋ ‰์…˜ Stream stream = studentList.stream(); stream.forEach(s-> System.out.println(s.getName())); ๋ฐฐ์—ด - ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ, Stri.. 2023. 4. 11.
[์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค] chapter.12 ํ™•์ธ ๋ฌธ์ œ 1. ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ์„ค๋ช… ์ค‘ ํ‹€๋ฆฐ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฉ”์ธ(main) ์Šค๋ ˆ๋“œ๊ฐ€ main()๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. ์ž‘์—… ์Šค๋ ˆ๋“œ ํด๋ž˜์Šค๋Š” Thread ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Runnable ๊ฐ์ฒด๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์Šค๋ ˆ๋“œ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด run()๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. 2. ๋™์˜์ƒ๊ณผ ์Œ์•…์„ ์žฌ์ƒํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋น„์–ด ์žˆ๋Š” ๋ถ€๋ถ„์— ์ ๋‹นํ•œ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด๋ณด์„ธ์š”. package org.chapter12; public class ThreadExample { public static void main(String[] args) { Thread thread1 = new MovieThread(); thread1.sta.. 2023. 3. 31.
[TDD] @ParameterizedTest ์‚ฌ์šฉํ•˜๊ธฐ @ParameterizedTest ํ•œ ๊ฐœ์˜ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜ @Test ๋Œ€์‹  @ParameterizedTest ๋กœ ์ ๋Š”๋‹ค. arguments๋ฅผ ํ™œ์šฉํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์น™ ์—ฐ์‚ฐ ๊ณ„์‚ฐ๊ธฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์˜ˆ์‹œ 1. ์˜์กด์„ฑ ์ถ”๊ฐ€ testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.2' 2. ENUM ํด๋ž˜์Šค ์ž‘์„ฑ package org.example; import java.util.Arrays; public enum ArithmeticOperator { ADDITION("+") { @Override public int arithmeticCalculate(int operand1.. 2023. 3. 29.
[TDD] ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์˜ ํ•„์š”์„ฑ๊ณผ ์ž‘์„ฑ ๋ฐฉ๋ฒ• ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ? 1. ๋ฌธ์„œํ™” ์—ญํ•  2. ์ฝ”๋“œ์— ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์œ„ํ•จ 3. ๋ฆฌํŒฉํ† ๋ง ์‹œ ์•ˆ์ •์„ฑ ํ™•๋ณด 4. ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ๋” ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ€์ง„ ์„ค๊ณ„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ TDD • Test Driven Development (ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ) • ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• • ๊ธฐ๋Šฅ ๋™์ž‘์„ ๊ฒ€์ฆ (๋ฉ”์„œ๋“œ ๋‹จ์œ„) BDD • Behavior Driven Development (ํ–‰์œ„ ์ฃผ๋„ ๊ฐœ๋ฐœ) • ํ–‰์œ„์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• • ์œ ์ € ์‹œ๋‚˜๋ฆฌ์˜ค ๋™์ž‘์„ ๊ฒ€์ฆ (์‹œ๋‚˜๋ฆฌ์˜ค ๋‹จ์œ„) • ํ•˜๋‚˜์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” Given, When, Then ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง 1. BDD์˜ ์ •์˜ ์ฑ…์ž„ ๊ด€๊ณ„์ž์˜ ๊ด€์ ์—์„œ ๋ณด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ–‰์œ„(๋™์ž‘) ์ค‘ ๊ฐ€์น˜์žˆ๋Š” ๊ธฐ๋Šฅ.. 2023. 3. 28.
[INTELLIJ] WEB APP ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ ์„ค์น˜ํ•ด์•ผ ํ•  ๋ชฉ๋ก JDK 8 ์ด์ƒ (https://www.oracle.com/technetwork/java/javase/downloads/index.html) Maven (https://maven.apache.org/download.cgi) IntelliJ IDEA (https://www.jetbrains.com/idea) Tomcat Server (https://tomcat.apache.org/download-80.cgi) ๋„๊ตฌ ๋ณ„ ์„ค์น˜ ์ด์œ  1. MAVEN - ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Maven ๋„๊ตฌ - apache software foundation์—์„œ ๊ฐœ๋ฐœํ•œ java ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ - ํ”„๋กœ์ ํŠธ์˜ ์ปดํŒŒ์ผ, ๋นŒ๋“œ, ์ˆ˜ํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ - ์„œ๋ฒ„ ์ธก deploy ์ž์›๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ 2. INTELLIJ.. 2023. 2. 22.
ํด๋ฆฐ์ฝ”๋“œ VS ๋ฆฌํŒฉํ† ๋ง ์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ํด๋ฆฐ์ฝ”๋“œ์™€ ๋ฆฌํŒฉํ† ๋ง์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ์‹œ ๋‘ ๋‹จ์–ด๊ฐ€ ํ˜ผ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด ๋‘ ๊ฐœ๋…์ด ์ƒ๋‹นํžˆ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ์š”. ํด๋ฆฐ์ฝ”๋“œ์™€ ๋ฆฌํŒฉํ† ๋ง ๊ฐ๊ฐ์˜ ๊ฐœ๋…๊ณผ ๋‘ ๊ฐœ๋… ์‚ฌ์ด์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ฆฐ์ฝ”๋“œ - ๊ฐœ๋… ํด๋ฆฐ์ฝ”๋“œ๋ž€, ๊ฐ€๋…์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. - ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•œ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค. ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•œ๋‹ค. ์˜์กด์„ฑ์„ ์ตœ๋Œ€ํ•œ ์ค„์ธ๋‹ค. ํด๋ž˜์Šค ํ˜น์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ฆฌํŒฉํ† ๋ง - ๊ฐœ๋… ํ”„๋กœ๊ทธ๋žจ์˜ ์™ธ๋ถ€ ๋™์ž‘์€ ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„, ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด์„œ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ํ–ฅํ›„ ์ด๋ฃจ์–ด์งˆ ์œ ์ง€ ๋ณด์ˆ˜์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. - ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต.. 2023. 1. 18.
์ธํ…”๋ฆฌ์ œ์ด ์„ค์น˜ ๋ฐ ์‹คํ–‰ ์ธํ…”๋ฆฌ์ œ์ด ์„ค์น˜1. ์ธํ…”๋ฆฌ์ œ์ด ํ™ˆํŽ˜์ด์ง€ ์ ‘์†www.jetbrains.com2. ์ƒ๋‹จ ๋‹ค์šด๋กœ๋“œ ํด๋ฆญ3. ๋‹ค์šด๋กœ๋“œ ํด๋ฆญ ์‹œ ์„ค์น˜ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œULTIMATE ๋ฒ„์ „ : ๋ชจ๋“  ๊ธฐ๋Šฅ ์ œ๊ณตCOMMUNITY EDITION : ์ œํ•œ๋œ ๊ธฐ๋Šฅ ์ œ๊ณต์ธํ…”๋ฆฌ์ œ์ด ๊ฐ€๊ฒฉ๊ฐœ์ธ์šฉ ์—ฐ๊ฐ„ ์ฒญ๊ตฌ๊ฐœ์ธ ์›”๊ฐ„ ์ฒญ๊ตฌ์„ค์น˜ ๊ณผ์ •์ธํ…”๋ฆฌ์ œ์ด ์‹คํ–‰์‹คํ–‰ ํ™”๋ฉด์ขŒ์ธก ๋ฉ”๋‰ด๋ฐ”Projects : ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ / ํ”„๋กœ์ ํŠธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐCustomize : ์ปฌ๋Ÿฌ ํ…Œ๋งˆ / ํฐํŠธ ํฌ๊ธฐ ์„ค์ •Plugins : ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค / ํ™•์žฅํ”„๋กœ๊ทธ๋žจ ์„ค์น˜Learn : ์ธํ…”๋ฆฌ์ œ์ด ์‚ฌ์šฉ๋ฒ• ์„ค๋ช… 2023. 1. 4.
[์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค] chapter.1 ํ™•์ธ ๋ฌธ์ œ 1. JDK์™€ JRE์˜ ํƒ€์ด์ ์„ ์„ค๋ช…ํ•œ ๊ฒƒ ์ค‘ ํ‹€๋ฆฐ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? JDK๋Š” JRE์™€ ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ์˜ ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด JSK๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰๋งŒ ํ•˜๋ ค๋ฉด JRE๋ฅผ ์„ค์น˜ํ•ด๋„ ์ƒ๊ด€์—†๋‹ค. JRE์—๋Š” ์ปดํŒŒ์ผ๋Ÿฌ(javac.exe)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. 2. JVM์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ํ‹€๋ฆฐ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? JVM์€ java.exe ๋ช…๋ น์–ด์— ์˜ํ•ด ๊ตฌ๋™๋œ๋‹ค. JVM์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜์‹œํ‚ค๊ณ  ์‹คํ–‰ํ•œ๋‹ค. JVM์€ ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์ด๋‹ค. (์šด์˜์ฒด์ œ๋ณ„๋กœ ๋™์ผํ•œ JVM์ด ์ ์šฉ๋œ๋‹ค.) ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” JVM์— ๋…๋ฆฝ์ ์ด์ง€๋งŒ, JVM์€ ์šด์˜์ฒด์ œ์— ์ข…์†์ ์ด๋‹ค. 3. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜์‹œ์˜ค. javac.exe๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํŒŒ์ผ(~.class)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.. 2023. 1. 3.
๋ฐ˜์‘ํ˜•