전체 글

전체 글

    프로토 타입 패턴

    💡 객체를 생성하는 데 비용이 많이 들고, 비슷한 객체가 이미 있는 경우에 사용되는 생성 패턴 Original 객체를 새로운 객체에 복사하여 필요에 따라 수정하는 매커니즘을 제공 구조와 기본 개념 PrototypeRegistry는 interface인 Prototype 에만 의존 외부로 부터 주입된 Button 클래스의 clone()을 사용하여 Button 클래스를 생성 프로토타입 패턴은 객체를 생성하는데 시간과 노력이 많이 들고, 이미 유사한 객체가 존재하는 경우 사용 java의 clone()을 이용하기 때문에 생성하고자 하는 객체의 clone() 메소드를 오버라이드 해야 함 Java의 기본적인 clone()은 얕은 복사이므로! 예시 Student List를 DB에서 항상 같은 결과로 가져오는 프로그램이..

    도커(Docker)와 가상머신(VM)

    도커와 가상 머신의 차이점을 알아보자 Virtual Machine 하나의 컴퓨터에 여러 개별 컴퓨터가 있는 것처럼 보이게 소프트웨어적으로 구현한 것으로 가상 시스템에는 기본 운영체제가 필요하다. 하이퍼바이저 기술을 사용하는데 이는 호스트 컴퓨터에서 다수의 운영체제(OS)를 동시에 실행하기 위한 논리적 플랫폼이다. 시스템에서 호스트 하드웨어의 프로세서, 메모리, 리소스가 있는 것처럼 보이기 때문에 가상 머신은 자체 프로그램을 실행할 수 있고 하이퍼바이저 는 이러한 리소스를 가상 시스템에 할당한다. Docker 도커는 리눅스의 응용프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리한다. 도커 컨테이너는 소프트웨어와 이를 실행하기 위한 환경들을 모두 포함해 파일 시스템 안에 감싸서 실행중인 환..

    String, StringBuilder, StringBuffer 사용 경우

    String을 이어 붙이는 방법들에 대해 알아보고, 어떤 방법이 효율적인지 생각해보자! String은 불변한다! String의 속성을 생각해보면 String은 불변(immutable)하다. 그런데 String에다+ 연산자를 사용해서 이어 붙여 사용하곤 한다. 분명 String은 불변한다고 했는데 왜 추가하면 추가하는대로 결과를 보여줄 수 있을까? 먼저, int 변수의 경우 primitive type 이기 때문에 메모리 상의 stack 공간에 값으로 저장된다. 그래서 int 변수의 값을 바꿀 수 있다. 하지만, String 변수의 경우 Reference type이므로 stack 공간에 실제 값이 저장된 heap 공간의 주소가 저장되어 있고, heap 공간 내의 Constant Pool에서 String을 저..