πŸ“–
Kyu9's Repo
  • Library of mameil
  • 이슈 κ²½ν—˜
    • 20230220_νŠΈλžœμž­μ…˜
    • 20230306_μΊμ‹±μ΄μŠˆ
    • 20230722_ν…ŒμŠ€νŠΈμ½”λ“œμ—μ„œ @Transactional
    • 20230807_deadlock
  • 인턴 μŠ€ν„°λ””
    • Gradle
    • Stream, Optional, λžŒλ‹€μ‹
    • JVM의 λ©”λͺ¨λ¦¬ ꡬ쑰, Garbage Collector
    • RESTful API
    • Microservice Architecture
    • HTTP
    • μ›Ήμ„œλ²„λž€ 무엇인가
    • Git Branch
    • TDD
    • Redis을 μ΄μš©ν•œ μΊμ‹œ
    • Thymeleaf
    • 정리가 ν•„μš”ν•œ μžλ£Œλ“€
    • SpringBoot Management
    • ν…ŒμŠ€ν¬ μ½”λ“œ λΆ„ν• 
  • 동아리 μŠ€ν„°λ””
    • κΈ°λ³Έ SQL 곡뢀
      • SQL의 κΈ°λ³Έ κ°œλ…
      • SELECT λ¬Έμž₯을 μ΄μš©ν•˜μ—¬ μ›ν•˜λŠ” 데이터 좜λ ₯ν•˜κΈ°
        • μ§‘ν•© μ—°μ‚°μž μ‚¬μš©ν•˜κΈ°
        • whereμ ˆμ— 비ꡐ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄λ³΄κΈ°
        • SELECT_EX
        • μ‚°μˆ  μ—°μ‚°μž μ‚¬μš©ν•΄λ³΄κΈ°
      • 단일 ν–‰ ν•¨μˆ˜ μ‚¬μš©
        • lower/upper ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • lengthν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • concatν•¨μˆ˜ μ‚¬μš©
        • substr/mid/substring ν•¨μˆ˜ μ‚¬μš©
        • instrν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • lpad/rpad ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • trim/ltrim/rtrim ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • replace ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • round ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • truncate ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • modν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • ceilν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • floorν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • power ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
        • Date fn(λ‚ μ§œ ν•¨μˆ˜)
        • ν˜• λ³€ν™˜ ν•¨μˆ˜
        • μΌλ°˜ν•¨μˆ˜λž€
    • a-ha μ‹€μŠ΅
    • ν˜Όμžμ„œ λ§Œλ“€μ–΄λ³Έ κ²Œμ‹œνŒ
    • AWS κ°•μ˜
  • 학ꡐ λ‚˜λ¨Έμ§€ 곡뢀 자료
    • μ›Ήν”„λ ˆμž„μ›Œν¬(Spring)
      • Springμ΄λž€?
      • Webframework1-1
      • Webframework1-2
      • SpringBoot의 νŠΉμ§•
      • SpringBoot 생성 방법
      • Spring Data JPA
      • SpringBoot Security
      • SpringBoot HATEOAS
  • 곡뢀 μžλ£Œλ“€
  • WS 온라인 μžλ°” μŠ€ν„°λ””
    • Week1(JVM은 무엇이며 μžλ°” μ½”λ“œλŠ” μ–΄λ–»κ²Œ μ‹€ν–‰ν•˜λŠ” 것인가.)
    • Week2(μžλ°” 데이터 νƒ€μž…, λ³€μˆ˜ 그리고 λ°°μ—΄)
    • Week3(μ—°μ‚°μž)
    • Week4(μ œμ–΄λ¬Έ)
    • Week5(클래슀)
    • Week6(상속)
    • Week7(νŒ¨ν‚€μ§€)
    • Week8(μΈν„°νŽ˜μ΄μŠ€)
    • Week9(μ˜ˆμ™Έμ²˜λ¦¬)
    • Week10(λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž˜λ°)
    • Week11(Enum)
    • Week12(Annotation)
    • Week13(I/O)
    • Week14(Generic)
    • Week15(λžŒλ‹€μ‹)
  • λ°±μ€€λ¬Έμ œ
    • μž…μΆœλ ₯κ³Ό 사칙연산
      • We love kriii(10718)
      • 고양이(10171)
      • 개(10172)
      • A+B(1000)
      • A-B(1001)
      • AxB(10998)
      • A/B(1008)
      • 사칙연산(10869)
      • λ‚˜λ¨Έμ§€(10430)
      • κ³±μ…ˆ(2588)
    • forλ¬Έ
      • ꡬꡬ단(2739)
      • A+B - 3(10950)
      • ν•©(8393)
      • λΉ λ₯Έ A+B(15552)
      • N 찍기(2741)
      • 기찍 N(2742)
      • A+B - 7(11021)
      • A+B - 8(11022)
      • 별 찍기 - 1(2438)
      • 별 찍기 - 2(2439)
      • X보닀 μž‘μ€ 수(10871)
    • ifλ¬Έ
      • 두 수 λΉ„κ΅ν•˜κΈ°(1330)
      • μ‹œν—˜ 성적(9498)
      • μœ€λ…„(2753)
      • 사뢄면 κ³ λ₯΄κΈ°(14681)
      • μ•ŒλžŒ μ‹œκ³„(2884)
      • 였븐 μ‹œκ³„(2525)
      • μ£Όμ‚¬μœ„ μ„Έκ°œ(2480)
      • 영수증(25304)
    • Whileλ¬Έ
      • A+B - 5(10952)
      • A+B - 4(10951)
      • λ”ν•˜κΈ° 사이클(1110)
    • 1차원 λ°°μ—΄
      • μ΅œμ†Œ, μ΅œλŒ€(10818)
      • μ΅œλŒ“κ°’(2562)
      • 숫자의 개수(2577)
      • λ‚˜λ¨Έμ§€(3052)
      • 평균(1546)
      • OXν€΄μ¦ˆ(8958)
      • 평균은 λ„˜κ² μ§€(4344)
    • ν•¨μˆ˜
      • μ •μˆ˜N개의 ν•©(15596)
      • μ…€ν”„ λ„˜λ²„(4673)
      • ν•œμˆ˜(1065)
    • λ¬Έμžμ—΄
      • μ•„μŠ€ν‚€μ½”λ“œ(11654)
      • 숫자의 ν•©(11720)
      • μ•ŒνŒŒλ²³ μ°ΎκΈ°(10809)
      • λ¬Έμžμ—΄ 반볡(2675)
      • 단어 곡뢀(1157)
      • λ‹¨μ–΄μ˜ 개수(1152)
      • μƒμˆ˜(2908)
      • 닀이얼(5622)
      • ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³(2941)
      • κ·Έλ£Ή 단어 체컀(1316)
    • κΈ°λ³Έμˆ˜ν•™-1
      • 손읡뢄기점(1712)
      • λ²Œμ§‘(2292)
      • λΆ„μˆ˜μ°ΎκΈ°(1193)
      • λ‹¬νŒ½μ΄λŠ” μ˜¬λΌκ°€κ³  μ‹Άλ‹€(2869)
      • ACM ν˜Έν…”(10250)
      • λΆ€λ…€νšŒμž₯이 λ ν…Œμ•Ό(2775)
      • 섀탕 배달(2839)
      • 큰 수 A+B(10757)
      • Fly me to the Alpha Centauri(1011)
    • κΈ°λ³Έμˆ˜ν•™-2
      • μ†Œμˆ˜ μ°ΎκΈ°(1978)
      • μ†Œμˆ˜(2581)
      • μ†ŒμΈμˆ˜λΆ„ν•΄(11653)
      • μ†Œμˆ˜ κ΅¬ν•˜κΈ°(1929)
      • λ² λ₯΄νŠΈμ™€ 곡쑴(4948)
    • μž¬κ·€
      • ν•˜λ…Έμ΄ 탑 이동 μˆœμ„œ(11729)
      • ν”Όλ³΄λ‚˜μΉ˜ 수 5(10870)
      • 별 찍기(2447)
    • 브루트 포슀
      • λΈ”λž™μž­(2798)
      • λΆ„ν•΄ν•©(2231)
      • 덩치(7568)
      • 체슀판 λ‹€μ‹œ μΉ ν•˜κΈ°(1018)
      • μ˜ν™”κ°λ… 슘(1436)
    • μ§‘ν•©κ³Ό λ§΅
      • 숫자 μΉ΄λ“œ(10815)
      • λ¬Έμžμ—΄ μ§‘ν•©(14425)
      • 숫자 μΉ΄λ“œ2(10816)
      • λ“£λ³΄μž‘(1764)
      • λŒ€μΉ­ μ°¨μ§‘ν•©(1269)
      • μ„œλ‘œ λ‹€λ₯Έ λΆ€λΆ„ λ¬Έμžμ—΄ 갯수(11478)
    • μ •λ ¬
      • 수 μ •λ ¬ν•˜κΈ°(2750)
      • 수 μ •λ ¬ν•˜κΈ° 2(2751)
      • 수 μ •λ ¬ν•˜κΈ° 3(10989)
      • 톡계학(2108)
      • μ†ŒνŠΈμΈμ‚¬μ΄λ“œ(1427)
      • μ’Œν‘œ μ •λ ¬ν•˜κΈ°(11650)
      • μ’Œν‘œ μ •λ ¬ν•˜κΈ°2(11651)
      • 단어 μ •λ ¬(1181)
      • λ‚˜μ΄μˆœ μ •λ ¬(10814)
      • 컀트라인(25305)
      • μ’Œν‘œμ••μΆ•(18870)
    • λ°±νŠΈλž˜ν‚Ή
      • Nκ³Ό M - 1(15649)
      • Nκ³Ό M - 2(15650)
      • Nκ³Ό M - 3(15651)
      • Nκ³Ό M - 4(15652)
      • N-Queen(9663)
      • μŠ€λ„μΏ (2580)
      • μ—°μ‚°μž λΌμ›Œλ„£κΈ°(14888)
      • μŠ€νƒ€νŠΈμ™€ 링크(14889)
    • 이뢄 탐색
      • 수 μ°ΎκΈ°(1920)
    • λ™μ κ³„νšλ²•
      • ν”Όλ³΄λ‚˜μΉ˜ ν•¨μˆ˜(1003)
      • μ‹ λ‚˜λŠ” ν•¨μˆ˜ μ‹€ν–‰(9184)
      • 01타일(1904)
      • νŒŒλ„λ°˜ μˆ˜μ—΄(9461)
      • RGB거리(1149)
      • μ •μˆ˜ μ‚Όκ°ν˜•(1932)
      • 계단 였λ₯΄κΈ°(2579)
      • 1둜 λ§Œλ“€κΈ°(1463)
      • μ‰¬μš΄ 계단 수(10844)
      • 포도주 μ‹œμ‹(2156)
      • κ°€μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄(11053)
      • κ°€μž₯ κΈ΄ 바이토닉 λΆ€λΆ„ μˆ˜μ—΄(11504)
      • 전깃쀄(2565)
      • LCS(9251)
      • 연속합(1912)
      • ν‰λ²”ν•œ λ°°λ‚­(12865)
      • λ”ν•˜κΈ°(9095)
    • DFS와 BFS
      • λ―Έλ‘œνƒμƒ‰(2178)
      • λ°”μ΄λŸ¬μŠ€(2606)
      • DFS와 BFS(1260)
      • λ‹¨μ§€λ²ˆν˜ΈλΆ™μ΄κΈ°(2667)
      • μ „μŸ - μ „νˆ¬(1303)
      • μˆ¨λ°”κΌ­μ§ˆ(1697)
      • 데슀 λ‚˜μ΄νŠΈ(16948)
      • λ‚˜μ΄νŠΈμ˜ 이동(7562)
      • 녹색 옷 μž…μ€ μ• κ°€ μ €λ‹€μ§€?(4485)
      • μŒμ‹λ¬Ό ν”Όν•˜κΈ°(1743)
      • A->B (16953)
      • μˆ¨λ°”κΌ­μ§ˆ 3(13549)
      • μˆ¨λ°”κΌ­μ§ˆ 2(12851)
    • κ΅¬ν˜„
      • 치즈(2636)
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 문제
    • SQL
      • Animal Table - Oracle
      • Animal Table - MySQL
      • Animal Table2 - Oracle
      • Animal Table 3,4 - Oracle
    • Lv1
      • 두 개 λ½‘μ•„μ„œ λ”ν•˜κΈ°
      • 제일 μž‘μ€ 수 μ œκ±°ν•˜κΈ°
      • λ¬Έμžμ—΄ λ‚΄ p와 y의 개수
      • μ˜ˆμ‚°
      • 자릿수 λ”ν•˜κΈ°
      • 두 μ •μˆ˜ μ‚¬μ΄μ˜ ν•©
      • 같은 μˆ«μžλŠ” μ‹«μ–΄
      • κ°€μš΄λ° κΈ€μž κ°€μ Έμ˜€κΈ°
      • μˆ˜λ°•μˆ˜λ°•μˆ˜λ°•μˆ˜λ°•μˆ˜λ°•μˆ˜?
      • λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λŠ” 숫자 λ°°μ—΄
      • 2016λ…„
      • 폰캣λͺ¬
      • μ„œμšΈμ—μ„œ κΉ€μ„œλ°© μ°ΎκΈ°
      • λ¬Έμžμ—΄μ„ μ •μˆ˜λ‘œ λ°”κΎΈκΈ°
      • μ†Œμˆ˜ λ§Œλ“€κΈ°
      • λ¬Έμžμ—΄ 닀루기 κΈ°λ³Έ
      • μ†Œμˆ˜ μ°ΎκΈ°(μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체)
      • 숫자 λ¬Έμžμ—΄κ³Ό μ˜λ‹¨μ–΄
      • μ΄μƒν•œ 문자 λ§Œλ“€κΈ°
      • μ—†λŠ” 숫자 λ”ν•˜κΈ°
      • λ¬Έμžμ—΄ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ λ°°μΉ˜ν•˜κΈ°
      • λ¬Έμžμ—΄ λ‚΄ λ§ˆμŒλŒ€λ‘œ μ •λ ¬ν•˜κΈ°
      • μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ
      • 콜라츠 μΆ”μΈ‘
      • μžμ—°μˆ˜ λ’€μ§‘μ–΄ λ°°μ—΄λ‘œ λ§Œλ“€κΈ°
      • μ‹ κ·œ 아이디 μΆ”μ²œ
      • 비밀지도
      • 크레인 μΈν˜•λ½‘κΈ° κ²Œμž„
      • μ‹€νŒ¨μœ¨
      • 둜또의 졜고 μˆœμœ„μ™€ μ΅œμ € μˆœμœ„
      • ν‚€νŒ¨λ“œ λˆ„λ₯΄κΈ°
      • μ •μˆ˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ λ°°μΉ˜ν•˜κΈ°
    • Lv2
      • ν–‰λ ¬μ˜ κ³±μ…ˆ
      • μ˜μ–΄ λλ§μž‡κΈ°
      • μ˜μ–΄ λλ§μž‡κΈ°
      • N개의 μ΅œμ†Œ 곡배수
      • ν”Όλ³΄λ‚˜μΉ˜ 수
      • 124 λ‚˜λΌμ˜ 숫자
      • 짝지어 μ œκ±°ν•˜κΈ°
      • ν”„λ¦°ν„°
      • λ‹€μŒ 큰 숫자
      • μ΅œλŒ“κ°’κ³Ό μ΅œμ†Ÿκ°’
      • μ΅œμ†Œκ°’ λ§Œλ“€κΈ°
      • 숫자의 ν‘œν˜„
      • JadenCase λ¬Έμžμ—΄ λ§Œλ“€κΈ°
      • μ˜€ν”ˆμ±„νŒ…λ°©
      • μ˜μ–΄ λλ§μž‡κΈ°
      • λ©€μ©‘ν•œ μ‚¬κ°ν˜•
      • μ˜¬λ°”λ₯Έ κ΄„ν˜Έ
      • μœ„μž₯
      • κΈ°λŠ₯개발
      • 더 맡게
      • μŠ€ν‚¬νŠΈλ¦¬
    • 완전탐색
      • λͺ¨μ˜κ³ μ‚¬(Lv1)
      • 카펫(Lv2)
      • μ†Œμˆ˜ μ°ΎκΈ°(Lv2)
    • μ •λ ¬(Sorting)
      • K번째 수(Lv1)
      • κ°€μž₯ 큰 수(Lv2)
      • H-Index(Lv2)
    • ν•΄μ‹œ(Hash)
      • μ™„μ£Όν•˜μ§€ λͺ»ν•œ μ„ μˆ˜(Lv1)
      • μ „ν™”λ²ˆν˜Έ λͺ©λ‘(Lv2)
    • νƒμš•λ²•(Greedy)
      • 체윑볡(Lv1)
      • 큰 수 λ§Œλ“€κΈ°(Lv2)
      • ꡬλͺ…λ³΄νŠΈ(Lv2)
    • λ™μ κ³„νšλ²•(DP)
      • μ •μˆ˜ μ‚Όκ°ν˜•(Lv3)
    • 깊이/λ„ˆλΉ„ μš°μ„  탐색(DFS/BFS)
      • νƒ€κ²Ÿ λ„˜λ²„(Lv2)
      • λ„€νŠΈμ›Œν¬(Lv3)
      • 단어 λ³€ν™˜(Lv3)
  • μŠ€ν”„λ§λΆ€νŠΈ μ±…
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
  • JPA μ±…
    • ν”„λ‘œμ νŠΈ μ„ΈνŒ… 및 κΈ°λ³Έμ„€μ •
    • μ˜μ†μ„± 관리 κ°œλ…
    • μ—”ν‹°ν‹° λ§€ν•‘
      • μ‹€μŠ΅ 예제
    • 연관관계 λ§€ν•‘ 기초
      • μ‹€μŠ΅ 예제
    • λ‹€μ–‘ν•œ 연관관계 λ§€ν•‘
      • λ‹€λŒ€μΌ, μΌλŒ€λ‹€ 관계
      • μΌλŒ€μΌ, λ‹€λŒ€λ‹€ 관계
      • μ‹€μŠ΅ 예제
    • κ³ κΈ‰ λ§€ν•‘
      • 상속 관계 λ§€ν•‘
      • @MappedSuperclass
      • 볡합 킀와 식별 관계 λ§€ν•‘
      • 쑰인 ν…Œμ΄λΈ”
    • ν”„λ‘μ‹œμ™€ 연관관계 관리
      • ν”„λ‘μ‹œ
      • μ¦‰μ‹œ λ‘œλ”©κ³Ό μ§€μ—° λ‘œλ”©
      • μ˜μ†μ„± 전이, κ³ μ•„ 객체
    • κ°’ νƒ€μž…
      • μž„λ² λ””λ“œ νƒ€μž…
      • κ°’ νƒ€μž…κ³Ό λΆˆλ³€ 객체
      • κ°’ νƒ€μž…μ˜ 비ꡐ, μ»¬λ ‰μ…˜
    • 객체지ν–₯ 쿼리 μ–Έμ–΄
      • JPQL part1
      • JPQL part2
      • JPQL part3
      • QueryDSL
      • NativeSQL
      • 객체지ν–₯ 쿼리 심화
    • μ‘μš© μ• ν”Œλ¦¬μΌ€μ΄μ…˜
      • μ—”ν‹°ν‹° μ„€μ •
    • μŠ€ν”„λ§ 데이터 JPA
      • 곡톡 μΈν„°νŽ˜μ΄μŠ€
  • Kotlin In Action
    • μ½”ν‹€λ¦°μ˜ νŠΉμ§•
    • μ½”ν‹€λ¦°μ˜ 기초
    • ν•¨μˆ˜ μ •μ˜μ™€ 호좜
    • 클래슀, 객체, μΈν„°νŽ˜μ΄μŠ€
    • λžŒλ‹€ 방식
    • μ½”ν‹€λ¦° νƒ€μž… μ‹œμŠ€ν…œ
    • μ—°μ‚°μž μ˜€λ²„λ‘œλ”©κ³Ό 기타 κ΄€λ‘€
    • κ³ μ°¨ν•¨μˆ˜
    • μ œλ„€λ¦­μŠ€
    • μ• λ…Έν…Œμ΄μ…˜κ³Ό λ¦¬ν”Œλ ‰μ…˜
    • 코루틴
  • Oracle
    • Oracle κΈ°λ³Έ
    • Oracle 심화
  • SQL_μ—°μŠ΅
    • Revising the Select Query
    • Basic Select
    • Advanced Select
    • Basic Select 2
  • SQL 첫걸음(μ±…)
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
    • Day 18
    • Day 19
    • Day 20
    • Day 21
    • Day 22
    • Day 23
    • Day 24
    • Day 25
    • Day 26
    • Day 27
    • Day 28
    • Day 29
    • Day 30
  • 더 μžλ°” μ½”λ“œλ₯Ό μ‘°μž‘ν•˜λŠ” λ‹€μ–‘ν•œ 방법
    • JVM μ΄ν•΄ν•˜κΈ°
    • λ°”μ΄νŠΈμ½”λ“œ μ‘°μž‘
    • λ¦¬ν”Œλ ‰μ…˜
    • λ‹€μ΄λ‚˜λ―Ή ν”„λ‘μ‹œ
    • μ• λ…Έν…Œμ΄μ…˜ ν”„λ‘œμ„Έμ„œ
  • 더 μžλ°”, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν…ŒμŠ€νŠΈν•˜λŠ” λ‹€μ–‘ν•œ 방법
    • JUnit5
    • Mockito
    • 도컀와 ν…ŒμŠ€νŠΈ
    • μ„±λŠ₯, 운영이슈, μ•„ν‚€ν…μ²˜ ν…ŒμŠ€νŠΈ
  • μ΄νŽ™ν‹°λΈŒ μžλ°”
    • item1 - μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ†Œλ“œλ₯Ό κ³ λ €ν•˜λΌ
    • item2 - μƒμ„±μžμ— λ§€κ°œλ³€μˆ˜κ°€ λ§Žλ‹€λ©΄ λΉŒλ”λ₯Ό κ³ λ €ν•˜λΌ
    • item3 - μƒμ„±μžλ‚˜ μ—΄κ±°νƒ€μž…μœΌλ‘œ μ‹±κΈ€ν„΄μž„μ„ λ³΄μ¦ν•˜λΌ
    • item4 - μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 막기 μœ„ν•΄μ„  private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λΌ
    • item5 - μžμ›μ„ 직접 λͺ…μ‹œν•˜μ§€ 말고 의쑴 객체 μ£Όμž…μ„ μ‚¬μš©ν•˜λΌ
    • item6 - λΆˆν•„μš”ν•œ 객체 생성을 ν”Όν•˜λΌ
    • item7 - λ‹€ μ“΄ 객체 μ°Έμ‘°λ₯Ό ν•΄μ œν•˜λΌ
    • item8 - finalizer와 cleaner μ‚¬μš©μ„ ν”Όν•˜λΌ
    • item9 - try-finally 보닀 try-with-resources을 μ‚¬μš©ν•˜λΌ
    • item10 - equalsλŠ” 일반 κ·œμ•½μ„ μ§€μΌœ μž¬μ •μ˜ν•˜λΌ
    • item11 - equals을 μž¬μ •μ˜ν•˜λ €λ©΄ hashCode도 μž¬μ •μ˜ν•˜λΌ
    • item12 - toString을 항상 μž¬μ •μ˜ν•˜λΌ
    • item13 - clone μž¬μ •μ˜λŠ” μ£Όμ˜ν•΄μ„œ μ§„ν–‰ν•˜λΌ
    • item14 - Comparable을 κ΅¬ν˜„ν• μ§€ κ³ λ―Όν•˜λΌ
  • Elastic Search
    • κ°•μ˜ Summary
    • Elastic Summary κ°œλ… 정리
    • Elastic Summary 적용 정리
  • ν† λΉ„μ˜ μŠ€ν”„λ§ κ°•μ˜
    • μŠ€ν”„λ§λΆ€νŠΈ μ‚΄νŽ΄λ³΄κΈ°
    • 독립 μ‹€ν–‰ν˜• μ„œλΈ”λ¦Ώ μ• ν”Œλ¦¬μΌ€μ΄μ…˜
  • k8s
    • minikube μ„€μΉ˜
    • jenkins μΆ”κ°€
  • Article
    • Choosing the Right MessageBroker
