
개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 두가지 방법의 차이점을 알아보도록 하자. 아래의 내용은 dzone.com/articles/pass-by-value-vs-reference-in-java 를 바탕으로 작성하였습니다. 1. Pass By Value(Call By Value)에 대한 이해 [ Pass By Value(값에 의한 전달)의 의미 ] Pass By Value(값에 의한 전달)는 복사된 데이터를 전달하여 구성함으로써, 값을 수정하여도 원본의 데이터에는 영향을 주지 않도록 하는 방식이다. 예를 들..

개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 Java가 어떠한 방식으로 파라미터를 전달하는지 살펴보도록 하자. 1. 메모리 할당에 대한 이해 어떠한 변수를 선언한다는 것은 메모리를 할당한다는 것을 의미한다. 변수를 선언하기 위해 할당되는 메모리로는 크게 스택과 힙이 있다. 스택 영역에는 함수의 호출과 함께 지역 변수 또는 매개변수 등이 할당되며 정렬된 방식으로 메모리가 할당되고 해제된다. 반면에 힙 영역에는 클래스 변수(또는 인스턴스 변수) 또는 객체 등이 할당되며, 우연하고 무질서하게 메모리가 할당된다. (..
개발을 하다 보면 함수의 파라미터로 변수를 넘겨주어야 한다. 각 언어마다 변수를 넘겨주는 방법(Pass By Value, Pass By Reference)이 다른데, 이를 정확히 인지하지 못하면 예상치 못한 버그를 발생시킬 수 있다. 이번에는 Java가 어떠한 방식으로 파라미터를 전달하는지 살펴보도록 하자. 1. 문제 풀어보기 Pass By Value와 Pass By Reference에 대해 이야기하기 전에, 우리는 이들에 대해 얼마나 이해하고 있는지 확인하기 위해 아래의 간단한 시스템의 출력 결과를 예상해보도록 하자. 해당 유형의 문제는 실제 유명한 기업들에서 자주 출제되는 문제이기도 하다. [ 실행할 프로그램 ] class Dog { private String name; public Dog (Stri..
아래의 내용은 이 글의 내용을 번역, 의역 및 정리한 것입니다. 1. 세마포어(Semaphore)와 뮤텍스(Mutex) 세마포어와 뮤텍스는 모두 동기화를 이용되는 도구이지만 차이가 있다. 자세한 내용은 아래와 같다. [ Mutex(뮤텍스) ] 뮤텍스는 자원에 대한 접근을 동기화하기 위해 사용되는 상호배제 기술이다. 이것은 프로그램이 시작될 때 고유한 이름으로 생성된다. 뮤텍스는 Locking 메커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계 영역(Critical Section)에 들어올 수 있다. 그리고 오직 이 쓰레드만이 임계 영역에서 나갈 때 뮤텍스를 해제할 수 있다. wait (mutex); ….. Critical Section ….. signal (mutex); 위의 수도코드는..

1. 해시테이블(HashTable)이란? [ HashTable(해시테이블)이란? ] 해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다. 해시 테이블이 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블은 각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다. 여기서 실제 값이 저장되는 장소를 버킷 또는 슬롯이라고 한다. 예를 들어 우리가 (Key, Value)가 ("John Smith", "521-1234")인 데이터를 크기가 16인 해시 테이블에 저장한다고 하자. 그러면 먼저 index = hash_fun..