λͺ©λ‘λΆ„λ₯˜ 전체보기 (124)

DevLog 😢

[λͺ¨λ˜μžλ°”μΈμ•‘μ…˜] μŠ€νŠΈλ¦Όμ΄λž€ λ¬΄μ—‡μΌκΉŒ?

πŸ’¬ λͺ¨λ˜ μžλ°” 인 μ•‘μ…˜ 챕터 4을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ μŠ€νŠΈλ¦Όμ΄λž€? μžλ°” 8에 μƒˆλ‘­κ²Œ λ“€μ–΄μ˜¨ κΈ°λŠ₯ 쀑, κ°€μž₯ 핡심적인 κΈ°λŠ₯이라고 말해도 λ¬΄λ°©ν•˜λ‹€. μ»¬λ ‰μ…˜ λ°μ΄ν„°μ˜ λ°˜λ³΅μ„ 도와주고, λ©€ν‹° μŠ€λ ˆλ“œ μ½”λ“œ 없이 병렬성을 κ΅¬ν˜„ν•  수 μžˆλŠ” μ•„μ£Ό μœ μš©ν•œ μΉœκ΅¬μ΄λ‹€. λ˜ν•œ, filterλ‚˜ sorted, map, collect 같은 연산은 ‘high-level building block’이라고 ν•˜λŠ”λ°, μŠ€νŠΈλ¦Όμ„ 마치 λΈ”λ‘μ²˜λŸΌ μŒ“κ³ , 쑰립할 수 μžˆλ‹€λŠ” 점이 큰 νŠΉμ§•μ΄λ‹€. βœ”οΈ stream λ©”μ„œλ“œ 🌱 μŠ€νŠΈλ¦Όμ΄λž€, 데이터 처리 연산을 μœ„ν•΄ μ†ŒμŠ€μ—μ„œ μΆ”μΆœλœ μ—°μ†λœ μš”μ†Œμ΄λ‹€. 1) μ—°μ†λœ μš”μ†Œ μ»¬λ ‰μ…˜μ€ 데이터에 λŒ€ν•œ μžλ£Œκ΅¬μ‘°μ˜€λ‹€λ©΄, μŠ€νŠΈλ¦Όμ€ 이λ₯Ό μ–΄λ–€ μ‹μœΌλ‘œ 계산할지에 λŒ€ν•΄ 닀룬닀. 두 가지 λͺ¨λ‘, μ—°μ†λœ κ°’ μ§‘ν•©μ˜ μΈν„°νŽ˜..

πŸ“–/Modern Java in Action 2023. 4. 7. 11:49
[μš°ν…Œμ½” 5κΈ°] 레벨 1 레벨 인터뷰 정리 및 감정 회고

