전체 글(355)
-
Stateful / Stateless
개발을 하고 사이트를 구현하다보면 단순히 개발 지식만 알고있어야 하는게 아니라 그외의 부가적인 지식들도 알고있어야 한다. 네트워크가 그 중 하나라고 생각한다. 네트워크 개념 중 자주 언급되는 기본적인 개념인 Stateful 과 Stateless 에 대해서 정리해보자 Stateful 과 Stateless 는 클라이언트와 서버 간의 네트워크 통신이 어떻게 이루어지는지에 대한 개념이다. 네트워크 프로토콜이라고 봐도 무방하다. 해당 개념들을 정리하기에 앞서 우선 Session 에 대한 개념을 조금은 알 필요가 있다. Session이란 일정 시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술. 즉, 방문자가 웹서버에 접속해 있는 ..
2023.01.09 -
[Java] 동일성 (Identity) / 동등성 (equality)
동일성 동일성은 두 개의 객체가 완전히 같은 경우를 뜻한다. 좀 더 늘려서 말하자면 두 객체는 사실상 하나의 객체로 봐도 되고, 주소 값이 같아서 두 변수가 같은 객체를 가리키는 것과 같다. 즉, 주소 값이 동일한 경우를 동일하다고 말한다. 동일한지 알 수 있는 방법은 "==" 연산자를 통해 확인할 수 있다. 참고로 원시타입(Primitive Type)의 변수들은 객체를 참조하고 있는 것이 아닌 원초적인 변수들이므로 == 연산자를 사용했을 때 내용값이 같다면 동일하다고 판단한다. 동등성 두 개의 객체가 같은 정보값을 같고 있는 경우를 뜻한다. 동등성은 변수가 참조하고 있는 객체의 주소가 다르더라도 내용값만 같으면 동등하다고 말한다. 즉, 주소 값이 서로 다르더라도 값만 같으면 동등하다고 말한다. 동등한지..
2023.01.09 -
[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