기술 창고(246)
-
[Spring Boot] Spring Bean
Bean이라는 것은 무엇을 말하는 것일까? Spring 프로젝트를 진행하면서 기본적인 개념이라고 알려져있고, 검색만 해도 많은 분들께서 자세하게 알려주시지만 나는 잘 이해가 되지 않았다. Spring Bean이란 무엇이고, 생성 주기까지 한번 정리해볼 필요가 있을 것 같다. Spring Bean Bean이란 스프링 IoC 컨테이너가 관리하는 자바 객체를 빈(bean)이라고 한다. 우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다. ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다. 즉 Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다. Bea..
2023.01.06 -
[Java] Java Map 내부 구현 파악
Java 에는 Map 이라는 인터페이스 도구가 있다. 대표적으로 Map, HashMap, TreeMap, LinkedHashMap이 있다. 각 Map 인터페이스들의 구조에 대해 정리해보자. Map 기본적으로 Map은 key-value 구조로 구성되어 데이터를 저장할 수 있다. key를 가지고 저장된 value를 찾을 수 있다. key를 이용하여 데이터 검색에 최적화되어있으나, 동일한 key 에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다. 따라서, 중복된 key는 존재할 수 없다. HashMap HashMap은 Hash Table 을 이용하여 만들어졌다. Hash Table은 key 와 value를 저장하며, key를 이용하여 빠르게 데이터를 찾기 위한 자료구조..
2023.01.06 -
[Java] Garbage Collector
개발을 진행하다보면 유효하지 않은 메모리, 말 그대로 쓰레기(Garbage) 메모리가 발생하게 된다. 내가 주로 사용하는 언어인 Java 에서는 JVM의 Garbage Collector가 불필요한 메모리를 알아서 정리해준다고 한다. Minor Garbage Collector / Major Garbage Collector JVM의 Heap영역은 처음 설계될 때 다음의 2가지를 전제(Weak Generational Hypothesis)로 설계되었다. 대부분의 객체는 금방 접근 불가능한 상태(Unreachable)가 된다. 오래된 객체에서 새로운 객체로의 참조는 아주 적게 존재한다. 즉, 객체는 대부분 일회성되며, 메모리에 오랫동안 남아있는 경우는 드물다는 것이다. 그렇기 때문에 객체의 생존 기간에 따라 물리..
2023.01.06 -
[Java] Call by Value / Call by Reference
메소드를 호출할 때 파라미터를 전달하는 방법에는 두 가지가 있다. Call by Value 메소드를 호출할 때 값을 넘겨준다. 메서드를 호출하는 호출자 (Caller) 의 변수와 호출 당하는 수신자 (Callee) 의 파라미터는 복사된 서로 다른 변수이다. 값만을 전달하기 때문에 수신자의 파라미터를 수정해도 호출자의 변수에는 아무런 영향이 없다. Call by Reference 참조(주소) 를 직접 전달하여 넘긴다. 참조를 직접 넘기기 때문에 호출자의 변수와 수신자의 파라미터는 완전히 동일한 변수이다. 메서드 내에서 파라미터를 수정하면 그대로 원본 변수에도 반영된다. 내가 주로 사용했던 자바에서는 오직 Call by Value 로만 동작한다고 한다. Java 의 Call by Value 에 대해 이해하기..
2023.01.06 -
[Java] DI (의존성 주입) / IoC (제어의 역전)
스스로 프로젝트를 진행하면서 코드를 짜다보면 명확하게 모르고 두루뭉실 아는 상태에서 사용하는 코드들 혹은 개념들이 많다고 느낀다. 그 중에서 DI는 가장 흔히 사용하고 있음에도 불구하고 뭔지 잘 모르고 있는 것 같아 정리해야할 필요가 있어보인다. IoC (제어의 역전) IoC를 해석하게 된다면 '제어의 역전' 이라고 부르는데, 이는 개발적인 개념에서 객체의 생성, 생명 주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 뜻한다. Spring을 사용한다면 모든 객체에 대한 제어권은 개발자인 본인이 가지고 있는 것이 아니라 Spring이 알아서 관리하고 제어한다는 것이다. IoC 컨테이너 컨테이너라는 것은 보통 객체의 생명주기를 관리하고, 생성된 인스턴스들에게 추가적인 기능들을 제공하도록 하는 것이다..
2023.01.06 -
[Java] 스택(Stack) / 큐(Queue)
자료구조 중에서 가장 기본적이고 대표적인 자료구조에 대해서 정리를 하고자 한다. 정보처리기사 시리즈 자격증들을 취득할 때 항상 나오던 개념일 뿐만 아니라 실무에서도 해당 개념은 기본적인 베이스로 잡고가는 자료구조라고 생각한다. 스택(Stack) 스택이라는 것은 말 그대로 쌓아올린다는 뜻이다. 흔히 볼 수 있는 게임에서도 스택이라는 형태로 경험치를 쌓거나 혹은 스킬 포인트를 쌓듯이 스택은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 뜻한다. [스택의 특징] 스택은 위의 사진처럼 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키..
2023.01.06