Techvu

    프로세스와 쓰레드

    프로세스(Process)와 쓰레드(Thread) 프로세스와 쓰레드는 정말 중요한 개념이다. 프로세스와 쓰레드를 정확히 이해해야 스프링의 멀티 쓰레드 환경에서 왜 상태값을 갖도록 설계하면 안되는지에 대해 알 수 있다. 특히 프로세스의 메모리 영역(Stack, Heap, Data, Text)과 쓰레드가 프로세스와 공유하지 않는 영역(Stack) 에 대해서 제대로 알아야 한다. 프로그램 명령어, 코드 및 정적인 데이터의 묶음이며 아직 실행되지 않은 상태를 의미 프로세스 실행 중인 프로그램 운영체제로부터 시스템 자원을 할당 받는 작업의 단위 자, 먼저 Operating System 에서의 프로세스와 쓰레드가 어떤 것인지에 대해서 배우고, 그 개념을 자바와 스프링에 접목시켜서 현업에서 동시성 이슈를 어떤식으로 피..

    결정 알고리즘과 파라메트릭 서치

    결정 알고리즘(Decision Algorithm)과 파라메트릭 서치(Parametric Search) 결정 알고리즘과 파라메트릭서치를 배우기 전에 이진 탐색(Binary Search, 이분 검색)에 대한 이해가 선행되어야 한다. 따라서, 이진 탐색에 대해서 먼저 배워보도록 하겠다. 순차 탐색(Sequential Search) 순차 탐색이란 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 이다. 보통 정렬되지 않은 리스트에서 데이터를 찾아야할 때 사용하며, 리스트 내에 데이터가 아무리 많아도 시간만 충분하면 결과를 찾을 수 있다. 구현 /** * @param n 입력 데이터 개수 * @param target 찾고자 하는 문자열 * @param arr 배열 */..

    Checked, Unchecked Exception

    Checked, Unchecked Exception Checked Exception 은 예외 처리가 필요한 예외를 뜻하고, Unchecked Exception 은 예외 처리를 하지 않아도 되는 예외를 뜻한다. Error 는 시스템이 비정상적인 상황에서 발생한다. 개발자가 로직 구현 단계에서 미리 예측할 수 없기 때문에 따로 처리할 방안도 존재하지 않는다. 애플리케이션단 에서는 Error 에 대한 처리를 신경쓰지 않아도 된다. OOM(OutOfMemory) 나 ThreadDeath 같은 에러는 예외 처리로 잡아도 할 수 있는 것이 없기 때문이다. 따라서, Checked 와 Unchecked Exception 에 대한 예외처리가 중요해진다. Checked, Unchecked Exception 의 특징을 살펴..

    재귀 함수(Recursion Function)

    재귀 함수(Recursion Function) 재귀 함수는 내부적으로 스택(Stack)을 이용한다. JVM(Java Virtual Machine) 의 메모리인 Runtime Data Areas 영역에 스택 영역이 존재한다. 자바에서 함수를 호출하게 되면 함수에 대한 정보들이 스택 공간에 적재되기 때문에, 재귀 함수는 스택 자료구조를 이용한다고 볼 수 있다. 재귀 함수는 자기 자신을 다시 호출하는 함수를 의미 하는데, 재귀 함수를 제대로 이해하기 위해선 다음과 같은 내용에 대한 이해가 되어있어야 한다. JVM 메모리 스택 영역 JVM 메모리 힙 영역 스택 자료 구조 Call Frame(Call Stack) 먼저, 이 부분에 대한 이해를 다루기 전에 팩토리얼(Factorial) 구현을 예시로 들어서 재귀 함..