분류 전체보기 317

[JVM] Jackson의 ObjectMapper: 객체 생성 방식과 필드 바인딩

Jackson과 ObjectMapperJackson은 Java에서 가장 널리 사용되는 JSON 처리 라이브러리 중 하나이다.ObjectMapper는 Jackson 라이브러리의 핵심 클래스 중 하나로, JSON 데이터를 Java 객체로 변환하거나 Java 객체를 JSON으로 직렬화할 때 사용된다. ObjectMapper의 객체 생성 방식1. 기본 생성자의 필요성ObjectMapper는 JSON 데이터를 Java 객체로 변환할 때 기본 생성자를 사용하여 객체를 생성한다.기본 생성자가 없으면 ObjectMapper는 객체를 생성할 수 없으므로, 기본 생성자를 추가해야 한다.2. 매개변수가 있는 생성자 사용매개변수가 있는 생성자를 사용해 객체를 생성하고자 할 때는 @JsonCreator를 사용해 ObjectMa..

JVM 2024.08.10

[SpringMVC] 스프링 이벤트 시스템

스프링 이벤트 시스템은 애플리케이션 내부에서 이벤트를 발행하고, 이를 처리하는 리스너에게 비동기 또는 동기적으로 전달함으로써 결합도를 낮추고 유연한 아키텍처를 제공하는 메커니즘이다. 특정 이벤트가 발생했을 때 이를 감지하고, 적절한 리스너에게 알림을 보내는 방식으로 동작한다. 이벤트를 발행하는 컴포넌트와 이를 처리하는 리스너는 서로 독립적으로 동작한다.  스프링 이벤트의 장점 및 주의점느슨한 결합: 이벤트 발행자와 리스너 간의 의존성이 없기 때문에 모듈 간 결합도를 낮출 수 있다.확장성: 새로운 이벤트 리스너를 추가하는 것이 매우 쉽다.유연성: 필요에 따라 동기 또는 비동기 방식으로 이벤트를 처리할 수 있다.비동기 처리 시 주의: 비동기 처리를 사용할 때는 스레드 풀 설정이나 예외 처리 등에 신경 써야 ..

JVM/SpringMVC 2024.08.10

[CS] 동기화

Race Condition (경쟁 조건)여러 프로세스나 스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황을 의미한다. 동기화 (Synchronization)여러 프로세스나 스레드가 공유 자원에 접근하는 것을 제어하여 데이터 무결성을 유지하고 경쟁 조건을 방지하는 메커니즘이다. 동기화는 뮤텍스, 세마포어, 모니터 등을 사용하여 구현된다. Critical Section (임계 영역)공유 자원에 대해 동시에 하나의 프로세스나 스레드만 접근할 수 있는 코드 영역이다. 이를 통해 데이터의 무결성을 유지하고, 여러 스레드가 동시에 자원에 접근하여 발생할 수 있는 충돌을 방지할 수 있다. Critical Section Problem (임계 영역 문제)임계 영역에 대한 ..

CS 2024.08.09

[CS] CPU Bound, I/O Bound

버스트 (Burst)특정 현상이 짧은 시간 동안 집중적으로 일어나는 것을 의미한다. CPU 버스트 (CPU Burst)프로세스가 CPU에서 연속적으로 작업을 수행하는 시간의 길이를 의미한다. 이 시간 동안 CPU는 프로세스의 연산 작업을 처리하며, CPU의 연산 집약적인 작업이 많을수록 CPU 버스트가 길어진다. IO 버스트 (IO Burst)IO 버스트는 프로세스가 I/O 작업(예: 디스크 읽기/쓰기, 네트워크 통신 등)을 요청하고 그 결과를 기다리는 시간을 의미한다. 이 동안 CPU는 다른 작업을 수행할 수 있으며, 프로세스는 I/O 작업의 완료를 기다린다. 프로세스의 실행 주기프로세스의 실행 주기는 CPU 버스트와 IO 버스트의 반복으로 이루어진다. 프로세스는 CPU에서 작업을 수행하다가 I/O 작..

CS 2024.08.09

[CS] 컨텍스트 스위칭

컨텍스트 (Context)란?컨텍스트는 특정 프로세스나 스레드의 상태를 의미한다. 여기에는 CPU 레지스터, 메모리 맵, 스택 포인터, 프로그램 카운터, 그리고 기타 CPU와 관련된 정보가 포함된다. 이 정보들은 컨텍스트 스위칭이 발생할 때 저장되고, 다음에 프로세스나 스레드가 다시 실행될 때 복원된다. 컨텍스트 스위칭 (Context Switching)컨텍스트 스위칭은 CPU 코어에서 실행 중인 프로세스 또는 스레드를 다른 프로세스나 스레드로 교체하는 과정을 의미한다. 이는 멀티태스킹 운영 체제에서 여러 프로세스와 스레드를 동시에 실행할 수 있게 해주는 핵심 메커니즘이다. 각 프로세스는 기본적으로 하나의 스레드를 가지며, 스레드는 CPU/코어에서 작업을 수행하는 기본 단위다. 컨텍스트 스위칭의 필요성운..

CS 2024.08.09

[CS] 프로세스와 스레드

