
들어가며 지난번에는 ArrayList가 add를 수행하는 방법에 대해 정리했다. 이번에는 업무 수행 중 발생했던 이슈를 통해 ArrayList 의 addAll 에 대해 알아보자. 문제 발생 배경 Affiliate System 구축은 아키텍처 설계, 데이터 모델링부터 개발/배포/운영까지 내가 총괄하는 첫 프로젝트였다. N레벨까지 무한 확장 가능한 다단계 트레이더 영입 및 커미션 지급 시스템인데, 거래소에서 인플루언서 등 영업력이 있는 사람들을 Affiliate 으로 영입하고, Affiliate 은 하위에 또다른 Affiliate 을 데려오거나 직속 고객을 모아 자신의 하부로부터 발생한 거래 수수료의 일정 퍼센티지를 커미션으로 지급받는, 한마디로 다단계 구조라고 할 수 있다. Affiliate 하위에 또 A..

들어가며 ArrayList는 어떤 과정으로 add를 수행할까? 교수님께서 X만큼씩 커진다고 하셨던 게 기억나는데, 자세히 기억나지는 않아서 정리해보려고 한다. add에 대해 살펴보려고 하는 만큼, ArrayList에 대해서는 이미 알고 있다고 가정하고 정의나 메서드의 의미 등 기초 내용에 대해서는 설명하지 않는다. 예시 자, 여기 한 ArrayList numbers가 있다. List numbers = new ArrayList(); 질문! numbers에는 몇 개의 값을 넣을 수 있을까? - 용량을 지정하지 않았으므로 기본값인 10이 capacity가 된다. 그럼 값을 추가해보자. for(int i = 0; i 0 || elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA..

들어가며 프로그램이 실행되면 하나 이상의 객체가 생성된다. 더이상 필요하지 않게 된 객체는 어떻게 처리할까? Java에서는 프로그래머가 명시적으로 메모리를 지정해 할당하거나 해제하지 않기 때문에, Garbage Collector가 더이상 사용되지 않는 객체를 찾아서 메모리로부터 삭제해야 한다. JVM이 GC 실행을 위해 application의 실행을 잠깐 멈추는 것을 'stop-the-world'라고 한다. stop-the-world가 발생하면 GC가 실행되는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다. 어떤 GC 알고리즘을 사용하더라도 stop-the-world가 발생하기 때문에 이 시간을 줄이기 위해 GC 튜닝이 수행되기도 한다. 지금부터는 어떤 방법들로 Garbage Collection 될..

BufferedReader 정의 Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. (BufferedReader : https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html) BufferedReader는 character input stream으로부터 문자를 읽는다. 문자와 배열, 문자열 한 줄을 효율적으로 읽을 수 있도록 문자를 버퍼링한다. 생성자 사용하는 방법 BufferedReader br = new BufferedReader(new I..