지난 1편에 이어, 이번 글부터 본격적으로 Garbage Collection(이하 GC, 가비지 컬렉션)의 알고리즘에 대해 작성한다. 작동 방식에 따라 크게 아래 두 가지로 분류 가능한데, 1. 추적 기반 GC (Tracing Garbage Collection) 2. 참조 횟수 카운팅 GC (Reference Counting Garbage Collection) 2번부터 먼저 알아본다. Reference Counting GC 개념 Reference Counting GC는 GC의 초기 알고리즘으로, "Garbage를 발견하는 것"에 초점이 맞추어져 있다. 어느 한 메모리가 다른 메모리를 얼마나 많이 참조하는지 횟수를 세어서 메모리 접근 가능과 불가능을 나누는 방식이다. 예를 들어, A 메모리가 B 메모리를 ..
불로소득을 향하여
면접 단골 질문인 Garbage Collection(이하 GC, 가비지 컬렉션)에 대해 알아본다. 이 글에서는 글 제목처럼, 개념 / 유래 / 한계 / GC에 대해 알아야 하는 이유 등에 대해 알아본다. 개념 Garbage Collection, 메모리 관리 방법 중 하나로 말 그대로 쓰레기를 수집하는 기능이다. 여기서 "쓰레기"란 실제 쓰레기를 말하는 것이 아니라, 개발자가 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 영역을 말하며, 가비지 컬렉션은 그러한 영역을 자동으로 찾아내어 해제하는 기능이다. 보통 메모리에 접근이 불가능하면 "쓰레기"로 본다. 오래된 프로그래밍 언어 중 하나인 LISP의 아버지라 불리는 존 매카시가 1959년에 LISP의 메모리 관리를 위해 처음 만들었다고 알려져 있다...
최근 운영 업무를 하며 두 컬럼을 하나의 컬럼으로 합쳐 DB 데이터를 가공하여 조회할 일이 있었다. 저렇게 말만 써놓으니까 헷갈리는데, 나랑 비슷한 고민을 한 okky의 글을 참고하면 된다. 내가 하고자 했던 것과 똑같은 질문이고, 해당 글 가장 아래 답변에 쿼리가 작성되어 있다. (AS-IS) 데이터 포맷 내가 가공하려던 기존 데이터 포맷은 아래와 같다. TYPE PLANT TOTAL M1 M2 M3 M4 M5 M6 M7 M8 M9 M 10 M 11 M 12 1 A China 25 3 4 5 2 B China 3 C China 4 D China 5 E China 6 A Brazil 7 B Brazil 8 C Brazil 9 D Brazil 10 E Brazil 어우, TOTAL부터 M1~M12까지의 숫..
드디어.. 본래 작성하려던 주제였던 HashMap과 HashSet의 차이점에 대해 알아본다. 그전에 작성했던 아래 네 글을 보면 더욱 좋다. (1) collections란? (2) Set, Map 이란? (3) HashMap이란? (4) HashSet이란? HashMap과 HashSet의 차이점은 크게 아래 6가지로 나눌 수 있다. 1. 정의 HashMap은 Map 인터페이스의 구현체로, HashTable과 유사한 자료구조로 데이터를 저장한다. HashSet은 Set 인터페이스의 구현체로, 내부적으로 HashMap을 사용하기 때문에 HashTable과 유사한 자료구조로 데이터를 저장한다. 2. 데이터 저장 형태 HashMap은 Key-Value 쌍 형태로 데이터를 저장하며, Key와 Value의 mapp..
이번 글에서는 1편, 2편, 3편에 이어 HashSet에 대해 작성한다. 아래 글을 읽기 전에 위 세 글을 순서대로 읽고 오는 것을 추천한다. HashSet 이란? 개념 HashMap의 개념과 마찬가지로, 내부적으로 Hash(해시)를 사용하는 Set 인터페이스의 구현체이다. Set(집합) 이라는 단어를 포함한 만큼 집합적인 개념의 데이터 구조이다. 구현 아래처럼 HashSet이 구현되어 있는 Java 코드를 보면 놀랍게도 HashMap을 사용한다. // predefined HashSet class public class HashSet { // A HashMap object private transient HashMap map; // A Dummy value(PRESENT) to associate with..
드디어 원래 목적이었던 HashMap, HashSet에 대해 작성한다. 하지만, 글이 또다시 길어져 HashMap에 대해서만 먼저 작성한다.... 네이버 D2 블로그에서 HashMap에 관한 글을 발견하여 해당 글을 토대로 작성했다. 아래 두 글을 순서대로 읽고 오면 더욱 이해하기 쉽다. [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? 얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'Hash..
이 글을 읽기 전에 아래 collections에 대한 글을 읽고 오는 것을 추천한다. [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? 얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'HashMap, HashSet.. siahn95.tistory.com 이번 글에서는 Set과 Map에 대해 알아본다. Set 이란? 한국말로 '집합'의 뜻으로, 말 그대로 데이터들을 모은 집합이다. 큰 특징으로는..
얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'HashMap, HashSet에 대해 작성한다며 웬 갑자기 collections?' 라고 생각할 수 있지만, collection 자료구조 중 하나인 Set에 대해 이해하기 위해서는 collections라는 녀석에 대해 알아야 한다. collection 자료구조? 위에서 잠깐 언급된 collection 자료구조란 무엇일까? collection이란 객체이며, 배열처럼 여러 원소를 담을 수 있는 자료구조다. 그래서 'collection', 한국어로는 '무리'를 뜻한다. collections ..
문제는 여기에서 볼 수 있다. 문제 일단 Anagram(아나그램)이 무엇인지 알아야 한다. 어떠한 단어나 구(phrase)를 이루고 있는 글자(알파벳)를 정확히 한 번씩만 사용해서 만든 다른 단어나 구를 아나그램이라고 한다. 예를 들면, "eat"으로는 "tea", 혹은 "tree"로는 "reet"와 같은 아나그램을 만들 수 있다. 이 문제에서는 여러 문자열을 담은 리스트가 입력으로 주어지고 그 문자열들을 아나그램끼리 모아서 return 하면 된다. 풀이 첫 번째 방법 처음에는 입력받은 리스트의 원소를 순회하며 각 원소를 sorting 하고 해당 값을 Dictionay의 key 값으로 사용하여 value에는 리스트의 원소를 넣을 생각이었지만, 시간 복잡도가 꽤 걸릴 것 같아 시도하지 않았다. 그런데 아무..