디자인 패턴: 프로그램 설계 시 발생했던 문제점들을 개체 간의 상호 관계를 이용해 규약 형태로 만들어 놓은 것. 싱글톤 패턴: 클래스가 하나의 인스턴스만 가지도록 하는 패턴. 데이터베이스 연결 모듈 등에서 주로 사용된다.
한 도시에 있는 여러 건물의 전등을 통제해야 한다고 가정해보자 각 건물마다 전등을 켜고 끄는 스위치가 따로 있다면 모든 건물의 전등을 통제하기 위해 각 건물을 일일이 방문해서 스위치를 조작해야 한다. 그런데 한 곳에서 모든 건물의 전등을 조절할 수 있는 시스템이 있다면
Redux는 상태를 관리하기 위한 가방이다.여행을 가기 위해 짐을 쌀 때 보통 짐이 흩어지지 않게 큰 가방에 넣는다. 이 가방 안에는 옷, 세면도구, 신발 같은 것들이 있다. 이러한 방식을 사용한다면 원하는 물건을 쉽게 찾을 수 있습니다.Redux는 웹 애플리케이션의
친구에게 책을 빌려주는 상황이라 가정하자 2가지 방법으로 책을 빌려줄 수 있을 것이다.첫번째는 책을 직접 가져다주는 것이다. 복사해서 말이다.두번째는 책이 있는 자신의 집 주소를 알려주는 것이다.두번째 경우에는 친구가 책을 보고 해당 책을 수정하면 내 원래 책에도 변화
당신이 요리를 하는 상황에 놓여있다고 가정하자 또한 당신에게는 한 권의 레시피이 놓여 있다. 당신이 레시피를 자신의 스타일을 반영해서 새로 레시피를 적을 때 이걸 Override(=재정의)라고 한다.그리고 하나의 요리를 완성시키는 레시피는 하나만 있지 않는다파스타를 만
JavaScript 객체 문법으로 구조화된 데이터 교환 형식이다.Java나 JavaScript, python과 같은 여러 언어에서 데이터 교환 형식으로 쓰인다.단순 배열, 문자열로도 표현 가능하다키와 값으로 구성된다.직렬화란 외부의 시스템에서 사용할 수 있도록 바이트
JPA를 쉽게 이해하기 위해서 쉬운 예시를 들어 보겠다.여행을 갈 때 가방안에 물품들을 넣고 꺼낼 때 특별한 암호나 절차, 방법 없이 그냥 쉽게 넣었다가 꺼내는 것이 더 만족스러울 것이다.JPA는 데이터 베이스라는 큰 가방에 데이터라는 물품을 넣고 꺼낼때 편리한 방법을
JPA에서 제공하는 매우 중요한 기능 중 하나이다.영속성 컨텍스트에서 관리되는 엔티티가 변경되었을 때변경을 감지하고 DB에 반영하는 기능이다.영속성 컨텍스트 JPA에서는 Entity Manager를 통해 데이터 베이스 작업을 처리한다.Entity Manager는 내부적
JVM이란 자바 바이트 코드(.class)를 기계어로 변환해서 실행시켜 줄 수 있는 가상의 실행 환경이다.즉 자바프로그램이 실행하기 위한 가상 환경을 제공한다.JVM은 각 운영체제와 중간에서 인터페이스 역활을 하기에 특정 운영체제에 종속적이지 않고 그로 인해 자바 프로
Java 소스 코드 ( high level language)를 바이트 코드 ( low level language )로 변환하는 과정을 의미한다.소스 코드 작성 개발자가 java 언어로 소스를 작성한다.컴파일 과정 ( javac )javac ( 자바 소스 컴파일러 )를
정의XML은 데이터의 구조와 내용을 기술하기 위한 마크업 언어이다. 데이터를 구조화하는 데에 중점을 둔다.특징태그를 사용자가 직접 정의할 수 있다.데이터를 구조화하는 데에 중점을 둔다.메타데이터 표현이 가능하다.정의HTML은 웹 페이지의 구조와 내용을 기술하기 위한 마
API는 'Application Programming Interface'의 약자로 '응용 프로그램 프로그래밍 인터페이스'라고 할 수 있다. 기본적으로는 두 개의 다른 소프트웨어나 시스템이 서로 통신할 수 있게 만드는 '다리'나 '통로'와 같은 역할을 한다.API의 인터
JVM의 메모리 구조는 크게 여러 영역으로 나눌 수 있다. 그 중에서 스택(Stack)과 힙(Heap)은 주요한 두 메모리 영역이다특징스택 영역은 메서드나 지역 변수와 같은 임시 데이터를 저장하는 영역이다.메서드의 호출과 함께 할당되며 메서드의 호출이 종료되면 소멸된다
정의클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀 또는 설계도이다.특징공통된 속성(attribute)와 행동(method)을 가지는 객체를 생성하기 위한 기본 틀이다.정의 인스턴스는 클래스에서 정의된 것을 바탕으로 실제
GC의 주요 역할은 메모리 관리이다. 프로그램에서 더 이상 사용되지 않는 메모리를 자동으로 회수하여 다시 사용할 수 있게 만든다. 이로 인해 개발자는 메모리 누수와 같은 문제를 쉽게 방지할 수 있다.Roots 찾는다프로그램에서 직접적으로 접근 가능한 변수나 객체를 ro
Java에서 Map은 키와 값을 연결하는 자료구조를 제공한다. 이 Map 인터페이스는 여러 클래스에 의해 구현될 수 있으며 그 중 대표적인 것은 HashMap이다. 기본 구조 - 배열 + 연결 리스트HashMap의 핵심은 배열이다. 배열의 각 슬롯은 연결 리스트 또는
객체지향 프로그래밍에서 의존성 주입은 특정한 클래스가 다른 클래스의 의존성을 외부에서 주입받는 기법을 말한다.DI를 사용하면 클래스 내부에서 새로운 객체를 직접 생성하는 대신 외부에서 필요한 객체를 받아와서 사용한다.이를 통해 모듈 간의 결합도를 낮추고, 코드의 재사용
소프트웨어 설계 패턴 중 하나로 주로 사용자 인터페이스를 가진 응용 프로그램을 개발할 때 사용된다. MVC는 애플리케이션을 세 가지 구성 요소로 나누어 구조화하며 각 요소는 각각의 역할을 수행한다.Model (모델)역할데이터와 비즈니스 로직을 처리한다. 특징DB와의 통
어노테이션은 코드나 데이터에 "메모"나 "표시"를 하는 것이다. 그 메모를 보고 컴퓨터나 사람이 추가적인 행동을 할 수 있다. 예를 들어 도서관의 책에 붙은 "신규 도서"라는 스티커를 생각해보자 그 스티커가 붙어 있으면 그 책이 최근에 들어온 책이라는 것을 알 수 있다
Spring Security는 집의 보안 시스템이라고 보면 이해하기 쉽다.방문객을 체크하고 특정 방에 들어갈 권한을 판단하는 보안 시스템의 구조가 Spring Security와 비슷하다.방문객(사용자)이 문을 노크하면(웹 사이트에 요청) 이 필터 체인이 이를 먼저 접수
N+1 문제는 데이터베이스 질의와 관련된 성능 문제 중 하나로 관계형 데이터베이스에서 ORM 도구를 사용할 때 주로 발생한다. 이 문제의 핵심은 특정 데이터를 검색할 때 필요한 질의의 수가 예상보다 많아져서 성능 저하가 일어나는 것디다.예를 들자면 부모 테이블에 있는
주 엔터티와 그에 연관된 데이터를 한 번의 쿼리로 함께 조회하는 방법이다장점 연관된 데이터를 미리 로딩하기 때문에 후속 쿼리 없이 바로 사용 가능하다.사용하기 편리하고, 복잡한 로직 없이 데이터 접근 가능하다단점 필요하지 않은 데이터도 로딩할 수 있어 데이터베이스 부담
스프링 프레임워크의 핵심은 Bean Container이다. 여기에는 애플리케이션 객체가 생성되어 관리된다. 스프링 빈의 생명주기는 다음 과정을 거친다.빈 정의빈의 설정 정보를 XML, 자바 어노테이션, 자바 코드 ...으로 정의한다.빈 초기화스프링 컨테이너는 빈 정의에
Request 및 Response 순서 Request : Filter -> Interceptor -> AOP Response : 실제 컨트롤러 로직 처리 -> AOP -> Interceptor -> Filter Filter란? 요청에 첫번째에 동작하는 관문 즉
Request 및 Response 순서 Request : Filter -> Interceptor -> AOP Response : 실제 컨트롤러 로직 처리 -> AOP -> Interceptor -> Filter Filter란? 요청에 첫번째에 동작하는 관문 즉
비관계형 데이터베이스테이블 간의 고정된 관계가 없다.스키마리스고정된 스키마가 없어 유연한 데이터 저장이 가능하다.수평 확장성데이터 양이 증가할 때 서버를 추가하여 성능을 향상시킬 수 있다.다양한 데이터 모델 지원문서, 그래프, 키-값 등 다양한 데이터 모델을 지원한다.
프로그램을 설계할 때 발생하는 문제를 객체들간의 상호 관계등을 통해 해결할 수 있도록 하나의 규약 형태로 만들어 놓은것이다.또한 디자인 패턴은 프레임 워크와 라이브 러리를 만드는 기초 원리라 이를 기반으로 만들어진다.공통으로 사용될 수 있는 특정 기능 들을 모듈화 하는
목적데이터 일관성, 정확성 유지. 입력/업데이트/삭제 오류 및 복잡성 감소하는 것이다.데이터 중복 최소화하고 데이터 무결성 향상하는 것이다.중복된 정보를 줄여서 데이터를 깔끔하게 정리하여 정보를 찾거나 바꿀 때 실수할 확률을 낮추는 것이다.모든 칸에는 하나의 정보만 넣
고유성기본 키는 테이블 내의 각 행을 고유하게 식별하는 데 사용된다. 따라서 기본 키로 지정된 컬럼의 값은 중복될 수 없으며, null 값을 가질 수 없다.불변성 일단 설정되면 기본 키의 값은 변경되어서는 안 된다.테이블에는 하나의 기본 키만 존재할 수 있으며 단일 컬
CORS는 웹페이지가 현재 페이지의 도메인과 다른 도메인의 리소스에 접근할 수 있도록 하는 메커니즘이다. 웹 보안 정책인 동일 출처 정책 때문에, 웹 페이지는 기본적으로 다른 도메인의 서버에 있는 리소스를 직접적으로 요청할 수 없다. CORS는 HTTP 헤더를 사용하여
브라우저는 인터넷에서 웹 페이지를 검색하고 표시하는 소프트웨어 응용 프로그램이다. 사용자가 웹 주소(URL)를 브라우저의 주소 표시줄에 입력한다.브라우저는 도메인 이름을 IP 주소로 변환하기 위해 DNS 서버에 조회 요청을 한다. DNS 조회에는 UDP 프로토콜이 사용
쿠키와 세션은 웹 브라우저와 서버 간의 통신에서 사용자의 상태를 유지하기 위해 사용되는 기술이다. 둘 다 사용자의 상태를 저장하고 관리하는 역할을 하지만, 저장 위치와 보안, 수명 등 여러 면에서 차이가 있다.쿠키는 클라이언트 측 (즉, 사용자의 웹 브라우저)에 저장되
연결 지향적TCP는 통신을 시작하기 전에 먼저 연결을 설정한다. 이 과정을 '3-way handshake'라고 하며, 안정적인 연결을 보장한다.신뢰성TCP는 데이터가 정확하게 전송되었는지 확인한다. 데이터가 손상되거나 유실된 경우 재전송을 요청한다.순서 보장TCP는 데
HTTP와 HTTPS는 웹 페이지를 브라우저로 전송하는데 사용되는 프로토콜이다. 이 두 프로토콜의 주요 차이점은 보안에 있다.비암호화HTTP는 데이터를 암호화하지 않고 전송한다. 이 때문에 전송되는 데이터가 중간에 가로채져 볼 수 있으며 수정될 위험이 있다.포트 80H
HTTP 메서드는 웹 브라우저와 서버 사이의 통신을 위해 사용되는 명령어들이다.이 메서드는 서버로부터 정보를 요청할 때 사용한다. 예를 들어, 웹 페이지를 열거나 이미지를 다운로드 받을 때 GET 요청이 이루어진다.이 메서드는 서버의 데이터를 변경하지 않는다.서버에 데
DI(Dependency Injection)와 IoC(Inversion of Control)는 소프트웨어 설계 원칙과 패턴과 관련된 개념입니다. 이들은 특히 객체 지향 프로그래밍에서 코드의 유연성과 테스트 용이성을 향상시키는 데 사용됩니다.의존성 주입은 객체가 실행 시
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체들의 모임으로 파악하고, 프로그래밍을 객체들 간의 상호작용으로 표현하는 프로그래밍 패러다임입니다. 각 객체는 데이터와 이 데이터를 처리하는 함수(메서드)를 포함하고 있으며,
NoSQL(Not Only SQL)과 RDBMS(Relational Database Management System)는 데이터를 저장하고 관리하는 두 가지 주요한 데이터베이스 시스템입니다. 데이터는 테이블 형태로 저장되며, 테이블 간에는 관계가 존재합니다.SQL을 사용
MVC 패턴이란 애플리케이션을 Model, View, Controller 세 가지 역할로 구분하여 개발하는 아키텍처 패턴으로 응용 프로그램 구성 요소들을 응용 프로그램의 비즈니스 로직을 나타내며 데이터의 상태 관리를 하고 변경 사항을 뷰 및 컨트롤러에 알리는 역할을 하
트래픽 증가에 따라 서버의 수를 늘려서 처리 능력을 향상시킬 수 있습니다. 이를 위해 수평 확장(새로운 서버 추가) 또는 수직 확장(기존 서버의 자원 증가)을 고려할 수 있습니다.여러 서버에 트래픽을 균등하게 분배하여 개별 서버에 가해지는 부하를 줄이고 전체 시스템의
ORM(Object-Relational Mapping)을 사용하면 데이터베이스와의 작업을 보다 객체 지향적으로 처리할 수 있지만, 쿼리가 복잡해질 경우 성능 문제가 발생할 수 있습니다. ORM으로 생성된 쿼리를 분석하고 필요한 경우 최적화를 진행합니다. 예를 들어, 불
GET과 POST는 HTTP(HyperText Transfer Protocol) 메서드 중 두 가지로, 웹 서버와 클라이언트 간의 데이터 통신을 위해 사용됩니다. 이 두 메서드는 데이터를 전송하는 방법과 목적이 다르며, 데이터 흐름에서도 차이가 있습니다.GET 메서드는
OSI(Open Systems Interconnection) 7계층 모델은 네트워크 통신에 있어서 다양한 프로토콜과 기술을 계층별로 나누어 체계화한 모델입니다. 이 모델을 통해 네트워크 상에서 데이터가 어떻게 이동하는지, 각 계층이 어떤 역할을 하는지 이해할 수 있습니
세션 기반 인증과 토큰 기반 인증은 사용자 인증을 처리하는 두 가지 다른 방법입니다. 각각의 방식은 웹 애플리케이션에서 사용자의 신원을 확인하고 추적하는 메커니즘을 제공합니다.상태 유지 서버 측에서 사용자의 인증 상태를 유지합니다. 사용자가 로그인하면, 서버는 세션 I
JWT, Access Token, 그리고 Refresh Token은 웹과 모바일 애플리케이션에서 사용자 인증과 권한 부여를 위해 널리 사용되는 토큰 기반 인증 방식의 핵심 요소입니다.JWT란?JSON Web Token (JWT)는 사용자의 신원 정보를 JSON 객체로
데이터베이스를 설계할 때 중요한 개념 중 하나는 바로 '정규화'입니다. 특히 RDBMS에서는 이 정규화 과정을 통해 데이터의 중복을 최소화하고, 무결성을 유지하는 것이 중요합니다. 정규화는 데이터베이스 설계 과정에서 데이터를 구조화하여 중복을 줄이고, 데이터 무결성을
HTTPS는 Hypertext Transfer Protocol Secure의 약자로, 웹 통신의 보안을 강화하기 위해 HTTP에 SSL/TLS 프로토콜을 결합한 것입니다. 이 프로토콜의 주요 목적은 데이터를 암호화하고, 안전한 웹 통신을 제공하는 것입니다. 클라이언트와
웹 애플리케이션을 개발할 때, 아키텍처의 설계는 매우 중요합니다. 특히, 요청 처리를 담당하는 컴포넌트인 '프론트 컨트롤러'와 '컨트롤러(POJO)'의 역할과 차이점을 이해하는 것은 필수적입니다. 이 두 컴포넌트는 서로 다른 역할을 하면서도 웹 애플리케이션의 효율적인
Web WAS는 웹 애플리케이션 서버를 의미합니다. 이는 웹 기반의 애플리케이션을 호스팅하고 실행하는 서버로, 사용자의 요청에 따라 애플리케이션 로직을 처리하고 결과를 웹 브라우저로 되돌려 보내는 역할을 합니다.애플리케이션 실행: 웹 애플리케이션의 비즈니스 로직을 처리
SMTP는 이메일을 보내는 데 사용되는 프로토콜입니다.SMTP는 이메일을 발송자로부터 수신자의 메일 서버로 전송하는 데 사용됩니다. 이메일 클라이언트(Gmail)가 SMTP 서버에 연결하여 이메일을 전송합니다.SMTP는 "발송자 → SMTP 서버 → 수신자의 메일 서버