전체 글 94

CloudFront에 수정한 S3객체에 대해 바로 적용되지 않는 현상

문제 부트캠프 메인프로젝트를 같이 진행했던 프론트분이 수정한 부분을 홈페이지에 적용해달라 하여 S3 버킷을 새로 재 배포 하였으나 S3의 주소로는 적용이 되었는데 CloudFront에는 적용이 계속 안되는현상 원인 찾아보니 해당 문제는 CloudFront가 캐시기능을 가지고있는데 기본 디폴트 값이 24시간동안 유지된다고 함. 변경된 사항이 적용되려면 24시간 이후에 적용이 된다. 해결 CloudFront의 무효화라는 탭에서 캐시제거를 할 수 있음. 이렇게 /*로 캐시를 전체 삭제 해준 뒤 확인해보면 적용이 된것을 확인할 수 있다. 주의할점 해당 방법은 한번 일시적으로 초기화하는것으로써 매번 적용할 때마다 즉시 변경된 사항을 보고싶으면 캐시를 비워주기위해 무효화생성을 그때마다 해주어야한다.

클라우드/AWS 2023.05.25

스프링 삼각형과 설정 정보-3

PSA - 일관성 있는 서비스 추상화 서비스 추상화의 예로는 JDBC가 있다. JDBC라는 표준 스펙이 있기에 오라클을 사용하든 MySQL을 사용하든, MS-SQL을 사용하든 Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드를 작성할 수 있다. 이렇게 할 수 있는 이유는 디자인패턴인 어댑터 패턴을 사용했기 때문이다. 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한것을 서비스 추상화 라고 한다. 스프링 프레임워크에서는 서비스 추상화를 위해서 다양한 어댑터를 제공하고 있다. OXM(Object XML Mapping : 객체와 XML 매핑) 등등 다양한 기술이 있는데 다양한 기술들이 제공하는 API는 제각각이고 스프링은 제각각인..

스프링 삼각형과 설정 정보-2

AOP - Aspect? 관점? 핵심 관심사? 횡단 관심사? AOP(Aspect-Oriented Programming) 관점 지향 프로그래밍 AOP는 로직(code) 주입이라고 할 수 있다. 횡단관심사 : 로깅, 보안, 트랜잭션 기능 처럼 다수의 모듈에 공통적으로 나타나는 부분을 뜻한다. 핵심관심사 : 주요 프로그램의 로직을 얘기한다. 코드 = 핵심 관심사 + 횡단 관심사 @Before : 실행 전 시작되는 애너테이션 @After : 실행 후 시작되는 애너테이션 스프링 AOP의 핵심 3가지 - 스프링 AOP는 인터페이스 기반이다. - 스프링 AOP는 프록시 기반이다. - 스프링 AOP는 런타임 기반이다. JoinPoint 파라미터를 이용하면 실행 시점에 실제 호출된 메서드가 무엇인지, 실제 호출된 메서드..

스프링 삼각형과 설정 정보-1

스프링을 이해하는 데는 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라는 애칭을 가진 IoC/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다. 스프링 삼각형을 이해하지 않은 상태에서 스프링 프레임워크를 학습하는 것은 알파벳을 모르고 영어를 공부하는 것과 마찬가지다. - 스프링 입문을 위한 자바 객체지향의 원리와 이해 中 - 01_IoC/DI (제어의 역전/의존성주입) 먼저 프로그래밍에서 의존성이란? new 라고 볼 수 있다. 예) Car car = new Tire(); new를 실행하는 Car와 Tire 사이에서 Car가 Tire에 의존한다라고 단순하게 정의 할 수 있다. DI는 외부에 있는 의존 대상을 주입하는 것을 말한다. 의존 대상을..

스프링이 사랑한 디자인 패턴

스프링이 사랑한 디자인 패턴 디자인 패턴(설계 패턴) : 객체지향의 4대 특성이 요리에 필요한 도구라면 SOLID원칙은 요리도구를 올바르게 사용하는 방법이고 디자인패턴은 요리법 즉 레시피라고 할 수 있다. 스프링은 객체 지향의 특성과 설계원칙을 극한까지 적용한 프레임 워크이다. 합성 : 객체를 속성으로 가지는 것. 어뎁터 패턴(Adapter Pattern) 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴 (개방 폐쇄 원칙을 적용한 패턴) 프록시 패턴(Proxy Pattern) 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴 (개방 폐쇄 원칙과 의존 역전 원칙이 적용된 설계 패턴이다.) 데코레이터 패턴(Decorator Pattern) 메서드 호출..

데이터 모델과 성능-2

슈퍼/서브 타입 모델 : 업무를 구성하는 데이터를 공통과 차이점의 특징을 고려하여 효과적 표현. 논리적 모델 - 슈퍼 타입 : 공통 부분 - 서브 타입 : 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성 슈퍼/서브 타입 데이터 모델의 변환기술 1. 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성(OneToOne Type) 2. 슈퍼타입+서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼+서브타입 테이블로 구성(Plus Type) 3. 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성(Single Type,All in One Type) 인덱스 특성을 고려한 PK/FK DB 성능향상 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자..

자격증/SQLD 2023.05.15

데이터 모델과 성능-1

성능 데이터 모델링 DB 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등 여러가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것. 분석/설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 경우 성능저하에 따른 재업무 비용을 최소화 할 수 있음. 데이터 증가가 빠를수록 성능 저하에 따른 성능개선비용은 기하급수적으로 증가하게 된다. 성능 데이터 모델링 고려사항 순서 1. 데이터 모델링을 할 때 정규화를 정확하게 수행 2. DB 용량산정을 수행한다. 3. DB에 발생되는 트랜잭션의 유형을 파악한다. 4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행 5. 이력모델의 조정, PK/FK조정, 슈퍼/서브타입 ..

자격증/SQLD 2023.05.15

데이터 모델링의 이해-3

식별자 : 엔터티 내에서 인스턴스를 구분하는 구분자 식별자는 논리적, Key는 물리적 데이터 모델링 단계에 사용 식별자의 특징 : 유일성, 최소성, 불변성, 존재성 - 유일성 : 주식별자에 의해 모든 인스턴스들이 유일하게 구분 - 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함. - 불변성 : 지정된 주식별자의 값은 자주 변하지 않아야 함. 변하면 이전 기록 말소됨 - 존재성 : 주식별자가 지정되면 반드시 값이 들어와야 함. 식별자 분류 대표성여부 : 주식별자, 보조식별자 - 주 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 타 엔터티와 참조관계를 연결 O - 보조 : 구분자이나 대표성X, 참조관계 연결 X 스스로생성여부 : 내부식별자, 외부식별자 내부 : ..

자격증/SQLD 2023.05.12

데이터 모델링의 이해-2

엔터티 : 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것. 보이지 않는 개념 포함. 엔터티의 특징 1.반드시 해당 업무에서 필요하고 관리하고자 함. 2.유일한 식별자에 의해 식별 가능 3.두 개 이상의 인스턴스의 집합 4.업무 프로세스에 의해 이용되어야 함. 5.반드시 속성이 있어야 함. 6.다른 엔터티와 최소 1개 이상의 관계가 있어야 함. -> 통계성/코드성 엔터티는 관계 생략 가능 엔터티의 분류 유무형에 따른 분류 : 유형, 개념, 사건 엔터티 - 유형 : 물리적 형태 ex) 사원, 물품, 강사 - 개념 : 개념적 정보 ex) 조직, 보험상품 - 사건 : 업무수행시 발생 ex) 주문, 청구, 미납 발생시점에 따른 분류 : 기본/키, 중심, 행위 엔터티 - 기본 : 그 업무에 원래..

자격증/SQLD 2023.05.12

데이터 모델링의 이해-1

1. 데이터 모델링의 중요성 및 유의점 -중복(Duplication): 같은 시간 같은 데이터 제공 -비유연성(Inflexibility): 사소한 업무변화에 데이터 모델이 수시로 변경되면 안됨. 데이터 정의를 사용 -비일관성: 데이터 간 상호 연관 관계에 대해 명확히 정의해야 한다. 데이터 모델링 개념적,논리적,물리적 데이터 모델링 데이터 독립성 요소 외부 스키마 : 개개인 사용자가 보는 개인적 DB 스키마 개념 스키마 : 모든 사용자 관점을 통합한 전체 DB 내부 스키마 : 물리적 장치에서 데이터가 실제적 저장 데이터 독립성 논리적 독립성 : 개념 스키마 변경, 외부스키마 영향 X 물리적 독립성 : 내부스키마 변경, 외부/개념스키마에 영향X Mapping(사상) : 상호 독립적인 개념을 연결시켜주는 다..

자격증/SQLD 2023.05.11

그리디알고리즘(탐욕 알고리즘)

그리디 알고리즘은 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘입니다. 수행과정 1.해 선택 : 현재 상태에서 최선이라고 생각되는 해를 선택 2.적절성 검사 : 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사 3.해 검사 : 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사 (전체 문제를 해결하지 못하면 다시 1로 돌아가 같은 과정 반복) 주의할점:그리디 알고리즘은 반례가 있기 때문에 문제를 잘 파악하여 사용하여야한다. 큰값으로 먼저 대입하여 방법을 찾기 때문에 반례가 있을 수 있어서 문제에 큰 값부터 적용할 수 있는 조건이 있으면 사용하자. 백준 11047 동전 0 그리디 알고리즘을 적용해서 풀어보았습니다. 먼저 오름차순으..

CS/알고리즘 2023.05.10

구간 합

구간 합은 합 배열을 이용하여 시간복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘입니다. A에서 B 까지의 수가 있다면 인덱스마다 더해진 값을 주입하는게 합배열입니다. 합배열 정의 구간 합 공식 구간합 적용해본 코드 import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] strArr = br.readLine().split(" "); int N = Integer.parseInt(strArr[0]); i..

CS/알고리즘 2023.05.10

투 포인터

투 포인터는 2개의 포인터를 인덱스로 두어서 알고리즘의 시간 복잡도를 최적화 합니다. 아래는 백준 수들의합5 문제의 정답인데요 투포인터 알고리즘을 이용해서 풀어보았습니다. 수 N이 주어지면 N의 수를 이루는 수들중 더하여 N과 같은 경우의 수를 구하는 문제인데요 투 포인터 원칙 sum > N : (sum-start_index) , start_index++ sum < N : end_index++ , (sum+end_index) sum == N : count ++ , end_index++ , (sum+end_index) 원칙을 따르게 되면 두개의 포인터가 원칙에 따라 계산을 하면서 값을 구해주게 됩니다. BufferedReader br = new BufferedReader(new InputStreamRead..

CS/알고리즘 2023.05.10

메모리 구조 , 객체 지향 4대 특성 , SOLID원칙

이 책을 읽는 이유 -스프링을 보다 더 폭넓게 이해하기 위함이고 스프링은 객체지향프레임워크이기 때문에 객체지향에 대해서 보다 더 알아야 한다고 생각하기 때문 메모리 구조 - T형 메모리 - {} 괄호를 통해 해당 영역의 메모리 공간이 생겨난다. - 크게 Static 공간 , Stack 공간 , Heap 공간으로 나뉘어져있다. -Static : 패키지, 클래스, static 변수, 전역변수 -Stack : 지역변수, 매개변수등 -Heap : 객체(인스턴스), 동적할당메모리 가비지 컬렉터가 메모리 자동 정리 객체지향 4대 특성 - 캡 상추다! 캡슐화 - 접근제어지정자를 통해서 접근제한을 할 수 있음. 상속화 - 상속화를 통해 해당 클래스에 대한 내용을 객체 별로 분류 하여 나타낼 수 있음. 클래스 : 예) ..