All Posts

    0. 스프링 빈 톺아보기(1)

    스프링 빈 사용 * 클래스를 스프링 빈으로 만드는 스프링 빈 정의를 설정한다. * 설정된 스프링 빈 정의를 스프링 빈 컨테이너가 찾을 수 있도록 설정한다. * 서로 의존성이 있는 스프링 빈들을 조립할 수 있도록 설정한다. 스프링 애플리케이션의 시작과정 1. 스프링 빈 컨테이너 구현체에 따라 정해진 포맷의 설정파일 로딩 (XML, 자바 클래스, 그루비 등...) - 스프링 부트의 기본 스프링 빈 컨테이너 구현체는 ConfigurationApplicationConetext 이며 설정 포맷은 자바클래스이다. 2. 지정된 클래스 패스에 위치한 클래스들을 스캔하고, 스프링 빈 정의가 있으면 로딩. 3. 로딩 끝낸 후 스스프링 빈 컨테이너는 정의된 대로 스프링 빈으로 생성하고 컨테이너에서 관리. 4. 스프링 빈들 ..

    [Kotlin] Java에서 롬복 사용한 코드 Kotlin 컴파일 에러

    [인프런] 최태현님의 자바 개발자를 위한 코틀린 입문 강의 수강 중 발생한 에러에 관한 글입니다. 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com Lombok과 컴파일 오류 Lombok은 애너테이션을 기반으로 constructor, getter, setter 등 반복적으로 작성해야 하는 메서드를 자동으로 생성하는 라이브러리이다. 코드를 간결하게 만들기 때문에 많은 Java 기반 프로젝트에서 사용하고 있다. 네이버 예약 서비스에도..

    [Algorithm] 시간 복잡도 & 공간 복잡도

    시간 복잡도 Big-Ω(빅-오메가) 최선일 때 (best case)의 연산 횟수를 나타낸 표기법 Big-θ(빅-세타) 보통일 때 (average case)의 연산 횟수를 나타낸 표기법 Big-O(빅-오) 최악일 때 (worst case)의 연산 횟수를 나타낸 표기법 위 세 가지 표기법은 시간 복잡도를 각각 최선, 중간(평균), 최악의 경우에 대하여 나타내는 방법이다. 가장 자주 사용되는 표기법❗️ Big-O 표기법 빅오 표기법은 최악의 경우를 고려하므로, 프로그램이 실행되는 과정에서 소요되는 최악의 시간까지 고려할 수 있기 때문이다. “최소한 특정 시간 이상이 걸린다” 혹은 “이 정도 시간이 걸린다”를 고려하는 것보다 “이 정도 시간까지 걸릴 수 있다”를 고려해야 그에 맞는 대응이 가능하다. 시간복잡도에..

    Docker 개념 정리(2) - Docker(도커)란?

    도커란? 도커는 리눅스 컨테이너를 기반으로 하는 오픈소스 프로젝트다. 네임스페이스, 컨트롤 그룹과 같은 리눅스 커널 기능을 이용해서 운영체제 위에 컨테이너들을 생성하고 이를 사용하여 애플리케이션을 생성, 배포 및 실행하도록 설계된 도구 OS, 백엔드 프로그램, 데이터베이스, 메시지 큐 등 무엇이든 컨테이너로 추상화할 수 있게 해줌 도커가 주목받은 이유 - 간편한 사용법, 속도, 도커 허브, 모듈성과 확장성 더보기 간편한 사용법: 도커는 개발자, 시스템 관리자, 아키텍트 등 누구든지 컨테이너의 이점을 이용해서 손쉽게 이동성 있는 애플리케이션을 생성, 테스트 할 수 있도록 만들어졌다. 누구든 애플리케이션을 자신의 랩탑에서 간단히 패키징하고, 공용 클라우드, 개인용 클라우드, 혹은 bear metal에서 보존..

    Docker 개념 정리(1) - 클라우드 가상화

    가상화는 "기술" 클라우드 컴퓨팅은 가상화 기술을 기반으로 한 "서비스" 1. 가상화 더보기 가상화가 등장하기 이전에 기업의 전통적인 방식은 하나의 서버에 하나의 운영체제, 하나의 프로그램을 운영하여 각 서버가 갖고 있는 시스템 자원 중 약 50~70% 정도만 사용할 수 있었다. 즉, 물리적 서버가 갖고 있는 성능을 100% 활용해서 사용할 수 없었다. 이 과정에서 기업은 갖고 있는 물리적 서버를 최대한 효율적으로 사용하길 원했고, 각 서버가 100%의 성능을 발휘할 수 있길 원했다. 즉, 한 대의 물리적인 장비를 마치 여러 대의 장비처럼 활용하거나, 여러 장비를 하나의 장비처럼 묶어서 사용하기를 원했고 이로 인해 등장한 기술이 "가상화"이다. 1.1. 가상화의 개념 - 가상화(Virtualization..

    [Effective Java] 8. finalizer와 cleaner 사용을 피하라

    Effective Java 3/E 아이템8:finalizer와 cleaner 사용을 피하라 1. 자바의 두 가지 객체 소멸자 finalizer(deprecated) - 예측할 수 없고 상황에 따라 위험할 수 있음. ( 일반적으로 불필요함. ) - 오동작, 낮은 성능, 이식성 문제의 원인이 되기도함 cleaner - Java 9 에서 finalizer 대안으로 소개된 API - finalizer 보다는 덜 위험하지만, 여전히 예측할 수 없고, 느리고, 불필요하다. 2. finalizer와 cleaner 사용을 피해야하는 이유 a. finalizer와 cleaner는 수행 시점 및 수행 여부에 대한 보장이 없다. - 수행 시점이 GC 알고리즘에 달려있음, 구현방식에 따라 다름. - finalizer 쓰레드..