Powered by GitBook
On this page
  • μ œλ„€λ¦­μ˜ κΈ°λ³Έ κ°œλ…
  • +μ œλ„€λ¦­ νƒ€μž… λ§€κ°œλ³€μˆ˜
  • μ œλ„€λ¦­ μ»¬λ ‰μ…˜ 생성
  • Vector E 클래슀의 μ£Όμš”λœ λ©”μ†Œλ“œ
  • λ²‘ν„°μ˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 예제
  • μ œλ„€λ¦­ λ§Œλ“€κΈ°
  • μ œλ„€λ¦­ 클래슀
  • μ œλ„€λ¦­ λ©”μ†Œλ“œ
  • Bounded Type Parameter
  • WildCard
  • Erasure Type
  • μ°Έκ³ μ‚¬μ΄νŠΈ

Was this helpful?

  1. WS 온라인 μžλ°” μŠ€ν„°λ””

Week14(Generic)

μ œλ„€λ¦­μ˜ κΈ°λ³Έ κ°œλ…

μ œλ„€λ¦­μ€ λͺ¨λ“  μ’…λ₯˜μ˜ νƒ€μž…μ„ λ‹€λ£° 수 μžˆλ„λ‘, ν΄λž˜μŠ€λ‚˜ λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜(generic type)을 μ΄μš©ν•˜μ—¬ μ„ μ–Έν•˜λŠ” 기법이닀. 그리고 λ³Έ λ–  찍어내기 μœ„ν•΄ λ§Œλ“€μ–΄μ§„ 틀이라고 μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€. μžλ°”μ—μ„œμ˜ μ œλ„€λ¦­μ€ 클래슀 μ½”λ“œλ₯Ό 찍어내듯이 생산할 수 μžˆλ„λ‘ μΌλ°˜ν™”(generic)μ‹œν‚€λŠ” 도ꡬ이닀.