βœ”οΈ 레벨 μΈν„°λ·°λž€?λ“œλ””μ–΄ 레벨 1 λ°©ν•™ κΈ°κ°„ λ™μ•ˆ λ°€λ Έλ˜ λΈ”λ‘œκ·Έ ν¬μŠ€νŒ…μ˜ λ§ˆμ§€λ§‰, 레벨둜그λ₯Ό μ •λ¦¬ν•˜κ³ μž ν•œλ‹€. μš°ν…Œμ½”μ—μ„œλŠ” 맀 레벨이 λλ‚˜λ©΄ μ‘°λ³„λ‘œ '레벨 인터뷰'λΌλŠ” 것을 μ§„ν–‰ν•œλ‹€. 레벨 μΈν„°λ·°λŠ” 각 λ ˆλ²¨μ—μ„œ ν•™μŠ΅ν•œ λ‚΄μš©μ„ 인터뷰 ν˜•μ‹μœΌλ‘œ μ§„ν–‰ν•˜λŠ” λ§ν•˜κΈ° ν™œλ™μœΌλ‘œμ„œ, μžμ‹ μ΄ μ•Œκ³  μžˆλŠ” 지식을 말둜 ν‘œν˜„ν•˜λŠ” μ—°μŠ΅μ„ 톡해 메타인지λ₯Ό κΈ°λ₯Ό 수 μžˆλ‹€. (μΆ”ν›„ κΈ°μ—…μ˜ 기술 λ©΄μ ‘, 인터뷰에 λŒ€ν•œ λŒ€λΉ„λΌκ³  봐도 μ’‹λ‹€ 😊) κ·Έλ£Ήλ‹Ή 6-7λͺ…이 μ§„ν–‰ν•˜λ©°, 1λͺ…μ˜ 인터뷰어, 3λͺ…μ˜ 인터뷰이, 2-3λͺ…μ˜ μ˜΅μ €λ²„μ™€ ν•¨κ»˜ μ§„ν–‰ν•œλ‹€. ν•œ μ‚¬λžŒλ‹Ή 총 인터뷰 20λΆ„, 그리고 ν”Όλ“œλ°± 10λΆ„μ”© μ§„ν–‰ν•˜λŠ”λ° 생각보닀 이 μ‹œκ°„μ΄ 되게 λΉ λ₯΄λ‹€. 레벨 μΈν„°λ·°λŠ” 총 2일간 μ§„ν–‰λ˜μ—ˆμœΌλ©°, λ‚˜λŠ” 두 번째 날에 μ§„ν–‰ν–ˆκΈ° λ•Œλ¬Έμ— 첫 날은 μž¬νƒμ„ ν–ˆλ‹€...

[객체지ν–₯μ˜μ‚¬μ‹€κ³Όμ˜€ν•΄] 02 - μ΄μƒν•œ λ‚˜λΌμ˜ 객체

🌱 λ“€μ–΄κ°€κΈ° μ „ λ³Έ μ±…μ—μ„œλŠ” μ΄μƒν•œ λ‚˜λΌμ˜ μ•¨λ¦¬μŠ€ 이야기와 객체의 κ°œλ…μ„ μ ‘λͺ©μ‹œμΌœ μ„€λͺ…ν•œλ‹€. μ•¨λ¦¬μŠ€λ„ 쒋은 μ˜ˆμ œμ§€λ§Œ, μ§€λ‚œ μ‹œκ°„μ— μ†Œκ°œν–ˆλ˜ "고양이 μŠ€λ‚΅λ°”" κ²Œμž„μ— λ§žμΆ°μ„œ 이번 챕터도 ν’€μ–΄λ‚˜κ°ˆ μ˜ˆμ •μ΄λ‹€. βœ”οΈ 객체의 행동과 μƒνƒœ 고양이 μŠ€λ‚΅λ°” κ²Œμž„μ—μ„œ, 각각의 λƒ₯λƒ₯이듀은 μ½”μŠ€νŠ¬μ„ μž…μ„ 수 μžˆλ‹€. 그리고 μ–΄λ–€ μ½”μŠ€νŠ¬μ„ μž…λŠ”μ§€μ— λ”°λΌμ„œ 얻을 수 μžˆλŠ” νš¨κ³Όκ°€ 달라진닀. λ§Œμ•½, μ•Œλ°”λƒ₯이 μ–΄ν₯ 슈트λ₯Ό μž…μ—ˆλ‹€κ³  μƒκ°ν•΄λ³΄μž. μ•Œλ°”λƒ₯은 μ–΄ν₯ 슈트λ₯Ό μž…μŒμœΌλ‘œμ„œ 생산속도가 μ¦κ°€ν•˜κ²Œ λœλ‹€. μ•Œλ°”λƒ₯의 κΈ°μ‘΄ 생산 μ†λ„λŠ” 10이라고 κ°€μ •ν–ˆμ„ λ•Œ, μ–΄ν₯ 슈트λ₯Ό μž…μœΌλ©΄ 생산 속도가 20이 λ˜λŠ” 것이닀. 이런 μ‹μœΌλ‘œ μ•Œλ°”λƒ₯의 생산 μ†λ„λŠ” μ–΄λ–€ μ½”μŠ€νŠ¬μ„ μž…λŠλƒμ— λ”°λΌμ„œ 달라진닀. = 즉, μ•Œλ°”λƒ₯이 μ–΄λ–€ 행동을 ν•˜λŠ”μ§€μ— λ”°λΌμ„œ μ•Œλ°”λƒ₯의 ..

