[Book] ν΄λ¦°μ½”λ“œ - 13μž₯ λ™μ‹œμ„±

2021. 2. 21. 17:59Β·πŸ“ Book/✏ Clean Code

13μž₯ λ™μ‹œμ„±

λ™μ‹œμ„±κ³Ό κΉ”λ”ν•œ μ½”λ“œλŠ” μ–‘λ¦½ν•˜κΈ° μ–΄λ ΅λ‹€.

 

1. λ™μ‹œμ„±μ΄ ν•„μš”ν•œ 이유?

λ™μ‹œμ„±μ€ 결합을 μ—†μ• λŠ” μ „λž΅μ΄λ‹€. 즉, 무엇과 μ–Έμ œλ₯Ό λΆ„λ¦¬ν•˜λŠ” μ „λž΅μ΄λ‹€.

 

μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μΈ ν”„λ‘œκ·Έλž¨μ€ 무엇과 μ–Έμ œκ°€ μ„œλ‘œ λ°€μ ‘ν•˜λ‹€.

κ·Έλž˜μ„œ 호좜 μŠ€νƒμ„ μ‚΄νŽ΄λ³΄λ©΄ ν”„λ‘œκ·Έλž¨ μƒνƒœκ°€ κ³§λ°”λ‘œ λ“œλŸ¬λ‚œλ‹€.

ν”νžˆ 단일 μŠ€λ ˆλ“œ ν”„λ‘œκ·Έλž¨μ€ 정지점(breakpoint)을 μ •ν•œ ν›„ μ–΄λŠ 정지점인지 μ‚΄νŽ΄λ³΄λ©΄μ„œ μ‹œμŠ€ν…œ μƒνƒœλ₯Ό νŒŒμ•…ν•œλ‹€.

 

무엇과 μ–Έμ œλ₯Ό λΆ„λ¦¬ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ쑰와 효율이 극적으둜 λ‚˜μ•„μ§„λ‹€.

ꡬ쑰적인 κ΄€μ μ—μ„œ ν”„λ‘œκ·Έλž¨μ€ κ±°λŒ€ν•œ 루프 ν•˜λ‚˜κ°€ μ•„λ‹ˆλΌ μž‘μ€ ν˜‘λ ₯ ν”„λ‘œκ·Έλž¨ μ—¬λŸΏμœΌλ‘œ 보인닀.

λ”°λΌμ„œ μ‹œμŠ€ν…œμ„ μ΄ν•΄ν•˜κΈ°κ°€ 쉽고 문제λ₯Ό λΆ„λ¦¬ν•˜κΈ°λ„ 쉽닀.

 

ꡬ쑰적 κ°œμ„ λ§Œμ„ μœ„ν•΄ λ™μ‹œμ„±μ„ μ±„νƒν•˜λŠ” 것은 μ•„λ‹ˆλ‹€.

μ–΄λ–€ μ‹œμŠ€ν…œμ€ 응닡 μ‹œκ°„κ³Ό μž‘μ—… μ²˜λ¦¬λŸ‰(throughput) κ°œμ„ μ„ μœ„ν•΄ μ‚¬μš©ν•˜κΈ°λ„ ν•œλ‹€.

 

