전체 글

전체 글

    트랜잭션(Transaction)

    📙 1. 개념 트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. 작업의 단위는 쿼리 한 줄이 될 수 도 있고, 여러 개의 쿼리들이 될 수 도 있다. 📙 2. 트랜잭션 연산 트랜잭션에는 2가지 연산이 있다. 📌 1. 커밋(COMMIT) 커밋이란 모든 작업들을 정상 처리하겠다고 확정하는 명령어이다. 트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장되는 것을 말한다. 커밋을 수행하면 하나의 트랜잭션 과정이 종료되는 것이다. 📌 2. 롤백(ROLLBACK) 롤백이란 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태도 돌리는 일(취소)을 말한다. 즉, 마지막 커밋을 완료한 시점으로 돌아간다는 말과 동일하다. 📙 3. 트랜잭션 상태 다음..

    TCP vs UDP

    전송 계층(Transport Layer)은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층이다. IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당한다. 이러한 전송계층에서 이용되는 프로토콜이 바로 TCP와 UDP이다. TCP와 UDP는 포트 번호를 이용하여 주소를 지정하는 것과 데이터 오류 검사를 위한 체크섬이 존재한다는 두 가지 공통점을 가지고 있다. 하지만, 정확성(TCP)을 추구할지 아니면 신속성(UDP)을 추구할지를 구분하여 TCP와 UDP가 나뉘게 된다. 데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 TCP(Transmission Control Protocol)를 사용하고, 데이터의 신뢰성을 제쳐두고 신속하게 보내고 싶을 때는 UDP(User Datagra..

    TCP 3-Way Handshake & 4-Way Handshake

    📙 1. 개념 TCP는 신뢰성을 확보할 때 3-Way Handshake를 사용한다. 이번 글을 통해 TCP가 연결을 할 때 사용하는 3-Way HandShake와 연결을 해제할 때 사용하는 4-Way Handshake에 대해서 알아보고자 한다. 들어가기에 앞서 3-Way HandShake를 간단한 비유를 통해 알아보자. 만약 A와 B가 의사소통을 한다고 하면 다음과 같이 진행될 것이다. B님. 제 말 들리시나요? 잘 들립니다. A님은 제 말 들리시나요? 잘 들립니다. 이렇게 A와 B가 대화를 진행하기에 앞서 서로 연결이 잘 되었는지 확인하는 과정을 3-Way Handshake라고 할 수 있다. 📙 2. 사전 지식 3-Way Handshake에서는 3번의 세그먼트(TCP에서 패킷을 세그먼트라고 부름)를 주..

    [DB] 데이터베이스 키(Key) 개념 & 키(Key) 종류

    📙 1. 키(Key) 데이터베이스에서 키(Key)란 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성이다. 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치이기도 하다. 📙 2. 유일성 & 최소성 키의 종류를 알아보기에 앞서서 키들을 구분하는 성질인 '유일성'과 '최소성'에 대해서 먼저 알아보자. 📌 1. 유일성 유일성이란 하나의 키를 이용하여 튜플을 유일하게 식별할 수 있는 성질을 말한다. '학번, 주민번호, 이름'으로 구성된 테이블이 있다고 하자. 유일성을 만족하는 키를 만든다면 {학번}, {주민번호}, {학번, 주민번호}, {학번, 주민번호, 이름}으로 이루어진 키를 만들 수 있다. 키를 이용해서 각각의 튜플을 구분할..

    추상클래스(Abstract Class) VS 인터페이스(Interface)

    지금까지 추상클래스와 인터페이스를 살펴보았다. 추상클래스와 인터페이스는 각각 고유한 몇몇 특징을 가지고 있지만, "추상 메서드를 통해 상속/구현을 통한 메서드 강제 구현 규칙을 가지는 추상화 클래스"라는 점에서 매우 비슷하다는 느낌을 받을 것이다. 또한, '그렇다면 모든 메서드를 추상 메서드로 만들어서 사용하면 추상 클래스가 인터페이스 역할 할 수 있는데 왜 굳이 인터페이스가 존재하는 걸까? '라는 의문도 생길 수 있다. 기능적인 측면을 다 제외하고, 두 개를 나누어서 사용하는 가장 큰 이유는 사용 목적과 사용 시기가 다르다는 것이다. 그러므로 '추상 클래스와 인터페이스의 사용 목적과 사용 시기의 차이'를 알아보고, '기능적인 차이점'에 대해서도 추가적으로 정리해 보도록 하자. 📙 1. 사용 목적과 사용..

    인터페이스(Interface)

    JDK1.8부터 디폴트 메서드와 static 메서드도 인터페이스에서 사용할 수 있게 되었다. 일단은 JDK1.8 이전의 인터페이스에 대해서 먼저 살펴보고, 그리고 JDK1.8에서 추가된 기능(디폴트 메서드, static 메서드)과 Java9부터 사용할 수 있는 private 메서드에 대해서 살펴보는 것으로 하자. 📙 1. 인터페이스란 인터페이스란 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로만 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 인터페이스도 추상클래스처럼 완성되지 않은 불안전한 것이기 때문에 그 자체..

    TCP/IP 4계층 (TCP/IP 4 Layer)

    이전 글에서는 OSI 7 계층에 대해서 살펴보았다. 하지만, 실제 사용되는 인터넷 프로토콜은 OSI 7 계층 구조를 완전히 따르지는 않는다. 실제 대다수 프로그램은 TCP/IP 4 계층을 이용한다. OSI 7 계층이 이론적인 느낌이라면 TCP/IP 4 계층은 이론을 실제로 사용한다는 느낌이다. 그래서 이번 글을 통해 TCP/IP 4계층에 대해서 알아보자. 📙 IP, TCP, TCP/IP 📌 1. IP 지정한 IP 주소에 데이터의 조각들을 패킷(Packet)이라는 통신 단위로 최대한 빨리 목적지로 보내는 역할 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는 데 집중을 한다. 📌 2. TCP TCP는 패킷을 정상적으로 받을 수 있도록 하는 프로토콜이다. 꼼꼼하게 보내는 것이 목적이기..

    OSI 7계층 (OSI 7 Layer)

    📙 1. OSI 7 계층이란 📌 1. 개념 OSI 7 계층이란 네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 📌 2. 계층을 나눈 이유 설계가 간단해지고, 통신이 일어나는 흐름을 한눈에 알아보기 쉬워진다. 계층 별 모듈화 된 것이 하나로 융합된 구조를 가진다. 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건드리지 않고도 이상이 생긴 단계만 고치면 된다 표준 규격 네트워크 구성 요소를 표준화함으로써 서로 다른 통신 장치와의 상호 호환이 가능해진다. 📌 3. OSI 7 계층의 종류 및 통신 흐름 OSI 7 계층은 응용 계층(Application Layer), 표현 계층(Presentation Layer), 세션 계층(Session Layer), 전송 계층(Transp..

    추상 클래스(Abstract Class)

    📙 1. 추상클래스란? public abstract class Player { abstract void play(); abstract void stop(); } 클래스를 설계도라고 한다면, 추상클래스(Abstract Class)는 미완성 설계도라고 할 수 있다. 여기서 말하는 미완성은 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상 클래스로 인스턴스를 생성할 수 없다. 추상 클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상 클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는 데 있어서 바탕이 되는 조상 클래스로서 중요한 의미를 갖는다. 추상 클래스는 클래스에 추상화를 접목시켜 보다 구조적이게 객체를..

    배열(Array) VS 배열 리스트(ArrayList) VS 연결 리스트(LinkedList)

    📙 1. 배열 📌 1. 개념 및 특징 배열(Array)이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다. 배열을 구성하는 각각의 값을 배열 요소(Element), 배열에서의 위치를 가리키는 숫자를 인덱스(Index)라고 한다. 배열은 참조 객체이므로 배열을 가리키는 참조 변수는 스택 영영에 할당되며, 이 참조 변수가 가리키고 있는 주소값은 실제 힙 영역에 생성되는 배열의 주소값이다. 배열의 크기는 고정적이다. 메모리 공간이 연속적으로 구성된다. 📌 2. 장점 인덱스를 활용할 수 있기 때문에, 특정 위치에 있는 원소에 대한 접근의 시간복잡도가 O(1)이다. 인덱스를 활용할 수 있기 때문에, 특정 위치에 있는 원소에 대한 수정의 시간복잡도가 O(1)이다. 📌 3. 단점 크기가 고정적이기 때문..

    배열(Array)

    📙 1. 배열이란? 배열(Array)이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다. 배열을 구성하는 각각의 값을 배열 요소(Element)라고 하며, 배열에서의 위치를 가리키는 숫자를 인덱스(Index)라고 한다. 📙 2. 배열 선언 & 생성 & 초기화 📌 1. 배열 선언 배열을 선언하는 방법은 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호를 붙이면 된다. public static void main(String[] args) { int[] numbers; String[] names; } 📌 2. 배열 생성 배열을 선언한 다음에는 배열을 생성해야 한다. 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해..

    타입 안전 이종 컨테이너를 고려하라 - [5장. 제네릭(아이템33)]

    1. 타입 안전 이종 컨테이너 🍙 타입 안전 이종(Heterogeneous) 컨테이너란 한 타입의 객체만 담을 수 있는 컨테이너가 아닌, 여러 다른 타입(이종)을 담을 수 있는 타입 안전한 컨테이너를 말한다. 지금까지 우리가 흔히 알고 있는 컨테이너는 한 가지 타입만 사용할 수 있는 컨테이너다. public static void main(String[] args) { Set names = new HashSet(); names.add("amenable"); // names.add(1); // 불가능 Set numbers = new HashSet(); numbers.add(1); // numbers.add("amenable"); // 불가능 } 하지만, 경우에 따라서는 이종 컨테이너(= 같은 종이 아닌 타입..