분류 전체보기 15

비동기 처리

동기(Synchronous)와 비동기(Asynchronous)의 차이동기 처리란 요청한 작업에 대해 완료 여부를 확인하고 다음 작업을 처리하는 방식이다.즉, 현재 작업이 끝나기 전까지는 다른 작업을 시작하지 않으며, 작업 순서가 엄격하게 보장된다.예시: 하나의 작업이 끝나야 그다음 작업이 실행됨특징: 작업 순서 보장, 처리 방식 단순단점: 시간이 오래 걸리는 작업이 있을 경우 전체 흐름이 지연될 수 있음비동기 처리란 요청한 작업의 완료 여부를 기다리지 않고, 다음 작업을 즉시 실행하는 방식이다.따라서, 작업 순서가 보장되지 않을 수 있으며, 완료된 시점에 맞춰 콜백 함수가 실행된다.콜백 함수비동기 작업이 완료되면 호출되는 함수의 의미로서 비동기 함수의 매개변수로 함수 객체를 넘기는 기법을 말한다.함수 내..

카테고리 없음 2025.04.30

이벤트버블링/ 캡처링과 이벤트 위임

HTML 문서의 각 엘리먼트들은 태그 안의 태그가 위치하는 식으로 계층적으로 이루어짐을 볼 수 있다.이러한 계층적 구조 특징 때문에 만일 HTML 요소에 이벤트가 발생할 경우 연쇄적 이벤트 흐름이 일어나게 된다.이것을 이벤트 전파라고 한다. 전파 방향에 따라 버블링과 캡처링으로 구분한다.버블링: 자식요소에서 발생한 이벤트가 바깥 부모 요소로 전파(= default)캡처링 : 자식 요소에서 발생한 이벤트가 부모 요소로부터 안쪽 자식 요소까지 도달이벤트 흐름의 3 단계캡처링 단계 : 이벤트가 하위 요소로 전파되는 단계타깃 단계 : 이벤트가 실제 타깃 요소에 전달되는 단계버블링 단계 : 이벤트가 상위 요소로 전파되는 단계예를 들어,를 클릭하면 이벤트가 최상위 조상에서 시작해 아래로 전파된다 (캡처링 단계)이벤..

카테고리 없음 2025.04.18

JS 엔진 동작 원리/ 구성요소

