전체 글

· 언어/JAVA
C언어에서 LinkedList라는 자료구조를 사용하려면 직접 구현해야함 → 자바는 JCF에서 만들어놓은 클래스를 사용하면 됨.💡 직접 구현하는 것과 JCF 사용하는 것 중 무엇이 좋은가?만들어 놓은데는 다 이유가 있다..알고리즘의 속도와 안정성에 있어 자바 언어 개발진들이 수십년에 걸쳐 JVM에 최적화시켜 개량해왔으니 우리는 그걸 가져다 쓰면 된다. 장점인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화 되어 있기에, 사용법을 익히기에도 편리하고 재사용성이 높다데이터 구조 및 알고리즘의 고성능 구현을 제공하여 프로그램의 성능과 품질을 향상관련없는 API 산의 상호 운용성을 제공 (상위 인터페이스 타입을 업캐스팅하여 사용) → 인터페이스 중심으로 사용 → 객체지향적이미 구현되어 있는 API를 제공..
문제 상황study 엔티티에 studyStatus 속성에 디폴트 값으로 TODO 로 설정하려고 아래와 같이 설정해주었다 @ColumnDefault("TODO") @Enumerated(EnumType.STRING) private StudyStatus studyStatus = StudyStatus.TODO; //강의 상태 근데 아래와 같은 오류 발생Error executing DDL "create table study (likes integer default 0, progress integer default 0, study_id integer not null auto_increment, study_order integer, user_id integer, create_at datetime(6)..
@ComponetScan컴포넌트 스캔 실습 코드 AppConfig에서 `@Bean`으로 모두 등록해주었다. 빈으로 등록해야한게 수백만개가 된다면 일일이 등록하기 너무 귀찮고, 설정 정보도 커지게 된다.`@ComponetScan` 을 설정 정보에 붙여주면 된다.AutoAppConfig파일 구조는 다음과 같다프로젝트 최상단에 AutoappConfig.java가 있으므로 프로젝트에서 컴포넌트로 등록해준 것을 다 빈으로 등록한다.@Configuration//@ComponentScan: 스프링 빈을 다 끌어다가 자동으로 스프링 빈으로 끌어올리는..@ComponentScan( //스프링 빈 등록에서 제외할 것 excludeFilters = @ComponentScan.Filter(type =..
싱글톤 패턴애플리케이션을 개발하면 여러 고객이 동시에 요청을 보내게 된다.스프링 없이 AppConfig를 사용해서 컨테이너를 생성하게 되면 매 요청마다 객체를 생성하게 된다.고객 트래픽이 초당 100이 나오면 초당 100 개 객체가 생성되고 소멸된다. -> 메모리 낭비싱글톤 패턴을 적용한 코드는 아래와 같다.public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static SingletonS..
· Spring
스프링 컨테이너 생성자바 설정 클래스를 기반으로 스프링 컨테이너 생성할 수 있다.new AnnotationConfigApplicationContext(AppConfig.class);AnnotationConfigApplicationContext는 ApplicatinContext 인터페이스의 구현체이다.AppConfig.class 에 있는 구성 정보를 활용해서 컨테이너 생성 빈 이름빈 이름은 메서드 이름을 사용아래와 같이 빈 이름은 직접 부여할 수도 있다.@Bean(name="memberService2") 스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다.자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다. 스프링 빈 조회 - 상속 관계부모 타입으로 조회하면..
제어의 역전 IoC (Inversion of Control)AppConfig에서 구현체를 생성하고 주입해주는 역할을 한다.-> 프로그램의 제어의 흐름은 AppConfig가 가져간다.OrderServiceIml 은 필요한 인터페이스들을 호출하지만 어떤 구현객체가 실행될지 모른다. 이렇듯 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다.해당 포스팅은 프레임워크와 라이브러리를 비교하며 제어의 역전을 설명하고 있다. 의존관계 주입 DI (Dependency Injection)의존관계는 정적 클래스 의존 관계와, 런타임에 결정되는 동적 객체(인스턴스) 의존관계 둘을 분리해서 생각해야한다.해당 포스팅에서 DI 에 대해 설명하고 있다.정적 클래스 의존 관계클래스..
AWS 구조 3계층: Region -> AZ -> IDCRegion전 세계에 존재 (국가단위) = 물리적으로, AZ (Availability Zone) 의 집합대부분의 AWS 서비스들은 특정 리전에서 제공된다. (Region-scoped, 리전 서비스 라고 부른다)AZ(Availabilty Zone)한 국가 내 지역별로 설치되어있는 IDC(Internet Data Center) 의 집합시드니 Region (ap-southeast-2) 의 3개의 AZ(Availability Zone)로 구성ap-southeast-2a/2b/2c: 이렇게 Region 뒤에 넘버링이 붙는다.Multi AZ 실무에서 왜 필요한가? 가용성한쪽의 AZ화재라던가 네트워크 이슈 등이 발생했을 시, 다른 한쪽의 AZ로 커버하기 위함카카..
클라우드 컴퓨팅 모델IaaS (Infrastructure as a Service)클라우드를 통해 컴퓨팅, 스토리지, 네트워킹, 가상화와 같은 주문형 인프라 리소스를 제공사용자가 자체 데이터 센터 인프라를 관리, 유지 관리 또는 업데이트할 필요가 없지만, OS, 미들웨어, 가상머신, 앱 또는 데이터를 책임진다.AWS EC2 서버를 생각하면 된다 -> AWS AMI(OS이미지) 선택을 해야 서버 구성 가능클라우스 서버시가 제공: 네트워크, 서버개발자가 직접 구축: OS 및 런터임 구성, 어플리케이션 구동AWS EC2 서버: AWS AMI(OS이미지) 선택을 해야 서버 구성 가능 PasS (Platform as a Service)클라우드를 통해 애플리케이션을 개발하는 데 필요한 모든 하드웨어 및 소프트웨어 리..
역할과  구현 분리역할과 구현을 분리해서 자유롭게 구현 객체를 조립할 수 있도록 설계한 클래스 다이어그램회원을 메모리에서 조회하고, 정액 할인 정책(고정 금액)을 지원해도 주문 서비스를 변경하지 않아도 된다. public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = newMemoryMemberRepository(); private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int item..