IT Diary/# Knowledge 13

[Knowledge] Thread 병렬로 처리하는 방법

1. thread 를 병렬로 처리하는 방법 동기화 병렬로 실행되는 스레드가 공유 리소스에 동시에 접근하려고 할 때, 무결성을 보장하기 위해 동기화 기법을 사용합니다. 동기화는 뮤텍스, 세마포어, 모니터 등의 다양한 기법이 존재 뮤텍스 상호배제를 뜻하며, 한 번의 하나의 스레드만 공유 리소스에 접근할 수 있도록 제한합니다. 뮤텍스를 사용하여 공유 리소스에 접근하는 코드 영역을 임계 영역으로 지정하면, 동시에 여러 스레드가 해당 영역을 실행하지 못하게 됩니다. 세마포어 공유 리소스에 동시에 접근할 수 있는 스레드의 수를 제한하는 동기화 기법. 세마포어는 카운터를 사용하여 특정 시점에 동시에 실행할 수 있는 스레드 수를 제한합니다. 데드락 여러 스레드가 동시에 실행될 떄, 데드락이 발생. 데드락은 스레드들이 ..

[ Knowledge ] Redis(REmote DIctionary Server) 란?

1. redis 의 정의 In-Memory 데이터베이스이며, 다른 제품들과 다르게 다양한 자료구조를 지원한다. String, Set, Sorted Set , Hash ,List key-value 구조 데이터 관리 시스템 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding ) 지원 영속성을 지원한다. (명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다) AOF(Append Only File) 과 RDB(snapshot) 방식을 지원한다. Redis Server는 1개의 Single Thread로 수행된다. ( 딱 하나의 명령어만 실행할 수 있다는 뜻.. ) 장점 : Atomic 보장, race condition 회피 Atomicity(원자성) : Transactio..

[ Knowledge ] Thread Safe란?

Thead Safe 스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 보다 엄밀하게는 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것으로 정의한다. HashMap는 thread-safe한가? 결론 부터 말하자면 HashMap은 thread-safe하지 않다. 이유는 여러 스레드가 동일한 HashMap 객체에 액세스하고 HashMap(put(), remove() 메서드) 구조를 수정하려고 하면 HashMap의 상태가 일..

[ Knowledge ] AOP (Aspect Oriented Programming) 의 정의

AOP란 ? AOP(Aspect Oriented Programming)의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용을 높여주는 프로그래밍 기법입니다. AOP는 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어줍니다. 스프링 AOP 구현 스프링 AOP를 이용해서 공통 기능을 구현하고 적용하는 방법은 다음과 같습니다. 1. 공통 기능을 제공하는 Aspect를 구현한다. 2. Aspect를 어디(Point cut)에 적용할지 설정한다. 즉, Advice를 설정한다. 스프링 AOP 구현 방법 2가지 개발자는 공통 기능을 제공하는 Aspect 구현 클래스를 만들고, XMl이나 자바 설정을 이용해서 Aspect를 어디..

[ Knowledge ] API vs Library vs FrameWork

API(Application Programming Interface) 응용 프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 프로그램 간에 연결을 시켜주는 다리라고 생각하면 쉽다. 특징 uri 를 통해 데이터를 받는 형태가 많음 구현과 독립적으로 사양(사용법)만 정의되어 있다 API에 따라 접근 권한이 필요할 수 있다. ex) Kakao Map API, java API, 여러 기업들의 오픈 API Library 단어 뜻 그대로 도서관으로 생각해보면 쉽다. 필요한 책이 있으면 대여하기 위해 도서관에서 빌려오는 것처럼, 응용 프로그램 개발을 위해 필요한 기능을 가져다쓰는 소프트웨어 특징 독립성을 가진다. 다른 라이브러리를 의존하지 않는다. 응용 프로그램이 능동적으로 ..