+μ œλ„€λ¦­ νƒ€μž… λ§€κ°œλ³€μˆ˜

μ—¬κΈ°μ„œ νƒ€μž… 맀개 λ³€μˆ˜λ‘œ μ‚¬μš©ν•˜λŠ” λ¬ΈμžλŠ” λ‹€λ₯Έ λ³€μˆ˜μ™€ ν˜Όλ™μ„ ν”Όν•˜κΈ° μœ„ν•΄ 일반적으둜 ν•˜λ‚˜μ˜ λŒ€λ¬Έμžλ₯Ό μ‚¬μš©

  • E : Element을 μ˜λ―Έν•˜μ—¬ μ»¬λ ‰μ…˜μ—μ„œ μš”μ†Œμž„μ„ λ‚˜νƒ€λƒ„

  • T : Type을 의미

  • V : Value을 의미

  • K : Key을 의미

μ œλ„€λ¦­ μ»¬λ ‰μ…˜ 생성

벑터 생성할 λ•Œ, Vector 의 E에 μš”μ†Œλ₯Ό μ‚¬μš©ν•  νƒ€μž…μ„ μ§€μ •ν•΄μ•Ό ν•œλ‹€. 예λ₯Ό λ“€μ–΄, μ •μˆ˜ κ°’λ§Œ μ‚½μž… κ°€λŠ₯ν•œ 벑터λ₯Ό λ§Œλ“€κ³ μž ν•˜λ©΄ λ‹€μŒ κ³Ό 같이 E에 Integerλ₯Ό μ§€μ •ν•˜μ—¬ μ‚¬μš©κ°€λŠ₯