1) λ―Έμ‹ κ³Ό μ˜€ν•΄

  • λ™μ‹œμ„±μ€ 항상 μ„±λŠ₯을 λ†’μ—¬μ€€λ‹€: λ™μ‹œμ„±μ€ λ•Œλ‘œ μ„±λŠ₯을 λ†’μ—¬μ€€λ‹€. λŒ€κΈ° μ‹œκ°„μ΄ κΈΈμ–΄ μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ ν”„λ‘œμ„Έμ„œλ₯Ό κ³΅μœ ν•  수 μžˆκ±°λ‚˜, μ—¬λŸ¬ ν”„λ‘œμ„Έμ„œκ°€ λ™μ‹œμ— μ²˜λ¦¬ν•  독립적인 계산이 μΆ©λΆ„ν•œ κ²½μš°μ—λ§Œ μ„±λŠ₯이 λ†’μ•„μ§„λ‹€.
  • λ™μ‹œμ„±μ„ κ΅¬ν˜„ν•΄λ„ μ„€κ³„λŠ” λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€: 단일 μŠ€λ ˆλ“œμ™€ 닀쀑 μŠ€λ ˆλ“œμ˜ μ‹œμŠ€ν…œμ€ 섀계가 νŒμ΄ν•˜κ²Œ λ‹€λ₯΄λ‹€.
  • μ›Ή λ˜λŠ” EJB μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜λ©΄ λ™μ‹œμ„±μ„ 이해할 ν•„μš”κ°€ μ—†λ‹€: μ‹€μ œλ‘œ μ»¨ν…Œμ΄λ„ˆκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€, μ–΄λ–»κ²Œ λ™μ‹œ μˆ˜μ •, λ°λ“œλ½ λ“±κ³Ό 같은 문제λ₯Ό ν”Όν•  수 μžˆλŠ”μ§€λ₯Ό μ•Œμ•„μ•Όλ§Œ ν•œλ‹€.

 

2) νƒ€λ‹Ήν•œ 생각

  • λ™μ‹œμ„±μ€ λ‹€μ†Œ λΆ€ν•˜λ₯Ό μœ λ°œν•œλ‹€: μ„±λŠ₯ μΈ‘λ©΄μ—μ„œ λΆ€ν•˜κ°€ 걸리며, μ½”λ“œλ„ 더 μ§œμ•Όν•œλ‹€.
  • λ™μ‹œμ„±μ€ λ³΅μž‘ν•˜λ‹€.
  • 일반적으둜 λ™μ‹œμ„± λ²„κ·ΈλŠ” μž¬ν˜„ν•˜κΈ° μ–΄λ ΅λ‹€: κ²°ν•¨μœΌλ‘œ κ°„μ£Όλ˜μ§€ μ•Šκ³  μΌνšŒμ„± 문제둜 여겨 λ¬΄μ‹œλ˜κΈ° 쉽닀.
  • λ™μ‹œμ„±μ„ κ΅¬ν˜„ν•˜λ €λ©΄ ν”νžˆ 근본적인 섀계 μ „λž΅μ„ μž¬κ³ ν•΄μ•Ό ν•œλ‹€.

 

2. λ‚œκ΄€

λ™μ‹œμ„±μ„ κ΅¬ν˜„ν•˜κΈ° μ–΄λ €μš΄ μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

public class X {
	private int lastIdUsed;

	public int getNextId() {
		return ++lastIdUsed;
	}
}

// μΈμŠ€ν„΄μŠ€ Xλ₯Ό μƒμ„±ν•˜κ³ , lastIdUsed λ₯Ό 42둜 μ„€μ •ν•œ λ‹€μŒ, 두 μŠ€λ ˆλ“œκ°€ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό κ³΅μœ ν•œλ‹€.
// 두 μŠ€λ ˆλ“œκ°€ getNextId();λ₯Ό ν˜ΈμΆœν•œλ‹€λ©΄, κ²°κ³ΌλŠ” μ…‹ 쀑 ν•˜λ‚˜λ‹€.

// ν•œ μŠ€λ ˆλ“œλŠ” 43을 λ°›λŠ”λ‹€. λ‹€λ₯Έ μŠ€λ ˆλ“œλŠ” 44λ₯Ό λ°›λŠ”λ‹€. lastIdUsedλŠ” 44κ°€ λœλ‹€.
// ν•œ μŠ€λ ˆλ“œλŠ” 44을 λ°›λŠ”λ‹€. λ‹€λ₯Έ μŠ€λ ˆλ“œλŠ” 43을 λ°›λŠ”λ‹€. lastIdUsedλŠ” 44κ°€ λœλ‹€.
// ν•œ μŠ€λ ˆλ“œλŠ” 43을 λ°›λŠ”λ‹€. λ‹€λ₯Έ μŠ€λ ˆλ“œλŠ” 43λ₯Ό λ°›λŠ”λ‹€. lastIdUsedλŠ” 44κ°€ λœλ‹€.

