alt
Home
hungryjayy
Cancel

의존성 주입(Dependency injection)과 세가지 방법

스프링은 빈 컨테이너를 통해 빈 객체를 관리해준다 (IoC). 이 때, 필요한 곳에 적절히 객체를 주입해 사용해야 한다. (DI) 사실 스프링을 사용하지 않더라도, 객체 지향적 관점에서 사용되는 개념 의존성 : 어떠한 객체 A가 다른 객체 혹은 인터페이스 B를 사용할 때 A는 B에 대한 의존성이 발생하며, “A는 B에 의존한다.”...

함수의 메서드 (call, apply, bind)

: 함수에 존재하는 기본 메소드. 첫번째 인자로 this를 대체할 수 있어, 실행 컨텍스트(window)를 다른 것으로 바꿀 때 사용가능. 이미 할당되어있는 “다른 객체의 함수나 메소드”를 “호출하는 해당 객체에 재할당” 따라서 window를 현재의 객체를 참조하도록. MDN예시 반복해서 보기 c...

디미터 법칙(law of demeter)

객체가 자기 자신을 책임지는 자율적인 존재이다. 따라서 객체 내부 구조를 묻지 말고 무언가를 시켜라. 이렇게 하면 객체 내부를 바깥으로 노출시키지 않게 된다. 디미터 법칙을 어긴 코드 object.getChild() .getContent() .getItem() .getTitle(); 기차 충돌(tr...

일급 컬렉션(first class collection)

public class Cards { private List<Card> card; public Cards(List<Cards> cards) { this.cards = cards; } // .. } 특징 컬렉션을 wrapping하면서 그 외 다른 멤버변수가 없는 상태. 비즈니스에 ...

TDD(Test Driven Develop)

: test 주도형 개발. 기능 개발 전 가능한 모든 경우에 대해 테스트를 먼저 작성해보는 것 테스트 코드를 작성하는 방법들과는 다른, 소프트웨어 개발론적인 것 장점 리팩토링에 용이. 크기가 커진 함수를 여러 함수로 나누는 과정에서 테스트 코드를 통해 계속 확인을 해가며 리팩토링을 해 중심을 잡을 수 있다. 새로운 기능을 추가했을 때...

c++과 관련해 겪은 이슈들, 간단한 메모

200317 Vector는 memset 불가 cstring 라이브러리 C++ string string.erase(index부터, length만큼); string.replace(index부터, length만큼, ""얘로 변경); string.find(""얘...

OWT server 토큰 생성 과정 분석

: 토큰 생성과정 이해되지 않을 때 아래의 과정 참조하기 Client API -> createToken(room, user, role, preference) 여기서 preference = {isp: 'isp', region: 'region'}; 받은 to...

Kafka 아키텍처

Topic과 Partition Topic 하나의 관심사. 이 것을 구독하여 사용 Partition topic를 쪼갠 작은 단위 HA를 위해 replication 설정을 할 경우 partition 단위로 각 서버들에 분산되어 복제 장애 발생 ...

JVM의 가비지 컬렉터

: 유효하지 않은(더 이상 불필요한) heap의 객체 메모리를 JVM의 데몬이 정리해주는 것. JVM의 GC 예시. C++이나 C에서는 free()를 통해 직접 할당 해제해줘야 한다. 위의 그림에서 permanent 영역은 heap에서 제외 GC 설계의 바탕 : 대부분의 객체는 금방 unreachable 상태가 된다. e....

OWT Websocket (socketIOServer) 코드 분석 및 시나리오별 정리

: 로직 흐름 이해할 때 아래의 과정 참고하기 socket.on('login') (V11Client에 대한 로직) protocol 버전에 따라 client를 ws 초기화된 portal에 LegacyClient / V11Client / V10 Client로 초기화 이 Client에 대한 socket 만들고, ...