브라우저의 주요 기능은, '선택한 자원을 서버에게 요청하고, 전송받은 자원을 브라우저 화면에 표시' 하는 것이다.간단히 브라우저의 동작 원리를 보자면,HTML 파싱 → DOM 트리 생성CSS 파싱 → CSSOM 트리 생성DOM과 CSSOM을 결합하여 Render Tree를 만들고, 브라우저가 이를 기반으로 화면을 그린다.HTML을 파싱하던 중 태그를 만나거나, 비동기적으로 JavaScript 파일을 로드하게 되면, 브라우저는 해당 스크립트를 JavaScript 엔진을 통해 실행한다.JavaScript 엔진은 이때 토크나이징 → 렉싱 → 파싱 과정을 거쳐 코드를 분석하고, 이를 컴파일한 뒤 실행하게 된다.코드는 먼저 토크나이징(tokenizing) 과정을 통해 작은 조각들(토큰)로 분리된다.이후 렉싱(l..

카테고리 없음 2025.04.07

AOP(Aspect Oriented Programming)

AOP(Aspect Oriented Programming)이란직역하면 관점 지향 프로그래밍이다. 관점 지향이란 어떠한 로직을 핵심적인 관점 ,부가적인 관점으로 나누어보고,그 관점을 기준으로 적용처를 정의하고 합쳐 모듈로 만든 것이다. 우리는 어플리케이션에서 공통적으로 사용되는 기능을 공통 관심 사항이라고 한다. 또한, 애플리케이션이 우리가 원하는 목적에 따라 작동할 수 있게 짠 코드로직을 비즈니스로직이라고 한다.이러한 비즈니스 로직 같은 애플리케이션의 주목적을 달성하기 위한 핵심 관심 사항이라고 한다. 공통관심사항애플리케이션을 개발하면서 공통적으로 사용되는 기능 핵심 관심 사항비즈니스 로직 같은 애플리케이션의 목적을 달성하기 위한 핵심 비즈니스 로직 예를 들어 어떤 로직을 처리하는 doSomthing()..

카테고리 없음 2024.09.02

스프링 컨테이너

public class AppConfig { public Tire tire() { Tire tire = new KoreaTire(); return tire; } public Car car() { Car car = new Car(tire()); return car; }}  바로 전 업로드의 AppConfig 클래스 AppConfig 클래스는 런타임상에서 의존관계를 명시하는 클래스이다. IoC를 가능하게 해 주고, DI를 해주는 클래스이다. 스프링에도 이와 같이 객체 간의 의존관계를 관리, 설정하는 것이 있다. 바로 IoC 컨테이너(=스프링 컨테이너)이다.스프링 컨테이너란...?객체 간의 의존 관계를 설정하고, 생명주기를 관리해 준다.이 컨테이너에서 관리하는 객체를 빈(Bean)이라고 부른다.  빈..

카테고리 없음 2024.08.20

IoC와 DI

IoC(Inversion of Control)제어의 역전에 대해 알아보자. 내가 차를 몰고 가는 것은 내가 차를 제어하는 것이고, 직접 차를 운전하는 대신 운전기사를 고용한다면 이것을 제어의 역전이라고 한다.  핵심 아이디어는 "어떻게"가 아닌 "누가" 객체의 생성 및 관리 책임을 가지느냐에 있다.누구에 의해 객체가 생성되고 관리되는지 초점을 맞추자   코드를 통해 알아보자-..public interface Tire { String getBrand();}public class KoreaTire implements Tire{ @Override public String getBrand() { return "Korea"; }}public class China implements Tire{ @Override..

카테고리 없음 2024.08.20

Layered Architecture

Spring boot는 layered 아키텍처라는 것을 채택해 코드를 작성한다.각  layered 아키텍처의 각 layer들은 자신이 수행하는 책임을 기준으로 구분되어 있다. 쉽게 말해 시스템 구성 요소를 여러 개의 계층으로 분리해 각 계층이 특정 역할을 수행하도록 하는 패턴이다. 각 계층사이의 의존성을 줄여 외부 변화로부터 비즈니스 로직의 변화를 막고, 애플리케이션 유지보수와 확장성을 높이려는 목적으로 만들어진 설계의 한 방향이다. 크게 Web Layer Service Layer Repository Layer로 나뉜다.Web Layer(Presentation Layer)클라이언트의 요청을 알맞은 비즈니스 로직에 전달하는 역할 즉, 서버 애플리케이션 간의 인터페이스를 담당controller 구현 필요Se..

카테고리 없음 2024.08.14

스프링 프레임워크와 객체지향

spring boot는 spring 애플리케이션을 간편하고 빠르게 만들 수 있도록 도와주는 프레임워크이다. spring은 "보다 나은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임 워크이다."객체 지향언어인 자바 언어 기반의 프레임워크이며, 객체 지향 언어의 특징을 잘 살려주는 프레임워크이다.객체지향이란프로그맴을 명령어의 목록으로 보는 것이 아닌, 객체들의 모임으로 파악하는 것을 말한다. 객체지향의 특징 은행 계좌를 예를 들어 설명해 보자.  캡슐화 캡슐화는 간단히 말해 데이터를 보호하는 기법이다. 은행 계좌에 있는 돈을 외부에서 마음대로 입출금 할 수 없도록 해야 한다.이를 위해, 계좌의 잔액을 나타내는 변수를  private로 두고 특정된 메서드 즉 특정된 루트를 통해서만 이 변수에 접근할..

카테고리 없음 2024.08.13

응답? ResponseEntity?

ResponseEntity란 HttpEntity를 상속한 클래스로, Http 응답과 관련된 설정들을 응답에 추가할 수 있도록 해준다. status-line의 응답 코드, 헤더, 바디를 설정할 수 있도록 만들어주는 것이다.아래 코드를 살펴보자! @PostMapping("/members") //(1) public ResponseEntity createMember( //(2) @RequestBody MemberCreateRequest request //(3) ) { Long memberId = memberService.createMember(request); //(4) return ResponseEntity.ok(memberId); //(5..

카테고리 없음 2024.08.13

Spring Boot

Spring Boot스프링 애플리케이션을 쉽게 만들고, 배포할 수 있도록 도와주는 프레임워크이다. 말이 너무 어려워.... Spring Boot는 WAS의 한 종류인 Tomcat을 실행 버튼 한번으로 자동으로 띄워준다.내장 톰캣 서버를 스프링 부트가 띄우면 안에 서블릿 컨테이너라는 것이 생긴다.이 서블릿 컨테이너 안에는 서블릿이라는 것이 있다. 서블릿 HTTP 요청 메세지를 바탕으로 request와 response에 요청에 맞는 데이터를 생성하여 response에 담는 역할을 한다. 그럼 우리가 구현해야 하는 부분은 어디일까?스프링은 위와 같이 3개의 레이어로 이루어져있다.1. Controller Layerapi url과 1:1 로 맵핑되어 url로 들어오는 요청을 서블릿으로 받아오는 역할을 한다.@Re..

카테고리 없음 2024.07.29