// 객체 ν•˜λ‚˜λ₯Ό κ³΅μœ ν•œ ν›„ 동일 ν•„λ“œλ₯Ό μˆ˜μ •ν•˜λ˜ 두 μŠ€λ ˆλ“œκ°€ μ„œλ‘œ κ°„μ„­ν•˜λ―€λ‘œ μ˜ˆμƒμΉ˜ λͺ»ν•œ κ²°κ³Όλ₯Ό λ‚΄λ†“λŠ”λ‹€.

 

3. λ™μ‹œμ„± λ°©μ–΄ 원칙

1) 단일 μ±…μž„ 원칙(SRP)

μ£Όμ–΄μ§„ λ©”μ„œλ“œ, 클래슀, μ»΄ν¬λ„ŒνŠΈλ₯Ό λ³€κ²½ν•  μ΄μœ κ°€ ν•˜λ‚˜μ—¬μ•Ό ν•œλ‹€λŠ” 원칙이닀.

λ™μ‹œμ„±μ€ λ³΅μž‘μ„± ν•˜λ‚˜λ§ŒμœΌλ‘œλ„ λ”°λ‘œ 뢄리할 μ΄μœ κ°€ μΆ©λΆ„ν•˜λ‹€. μ¦‰, λ™μ‹œμ„± κ΄€λ ¨ μ½”λ“œλŠ” λ‹€λ₯Έ μ½”λ“œμ™€ 뢄리해야 ν•œλ‹€.

  • λ™μ‹œμ„± μ½”λ“œλŠ” λ…μžμ μΈ 개발, λ³€κ²½, 쑰율 μ£ΌκΈ°κ°€ μžˆλ‹€.
  • λ™μ‹œμ„± μ½”λ“œμ—λŠ” λ…μžμ μΈ λ‚œκ΄€μ΄ μžˆλ‹€. λ‹€λ₯Έ μ½”λ“œμ—μ„œ κ²ͺλŠ” λ‚œκ΄€κ³Ό λ‹€λ₯΄λ©° 훨씬 μ–΄λ ΅λ‹€.

 

2) 따름 정리(corollary): 자료 λ²”μœ„λ₯Ό μ œν•œν•˜λΌ

곡유 객체λ₯Ό μ‚¬μš©ν•˜λŠ” μ½”λ“œ λ‚΄ μž„κ³„ μ˜μ—­μ„ synchronized ν‚€μ›Œλ“œλ‘œ μΊ‘μŠν™”ν•˜μ—¬ λ³΄ν˜Έν•΄μ•Ό ν•œλ‹€.

이런 μž„κ³„ μ˜μ—­μ˜ 수λ₯Ό μ€„μ΄λŠ” κΈ°μˆ λ„ μ€‘μš”ν•˜λ‹€. 곡유 자료λ₯Ό μˆ˜μ •ν•˜λŠ” μœ„μΉ˜κ°€ λ§Žμ„μˆ˜λ‘ μœ„ν—˜μ„±λ„ 컀진닀.

  • 자료 사본을 μ‚¬μš©ν•˜λΌ: 곡유 자료λ₯Ό 쀄이렀면 μ²˜μŒλΆ€ν„° μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 방법이 제일 μ’‹λ‹€. 객체λ₯Ό 볡사해 읽기 μ „μš©μœΌλ‘œ μ‚¬μš©ν•˜κ±°λ‚˜ μ‚¬μš© ν›„ κ²°κ³Όλ₯Ό κ°€μ Έμ˜€μ§€ μ•ŠλŠ” 방법도 κ°€λŠ₯ν•˜λ‹€.
  • μŠ€λ ˆλ“œλŠ” κ°€λŠ₯ν•œ λ…λ¦½μ μœΌλ‘œ κ΅¬ν˜„ν•˜λΌ: λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ 자료λ₯Ό κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€. 각 μŠ€λ ˆλ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ ν•˜λ‚˜λ₯Ό μ²˜λ¦¬ν•œλ‹€.

 