Vector<Integer> v = new Vector<Integer>();

μ΄λ ‡κ²Œ λ°μ΄ν„°μ˜ νƒ€μž…μ„ λ„£μ–΄μ€˜μ•Όν•˜λŠ”λ°

int, char, double λ“±μ˜ κΈ°λ³Έ νƒ€μž…μ€ E에 μ‚¬μš©ν•  수 μ—†λ‹€.

Vector<int> v = new Vector<int>();

->μ΄λ ‡κ²Œ ν•˜λ©΄ μ—λŸ¬κ°€ λ‚˜κ²Œ λœλ‹€.

Vector<Integer> v = new Vector<Integer>(5);

μ΄λ ‡κ²Œ 초기 μš©λŸ‰μ„ μ§€μ •ν•  수 μžˆμ§€λ§Œ κ°œλ°œμžλŠ” μƒμ„±λœ λ²‘ν„°μ˜ μš©λŸ‰μ„ ꡳ이 μ•Œ ν•„μš” μ—†λ‹€. μ»¬λ ‰μ…˜μ€ μžμ‹ μ˜ μš©λŸ‰μ„ 슀슀둜 μ‘°μ ˆν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 이게 또 μ œλ„€λ¦­μ˜ μž₯점이닀

Vector E 클래슀의 μ£Όμš”λœ λ©”μ†Œλ“œ

  • boolean add(E element)

    • λ²‘ν„°μ˜ 맨 뒀에 element μΆ”κ°€

  • void add(int index, E element)

    • 인덱슀 index에 elementλ₯Ό μ‚½μž…

  • int capacity()

    • ν˜„μž¬ λ²‘ν„°μ˜ μš©λŸ‰μ„ 리턴

  • void clear()

    • λ²‘ν„°μ˜ λͺ¨λ“  μš”μ†Œ μ‚­μ œ

  • boolean contains(Object o)

    • 벑터가 μ§€μ •λœ 객체λ₯Ό o이 ν¬ν•¨ν•˜κ³  μžˆλ‹€λ©΄ trueλ₯Ό 리턴

  • E elementAt(int index)

    • index μœ„μΉ˜μ—μ„œμ˜ μš”μ†Œ 리턴

  • E get(int index)

    • index μœ„μΉ˜μ—μ„œμ˜ μš”μ†Œ 리턴

  • E remove(int index)

    • index μœ„μΉ˜μ—μ„œμ˜ μš”μ†Œ μ‚­μ œ

  • int size()

    • 벑터가 ν¬ν•¨λ˜λŠ” μš”μ†Œμ˜ 갯수 리턴

