legacy
-
[Spring] Spring AOP(Aspect-Oriented Programming)legacy/Spring 2024. 9. 28. 17:54
1. 스프링 AOP란?AOP는 관점 지향 프로그래밍(Aspect-Oriented Programming)이라고 부르며, 프로그램의 핵심 기능 외에 부가적인 기능을 분리해서 모듈화 하는 기법이다. 핵심 비즈니스 로직과는 직접적인 관계가 없는 로직들(ex. 로깅, 트랜잭션)이 코드의 여러 부분에서 반복될 수 있다. AOP는 비즈니스 로직과 상관없는 반복적인 코드들을 별도의 모듈로 관리하여 코드의 유지 보수를 쉽게 하고 핵심 비즈니스 로직에 집중할 수 있도록 한다.ex) @Transactional은 트랜잭션 처리라는 부가적인 기능을 애너테이션으로 적용하는 방식이다. 원래는 트랜잭션을 사용하려면 transaction.begin(), transaction.commit(), transaction.rollback() ..
-
[HTTP] Short Polling과 Long Pollinglegacy/WEB 2024. 9. 24. 16:51
HTTP 프로토콜HTTP 프로토콜은 클라이언트-서버 모델로써, 클라이언트가 요청을 보내면 서버가 응답을 내리는 구조이다. HTTP의 특징으로는 stateless(무상태)와 connectionless(비연결성)이다. Stateless(무상태)서버는 클라이언트의 이전 요청에 대해서 기억하지 않는다. 즉, 서버는 응답을 내려준 클라이언트의 요청에 대해서 기억하지 않는다는 것이다.ex) 사용자가 로그인 페이지에서 로그인을 했더라도 다른 페이지로 이동하면 로그인이 유지되지 않는다.상태를 유지하기 위해서는 쿠키(Cookie), 세션(Session), 토큰(Token) 등을 사용하여 클라이언트와 서버 간의 상태를 기억할 수 있다.Connectionless(비연결성)HTTP는 TCP(Transmission Contr..
-
[운영체제] 임계 구역과 동기화 기법(뮤텍스 락, 세마포)legacy/Operating System 2024. 9. 17. 14:27
이전에 뮤텍스 락과 세마포에 대해서 다룬 적이 있습니다. 현재 글은 이전 글을 다듬어서 새로 작성된 게시물입니다.https://server-technology.tistory.com/338 동기화가 필요한 이유여러 스레드가 동시에 임계 구역(Critical Section)에 접근하면 데이터 일관성 문제가 발생할 수 있다. 임계 구역이란 공유 자원에 여러 스레드가 동시에 접근하였을 때 문제가 발생할 수 있는 코드 영역이다. 여러 스레드가 동시에 임계 구역에 접근하여 문제가 발생하는 것을 레이스 컨디션(Race Condition)이라고 한다.레이스 컨디션 문제를 해결하기 위해서는 동기화 처리가 필요하다. 동기화란 실행 순서를 제어하고 상호 배제를 준수하는 것이다.실행 순서 제어 : 여러 스레드가 존재할 때 ..
-
[운영체제] 해시 테이블(Hash Table)과 해시 충돌(Hash Collision)legacy/Operating System 2024. 9. 11. 12:28
1. 해시 테이블(Hash Table)이란?해시 테이블이란 키와 값의 대응으로 이루어진 데이터 구조이다. 예를 들어, ISBN 번호가 키라면 그에 대응하는 책 제목이 값이 된다. 만약 ISBN 번호 9791162245651을 키로 입력하면 대응하는 값으로 혼자 공부하는 파이썬이 반환된다. 해시 테이블에서는 해시 함수를 사용하여 키를 특정 버킷에 매핑한다. 버킷은 배열처럼 여러 개로 이루어진 저장 공간이다. 해시 함수는 입력된 키에 대해 인덱스를 계산해 해당 버킷에 데이터를 저장하거나 찾을 수 있도록 한다. 예를 들어, Hanbit이라는 키를 해시 함수에 입력하면 해시 함수가 계산한 인덱스 2에 데이터를 저장하게 된다. 다른 키들도 마찬가지로 해시 함수를 통해 계산된 인덱스를 기반으로 버킷에 저장된다. 2..
-
[운영체제] 페이징 기법과 페이지 테이블의 문제점legacy/Operating System 2024. 9. 10. 21:28
1. 페이징 기법은 외부 단편화 문제를 해결한다.페이징(paging) 기법은 프로세스의 논리 주소 공간은 페이지(page)라는 일관된 크기로 나누고 물리 주소 공간을 페이지와 동일한 크기인 프레임(frame)으로 나눈다. 프레임에는 페이지가 적재된다. 페이징 기법은 프로세스의 논리 주소 공간을 일관된 크기의 페이지로 나누기 때문에 메모리에 빈 공간이 발생하지 않는다. 따라서 외부 단편화가 발생하지 않는다. 가상 메모리 기법이란 프로세스의 일부만 메모리에 적재하여 실제 메모리보다 더 큰 프로세스를 실행할 수 있도록 하는 메모리 관리 기법이다. 보조기억장치의 일부를 메모리처럼 사용하거나 실행에 필요한 프로세스의 일부만 메모리에 적재하여 메모리보다 더 큰 프로세스를 실행할 수 있다. 페이징 기법에서도 스와핑..
-
[Spring] 스프링 이벤트, @TransactionalEventListenerlegacy/Spring 2024. 9. 9. 16:08
1. 스프링 이벤트(Spring Event)를 사용하는 이유스프링 이벤트(Spring Event)를 사용하는 이유는 서비스 간의 의존성을 줄이기 위해서이다.스프링 이벤트를 사용하기 전에는 OrderService가 (1)사용자의 주문 요청을 처리하고 (2)푸시 메시지 발송 및 (3)메일 전송을 처리한다. OrderService는 PushService와 MailService를 의존하게 된다.반면에 스프링 이벤트를 사용하면 OrderService는 사용자의 주문 요청을 처리하는 책임만 갖고, 스프링 이벤트가 푸시 메시지 발송과 메일 전송을 처리한다. OrderService는 주문 요청만 처리하기 때문에 푸시 메시지 발송 및 메일 전송에 대한 책임을 갖지 않는다. 2. 스프링 이벤트(Spring Event) 구..