4. μ‹€ν–‰ λͺ¨λΈμ„ μ΄ν•΄ν•˜λΌ

1) κΈ°λ³Έ μš©μ–΄

  • ν•œμ •λœ μžμ›(Bound Resource): 닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜λŠ” μžμ›μœΌλ‘œ ν¬κΈ°λ‚˜ μˆ«μžκ°€ μ œν•œμ μ΄λ‹€. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°, 길이가 μΌμ •ν•œ 읽기/μ“°κΈ° 버퍼 등이 μ˜ˆμ΄λ‹€.
  • μƒν˜Έ 배제(Mutual Exclusion): ν•œ λ²ˆμ— ν•œ μŠ€λ ˆλ“œλ§Œ 곡유 μžλ£Œλ‚˜ μžμ›μ„ μ‚¬μš©ν•  수 μžˆλ‹€.
  • κΈ°μ•„(Starvation): ν•œ μŠ€λ ˆλ“œλ‚˜ μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ ꡉμž₯히 μ˜€λž«λ™μ•ˆ ν˜Ήμ€ μ˜μ›νžˆ μžμ›μ„ κΈ°λ‹€λ¦°λ‹€.
  • λ°λ“œλ½(Deadlock): μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ μ„œλ‘œκ°€ λλ‚˜κΈ°λ₯Ό κΈ°λ‹€λ¦°λ‹€. λͺ¨λ“  μŠ€λ ˆλ“œκ°€ 각기 ν•„μš”ν•œ μžμ›μ„ λ‹€λ₯Έ μŠ€λ ˆλ“œκ°€ μ μœ ν•˜λŠ” λ°”λžŒμ— μ–΄λŠ μͺ½λ„ 더 이상 μ§„ν–‰ν•˜κΈ° λͺ»ν•œλ‹€.
  • 라이브락(Livelock): 락을 κ±°λŠ” λ‹¨κ³„μ—μ„œ 각 μŠ€λ ˆλ“œκ°€ μ„œλ‘œλ₯Ό λ°©ν•΄ν•œλ‹€. μŠ€λ ˆλ“œλŠ” κ³„μ†ν•΄μ„œ μ§„ν–‰ν•˜λ € ν•˜μ§€λ§Œ, 곡λͺ…(resonance)으둜 인해 μ˜€λž«λ™μ•ˆ μ§„ν–‰ν•˜μ§€ λͺ»ν•œλ‹€.

 

2) μƒμ‚°μž-μ†ŒλΉ„μž(Producer-Consumer)

ν•˜λ‚˜ 이상 μƒμ‚°μž μŠ€λ ˆλ“œκ°€ 정보λ₯Ό 생성해 λ²„νΌλ‚˜ λŒ€κΈ°μ—΄μ— λ„£λŠ”λ‹€.

ν•˜λ‚˜ 이상 μ†ŒλΉ„μž μŠ€λ ˆλ“œκ°€ λŒ€κΈ°μ—΄μ—μ„œ 정보λ₯Ό 가져와 μ‚¬μš©ν•œλ‹€.

 

두 μŠ€λ ˆλ“œκ°€ μ‚¬μš©ν•˜λŠ” λŒ€κΈ°μ—΄μ€ ν•œμ •λœ μžμ›μ΄λ‹€.

μƒμ‚°μž μŠ€λ ˆλ“œλŠ” λŒ€κΈ°μ—΄μ— 빈 곡간이 μžˆμ–΄μ•Ό 정보λ₯Ό μ±„μš΄λ‹€. μ¦‰, 빈 곡간이 생길 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦°λ‹€.

μ†ŒλΉ„μž μŠ€λ ˆλ“œλŠ” λŒ€κΈ°μ—΄μ— 정보가 μžˆμ–΄μ•Ό κ°€μ Έμ˜¨λ‹€. 즉, 정보가 μ±„μ›Œμ§ˆ λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦°λ‹€.

 