λ²‘ν„°μ˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 예제

λ²‘ν„°μ—μ„œμ˜ μ‚½μž…μ€ λ²‘ν„°μ˜ λμ΄λ‚˜ 쀑간에 μš”μ†Œλ₯Ό μ‚½μž…ν•  수 있음

import java.util.Vector;

public class vTest {
    public static void main(String[] args) {
        Vector<Integer> v = new Vector<>();

        //μ›λž˜λŠ” μ •μˆ˜λ₯Ό Integer 객체λ₯Ό λ§Œλ“€μ–΄μ„œ μ‚½μž…
        v.add(new Integer(1));
        v.add(new Integer(2));

        //μžλ™ λ°•μ‹± κΈ°λŠ₯을 ν™œμš©ν•˜λ©΄ ꡳ이 Integer 객체둜 λ³€ν™˜λ˜μ–΄ μ‚½μž…λ  수 있음
        v.add(3);
        v.add(4);

        //λ§Œμ•½ μ—¬κΈ°μ—μ„œ λ‹€λ₯Έ 객체 νƒ€μž…μ„ 넣을렀고 μ‹œλ„ν•˜λ©΄ μ—λŸ¬κ°€ 생긴닀
//        v.add("hello");
//        v.add(new Double(3,5));

        //λ²‘ν„°μ—λŠ” null도 μ‚½μž…ν•  수 있기 λ•Œλ¬Έμ— 벑터λ₯Ό 검색할 λ•Œ null이 μ‘΄μž¬ν•  μˆ˜λ„ 있음
        v.add(null);

        //μ›ν•˜λŠ” μœ„μΉ˜μ— 벑터λ₯Ό μž…λ ₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” 2개의 인자λ₯Ό κ°€μ§„ ν•¨μˆ˜μ‚¬μš©
        //μ΄λ ‡κ²Œ 되면 2번째 μœ„μΉ˜μ— 100이 λ“€μ–΄κ°€κ²Œ λœλ‹€.
        v.add(2, 100);
        //1, 2, 100, 3, 4 μ—¬κΈ°κΉŒμ§€ 해두어야함

        //μΈλ±μŠ€μ— μžˆλŠ” μš”μ†Œλ₯Ό μ‚­μ œν•  수 μžˆλ‹€.
        //λ²‘ν„°μ—μ„œμ˜ 3번째 값이 μ—†μ–΄μ Έμ•Όν•˜λ‹ˆκΉŒ 3이 μ—†μ–΄μ Έμ•Ό ν•œλ‹€
        v.remove(3);

        for(int i=0; i<v.size(); i++){
            System.out.println(v.get(i));
        }
    }
}

