본문 바로가기

전체 글

(172)
스프링의 핵심 원리 - 2(좋은 객체 지향 설계의 5가지 원칙 SOLID) SOLID SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) 클린 코드로 유명한 로버트 마틴이라는 분이 정리한 위의 5가지 용어의 앞글자를 따서 SOLID라고 부른다. SRP(Single Responsibility Principle) 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 사실 모호하다. - 클 수 있고..
스프링의 핵심 원리 - 1 (객체지향에서의 다형성) 스프링의 진짜 핵심은? - 자바 언어 기반의 프레임워크 - 자바 언어의 가장 큰 특징 -> 객체 지향 언어 - 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와준다. 그렇다면 좋은 객체 지향 프로그래밍이 무엇이지? 이 질문을 이해한다면 스프링을 온전히 이해하고 사용할 수 있게 된다. 객체 지향의 특징 4가지 추상화 캡슐화 상속 다형성 더보기 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다. (협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된..
[Network] 네트워크 기초 지식 네트워크란? 무언가와 무언가가 무언가에 의해 연결되어 있는 상태를 말한다. 컴퓨터 네트워크는 컴퓨터와 컴퓨터가 통신 매체로 연결되어 있는 상태라고 말할 수 있습니다. 그리고 통신 매체에 의해 데이터가 운반되어지게 됩니다. 그렇다면 컴퓨터 네트워크의 장점은? 리소스를 공유할 수 있다. 아... 리소스를 공유할 수 있는건 알겠는데? 리소스를 공유할 수 있다는 것이 무슨 효율성을 가져다줄까요? 프린트 공유, 이메일, 인터넷 페이지 등 우리가 실생활에서 편리하게 사용하는 서비스들을 이용 가능하게 해 줍니다. 또한 통신을 위한 주고받는 데이터는 컴퓨터에서 비트라는 단위로 표현되며, A에서 전송한 정보를 B에서 정확하게 이해하기 위해서는 통신 규칙이 필요하겠죠? 이런 통신 규칙을 프로토콜이라고 부릅니다. 그리고 이..
자바 자료구조 보호되어 있는 글입니다.
트리의 종류 트리란 무엇인가? 배열, 리스트, 스택, 큐와 같은 선형구조가 아닌 부모 자식의 관계를 갖는 계층형 그래프 1. Binary Tree(이진 트리) 노드가 하나 이상의 자식을 갖게 되면 트리라고 부르는데 자식 노드가 최대 2개까지만 허용하는 트리를 이진트리라고 부릅니다. 2. Ternary Tree 노드가 2개 이상 붙는 트리도 당연히 존재하게 되는데 3개가 붙으면 ternary tree라고 부릅니다. 3. Binary Search Tree(이진 탐색 트리) 다른 특별한 조건 없이 노드의 자식이 최대 2개씩만 붙으면 이진 트리라고 부르게 되는데, 이진 탐색 트리는 왼쪽 노드와 그 이하의 자식 노드들은 현재의 노드보다 작아야 하며 오른쪽 노드와 그 이하의 자식들은 현재의 노드 보다 큰 조건을 만족하게 된다...
디자인 패턴 - 싱글톤 패턴(Singleton Pattern) - 2 싱글톤을 구현할 때 중요하게 생각해야 하는 것은 Thread-safe의 보장입니다. 멀티 스레드 환경에서 thread-safe를 보장하지 못한다면 제대로 된 동작을 수행하지 못합니다. 싱글톤 패턴의 공통 구현 특성 private 생성자와 static method를 사용한다는 것 Eager Initialization(이른 초기화, thread-safe) 이른 초기화 방식은 클래스 로더가 초기화하는 시점에서 정적 바인딩을 통해 해당 인스턴스를 메모리에 등록하여 사용하는 것입니다.(static의 특징을 활용) 클래스 로더에 의해 클래스가 처음 로딩되는 시점에 메모리에 로드하기 때문에 Thread-safe를 보장하게 됩니다. Lazy Initialization with synchronized (게으른 초기화 w..
디자인 패턴 - 싱글톤 패턴(Singleton Pattern) - 1 싱글톤 패턴이란? 최소 1개에서 최대 N개로 객체 생성을 제한하는 패턴 왜 사용하는가? 무분별한 객체 생성은 컴퓨터의 자원을 낭비하게 되고, 프로그램의 전체 효율이 낮아지는 결과가 초래된다. 그러므로 개발자는 객체의 최대 개수를 제한할 필요성을 느끼게 되었다. 주의할 점 객체의 생성을 요청하는 쪽에서 생성되는 객체의 최대 개수를 제한하는 일에 신경 쓰지 않도록 구현해야 한다. 사용 예 위의 예제 코드를 보면 생성자를 private으로 선언하여 new를 통한 객체 생성이 불가능하고, getInstance 메서드를 통해서만 해당 인스턴스를 얻을 수 있기 때문에 싱글톤 패턴이라고 할 수 있다. 만약 생성자를 public으로 변경하게 된다면 생성자를 통한 객체 생성이 가능하기 때문에 private으로 꼭 변경해..
Autowire 알아보기 - 2 이전 글에서는 빈의 의존성이 1개인 경우만 공부해봤습니다. 해당하는 타입의 빈이 복수개일 경우는 어떻게 처리되는지 살펴보겠습니다. BookRepository라는 인터페이스를 구현한 클래스 2개가 존재한다고 가정하겠습니다. 아래 스크린샷을 참고해주세요. 이 상황에서 BookService가 의존성 주입을 하게 되면 에러를 뱉게 됩니다. MyBookRepo랑 YourBookRepo중 어느 것을 선택해서 주입해야 될지 스프링이 판단하지 못하는 상황입니다. 3가지의 액션을 통해 이러한 상황을 해결할 수 있는데 하나씩 살펴보도록 하겠습니다. @Primary 원하는 빈에 @Primary를 선언하여 동일한 빈일 경우 @Priamry라는 어노테이션이 붙은 빈을 주입해주게 만들 수 있습니다. @Qualifier("빈의 이..