λ”°λΌμ„œ 잘λͺ»ν•˜λ©΄ 두 μŠ€λ ˆλ“œ λͺ¨λ‘ μ§„ν–‰ κ°€λŠ₯함에도 λΆˆκ΅¬ν•˜κ³  λ™μ‹œμ— μ„œλ‘œμ—κ²Œ μ‹œκ·Έλ„μ„ 기닀릴 κ°€λŠ₯성이 μ‘΄μž¬ν•œλ‹€.

 

3) 읽기-μ“°κΈ°(Readers-Writers)

읽기 μŠ€λ ˆλ“œλŠ” 주된 μ •λ³΄μ›μœΌλ‘œ 곡유 μžμ›μ„ μ‚¬μš©ν•˜μ§€λ§Œ

μ“°κΈ° μŠ€λ ˆλ“œκ°€ 곡유 μžμ›μ„ 가끔 κ°±μ‹ ν•œλ‹€κ³  ν•˜μž.

 

이런 경우 처리율이 문제의 핡심인데 μ²˜λ¦¬μœ¨μ„ κ°•μ‘°ν•˜λ©΄ κΈ°μ•„ ν˜„μƒμ΄ μƒκΈ°κ±°λ‚˜ 였래된 정보가 μŒ“μΌ 수 μžˆλ‹€.

λŒ€κ°œλŠ” μ“°κΈ° μŠ€λ ˆλ“œκ°€ 버퍼λ₯Ό μ˜€λž«λ™μ•ˆ μ μœ ν•˜λŠ” λ°”λžŒμ— μ—¬λŸ¬ 읽기 μŠ€λ ˆλ“œκ°€ 버퍼λ₯Ό κΈ°λ‹€λ¦¬λŠλΌ 처리율이 λ–¨μ–΄μ§„λ‹€.

 

λ”°λΌμ„œ 읽기 μŠ€λ ˆλ“œμ˜ μš”κ΅¬μ™€ μ“°κΈ° μŠ€λ ˆλ“œμ˜ μš”κ΅¬λ₯Ό 적절히 λ§Œμ‘±μ‹œμΌœ μ²˜λ¦¬μœ¨λ„ μ λ‹Ήνžˆ 높이고 기아도 λ°©μ§€ν•΄μ•Ό ν•œλ‹€.

 

4) μ‹μ‚¬ν•˜λŠ” μ² ν•™μžλ“€

μ—¬κΈ°μ„œ μ² ν•™μžλ₯Ό μŠ€λ ˆλ“œλ‘œ 포크λ₯Ό μžμ›μœΌλ‘œ λ°”κΏ” μƒκ°ν•΄λ³΄μž

μ£Όμ˜ν•΄μ„œ μ„€κ³„ν•˜μ§€ μ•ŠμœΌλ©΄ λ°λ“œλ½, 라이브락, 처리율 μ €ν•˜, νš¨μœ¨μ„± μ €ν•˜ 등을 κ²ͺ을 수 μžˆλ‹€.

 

5. λ™κΈ°ν™”ν•˜λŠ” λ©”μ„œλ“œ 사이에 μ‘΄μž¬ν•˜λŠ” μ˜μ‘΄μ„±μ„ μ΄ν•΄ν•˜λΌ

λ™κΈ°ν™”ν•˜λŠ” λ©”μ„œλ“œ 사이에 μ˜μ‘΄μ„±μ΄ μ‘΄μž¬ν•˜λ©΄ λ™μ‹œμ„± μ½”λ“œμ— μ°Ύμ•„λ‚΄κΈ° μ–΄λ €μš΄ 버그가 생긴닀.

곡유 객체 ν•˜λ‚˜μ—λŠ” λ©”μ„œλ“œ ν•˜λ‚˜λ§Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

6. λ™κΈ°ν™”ν•˜λŠ” 뢀뢄을 μž‘κ²Œ λ§Œλ“€μ–΄λΌ