μ œλ„€λ¦­ λ§Œλ“€κΈ°

μ œλ„€λ¦­ 클래슀

기쑴의 클래슀λ₯Ό λ§Œλ“œλŠ” 방법과 μœ μ‚¬ν•˜μ§€λ§Œ 차이점이 μžˆλ‹€λ©΄ 클래슀 이름 λ‹€μŒμ— μΌλ°˜ν™”λœ νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό <> 사이에 μΆ”κ°€ν•˜λŠ” 것에 차이가 μžˆλ‹€.

import java.util.Vector;

public class vTest {
    //μ œλ„€λ¦­ 클래슀이며 νƒ€μž… λ§€κ°œλ³€μˆ˜λŠ” T
    static class MyClass<T>{
        //λ³€μˆ˜ val의 νƒ€μž…μ€ T
        T val;
        void set(T a){
            val = a;
        }
        T get(){
            return val;
        }
    }
    public static void main(String[] args) {
        //Tμžλ¦¬μ— ꡬ체적인 νƒ€μž…μ„ λ„£μ–΄μ£Όκ³  μ‚¬μš©ν•  수 μžˆλ‹€.
        MyClass<String> s = new MyClass<String>();

        //μ΄λ ‡κ²Œ 값을 λ„£μ–΄μ£Όκ³  좜λ ₯ν•  수 μžˆλ‹€.
        s.set("HELLO!");
        System.out.println(s.get());

        //ꡬ체화할 λ•ŒλŠ” κΈ°λ³Ένƒ€μž…μ‚¬μš© λΆˆκ°€λŠ₯(λ°”λ‘œ λ°‘ 주석)
        //MyClass<int> i = new MyClass<int>();
        MyClass<Integer> i = new MyClass<Integer>();
        i.set(5);
        System.out.println(i.get());
    }
}

μ œλ„€λ¦­ λ©”μ†Œλ“œ

ν•˜λ‚˜μ˜ λ©”μ†Œλ“œ μ„ μ–ΈμœΌλ‘œ λ§Œλ“€μ–΄μ§€λ©° λ‹€λ₯Έ νƒ€μž…λ“€μ„ 인자둜 λ°›μ•„μ„œ 호좜 될 수 μžˆλŠ” λ©”μ†Œλ“œμ΄λ‹€

예λ₯Ό λ“€μ–΄μ„œ 배열을 리슀트둜 λ³€ν™˜ν•˜λŠ” μ œλ„€λ¦­ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•˜λŠ” 예제

public <T> List<T> fromArrayToList(T[] a){
  return Arrays.stream(a).collect(Collectors.toList());
}

