목록분류 전체보기 (115)
도당탕탕
생성자나 정적 팩터리 메소드에서는 매개변수가 많을 경우 개발자가 대응하기 어렵다는 제약이 있다. 이렇게 말로 표현하면 와닿지 않을 수 있다. 그래서 밑에 비디오 클래스를 예를 들어보려고 한다. 비디오 클래스에는 다음과 같은 필드가 존재한다. 비디오 아이디 (필수) 비디오 타이틀 (필수) 비디오 설명 (선택) 비디오 등록 날짜 (선택) 비디오 파일 (필수) 비디오 썸네일 이미지 (선택) 단 필수로 받는 필드는 비디오 아이디, 타이틀, 비디오 파일이고, 선택으로 받는 필드는 비디오 등록 날짜, 썸네일 이미지, 설명이라고 정의 하자. 점층적 생성자 패턴 프로그래머들은 점층적 생성자 패턴을 즐겨 사용할 것이다. 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개..
클라이언트가 클래스의 인스턴스를 얻는 수단은 2가지의 방법이 있다. public 생성자로 인스턴스를 제공하는 방법 생성자와 별도로 정적 팩토리 메서드로 제공하는 방법 - 클래스 인스턴스를 반환하는 단순한 정적 메소드 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 2번째 방법은 public 생성자 대신 정적으로 생성자를 제공할 수 있다. 이 방식에는 장점과 단점이 모두 존재한다. 이 장단점을 지금 부터 알아보려고 한다. 정적 팩토리 메소드의 장점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 하지만 정적 팩토리 메소드를 사용하면 반..
힙 알고리즘 힙 트리 구조를 이용하는 정렬 방법 힙(Heap)이란? 완전 이진 트리의 종류로서 우선순위 큐를 위하여 만들어진 자료구조 입니다. 이진 트리란? 데이터를 각 노드에 담은 뒤에 노드를 두개씩 이어 붙이는 구조를 말합니다. 즉 모든 노드의 자식 노드가 2개 이하인 노드입니다. 완전 이진 트리? 데이터가 루트 노드부터 시작해서 자식 노드가 왼쪽 부터 순서대로 들어가는 이진트리를 말합니다. 즉 중간에 노드들이 비어있지 않고 가득 차 있는 구조로 되어 있습니다. 여러개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조 입니다. 즉 최솟값이나 최댓값을 빠르게 찾아내기 위한 완전 이진트리를 기반하는 트리입니다. 시간 복잡도는 O(logN) 입니다. 힙 트리에서는 중복된 값을 허용합니다..
Intro MultiThread 문제점에 대하여 Synchronous vs Asynchronous Blocking vs Non-Blocking Non-Blocking vs Asynchronous Synchronous vs Blocking MultiThread 문제점 MultiThread 전체 프로세스의 영향을 줄 수 있다. 성능 저하가 동반된다. 동기화의 주의를 해야한다. 교착 상태가 발생 할 수 있다. 각 쓰레드가 효율적으로 고르게 실행될 수 있도록 해야 한다. Synchronous vs Asynchronous 통신 매커니즘을 설명한다. System call의 완료를 기다리면 synchronous 이다. 어떠한 것도 리턴하지 않는다. 즉 함수에서 해당 결과 값이 나올 때까지 기다려야 한다. Synchr..
INTRO Process 란? Thread 란? Multi Process vs Multi Thread Process 운영체제로부터 시스템 자원을 할당 받는 작업의 단위이다. 쉽게 말해 실행된 프로그램을 의미한다. 프로그램이란? 명령어, 코드 및 정적인 데이터의 묶음 코드들의 집합 어떤 작업을 위해 실행할 수 있는 파일을 의미 Code, Data, Stack, Heap의 구조로 이루어져 있다. Code(Text): 프로그램의 코드 Data: 전역 변수 Heap: 동적으로 할당 되는 메모리 Stack: 매개변수, 지역 변수 등 임시적인 자료 Process의 특징 기본적으로 한개의 프로세스당 최소 한개의 쓰레드를 가지고 있다. 각 프로세스는 별도로 실행된다. 즉, 프로세스끼리 자원을 공유할 수 없다. 즉, 한..
INTRO 데이터 전송 방식 TCP? UDP? 작동 원리 및 차이 데이터 전송 방식 네트워크란 두대 이상의 컴푸터를 연결하고 서로 통신 할 수 있는 것을 말한다. 즉 어떤 연결을 통해 컴퓨터의 자원을 공유하는 것이다. 전송 계층에서 신뢰성 있는 데이터 전송을 담당한다. 신뢰성 : 데이터를 순차적으로 안정적으로 전달 전송 : 포트 번호에 해당하는 프로세스에 데이터를 전달 전송 계층이 없다면? 데이터 순차 전송이 원할하지 않는다. 송수신자 간의 데이터 처리 속도가 차이가 나서 수신자의 처리할 수 있는 데이터량을 초과 할수 있는 문제가 일어날 수 있다. 네트워크가 혼잡하여 데이터 처리 속도가 느려지는 문제가 일어난다. 즉 데이터 손실이 발생 OSI 7계층, TCP/IP 4계층 http에서 데이터를 어떻게 송수..
INTRO Scale up? Scale out? 둘의 장,단점 및 적용법 SPOF? Scale Up 서버 자체의 성능을 늘려 처리 능력을 올려주는 것이라고 생각하면 된다. 기존 서버에서 고성능의 서버로 변경을 시키는 것을 의미한다. 다른 말로 수직 스케일이라고 불린다. Scale Up의 장,단점 장점 하드웨어의 성능을 향상시키기 때문에 인프라를 따로 건들 필요가 없어 구축, 설계가 쉽다. 스토리지 컨트롤러나 네트워크 인프라 비용은 별도로 발생하지 않는다. 단점 확정성의 한계가 있다. 즉 추가할 수 있는 디스크나 RAM 용량이 한정되어 있기 때문에 확장에 대해 제약이 있다. 스토리지 컨트롤러가 확장의 한계에 다달았을 경우, 다른 스토리지를 추가할경우 이미그레이션 비용이 발생한다. 가격이 엄청 비싸다. 트래..
INTRO Template 패턴에 대해 알기 JDBC Template에 대해서 알기 Spring Jdbc에 대해 알기 Template 패턴 이란? 어떤 소스 코드상의 알고리즘에서 특정 환경 또는 상황에 맞게 확장 또는 변경을 해야 할 경우 매우 유용하게 사용하는 패턴 Template 패턴의 장점 코드 중복 감소 자식 클래스의 역할을 감소시키면서 핵심로직 관리 용이 객체 추가 및 확장을 쉽게 가능 재사용성 증가 Template 패턴의 단점 추상 메소드가 너무 많으면 복잡성 증가 추상 클래스와 구현 클래스간의 관계 복잡도가 증가 JDBC Template? 스프링의 가장 기본적인 Data Access 템플릿으로 쿼리 기반으로 데이터 베이스의 접근 가능 모든 영속성 프래임워크는 내부적으로 JDBC API를 이용..