[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 04. μΈμŠ€ν„΄μŠ€ν™”λ₯Ό λ§‰μœΌλ €λ©΄ private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 4을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ μœ ν‹Έλ¦¬ν‹° 클래슀 μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ™€ λ³€μˆ˜κ°€ 없이, 정적 λ©”μ„œλ“œμ™€ 정적 λ³€μˆ˜λ§Œ μ œκ³΅ν•˜λŠ” 클래슀λ₯Ό μ˜λ―Έν•œλ‹€. 개인적인 μ˜κ²¬μ΄μ§€λ§Œ, μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λŠ” 객체지ν–₯적 κ΄€μ μ—μ„œ 봀을 λ•Œ μ’‹λ‹€κ³ λŠ” 보기 νž˜λ“€ 것 κ°™λ‹€. μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” μœ ν‹Έλ¦¬ν‹° 클래슀 쀑에 λŒ€ν‘œμ μΈ 것듀을 λͺ‡ 가지 μ‚΄νŽ΄λ³΄μž. public class Arrays { private Arrays() {} ... } μœ„ μ½”λ“œλŠ” java.util에 μ‘΄μž¬ν•˜λŠ” Arrays ν΄λž˜μŠ€μ΄λ‹€. 이 ν΄λž˜μŠ€λŠ” 배열을 μ‘°μž‘ν•˜κΈ° μœ„ν•΄ μ •λ ¬μ΄λ‚˜ 검색 등을 ν•  수 μžˆλŠ” λ‹€μ–‘ν•œ 정적 λ©”μ„œλ“œλ“€μ„ μ œκ³΅ν•œλ‹€. (λŒ€λΆ€λΆ„μ˜ λ©”μ„œλ“œλŠ” μ˜€λ²„λ‘œλ”©λ˜μ–΄ μžˆμ–΄μ„œ μ‹€μ œλ‘œ ν•˜λŠ” 역할은 검색, 볡사, μ±„μš°κΈ°, μ •λ ¬... 등등이 μžˆλ‹€) μœ ν‹Έλ¦¬ν‹° 클래슀둜 사..

πŸ“–/Effective Java 2023. 4. 6. 12:08
[μš°ν…Œμ½” 5κΈ°] 체슀 κ²Œμž„ κ΅¬ν˜„ λ―Έμ…˜ 회고

μ œλ‚˜λž‘ ν•¨κ»˜ν•œ λ„€ 번째 νŽ˜μ–΄ ν”„λ‘œκ·Έλž˜λ°μ΄λ‹€. λ―Έμ…˜μ„ 진행할 λ‹Ήμ‹œμ—λŠ” λ‚œμ΄λ„κ°€ ν™• λ›΄ λŠλ‚Œμ΄λΌ μ–΄λ ΅λ‹€λŠ” 생각, 그리고 μ‹œκ°„μ΄ λ„ˆλ¬΄ μ΄‰λ°•ν•˜λ‹€λŠ” μƒκ°λΏμ΄μ—ˆλŠ”λ° λ‹€ λλ‚˜κ³  λ‚˜μ„œ λŒμ•„λ³΄λ‹ˆκΉŒ λ‚˜λ¦„λŒ€λ‘œ 잘 ν•΄λ‚Έ 것 κ°™λ‹€. (λ¬Όλ‘ ... μ½”λ“œκ°€ λ§ˆμŒμ— λ“ λ‹€λŠ” 말은 μ•„λ‹ˆλ‹€ πŸ₯Ή 정말 많이 λΆ€μ‘±ν•˜λ‹€...) κ·Έλž˜λ„ 레벨 1 λ§ˆμ§€λ§‰ λ―Έμ…˜κΉŒμ§€ μ–΄λ–»κ²Œλ“  온 λ‚΄ μžμ‹ μ΄ λŒ€κ²¬ν•˜λ‹€! μ•žμœΌλ‘œλ„ νž˜λ‚΄μž πŸ’ͺ βœ”οΈ μž‘μ„±ν•œ μ½”λ“œ GitHub - Cl8D/java-chess: 체슀 κ²Œμž„ κ΅¬ν˜„μ„ μœ„ν•œ μ €μž₯μ†Œ 체슀 κ²Œμž„ κ΅¬ν˜„μ„ μœ„ν•œ μ €μž₯μ†Œ. Contribute to Cl8D/java-chess development by creating an account on GitHub. github.com βœ”οΈ 1μ°¨ PR [1, 2단계 - 체슀] μ Έλ‹ˆ(이지원) λ―Έ..

[객체지ν–₯μ˜μ‚¬μ‹€κ³Όμ˜€ν•΄] 01 - ν˜‘λ ₯ν•˜λŠ” κ°μ²΄λ“€μ˜ 곡동체

🌱 λ“€μ–΄κ°€κΈ° μ „ κ°μ‚¬μ˜€, 일λͺ… 토끼책이라고 λΆˆλ¦¬λŠ” 책이닀. 레벨 1이 λλ‚˜κΈ° 전에 읽고 μ‹Άμ—ˆλŠ”λ° 그러질 λͺ»ν•΄μ„œ λ°©ν•™ κΈ°κ°„ λ™μ•ˆ κ°„λ‹¨ν•˜κ²Œ 읽고 μ •λ¦¬ν•΄λ³΄μ•˜λ‹€. 객체지ν–₯에 λŒ€ν•΄ κ³΅λΆ€ν•˜κΈ° μ „μ—λŠ” ‘λ‚΄κ°€ μ™œ 객체지ν–₯적으둜 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•˜μ§€…? μ™œ μΊ‘μŠν™” 이런 κ±Έ μ§€μΌœμ•Ό ν•˜μ§€?’λΌλŠ” 생각을 많이 ν–ˆμ—ˆλŠ”λ°, 객체지ν–₯적 섀계가 μ™œ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±μ„ μ¦κ°€μ‹œν‚€λŠ”μ§€, μ–΄λ–€ μΈ‘λ©΄μ—μ„œ 쒋은지 λ‚΄ λ‚˜λ¦„λŒ€λ‘œ λ¨Έλ¦Ώμ†μ—μ„œ μ •μ˜κ°€ λ˜λŠ” 것 κ°™μ•„μ„œ μž¬λ°Œλ‹€. μžλ°” κ°œλ°œμžλ‘œμ„œ λͺ¨λ“  μ„€κ³„μ˜ 기본은 객체지ν–₯에 λŒ€ν•œ 이해가 μ•„λ‹κΉŒ… λΌλŠ” 생각이 λ“€μ—ˆλ‹€! 각 μž₯에 λŒ€ν•΄μ„œ λ‚΄ λ‚˜λ¦„μ˜ 견해λ₯Ό λ‹΄μ•„ μ •λ¦¬ν•΄λ³΄κ³ μž ν•œλ‹€. βœ”οΈ ν˜‘λ ₯ 관계 ν”νžˆ 객체지ν–₯ 세계λ₯Ό 말할 λ•Œ 싀세계λ₯Ό λͺ¨λ°©ν•˜κΈ° μœ„ν•¨μ΄λΌκ³  λ§Žμ΄λ“€ λ‹΅ν•œλ‹€. (λ‚˜ μ—­μ‹œ 이 책을 읽기 전에 κ·Έλž¬λ‹€) ..

[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 03. private μƒμ„±μžλ‚˜ μ—΄κ±° νƒ€μž…μœΌλ‘œ μ‹±κΈ€ν„΄μž„μ„ λ³΄μ¦ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 3을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ μ‹±κΈ€ν„΄ μΈμŠ€ν„΄μŠ€ μΈμŠ€ν„΄μŠ€λ₯Ό 였직 ν•˜λ‚˜λ§Œ 생성할 수 μžˆλŠ” 클래슀. λ©”λͺ¨λ¦¬ λ‚­λΉ„λ₯Ό 쀄일 수 있고, 데이터λ₯Ό κ³΅μœ ν•  수 μžˆλ‹€. λ‹€λ§Œ, 결합도가 μ¦κ°€ν•˜λ©° ν΄λΌμ΄μ–ΈνŠΈμ˜ ν…ŒμŠ€νŠΈκ°€ μ–΄λ €μ›Œμ§ˆ 수 μžˆλ‹€λŠ” 점이 μ‘΄μž¬ν•œλ‹€. -> μΈμŠ€ν„΄μŠ€λ₯Ό κ΅¬ν˜„ν•΄μ„œ λ§Œλ“  싱글턴이 μ•„λ‹ˆλΌλ©΄, μ‹±κΈ€ν„΄ μΈμŠ€ν„΄μŠ€λ₯Ό mock 객체둜 λŒ€μ²΄ν•˜κΈ°κ°€ νž˜λ“€κΈ° λ•Œλ¬Έμ΄λ‹€. πŸ’¬ μƒμ„±ν•˜λŠ” 방법 1. μƒμ„±μžλ₯Ό λͺ¨λ‘ private둜 λ§Œλ“€κ³ , μΈμŠ€ν„΄μŠ€μ˜ μœ μΌν•œ μ ‘κ·Όμžλ₯Ό public static으둜 μƒμ„±ν•˜κΈ° public class Crew { public static final Crew INSTANCE = new Crew(); private Crew() { ... } public void hello() {...} }..

πŸ“–/Effective Java 2023. 4. 4. 23:29
[μ΄νŒ©ν‹°λΈŒμžλ°”] μ•„μ΄ν…œ 02. μƒμ„±μžμ— λ§€κ°œλ³€μˆ˜κ°€ λ§Žλ‹€λ©΄ λΉŒλ”λ₯Ό κ³ λ €ν•˜λΌ

πŸ’¬ μ΄νŒ©ν‹°λΈŒμžλ°” μ•„μ΄ν…œ 2을 읽고 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. βœ”οΈ ν΄λž˜μŠ€μ— 멀버 λ³€μˆ˜κ°€ λ§Žμ„ 경우, 객체λ₯Ό μ–΄λ–»κ²Œ 생성할 수 μžˆμ„κΉŒ? - μƒμ„±μžλ₯Ό μ—¬λŸ¬ μ’…λ₯˜λ‘œ λ‘μ–΄μ„œ, ν•„μš”ν•œ λ§€κ°œλ³€μˆ˜λ§Œμ„ μ‚¬μš©ν•˜λŠ” μƒμ„±μž μ—¬λŸ¬ 개λ₯Ό λ§Œλ“€ 수 μžˆλ‹€ - κ·ΈλŸ¬λ‚˜, 이 방법은 ν•„λ“œκ°€ λŠ˜μ–΄λ‚˜λ©΄ 그만큼 관리해야 ν•˜λŠ” μƒμ„±μžκ°€ λ§Žμ•„μ§€κΈ° λ•Œλ¬Έμ— 쒋지 μ•Šλ‹€. - λ˜ν•œ, λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜λ©΄ (μΈν…”λ¦¬μ œμ΄μ˜ νŒŒλΌλ―Έν„° 힌트λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 이상) 각 κ°’μ˜ 의미λ₯Ό ν•œλˆˆμ— μ•Œμ•„λ³΄κΈ°κ°€ νž˜λ“€κ³ , 버그가 λ°œμƒν•  ν™•λ₯ μ΄ λ†’μ•„μ§ˆ 수 μžˆλ‹€. public class Crew { private String name; private int age; private String course; private String nickname; } μ˜ˆμ‹œλ‘œ, 크루에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ”..

πŸ“–/Effective Java 2023. 4. 3. 19:54