μ—¬κΈ°μ„œ 보면 λ©”μ†Œλ“œλŠ” ν•˜λ‚˜μ΄μƒμ˜ μ œλ„€λ¦­ νƒ€μž…μ„ μ²˜λ¦¬ν•  수 있고, λͺ¨λ“  μ œλ„€λ¦­ νƒ€μž…λ“€μ΄ λ©”μ†Œλ“œμ˜ 리턴 νƒ€μž… μ „ μœ„μΉ˜μ— μΆ”κ°€λ˜μ–΄μ•Όν•œλ‹€.

Bounded Type Parameter

νƒ€μž… νŒŒλΌλ―Έν„°λ“€μ€ bound될 수 μžˆλŠ”λ°, boundλœλ‹€λŠ” μ˜λ―ΈλŠ” μ œν•œλœλ‹€λŠ” 의미이고, μ‰½κ²Œ μƒκ°ν•˜λ©΄ λ©”μ†Œλ“œκ°€ 받을 수 μžˆλŠ” νƒ€μž…μ„ μ œν•œν•  수 μžˆλ‹€λŠ” 뜻

public class Box<T> {
    private T t;
    public void set(T t){
        this.t =t;
    }
    public T get() {
        return t;
    }

    public <U extends Number> void inspect(U u){
        //μ—¬κΈ°μ„œ νƒ€μž… νŒŒλΌλ―Έν„° U을 Number둜 μ œν•œν–ˆμŒ -> extends ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©
        //μ΄λ ‡κ²Œ 되면 Uμ—λŠ” Integerλ‚˜, Float, Double와 같은 ν΄λž˜μŠ€λ“€λ§Œ μ‚¬μš©κ°€λŠ₯
        System.out.println("T: "+t.getClass().getName());
        System.out.println("U: "+u.getClass().getName());
    }

    public static void main(String[] args) {
        Box<Integer> ibox = new Box<Integer>();
        ibox.set(10);
        //κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ—¬κΈ° λ°‘μ˜ 주석뢀뢄은 μ—λŸ¬κ°€ λ‚ μˆ˜λ°–μ— μ—†λ‹€
        //ibox.inspect("some text");
    }
}

WildCard

μžλ°”μ—μ„œ μ™€μΌλ“œ μΉ΄λ“œλŠ” "?"으둜 ν‘œμ‹œν•˜λ©° μ•Œ 수 μ—†λŠ” νƒ€μž…μ„ μ˜λ―Έν•  λ–„ μ‚¬μš©λœλ‹€. μ™€μΌλ“œ μΉ΄λ“œλŠ” λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μ‚¬μš©λ  수 μžˆλ‹€. λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…, ν•„λ“œ 그리고 μ§€μ—­λ³€μˆ˜λ‘œ μ‚¬μš©λ μˆ˜ μžˆλ‹€.

ObjectλŠ” λͺ¨λ“  μžλ°” ν΄λž˜μŠ€λ“€μ˜ λΆ€λͺ¨ νƒ€μž…μ΄κΈ΄ ν•˜μ§€λ§Œ Object μ»¬λ ‰μ…˜μ΄ λ‹€λ₯Έ μ»¬λ ‰μ…˜λ“€μ˜ λΆ€λͺ¨λŠ” μ•„λ‹ˆλ‹€.

LIst νƒ€μž…μ˜ λ³€μˆ˜μ— Listλ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜κ²Œ 되면 컴파일 였λ₯˜κ°€ λ°œμƒλ˜λŠ” 것을 보고 확인할 수 μžˆλ‹€.

μ΄λ ‡κ²Œ ν•˜κΈ° 떄문에 같은 μ»¬λ ‰μ…˜μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…λ“€μ„ μΆ”κ°€ν•  경우 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό 막기 μœ„ν•œ 것이닀.

Upper Bounded Wildcards

이것을 μ‚¬μš©ν•˜λ©΄ λ³€μˆ˜μ— λŒ€ν•œ μ œν•œμ„ 쀄여쀄 수 μžˆλ‹€.

μ‚¬μš©ν•˜λŠ” 방법은 "?" 을 extends ν‚€μ›Œλ“œ μ•žμ— λΆ™μ—¬μ£Όλ©΄ λœλ‹€.

public static double sumOfList(List<? extends Number> list) {
    double s = 0.0;
    for (Number n : list)
        s += n.doubleValue();
    return s;
}
List<Integer> li = Arrays.asList(1, 2, 3);
System.out.println("sum = " + sumOfList(li));
List<Double> ld = Arrays.asList(1.2, 2.3, 3.5);
System.out.println("sum = " + sumOfList(ld));

μ—¬κΈ°μ„œ sumOfList ν•¨μˆ˜λŠ” Number의 sub typeκΉŒμ§€ λ‹€ μ‚¬μš©λ  수 있게 λœλ‹€.

Unbounded Wildcards

printListλΌλŠ” λ©”μ†Œλ“œλ₯Ό μƒκ°ν•΄λ³΄μž, printListν•¨μˆ˜μ˜ λͺ©μ μ€ μ–΄λŠ νƒ€μž…μ΄λ“ μ§€ 좜λ ₯ν•˜κΈ° μœ„ν•¨μ΄μ§€λ§Œ λΆˆκ°€λŠ₯ν•˜λ‹€. μ™œλƒν•˜λ©΄ 이것은 였직 Object의 list만 좜λ ₯ν•˜κΈ° 떄문이닀. 즉, List, Listλ“± 이런 것듀을은 List의 μ„œλΈŒνƒ€μž…μ΄ μ•„λ‹ˆκΈ° 떄문이닀.

public static void printList(List<Object> list) {
    for (Object elem : list)
        System.out.println(elem + " ");
    System.out.println();
}

κ·Έλž˜μ„œ 이 ν•¨μˆ˜λ₯Ό

public static void printList(List<?> list) {
    for (Object elem: list)
        System.out.print(elem + " ");
    System.out.println();
}

μ΄λ ‡κ²Œ μ™€μΌλ“œμΉ΄λ“œμΈ "?" 을 μ‚¬μš©ν•΄μ€˜μ„œ λ³€κ²½ν•˜κ²Œ 되면

