Spring/Spring κΈ°λ³Έ
μ
λ λ©΄μ κ΄μκ² κ±Έλ¦¬λ©΄ λ¬Όμ΄λ³Ό μλ μλ€λ μ’μ κ°μ²΄ μ§ν₯ μ€κ³μ 5κ°μ§ μμΉ SOLIDλ₯Ό μμ보μ... SRP λ¨μΌ μ±
μ μμΉ ( single responsibilty principle ) - ν ν΄λμ€λ νλμ μ±
μλ§ κ°μ ΈμΌ νλ€. - νλμ μ±
μμ΄λΌλ κ²μ λͺ¨νΈνλ€. ν΄ μ μκ³ , μμ μ μλ€. λ¬Έλ§₯κ³Ό μν©μ λ°λΌ λ€λ₯΄λ€. - μ€μν κΈ°μ€μ λ³κ²½μ΄λ€. λ³κ²½μ΄ μμ λ νκΈ ν¨κ³Όκ° μ μΌλ©΄ λ¨μΌ μ±
μ μμΉμ μ λ°λ₯Έ κ²μ΄λ€. OCP κ°λ°©-νμ μμΉ ( open/closed principle ) - μννΈμ¨μ΄ μμλ νμ₯μλ μ΄λ €μμΌλ λ³κ²½μλ λ«νμμ΄μΌ νλ€. " μ΄λ»κ² μ½λμ λ³κ²½ μμ΄ κΈ°λ₯μ μΆκ°ν μ μμκΉ? " - λ€νμ±μ νμ©ν΄ 보μ - μΈν°νμ΄μ€λ₯Ό ꡬνν μλ‘μ΄ ν΄λμ€λ₯Ό νλ λ§λ€μ΄μ(κΈ°μ‘΄..
Spring/Spring κΈ°λ³Έ
μ€νλ§ νλ μμν¬ μ€νλ§ λΆνΈ μ€νλ§μ νΈλ¦¬νκ² μ¬μ©ν μ μλλ‘ μ§μν΄ μ£Όλ κ² μ€νλ§μ μ λ§λ€μλμ? (ν΅μ¬ κ°λ
) μ€νλ§μ μλ° μΈμ΄ κΈ°λ°μ νλ μμν¬ κ°μ²΄ μ§ν₯ μΈμ΄ μ€νλ§μ κ°μ²΄ μ§ν₯ μΈμ΄κ° κ°μ§ κ°λ ₯ν νΉμ§μ μ΄λ €λ΄λ νλ μμν¬ μ€νλ§μ μ’μ κ°μ²΄ μ§ν₯ μ ν리μΌμ΄μ
μ κ°λ°ν μ μκ² λμμ£Όλ νλ μμν¬ μ€νλ§ νλ μμν¬λ₯Ό μ΄ν΄νλ €λ©΄ " μ’μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄ λκΉ?? "λ₯Ό μμμΌ νλ€. κ°μ²΄ μ§ν₯ νΉμ§ - μΆμν λ보기 μΆμνλ μ€μ μΈμμ κ°μ²΄ννλ κ² μλλΌ νμν μ 보λ§μ μ€μ¬μΌλ‘ κ°μννλ κ²μ μλ―Ένλ€. μ€μ μ§νλλ³΄λ€ μ§νμ² μ κ°μ μλμμΉκ° μ€μνκ² μ 리λ μ§νμ² λ
Έμ λκ° μΆμνμ λνμ μΈ μμ΄λ€. νλ‘κ·Έλλ° μΈμ΄μμλ κ°μ²΄λ€μ 곡ν΅μ μΈ μμ±κ³Ό κΈ°λ₯μ μ€μ¬μΌλ‘ μΆμννλ€. ..
Spring/Spring μ
λ¬Έ
AOP (Aspect Oriented Programming)λ? κ΄μ μ§ν₯ νλ‘κ·Έλλ° κ΄μ μ§ν₯μ μ΄λ€ λ‘μ§μ κΈ°μ€μΌλ‘ ν΅μ¬μ μΈ κ΄μ , λΆκ°μ μΈ κ΄μ μΌλ‘ λλμ΄μ λ³΄κ³ κ·Έ κ΄μ μ κΈ°μ€μΌλ‘ λͺ¨λν νκ² λ€λ κ² *λͺ¨λν : μ΄λ€ 곡ν΅λ λ‘μ§μ΄λ κΈ°λ₯μ νλμ λ¨μλ‘ λ¬Άλ κ² μλ₯Ό λ€μ΄ ν΅μ¬μ μΈ κ΄μ μ λΉμ¦λμ€ λ‘μ§μ΄ λ μ μκ³ , λΆκ°μ μΈ κ΄μ μ ν΅μ¬ λ‘μ§μ μ€ννκΈ° μν΄ νν΄μ§λ λ°μ΄ν°λ² μ΄μ€ μ°κ²°, λ‘κΉ
, νμΌ μ
μΆλ ₯ λ±μ΄ λ μ μλ€. AOPλ ν©μ΄μ§ κ΄μ¬μ¬(Crosscutting Concerns)λ₯Ό λͺ¨λν ν μ μλ νλ‘κ·Έλλ° κΈ°λ²μ΄λ€ λͺ¨λν μμΌλμ λΈλμ AspectλΌκ³ νλ€. AOPκ° νμν μν© - λͺ¨λ λ©μλμ νΈμΆ μκ°μ μΈ‘μ νκ³ μΆλ€λ©΄? - κ³΅ν΅ κ΄μ¬ μ¬ν(cross-cutting con..
Algorithm/νμ΄μ¬ μ½λ©ν
μ€νΈ
λμ νμ΄ λ΄λ¦Όμ°¨μ μ λ ¬νκ³ μ μΌ ν° λ¬΄κ²(μΈλ±μ€ : 0 ) μ μ μΌ μμ 무κ²(μΈλ±μ€ : -1 ) λ₯Ό λν κ°μ΄ 무κ²μ ν m μ λλλ€λ©΄ μ μΌ ν° λ¬΄κ²λ₯Ό κ°λ μΈμμ νΌμ νμΌν¨ ( pop(0) ) κ°μ νμ΄ λ§μ½ 리μ€νΈμ νλͺ
λ§ λ¨μ μμ λ if arr[0]+arr[-1] > limit: # 1λͺ
λ§ νκ³ κ° κ²½μ° arr.pop() cnt += 1 arr[0] + arr[-1] —> κ°μ κ°μ λνκΈ° λλ¬Έμ λ
Όλ¦¬μ μ€λ₯κ° λ°μνλ€ else: # 2λͺ
μ΄ νκ³ κ° κ²½μ° arr.pop(0) arr.pop() cnt += 1 리μ€νΈμ νλ λ¨μμλ κ°μ pop(0) νκ³ κ·Έ λ€μ pop() μ νλ©΄ μ€λ₯κ° λ°μ 리μ€νΈμ pop(0) μ°μ°μ λ€μ μλ£λ€μ΄ μμΌλ‘ λΉκ²¨μ§λ μ°μ° —> λ§€μ° λΉν¨μ¨μ μ΄λ€ listμ..
Spring/Spring μ
λ¬Έ
λ보기 μ€νλ§ λΆνΈμ JPAλ§ μ¬μ©ν΄λ κ°λ° μμ°μ±μ΄ μ λ§ λ§μ΄ μ¦κ°νκ³ , κ°λ°ν΄μΌν μ½λλ νμ°ν μ€μ΄λλλ€. μ¬κΈ°μ μ€νλ§ λ°μ΄ν° JPAλ₯Ό μ¬μ©νλ©΄, κΈ°μ‘΄μ νκ³λ₯Ό λμ΄ λ§μΉ λ§λ²μ²λΌ, 리ν¬μ§ν 리μ ꡬν ν΄λμ€ μμ΄ μΈν°νμ΄μ€ λ§μΌλ‘ κ°λ°μ μλ£ν μ μμ΅λλ€. κ·Έλ¦¬κ³ λ°λ³΅ κ°λ°ν΄μ¨ κΈ°λ³Έ CRUD κΈ°λ₯λ μ€νλ§ λ°μ΄ν° JPAκ° λͺ¨λ μ 곡ν©λλ€. μ€νλ§ λΆνΈμ JPAλΌλ κΈ°λ° μμ, μ€νλ§ λ°μ΄ν° JPAλΌλ νμμ μΈ νλ μμν¬λ₯Ό λνλ©΄ κ°λ°μ΄ μ λ§ μ¦κ±°μμ§λλ€. μ§κΈκΉμ§ μ‘°κΈμ΄λΌλ λ¨μνκ³ λ°λ³΅μ΄λΌ μκ°νλ κ°λ° μ½λλ€μ΄ νμ°νκ² μ€μ΄λλλ€. λ°λΌμ κ°λ°μλ ν΅μ¬ λΉμ¦λμ€ λ‘μ§μ κ°λ°νλλ°, μ§μ€ν μ μμ΅λλ€. μ€λ¬΄μμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ€λ©΄ μ€νλ§ λ°μ΄ν° JPAλ μ΄μ μ νμ΄ μλλΌ νμ ..