μžλ°”μ—μ„œ synchronized ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄, 같은 락으둜 감싼 λͺ¨λ“  μ½”λ“œ μ˜μ—­μ€ ν•œ λ²ˆμ— ν•œ μŠ€λ ˆλ“œλ§Œ 싀행이 κ°€λŠ₯ν•˜λ‹€.

락은 μŠ€λ ˆλ“œλ₯Ό μ§€μ—°μ‹œν‚€κ³  λΆ€ν•˜λ₯Ό κ°€μ€‘μ‹œν‚€λ―€λ‘œ μž„κ³„ μ˜μ—­ 수λ₯Ό μ΅œλŒ€ν•œ 쀄여야 ν•œλ‹€.

κ·ΈλŸ¬λ‚˜ 수λ₯Ό 쀄인닀고 ν•„μš” μ΄μƒμœΌλ‘œ μž„κ³„ μ˜μ—­ 크기λ₯Ό ν‚€μš°λ©΄ μŠ€λ ˆλ“œ 간에 경쟁이 λŠ˜μ–΄λ‚˜κ³  ν”„λ‘œκ·Έλž¨ μ„±λŠ₯이 λ–¨μ–΄μ§„λ‹€.

 

7. μ˜¬λ°”λ₯Έ μ’…λ£Œ μ½”λ“œλŠ” κ΅¬ν˜„ν•˜κΈ° μ–΄λ ΅λ‹€

κΉ”λ”ν•˜κ²Œ μ’…λ£Œλ˜λŠ” μ½”λ“œλŠ” μ˜¬λ°”λ‘œ κ΅¬ν˜„ν•˜κΈ° μ–΄λ ΅λ‹€.

κ°€μž₯ ν”νžˆ λ°œμƒν•˜λŠ” λ¬Έμ œκ°€ λ°λ“œλ½μ΄λ‹€. 즉, μŠ€λ ˆλ“œκ°€ μ ˆλŒ€ μ˜€μ§€ μ•Šμ„ μ‹œκ·Έλ„μ„ κΈ°λ‹€λ¦°λ‹€.

예λ₯Ό λ“€μ–΄, λΆ€λͺ¨ μŠ€λ ˆλ“œκ°€ μžμ‹ μŠ€λ ˆλ“œλ₯Ό μ—¬λŸ¬ 개 λ§Œλ“  ν›„ μ’…λ£Œμ‹œν‚€λ €λŠ” 데 λ§Œμ•½ μžμ‹ μŠ€λ ˆλ“œ 쀑 ν•˜λ‚˜κ°€ λ°λ“œλ½μ— κ±Έλ Έλ‹€λ©΄ λΆ€λͺ¨ μŠ€λ ˆλ“œλŠ” μ˜μ›νžˆ κΈ°λ‹€λ €μ•Ό ν•œλ‹€.

 

8. μŠ€λ ˆλ“œ μ½”λ“œ ν…ŒμŠ€νŠΈν•˜κΈ°

문제λ₯Ό λ…ΈμΆœν•˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•˜λΌ.

ν”„λ‘œκ·Έλž¨ μ„€μ •κ³Ό μ‹œμŠ€ν…œ μ„€μ •κ³Ό λΆ€ν•˜λ₯Ό λ°”κΏ”κ°€λ©° 자주 돌렀라.

ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•˜λ©΄ 원인을 μΆ”μ ν•˜λΌ. κ·Έλƒ₯ λ„˜μ–΄κ°€λ©΄ μ ˆλŒ€λ‘œ μ•ˆ λœλ‹€.

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Book/✏ Clean Code' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Book] 클린 μ•„ν‚€ν…μ²˜
  • [Book] ν΄λ¦°μ½”λ“œ - 14μž₯ 점진적인 κ°œμ„ 
  • [Book] ν΄λ¦°μ½”λ“œ - 12μž₯ μ°½λ°œμ„±
  • [Book] ν΄λ¦°μ½”λ“œ - 11μž₯ μ‹œμŠ€ν…œ
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[Book] ν΄λ¦°μ½”λ“œ - 13μž₯ λ™μ‹œμ„±
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”