List<Integer> li = Arrays.asList(1, 2, 3);
List<String>  ls = Arrays.asList("one", "two", "three");
printList(li);
printList(ls);

μ΄λ ‡κ²Œ μ‚¬μš©ν•˜λŠ”λ°μ— λ¬Έμ œκ°€ μ—†λ‹€!

Lower Bounded Wildcards

μ›λž˜ upper bounded wildcardκ°€ λͺ¨λ₯΄λŠ” νƒ€μž…μ„ μžμ„Έν•œ νƒ€μž…μ΄λ‚˜ μ„œλΈŒνƒ€μž…μœΌλ‘œ λ³€ν™˜λ˜μ§€ μ•Šλ„λ‘ μ œν•œν–ˆμœΌλ©°, extends ν‚€μ›Œλ“œ μ•žμ—μ„œ μ‚¬μš©ν–ˆλ‹€λ©΄ lower bounded wildcardλŠ” ν•΄λ‹Ή νƒ€μž…μ˜ super νƒ€μž…κΉŒμ§€ ν—ˆμš©ν•΄μ£Όλ©°, super ν‚€μ›Œλ“œ μ•žμ— μ™€μΌλ“œμΉ΄λ“œμΈ "?" 을 λΆ™ν˜€μ„œ μ‚¬μš©ν•œλ‹€.

public static void addNumbers(List<? super Integer> list) {
    for (int i = 1; i <= 10; i++) {
        list.add(i);
    }
}

또 λ‹€λ₯Έ μ˜ˆμ‹œλ₯Ό λ“€μ–΄μ„œ Integer의 lists에 λŒ€ν•œ λ©”μ†Œλ“œκ°€ ν•„μš”ν•˜κ²Œλ˜λ©΄

List<? super Integer> μ΄λ ‡κ²Œ μž‘μ„±ν•¨μœΌλ‘œμ¨

Integer의 superνƒ€μž…μΈ Integer, Number, Ojbectμ΄λ ‡κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€.

κ·Έλƒ₯ List μ΄λ ‡κ²Œ μ“°λŠ”κ²ƒλ³΄λ‹€ λ²”μš©μ„±μ΄ λ„“μ–΄μ§„λ‹€κ³  μƒκ°ν•œλ‹€.

Erasure Type

μ œλ„€λ¦­μ€ μžλ°” μ–Έμ–΄λ₯Ό μ‚¬μš©ν•¨μ— μžˆμ–΄μ„œ 컴파일 μ‹œ, 더 λΉ‘λΉ‘ν•œ νƒ€μž… 체크λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•΄μ£Όλ©°, μ œλ„€λ¦­ ν”„λ‘œκ·Έλž˜λ°μ„ 도와쀀닀. μ»΄νŒŒμΌλŸ¬λŠ” 컴파일 μ‹œ, μ œλ„€λ¦­μ— λŒ€ν•΄μ„œ type erasureλΌλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ μš©ν•œλ‹€

  • λͺ¨λ“  νŒŒλΌλ―Έν„°λ“€μ„ κ·Έλ“€μ˜ λ²”μ£Όμ•ˆμ—μ„œ μ œλ„€λ¦­ νƒ€μž…μœΌλ‘œ λ³€κ²½ν•œλ‹€.

  • νƒ€μž…μ˜ μ•ˆμ „μ„±μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 경우, νƒ€μž… 캐슀트λ₯Ό μ§„ν–‰

μ˜ˆμ‹œλ₯Ό λ³΄λ©΄μ„œ 확인

public <T> List<T> genericMethod(List<T> list) { 
  return list.stream().collect(Collectors.toList()); 
}

μ΄λ ‡κ²Œ 진행을 ν•˜λ €κ³ ν•˜λ©΄

public <T> List<T> genericMethod(List<Object> list) { 
  return list.stream().collect(Collectors.toList()); 
}

νƒ€μž… μ΄λ ˆμ΄μ €κ°€ μ μš©λ˜λ©΄μ„œ νŠΉμ • νƒ€μž…μœΌλ‘œ μ œν•œλ˜μ§€ μ•Šμ€ Tλ₯Ό μœ„μ™€ 같이 Object둜 λŒ€μ²΄λœλ‹€

λ§Œμ•½

public <T extends Building> void genericMethod(T t){
    ...
}

μ΄λ ‡κ²Œ νƒ€μž…μ΄ μ œν•œλ˜μ–΄μžˆμ„ κ²½μš°μ—λŠ” 이 νƒ€μž…μ€ 컴파일 μ‹œμ μ—μ„œ μ œν•œλœ νƒ€μž…μœΌλ‘œ ꡐ체

public void genericMethod(Building t){
    ...
}

μ΄λ ‡κ²Œ μ œλ„€λ¦­μ— κ΄€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜κ³ , μ œλ„€λ¦­μ€ νƒ€μž…μ˜ 정확성을 μ •ν™•ν•˜κ²Œ ν•΄μ£Όλ©°, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ ν•˜μ—¬κΈˆ 좔가적인 μ˜€λ²„ν—€λ“œ 없이 μ œλ„€λ¦­ μ•Œκ³ λ¦¬μ¦˜μ˜ κ΅¬ν˜„μ„ κ°€λŠ₯ν•˜λ„λ‘ λ„μ™€μ£ΌλŠ”κ±° κ°™λ‹€

μ°Έκ³ μ‚¬μ΄νŠΈ

λͺ…ν’ˆ μžλ°” ν”„λ‘œκ·Έλž˜λ° - ν™©κΈ°νƒœ

PreviousWeek13(I/O)NextWeek15(λžŒλ‹€μ‹)

Last updated 3 years ago

Was this helpful?

https://sthwin.tistory.com/22
https://medium.com/슬기둜운-κ°œλ°œμƒν™œ/java-generic-μžλ°”-μ œλ„€λ¦­-f4343fa222df
https://docs.oracle.com/javase/tutorial/java/generics/wildcards.html
https://docs.oracle.com/javase/tutorial/java/generics/erasure.html