MVC 패턴 디자인패턴이란? > 정형화된 문제해결 방법론 객체지향 프로그래밍의 세상에서는 여러 객체들끼리 서로 메세지를 주고받으면서 프로그램 안에서 일처리를 해간다. 그 과정에서 객체를 너무 중구난방으로 만들어 놓으면 자신이 뭘 해야할지 모르는 상황이 발생한다.
객체 지향 프로그래밍 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체 지향 프로그
ACID는 데이터베이스 내에서 발생하는 하나의 트랜잭션(transaction)의 안정성을 보장하기 위해 필요한 성질이다.원자성은 하나의 트랜잭션 내에서 모든 연산이 성공하거나 실패하는 것을 보장하는 성질이다.트랜잭션에 속해있는 모든 작업이 전부 성공하거나 실패해서 결과
데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, INSERT, DELETE 와 같은 행동을 뜻한다.이런 트랜잭션은 상황에 따라 여러 개가 만들어질 수 있다.그 하나의 트랜잭션은 Commit
정규화 과정은 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스가 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다.같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 한다.자료의 중복성은
TCP/IP > TCP/IP (Transfer Control Protocol / Internet Protocol) 인터넷 통신의 대부분은 패킷 통신을 기본으로 한다. 패킷 통신 규약 중 하나인 TCP/IP는 TCP(Transmission Control Protocol
DB 관계 > 데이터베이스 내 어떤 테이블들이 서로 어떻게 연결되어 있는지 나타낸 것 관계형 데이터베이스 구조화된 데이터는 하나의 테이블로 표현할 수 있다. 사전에 정의된 테이블을 Relation 이라고도 부르기 때문에, 테이블을 사용하는 데이터베이스를 관계형 데이터
Spring Boot 기반의 프로젝트를 진행하면서 JPA를 이용해 개발을 했다. 그러나 JPA를 사용하는데만 급급하고 정확한 정의에 대해 스스로 정리한 적이 없어 한번 해보려한다. JPA > Java Persistence API JPA는 개발자가 활용법만 익히면
컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.프로세스는 각각 별도의 주소공간 할당 (독립적)Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)Data : 전역변수, 정적변수,
통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문이다.이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다.예를들어 전송 계층에서 TCP를 UDP로 변경했다고 해서 인터넷 웹 브라우저를
정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법단점은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있다.하지만 검색이 반복될 때마다 목표값을 찾을 확률을 두 배가 되므로 속도가 빠르다.선형 탐색은 리스트의 처음부터 끝까지 순서대로 하나
Hyper Text Transfer Protocol하이퍼 텍스트를 전송하기 위해 만들어진 규약단점암호화하지 않았기 때문에 보안에 취약하다.통신 상대를 확인하지 않기 때문에 신뢰성이 떨어지다.HTTP는 누가 요청을 보내와도 응답을 해준다. 즉, 요청을 보내는 클라이언트에
Java는 JVM(Java Vitual Machine) 덕분에 OS에 독립적이라는 특징을 가질 수 있다.개발자가 자바 소스코드(.java)를 작성한다. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일한다. 이때 나오는 파일은 자바 바이트 코드(.cla
HTTP의 일종으로 사용자가 어떤 웹 사이트를 방문할 경우, 해당 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.HTTP에서 클라이언트의 상태정보를 쿠키 형태로 클라이언트 PC에 저장하였다가 필요 시 정보를 참조하거나 재사용할 수
abstract 지시자로 정의되며 추상메서드가 하나 이상 포함interface 지시자로 정의하며 모든 메서드가 추상메서드로 정의그러나 java8 이상부터는 인터페이스에서 메서드를 정의할 수 있게 되었다.이 두개의 경계가 점점 더 모호해 지고 있다. 따라서 이 차이를 알
이번 글에서는 IoC와 DI의 개념을 간단히 (최대한 스프링과의 연계를 빼고) 정리해 보았다.제어의 역전프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것A클래스에서 B를 필드로 가지고 있고, 생성자 내부에서 B를 직접 생성해 필드를 초기화하고 있다
이전의 DI & IoC 게시글에 이어서 Spring에서 사용되는 DI에 대해 설명 Spring 이란? 자바의 오픈소스 애플리케이션 프레임워크 중 하나로 스프링의 기본철학은 특정 기술에 종속되지 않고 객체를 관리할 수 있는 프레임워크를 제공하는 것이다. 컨테이너로 자바
하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태이다.형태가 간단다고 유지보수가 용이해 소규모 프로젝트에는 Mon
웹 서버는 HTTP 요청을 받아 정적인 웹 리소스(HTML, CSS, 이미지 파일 등)를 제공하는데 특화된 서버 소프트웨어를 의미한다. 단순히 클라이언트에게 정적인 웹 페이지를 제공하는데 사용되기 때문에 비지니스 로직은 처리하지 않는다.WAS는 웹 어플리케이션을 실행하
이전에 "REST API 란?"이라는 제목으로 게시글을 작성한 적이 있다. 실제 이 게시글을 작성한 시점에는 해당 주제에 대해서 개발을 해보지 않고 이론적인 내용만 정리해 내용이 머리에 들어오지 않았던 것 같다.그래서 이번 게시글에서 내가 이해한 내용을 3가지로 나누어
클라이언트가 서버에 요청을 보내면 서버는 해당 요청에 대해 응답한다.
애플리케이션이 시작될 때, 어떤 클래스가 최초 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴즉, 싱글톤 패턴은 '하나'의 인스턴스만 생성하여 사용하는 디자인 패턴이다.인스턴스가 필요할 때, 똑같은 인스턴스를 만들지 않고 기존의
TCP/UDP 의 차이를 공부하면서 HTTP 통신은 TCP의 사용예제 중 하나로 생각하고 있었다. 그런데 HTTP 3.0 버전은 UDP기반의 프로토콜로 사용된다는 정보를 들었고, 이전까지 HTTP의 버전별 특징에 대해 알아본 게시글이 없어 이번 기회에 정리해보려 한다.
데이터베이스의 검색 속도를 향상시키기 위한 자료구조예를들어 위처럼 서울에 있는 모든 레스토랑을 찾을 때 일반적으로 전체의 데이터를 조회(FTS - Full Table Scan)하면서 주소값이 서울인 것을 매번 비교하고 해당 결과들을 모아서 반환을 해 결과를 보여준다.
하나의 논리적인 테이블을 여러개의 물리적인 테이블로 나누는 것MySQL과 같은 경우 파일시스템으로 데이터를 관리하는데 예를들어 인덱스파일을 메모리에 한 번에 올릴 수 없을 때 굉장히 느려진다.이럴 때 파티셔닝을 통해서 물리적으로 여러 테이블로 나눈다면 효율적으로 사용할
이전 게시글에서 DB Partitioning의 특징에 대해 알아보았고 이번 게시글에서는 MySQL에서 제공하는 파티션 종류를 알아보려한다.앞서 예시로 들었던 로그 파일을 다룰 때 레인지 파티션을 보통 사용한다.PARTITION BY RANGE 괄호 안에 파티션 표현식이
객체지향 프로그래밍 설계시 좋은 객체지향 설계를 위한 SOLID 라고 불리는 5가지 원칙이 있다. SOLID의 용어의 개념 이론들은 모두 자바의 클래스 객체 지향의 특징이었던 추상화, 상속, 다형성, 캡슐화 등의 개념들을 재정립한 것으로 보면 된다.SOLID 원칙은 소
Test Driven Development 의 약자로 '테스트 주도 개발' 이다.반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.TDD에 대한 프로그래머들의 의견은 늘 엇갈린다.T
FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMITFROM각 테이블을 확인한다.ONJOIN 조건을 확인한다.JOINJOIN이 실행되어 데이터가 SET으로 모아지게 된다. 서브쿼리
아래 그림과 같이 데이터가 존재하고 여러 커넥션들이 수정 요청이 동시에 발생하게 되면 커넥션이 오는 순서에 따라서 데이터 값이 어떻게 변경될지 모른다는 문제가 생기게 된다.이때 데이터의 일관성에 문제가 생기게 되고 이 문제를 해결하는 방법 중 하나가 Lock 이다. L
이 게시글은 아래 우아한테크에서 진행한 세미나 영상을 보고 작성했다. [우아한 객체지향] 의존성을 이용해 설계 진화시키기 주제로는 아래와 같다. 1. 의존성이란? 예제 몇가지 의존성에 따라 설계가 어떻게 바뀌는지 과정을 보여준다. 의존성을 어떻게 관리할 것인지에 대한