프로그램정의: 컴퓨터가 실행할 수 있는 명령어들의 집합. 프로그램은 실행되기 전에는 코드나 파일 형태로 존재하며, 하드디스크나 SSD 같은 비휘발성 저장장치에 저장된다.종류: 프로그램은 운영체제, 응용 프로그램, 시스템 소프트웨어 등으로 나눌 수 있다. 응용 프로그램에는 워드 프로세서, 웹 브라우저, 게임 등이 포함되며, 시스템 소프트웨어는 운영체제와 드라이버 등이 포함된다.배포 및 실행: 프로그램은 실행 가능한 파일 형태로 배포되며, 사용자나 시스템의 명령에 의해 실행된다. 실행 파일은 운영체제에 의해 메모리에 로드되어 실행된다. 프로세스정의: 컴퓨터에서 실행 중인 프로그램의 인스턴스. 프로세스는 운영체제에 의해 관리되며, CPU에서 실행될 준비가 된 명령어들과 필요한 데이터들을 포함한다.메모리 공간:..

CS 2024.08.09

[Network] 실제 구현상에서의 Socket

표준으로서의 Socket과 실제 구현상의 Socket에는 차이가 있다.애플리케이션은 시스템의 기능을 함부로 쓸 수 없다. 때문에 시스템은 애플리케이션이 네트워크 기능을 사용할 수 있도록 프로그래밍 인터페이스를 제공하여야 하며 이를 소켓이라고 한다. 개발자는 소켓 프로그래밍을 통해 네트워크 상의 다른 프로세스와 데이터를 주고받을 수 있도록 구현한다. 실제 구현상에서 동작하는 소켓대부분의 시스템은 소켓 형태로 네트워크 기능을 제공하지만 보통 소켓을 직접 조작해서 통신 기능을 구현할 일은 적다.Application Layer의 프로토콜은 보통 라이브러리나 모듈 형태로 제공되는데, 이때 내부를 열어보면 소켓을 활용해서 프로토콜을 구현했음을 알 수 있다.소켓은 로 정의되지만 표준처럼 유니크하게 식별되지는 않는다...

CS/네트워크 2024.08.06

[Network] TCP Connection 과 Socket

커넥션과 소켓은 TCP/IP 스택의 다양한 계층과 깊은 연관이 있다.TCP/IP Stack 계층 구조네트워크 통신을 이해하기 위해서는 TCP/IP 스택의 계층 구조를 알아야 한다. 다음은 TCP/IP 스택의 네 가지 주요 계층이다Application Layer: 애플리케이션 레벨에서 구현 및 관리됩니다. 네트워크 기능을 사용하는 데 목적이 있다.Transport Layer: 데이터 전송을 담당하며, 신뢰성 있는 전송을 보장하는 프로토콜(TCP 등)을 포함한다.Internet Layer: 패킷의 전달과 라우팅을 담당한다.Link Layer: 물리적 네트워크 매체와의 인터페이스를 제공한다.컴퓨터 관점에서의 계층 구조Internet Layer, Link Layer, Transport Layer를 하드웨어/펌웨..

CS/네트워크 2024.08.06

[Network] 네트워크의 기본 기능과 계층 모델

네트워크의 주요 기능애플리케이션 목적에 맞는 통신 방법 제공: 애플리케이션이 서로 다른 목적에 맞게 데이터를 주고받을 수 있는 방법을 제공한다.신뢰할 수 있는 데이터 전송 방법 제공: 데이터가 전송 중에 손실되거나 오류가 생기지 않도록 한다.네트워크 간의 최적의 통신 경로 설정: 데이터가 출발지에서 목적지까지 최적의 경로를 찾아 효율적으로 전송되도록 한다.목적지로 데이터 전송: 데이터가 올바른 호스트에 도착하도록 보장한다.노드 사이의 데이터 전송: 네트워크에 연결된 장치들(노드) 간의 데이터 전송을 관리한다. 애플리케이션에서 애플리케이션으로 데이터를 전송하기 위해서는 위와 같은 여러 기능들이 필요하다. 하지만, 이 모든 기능을 하나의 프로토콜로 구현하기는 어렵다. 따라서, 네트워크는 각 기능을 계층으로 ..

CS/네트워크 2024.08.06

[DB] 인덱스

인덱스는 데이터베이스 테이블의 특정 칼럼에 대해 생성되는 구조로, 데이터 검색을 더 빠르게 수행할 수 있도록 도와주는 도구이다.검색 속도 향상: 전체 테이블을 스캔하는 것보다 훨씬 빠르게 데이터를 찾을 수 있다.정렬 및 필터링 성능 개선: 데이터 정렬 및 필터링 작업의 성능을 향상시킨다.Unique Constraint 지원: 유니크 인덱스는 테이블 내에서 중복된 데이터를 방지할 수 있다.디스크 공간 소모: 인덱스를 생성하면 추가적인 디스크 공간이 필요하다.데이터 수정 시 성능 저하: 삽입, 삭제, 업데이트 작업이 발생할 때 인덱스도 함께 업데이트되므로 성능이 저하된다. Full Table Scan이 더 좋은 경우테이블에 데이터가 몇십 또는 몇 백 건밖에 없는 경우, 전체 테이블을 스캔하는 것이 인덱스를 ..

Database 2024.08.06
728x90