λͺ©λ‘μ 체 κΈ (1099)
KoreanFoodie's Study
λꡬμκ²λ νλ²μ―€ λ΄μ μ°Ύμμ¨λ€. λ°λ νμΈμ΄ μ°Ύμμλ€. λ΄λ°λμ κ΅³κ² λ«ν μλ Aμ λ§μμ λ¬Έμ μ΄μ΄ μ νλ€. μ€λ λ λ§μμ λ΄μ μΈκ΅¬λ € μ΄μ½λ¦Ώ μμλ₯Ό λ€κ³ , νκ΅λ‘ ν₯νλ κΈΈ. Aλ μ€λλ§μ λλΌλ μ€λ μ κΈ°λΆμ’μ λΆμΎν¨μ μκ³ νκ΅ μ λ¬Έμ λμ°©νλ€. 5000μμ§λ¦¬ μ’ μ΄ λ°μ€ μμλ μμ€κ² κ·Έλ €μ§ ννΈ μ½μκ° λ€μ΄μμκ³ , Aλ νμ κ·Έλ₯Ό 보며 λ°κ² μΈμ¬λ₯Ό 건λ€λ Bμκ² μ°λ½μ νκΈ° μν΄ νΈλν°μ κΊΌλλ€. νμ§λ§... μ€λ΅ ... Aμ λ°λ νμΈμ λ΄λ°λμ νκ³ μ€μΉλ― νλ‘ λ λκ°λ€. True Love μ§μ€λ μ¬λμ΄λ 무μμΌκΉ? μ¬λμ 'γ 'μλ λͺ¨λ₯΄λ λμκ² μμ΄μ μ΄ μ§λ¬Έμ νμ μ΄λ ΅κΈ°λ§ νλ€. μ¬λμ΄λΌ. μ§μ¬λλ μ¬λμ΄λΌκ³ ν μ μλ κ±ΈκΉ? λκ΅°κ°λ₯Ό μ λ§ μ¬λνλ€λ 건 κ·Έ μ¬λμ μΈμ μΈ μμλ₯Ό λ€..
κ°λ μ°λ¦¬λ λ§λ‘ μ°¨λ§ νμ©νκΈ° νλ€ μ λμ μ£μ± κ°μ μ§λλ €μ§ λκ° μλ€. μ¬μ§μ΄ νΉλ³ν μλͺ»μ νμ§ μμμμλ λΆκ΅¬νκ³ , νμμ²λΌ 무λν μ΄μκ°κ³ μμμλ λΆκ΅¬νκ³ λ§μ΄λ€. κ·Έλ¬ν μκ°μ λλ·μμ΄ μ°Ύμμ¨λ€. μμΉ¨μ μΌμ΄λ λ¬μ½€ν μ μμ κΉ¨μ΄λ¬μ λ, μΌμ λκ°κΈ° μν΄ μ€μλ₯Ό νκ³ μμ λ λ±λ±. μΈμ μ¬λ―Έμκ² κ²μμ νλ μ€μλ μ΄λ₯Έλ° 'νμ νμ'μ΄ μ°Ύμμ€κΈ°λ νλ€. μ΄λ λ― μ°λ¦¬λ μΆμ λλμ 보며 ν볡ν νμμ μ κΈ°κΈ°λ νμ§λ§, ννμ λ°νκ°μΌλ‘ μ΄λΆμ μ°¨λ©° λ°μ λλ ꡬλ₯Ό λλ μλ€. κ·Έλ¦¬κ³ κ·Έλ° μ£μ± κ°μ μ§λλ € μμΌλ‘ λμκ°μ§ λͺ»νκ³ μκΈ° μμ λ§μ μμ± νλ κ²μΌλ‘ ν루λ₯Ό λ§λ¬΄λ¦¬νλ€. μ΄λ° λ¨κΈ°μ μ°μΈ μ¬μ΄ν΄μ μ΄λ μκ°, λ²κ½μ΄ μ§λ― μ¬λΌμ Έλ²λ¦¬κ³€ νλ€. νμ§λ§ κ·Έ μ¨μμ μ¬μ ν μ°λ¦¬ κ°μ΄ μμ ..
μΏ λ²λ€ν°μ€μ ꡬ쑰 μΏ λ²λ€ν°μ€λ μ ν리μΌμ΄μ κ°μ OSλ₯Ό 곡μ ν΄ VMμ μ¬μ©νλ κ²λ³΄λ€ κ°λ³λ€! λν μΆμν λ λ²¨μ΄ λμ 리μμ€ κ΄λ¦¬κ° ν¨μ¨μ μ΄λ€. μΏ λ²λ€ν°μ€κ° μ 곡νλ κ² μλΉμ€ λμ€μ»€λ²λ¦¬μ λ‘λ λ°Έλ°μ± : DNSμ΄λ¦μ΄λ IP μ£Όμλ₯Ό μ΄μ©ν΄ 컨ν μ΄λλ₯Ό λ ΈμΆν μ μλ€. νΈλν½ κ΄λ¦¬λ₯Ό μν λ‘λ λ°Έλ°μ±λ μ 곡νλ€. μ€ν λ¦¬μ§ μ€μΌμ€νΈλ μ΄μ : λ‘컨 μ μ₯μ/κ³΅μ© ν΄λΌμ°λ 곡κΈμ λ±μ΄ μνλ μ μ₯μ μμ€ν μ μλμΌλ‘ νμ¬ν μ μλ€. μλνλ λ‘€μμκ³Ό λ‘€λ°± μλνλ λΉ ν¨νΉ(bin packing) : 리μμ€ νμ©μ± UP μλνλ 볡ꡬ(self-healing) : μ€ν¨ν 컨ν μ΄λμ μ¬μ€ν/κ΅μ²΄ μν¬λ¦Ώκ³Ό κ΅¬μ± κ΄λ¦¬ : ν¨νΈ, OAuth ν ν°/SSH ν€ μ μ₯ κ΄λ¦¬ μΏ λ²λ€ν°μ€ μ»΄ν¬λνΈ "μΏ λ²λ€ν°μ€λ₯Ό λ°°ν¬νλ©΄ ν΄λ¬μ€ν°λ₯Ό..
λμ κΈ°νκΈμμ μΌλ‘ λ²λ κ²μ΄λ€. ννλ€ μ¬λλ€μ 'μ½κ² λ€μ΄μ¨ λμ μ½κ² λκ°λ€' λ°μμ λ§λ€μ νλ©° νκ²¨μ΄ λ Έλμ κ°μΉμ κ³Όλν μλ―ΈλΆμ¬λ₯Ό νλ€. νμ§λ§ μ¬λλ€μ μ λ§ νκ²¨μ΄ λ Έλμ ν΅ν μ΄μ€ μ°½μΆμ μλ―Έμλ€κ³ μ¬κΈ°λ κ±ΈκΉ? μλλ€! μ¬λλ€μ μ½κ³ νΈνκ² λμ λ²κΈΈ μνκ³ , μ¬μ§μ΄λ μΌμ νμ§ μκ³ λ νλμμ λμ΄ λ¨μ΄μ§κΈΈ λΉλ€. μ μ€μμλ λ§€μΌ λ³΅κΆλͺ λΉμΌλ‘ μλ €μ§ νΈμμ μ μ¬λλ€μ΄ μ€μ μκ³ , κ³΅μ§ μΏ ν°, κ³΅μ§ μ¬μνμ λ°κΈ° μν΄ μ₯μ¬μ§μ μΉκΈ°λ νλ€. μ¬λλ€μ΄ νλ€κ² μΌν΄μ λ²μ΄μΌ λμ΄ μ λΉ μ Έλκ°λ€κ³ μ€μ€λ‘μ μ²μ§λ₯Ό μλ‘νλ κ²μ μκΈ°ν©λ¦¬νμ κ°κΉλ€. νΉμ λΆμλ€μ΄λ μ°μμΈλ€μ 보며 'μ λ κ² λ² λμ κΈλ°© μ¬λΌμ§λ€'κ³ μ μ£Όλ₯Ό νΌλΆλ κ²μ μ΄λ±κ°κ³Ό μ§ν¬μ νμΆμ΄λ€. λΆμλ μμ μ¬λ¦° μ¬μ§μ²λΌ, '..
μ¬μ©μ μ μ μμΈμ μμΈ λ°μ νλ‘κ·Έλ¨μ κ°λ°νλ€ λ³΄λ©΄ μλ° νμ€ APIμμ μ 곡νλ μμΈ ν΄λμ€λ§μΌλ‘λ λ€μν μ’ λ₯μ μμΈλ₯Ό ννν μκ° μλ€. μ ν리μΌμ΄μ μλΉμ€μ κ΄λ ¨λ μμΈλ₯Ό μ ν리μΌμ΄μ μμΈ (Application Exception)μ΄λΌκ³ νλ€. μ΄λ κ°λ°μκ° μ§μ μ μν΄μ λ§λ€μ΄μΌ νλ―λ‘ μ¬μ©μ μ μ μμΈλΌκ³ λ νλ€. μ¬μ©μ μ μ μμΈ ν΄λμ€ μ μΈ μ¬μ©μ μ μ μμΈ ν΄λμ€λ μ»΄νμΌλ¬κ° 체ν¬νλ μΌλ° μμΈλ‘ μ μΈν μλ μκ³ , μ»΄νμΌλ¬κ° 체ν¬νμ§ μλ μ€ν μμΈλ‘ μ μΈν μλ μλ€. μΌλ° μμΈλ‘ μ μΈν κ²½μ° Exceptionμ, μ€ν μμΈλ‘ μ μΈν κ²½μ° RuntimeExceptionμ μμνλ©΄ λλ€. public class SOME_Exception extends [ Exception | Run..
μλ 리μμ€ λ«κΈ° μλ° 7λΆν°λ try-with-resourcesλ₯Ό μ¬μ©νλ©΄ μμΈ λ°μ μ¬λΆμ μκ΄μμ΄ μμν΄λ 리λ‘μ€ κ°μ²΄(κ°μ’ μ μΆλ ₯ μ€νΈλ¦Ό, μλ² μμΌ, κ°μ’ μ±λ)μ close() λ©μλλ₯Ό νΈμΆν΄μ μμ νκ² λ¦¬μμ€λ₯Ό λ«μμ€λ€. 리μμ€λΌλ λ§μ΄ μ¬λ¬ κ°μ§ μλ―Έκ° μκ² μ§λ§ μ¬κΈ°μλ λ°μ΄ν°λ₯Ό μ½κ³ μ°λ κ°μ²΄λΌκ³ μκ°ν΄ λμ. FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); } catch (IOException e) { ... } finally { if (fis != null) { try { fis.close(); } catch (IOException e) {} } } νμΌμ μ¬μ©ν λλ try-catchλ₯Ό μ¬μ©ν΄μ clo..
μμΈμ μμΈ ν΄λμ€ JVM μ€νμ λ¬Έμ κ° μκ²Όμ λ, μ°λ¦¬λ μλ¬λ₯Ό λ§μ£Όνκ² λλ€. μλ°μμλ μλ¬ μ΄μΈμ μμΈ(exception)λΌκ³ λΆλ₯΄λ μ€λ₯κ° μλλ°, μμΈλ μ¬μ©μμ μλͺ»λ μ‘°μ λλ κ°λ°μμ μλͺ»λ μ½λ©μΌλ‘ μΈν΄ λ°μνλ νλ‘κ·Έλ¨ μ€λ₯λ₯Ό λ§νλ€. μμΈκ° λ°μλλ©΄ νλ‘κ·Έλ¨μ 곧λ°λ‘ μ’ λ£νμ§λ§, μμΈ μ²λ¦¬(Exception Handling)μ ν΅ν΄ νλ‘κ·Έλ¨μ μ’ λ£νμ§ μκ³ μ μ μ€ν μνκ° μ μ§λλλ‘ ν μ μλ€. μμΈλ λ κ°μ§ μ’ λ₯κ° μλ€. νλλ μΌλ° μμΈ(Exception)μ΄κ³ , λ€λ₯Έ νλλ μ€ν μμΈ(Runtime Exception)μ΄λ€. μΌλ° μμΈλ μ»΄νμΌλ¬ μ²΄ν¬ μμΈλΌκ³ λ νλλ°, μλ° μμ€λ₯Ό μ»΄νμΌ νλ κ³Όμ μμ μμΈ μ²λ¦¬ μ½λκ° νμνμ§ κ²μ¬νκΈ° λλ¬Έμ΄λ€. λ§μ½ μμΈ μ²λ¦¬ μ½λκ° ..
μ΅λͺ κ°μ²΄ μ΅λͺ (anonymous) κ°μ²΄λ μ΄λ¦μ΄ μλ κ°μ²΄λ₯Ό λ§νλ€. μ΅λͺ κ°μ²΄λ λ¨λ μΌλ‘ μμ±ν μ μκ³ ν΄λμ€λ₯Ό μμνκ±°λ μΈν°νμ΄μ€λ₯Ό ꡬνν΄μΌλ§ μμ±ν μ μλ€. μ΅λͺ κ°μ²΄λ νλμ μ΄κΈ°κ°μ΄λ λ‘컬 λ³μμ μ΄κΈ°κ°, λ§€κ° λ³μμ 맀κ°κ°μΌλ‘ μ£Όλ‘ λμ λλ€. UI μ΄λ²€νΈ μ²λ¦¬ κ°μ²΄λ μ€λ λ κ°μ²΄λ₯Ό κ°νΈνκ² μμ±ν λͺ©μ μΌλ‘ μ΅λͺ κ°μ²΄κ° λ§μ΄ νμ©λλ€. μ΅λͺ μμ κ°μ²΄ μμ± λΆλͺ¨ νμ μΌλ‘ νλλ λ³μλ₯Ό μ μΈνκ³ , μμ κ°μ²΄λ₯Ό μ΄κ°κ°μΌλ‘ λμ ν κ²½μ°λ₯Ό μκ°ν΄λ³΄μ. μ°μ λΆλͺ¨ ν΄λμ€λ₯Ό μμν΄μ μμ ν΄λμ€λ₯Ό μ μΈνκ³ , new μ°μ°μλ₯Ό μ΄μ©ν΄μ μμ κ°μ²΄λ₯Ό μμ±ν ν, νλλ λ‘컬 λ³μμ λμ νλ κ²μ΄ κΈ°λ³Έμ΄λ€. class Child extends Parent { } // μμ ν΄λμ€ μ μΈ class A { P..
μ€μ²© ν΄λμ€ μ€μ²© ν΄λμ€λ₯Ό μ¬μ©νλ©΄ μ½λμ 볡μ‘μ±μ μ€μΌ μ μλ€! μ€μ²© ν΄λμ€λ ν΄λμ€ λ΄λΆμ μ μΈλλ μμΉμ λ°λΌμ λ κ°μ§λ‘ λΆλ₯λλ€. ν΄λμ€μ λ©€λ²λ‘μ μ μΈλλ μ€μ²© ν΄λμ€λ₯Ό λ©€λ² ν΄λμ€λΌκ³ νκ³ , λ©μλ λ΄λΆμμ μ μΈλλ μ€μ²© ν΄λμ€λ₯Ό λ‘컬 ν΄λμ€λΌκ³ νλ€. λ©€λ² ν΄λμ€λ κ°μ²΄κ° μ¬μ© μ€μΌλλ μΈμ λ μ§ μ¬μ¬μ©μ΄ κ°λ₯νμ§λ§, λ‘컬 ν΄λμ€λ λ©μλ μ€ν μμλ§ μ¬μ©λκ³ , λ©μλκ° μ€ν μ’ λ£λλ©΄ μμ΄μ§λ€. public class A { class B {...} // μΈμ€ν΄μ€ λ©€λ² ν΄λμ€ static class C {...} // μ μ λ©€λ² ν΄λμ€ void method() { class D {...} } // λ‘컬 ν΄λμ€ } λ©€λ² ν΄λμ€λ νλμ ν΄λμ€μ΄κΈ° λλ¬Έμ μ»΄νμΌνλ©΄ λ°μ΄νΈ μ½λ νμΌ(.clas..
μΈν°νμ΄μ€ μμ μΈν°νμ΄μ€λ λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό μμν μ μλ€. μΈν°νμ΄μ€λ ν΄λμ€μλ λ¬λ¦¬ λ€μ€ μμμ νμ©νλ€. λ€μκ³Ό κ°μ΄ extends ν€μλ λ€μ μμν μΈν°νμ΄μ€λμ λμ΄ν μ μλ€. public interface νμμΈν°νμ΄μ€ extends μμμΈν°νμ΄μ€1, μμμΈν°νμ΄μ€2 {...} νμ μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€λ νμ μΈν°νμ΄μ€μ λ©μλ λΏλ§ μλλΌ μμ μΈν°νμ΄μ€μ λͺ¨λ μΆμ λ©μλμ λν μ€μ²΄ λ©μλλ₯Ό κ°κ³ μμ΄μΌ νλ€. κ·Έλ κΈ° λλ¬Έμ ꡬν ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό μμ±νκ³ λμ λ€μκ³Ό κ°μ΄ νμ λ° μμ μΈν°νμ΄μ€ νμ μΌλ‘ λ³νμ΄ κ°λ₯νλ€. νμμΈν°νμ΄μ€ λ³μ = new ꡬνν΄λμ€(...); μμμΈν°νμ΄μ€1 λ³μ = new ꡬνν΄λμ€(...); μμμΈν°νμ΄μ€2 λ³μ = new ꡬνν΄λ..