목록분류 전체보기 (274)
여름의 서재
💡 TCP (Transmission Control Protocol) : 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜. (전송 계층의 대표적인 프로토콜) 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 *패킷의 순서나 데이터 검사 등의 역할을 담당! * 패킷: 인터넷 내에서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 한다. 💡 TCP 특징 1. 연결형 서비스로 가상 회선 방식을 제공한다.: 즉, 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다. 2. 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 📌 TCP 3-way ..
💡 Garbage Collection 이란? : 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능. 💡 Stop The World : GC 실행을 위해 JVM이 애플리케이션 실행을 멈추는 것이다. GC가 실행 될 때는, GC를 실행하는 쓰레드를 제외한 모든 스레드들이 작업을 멈춘다. GC 작업이 완료한 이후에야 중단했던 작업을 다시 시작한다. 대개의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것을 말한다. 💡 GC 동작 방식 : GC의 과정을 Mark and Sweep이라고도 한다. GC가 스택의 모든 변수 또는 Reachable 객체를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾는 과정이 Mark라고 한다. 이 ..
💡 JVM 이란? : 자바가상머신. 자바와 운영체제 사이에서 중개자 역할을 수행하여, 자바가 운영체제에 구애 받지 않고 프로그램을 실행 할 수 있도록 도와줌. 또한 가비지 컬렉터를 사용한 메모리 관리도 자동으로 수행. 💡 자바 프로그램의 실행과정 자바 컴파일러를 통해 자바 클래스 파일(.java)를 자바바이트코드(.class)로 변환한다. 클래스 로더를 통해 자바 바이트코드를 JVM 런타임 데이터 영역에 로드한다. 실행 엔진을 통해 실행한다. 💡 JVM 메모리 구조 1. Class Loader(클래스 로더) : JVM 내로 클래스 파일을 로드하고, 링크를 통해 작업을 수행하는 모듈. 런타임 시에 동적으로 클래스를 로드함. 2. Execution Engine(실행 엔진) : JVM 내의 Runtime 데이..
💡 RDBMS 란? : 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 . RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다. 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다. SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장. 💡 NoSQL 이란? : 유연한 데이터 모델을 갖춘 고성능 비관계형 데이터베이스. 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템 📌 BASE 1. 기본적인 가용성 (Basically Avaliable) : 부분적인 고장은 있을 수 있으나, 나머지는 ..
💡 IoC (Inversion of Control) : 제어의 역전. 객체의 흐름, 생명주기관리등을 독립적인 제 3자에게 역할과 책임을 위임하는 방식의 프로그래밍 모델. -> 제어의 역전으로 인해 제 3자 즉 다른 객체, 다른 컨테이너에게 제어에 대한 역할과 책임을 위임함으로써 변경에 유연한 코드 구조를 가져갈 수 있음. 💡 DI (Dependency Injection) : 의존성 주입. 인터페이스를 통해 다이나믹하게 객체를 주입을 하여 유연한 프로그래밍을 가능하게 하는 패턴으로 좀 더 구체적인 의미 -> 클래스들 간 의존 관계를 최소화, 프로젝트 유지보수가 용이. 객체의 생성과 삭제를 스프링 컨테이너가 담당해줌. - DI 종류 1. 생성자 삽입 : 생성자 호출시점에 딱 1번만 호출되는 것을 보장하며 불..
💡 Redis란? : 키-값 기반의 인-메모리 데이터 저장소. 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있고 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠름. 💡 Redis 특징 1. 빠른 성능 : 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠름. 2. 인 메모리 데이터 구조 - String : 기본적인 데이터 유형. 텍스트 또는 이진 데이터가 이에 해당하며 최대 크기는 512MB - Lists : Array 형식의 데이터 구조. 처음과 끝에 데이터를 넣고 빼는 건 빠르지만, 중간에 데이터를 삽입할 때는 어려움이 있음. - Sets : 순서가 없는 Strings 데이터 집합. 중복된 데이터 하나로 처..
💡 HTTP : 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜. 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송한다. 이 때, HTTP 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용한다. HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에 도청이 가능하고, 통신 상태를 확인하지 않기 때문에 위장이 가능하다. 💡 HTTPS : HTTP 에 암호화와 인증, 그리고 완전성 보호를 더한 프로토콜. HTTP 하부에 SSL과 같은 보안계층을 제공. HTTPS 의 SSL 에서는 대칭키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. 클라이언트..
💡 Tree : 트리는 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조이다. 트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조이다. 이 트리라는 자료구조는 표현에 집중한다. 무엇인가를 저장하고 꺼내야 한다는 사고에서 벗어나 트리라는 자료구조를 바라보자. 💡 Binary Tree (이진 트리) : 모든 노드들이 둘 이하의 자식을 가진 트리. 트리에서는 각 층별로 숫자를 매겨서 이를 트리의 Level(레벨)이라고 한다. 레벨의 값은 0 부터 시작하고 따라서 루트 노드의 레벨은 0 이다. 그리고 트리의 최고 레벨을 가리켜 해당 트리의 height(높이)라고 한다. 📌 Perfect Binary Tree (포화 이진 트리), Complete Binary Tree (완전..