์Šคํ”„๋ง ์ž…๋ฌธ - (11) ํšŒ์› ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ
ยท
Spring/Spring ์ž…๋ฌธ
ํด๋ž˜์Šค์—์„œ Command + Shift + T : Create Test ํšŒ์›๊ฐ€์ž… ๋ฉ”์„œ๋“œ ํ…Œ์ŠคํŠธ class MemberServiceTest { MemberService memberService = new MemberService(); @Test void ํšŒ์›๊ฐ€์ž…() { // ํ…Œ์ŠคํŠธ๋Š” ์ง๊ด€์ ์œผ๋กœ ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๊ฒŒ ํ•œ๊ธ€๋กœ ์ž‘์„ฑํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค //given ๋ฌด์–ธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ , ๋ฐ์ดํ„ฐ Member member = new Member(); member.setName("hello"); //when ์ด๊ฒƒ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ , ๊ฒ€์ฆ Long saveId = memberService.join(member); //then ๊ฒฐ๊ณผ๊ฐ€ ์ด๋ ‡๊ฒŒ ๋‚˜์˜จ๋‹ค , Member findMember = memberService.findOne(save..
[JAVA] ์˜ˆ์™ธ์ฒ˜๋ฆฌ (Exception)
ยท
Develop/JAVA
์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋‹ค์Œ์€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ try, catch๋ฌธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋‹ค. try { ... } catch(์˜ˆ์™ธ1) { ... } catch(์˜ˆ์™ธ2) { ... } try ๋ฌธ์•ˆ์˜ ์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ๋“ค์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด catch๋ฌธ์— ์†ํ•œ ๋ฌธ์žฅ๋“ค์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ try ๋ฌธ์•ˆ์˜ ๋ฌธ์žฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ˆ์™ธ์— ํ•ด๋‹น๋˜๋Š” catch๋ฌธ์ด ์ˆ˜ํ–‰๋œ๋‹ค. ์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค. int c; try { c = 4 / 0; } catch(ArithmeticException e) { c = -1; // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด ๋ฌธ์žฅ์ด ์ˆ˜ํ–‰๋œ๋‹ค. } rithmeticException์ด ๋ฐœ์ƒํ•˜๋ฉด c์— -1์„ ๋Œ€์ž…ํ•˜๋„๋ก ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. Ari..
์Šคํ”„๋ง ์ž…๋ฌธ - (10) ํšŒ์› ์„œ๋น„์Šค ๊ฐœ๋ฐœ
ยท
Spring/Spring ์ž…๋ฌธ
ํšŒ์› ์„œ๋น„์Šค ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ ํšŒ์› Repository ์™€ domain์„ ํ™œ์šฉํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ž‘์„ฑ package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.Optional; public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * ํšŒ์› ๊ฐ€์ž… */ pu..
์Šคํ”„๋ง ์ž…๋ฌธ - (9) ํšŒ์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ
ยท
Spring/Spring ์ž…๋ฌธ
๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•ด์„œ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ž๋ฐ”์˜ main ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ†ตํ•ด์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์ค€๋น„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ , ๋ฐ˜๋ณต ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์ž๋ฐ”๋Š” JUnit์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ํšŒ์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌํ˜„์ฒด ํ…Œ์ŠคํŠธ package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.junit.jupiter.api.Test; public class MemoryMemberRepositoryTest { MemoryMemberRepository reposit..
JAVA / ๋ฐฐ์—ด(Array) ์™€ ๋ฆฌ์ŠคํŠธ(List) ์˜ ์ฐจ์ด / ์ œ๋„ค๋ฆญ์Šค(Generics)
ยท
Develop/JAVA
๋ฐฐ์—ด(Array) ๋ฐฐ์—ด์€ ์ž๋ฃŒํ˜• ํƒ€์ž… ๋ฐ”๋กœ ์˜†์— [] ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•œ๋‹ค. ์œ„ ์˜ˆ์ œ์™€ ๊ฐ™์ด int ์ž๋ฃŒํ˜•์˜ ๋ฐฐ์—ด์€ int[] ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. int[] odds = {1, 3, 5, 7, 9}; String[] weeks = {"์›”", "ํ™”", "์ˆ˜", "๋ชฉ", "๊ธˆ", "ํ† ", "์ผ"}; ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค ์ฆ‰, ๋ฐฐ์—ด์ด๋ž€ ์ž๋ฃŒํ˜•์˜ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹Œ ์ž๋ฃŒํ˜•์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฆฌ์ŠคํŠธ(List) ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ๋ฐฐ์—ด์€ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€๋งŒ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š๊ณ  ๋™์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ 10๊ฐœ๋กœ ์ •ํ–ˆ๋‹ค๋ฉด 10๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ๋‹ด์„ ์ˆ˜๋Š” ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์•„ ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฐ’์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. List ์ž๋ฃŒํ˜•์—๋Š” Array..
ํƒ์ƒ‰&์‹œ๋ฎฌ๋ ˆ์ด์…˜(string, 1์ฐจ์›, 2์ฐจ์› ๋ฆฌ์ŠคํŠธ ํƒ์ƒ‰ ) - 9. ๋ด‰์šฐ๋ฆฌ
ยท
Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
๋‚˜์˜ ํ’€์ด ๊ฐ•์˜ ํ’€์ด dx , dy ์ƒํ•˜์ขŒ์šฐ ๋น„๊ต all all(x)๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ(iterable) ๋ฐ์ดํ„ฐ x๋ฅผ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ๋ฐ›์œผ๋ฉฐ ์ด x์˜ ์š”์†Œ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฉด True, ๊ฑฐ์ง“์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด False๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ž€ for ๋ฌธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒํ˜•์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด, ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ ๋“ฑ์ด ์žˆ๋‹ค. any()๋Š” ํŠนํžˆ ๋Œ€์†Œ๋น„๊ต๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด sort๋ณด๋‹ค ์‹คํ–‰์‹œ๊ฐ„์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ์ˆ˜์™€ ์–ด๋–ค ๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์„ ๋น„๊ตํ•˜๋Š”๋ฐ ํ•ด๋‹น ์ˆ˜๊ฐ€ ๋ฆฌ์ŠคํŠธ ์•ˆ์˜ max๊ฐ’๋ณด๋‹ค ํฐ์ง€๋งŒ ์•Œ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜์ž. ์ด ๋•Œ, sort๋ฅผ ์‚ฌ์šฉํ•œ ๋’ค ๋น„๊ตํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ํ•˜์ง€๋งŒ any๋ฅผ ์“ฐ๋ฉด ๋ฆฌ์ŠคํŠธ ๋‚ด์— ํ•ด๋‹น ์ˆ˜๋ณด๋‹ค ํฐ ์ˆ˜๊ฐ€ ์žˆ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฐ”๋กœ Tr..
ํƒ์ƒ‰&์‹œ๋ฎฌ๋ ˆ์ด์…˜(string, 1์ฐจ์›, 2์ฐจ์› ๋ฆฌ์ŠคํŠธ ํƒ์ƒ‰ ) - 8. ๊ณถ๊ฐ(๋ชจ๋ž˜์‹œ๊ณ„)
ยท
Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
์Šคํ”„๋ง ์ž…๋ฌธ - (8) ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ
ยท
Spring/Spring ์ž…๋ฌธ
๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ ๋ฐ์ดํ„ฐ: ํšŒ์›ID, ์ด๋ฆ„ ๊ธฐ๋Šฅ: ํšŒ์› ๋“ฑ๋ก, ์กฐํšŒ ์•„์ง ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๊ฐ€ ์„ ์ •๋˜์ง€ ์•Š์Œ(๊ฐ€์ƒ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค) ํšŒ์› ๋„๋ฉ”์ธ๊ณผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ ํšŒ์› ๊ฐ์ฒด domain ํŒจํ‚ค์ง€์— Member ํด๋ž˜์Šค ์ƒ์„ฑ hello.hellospring.domain package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { th..