전체 글 88

Collection과 람다식을 활용한 데이터 처리 정리 - 1

# 다중 조건 정렬 1. 데이터 입력 List list = new ArrayList(); Student s1 = new Student(11001244, "아무개", "서울시 금천구"); Student s2 = new Student(25109435, "김김김", "서울시 중랑구"); Student s3 = new Student(11005338, "사이다", "서울시 은평구"); list.add(s1); list.add(s2); list.add(s3); 2. 모두 오름차순 정렬 list.sort(Comparator.comparing(Student::getNum).thenComparing(Student::getName) .thenComparing(Student::getAddress)); 3. 이름만 내림차순 ..

HTTP 캐시

HTTP 캐시 반복된 요청에 대해서 리소스를 다시 다운로드 받지 않도록 브라우저 스토리지에 저장된 데이터를 사용하도록 하는 기법 캐시를 저장하는 시간안에 다시 같은 요청이 올 시 저장된 데이터를 사용함 데이터 사용량을 줄이고 데이터 전송 속도를 높일 수 있음 캐시 시간이 초과되면 다시 데이터를 보내주고 캐시 유효시간이 갱신되고 다시 캐시시간이 조회된다. 캐시를 갱신하는 기준이 필요함 검증 헤더와 조건부 요청 캐시가 시간초과과 되었을 시라도 데이터가 변경되지 않을 수 있음 클라이언트와 서버의 데이터가 일치한다는 사실을 확인 할 수 있는 방법이 필요함 1) Last Modifed 1. 클라이언트의 리소스 요청에 따라 서버측에서 Last Modified : UTC (20201112010101) 이라고 보냄 2..

C.S/WEB 2021.03.03

Kafka 동작 원리

1. Pub - Sub 모델 실제 메세지의 송신과 수신이 분리되어 있으며 카프카 큐에 데이터를 저장하는 Kafka Producer , 이를 읽어오는 Kafka Consumer로 분리 되어 Client API를 제공 2. Zookeeper - 분산 코디네이터 서비스 - Kafka는 Zookeeper를 활용하여 데이터 분산 처리 - 각 서버의 상태와 연결, 환경 ,구성 ,위치 , 정보 등 관리데이터를 저장하기 위해 설계 - 디렉토리와 파일처럼 노드내에 데이터를 가지고 있으며 주키퍼 네임스페이스 노드를 가지고 있음 - 클러스터를 구성하는 서버들끼리 공유되는 데이터를 유지하거나 어떤 연산을 조율하기 위해 사용 - 서버 모니터링 가능 - 각 디렉터리 노드를 Znode라고 하며 , 영구노드와 임시노드,시퀀스 노드로..

Tools/KAFKA 2021.03.02

DataBase 정규화

데이터베이스 정규화 1. 불필요한 데이터 삭제 2. 삽입, 수정 ,삭제시 이상 현상 방지 제 1 정규화 - 한속성이 단하나의 값만 존재 1) 다가 속성 이름 번호 (PK)고객번호 홍길동 1 1 홍길동 2 1 - 고객 번호를 안다고 해도 이름과 번호를 알 수 없다. - 번호를 PK로 바꾸던가 인조키를 만들어준다. 이름 고객번호(PK) 홍길동 1 번호(PK) 고객번호(FK) 1 1 2 1 2) 복합 속성 사용 고객번호(PK) 이름 주민번호 100 홍 길동 990303 - 하나의 컬럼에 여러개의 정보가 들어있음 이름 (성 +이름) - 컬럼을 분리한다. - 상황에 따라 사용한다. 고객번호(PK) 성 이름 주민번호 100 홍 길동 930909 3) 유사속성 반복 주문번호1 상품1 주문번호2 상품2 1 의자 2 책..

C.S/DB 2021.02.28

DB 트랜잭션의 정의, 특징

데이터베이스 트랜잭션 데이터베이스가 한번에 실행 되어야하는 논리적 연산의 집함 상호작용의 단위로써 성공과 실패가 분명하며 , 트랜잭션간에 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 트랜잭션의 특징 (ACID) 1. 원자성 , Atomicity - 트랜잭션의 작업들이 진행중에 중간에 중단되지 않는것을 보장 ex) 자금 이체시 보내기만 성공하고 받는 것은 실패하는 경우는 없다. 2. 일관성, Consistency - 데이터베이스가 트랜잭션 이후에 기존의 데이터 베이스의 상태가 변경되거나 트랜잭션에 대한 데이터만 기존 데이터의 기준에 위배하는 다른 형식의 데이터를 가지고 있어서는 안된다. ex) 모든 계좌는 잔금이 1원 이상 남아있어야 한다는 데이터베이스에서 자금 이체후 잔금이 0원이 될 수..

C.S/DB 2021.02.28

스프링 AOP 적용 예제

이전글 : 스프링 AOP 기본 동작 원리 : https://chalchichi.tistory.com/41 스프링 AOP 기본 동작 원리 스프링 AOP - OOP를 보완하기 위해 ASPECT를 모듈화 할 수 있는 프로그래밍 기법 구성요소 1. Aspect : 묶어 놓은 모듈 2. Target : 적용이 되는 대상 3. Advice : Aspect 안의 기능 4. Join Point : 적용 시점 5... chalchichi.tistory.com 1. 스프링 AOP 메이븐 의존성을 추가한다. org.springframework.boot spring-boot-starter-aop 2. 어노테이션 기반으로 실행예정이므로 어노테이션을 만들어준다. @Retention(RetentionPolicy.CLASS) @Ta..

Tools/Spring 2021.02.28

스프링 AOP 기본 동작 원리

스프링 AOP - OOP를 보완하기 위해 ASPECT를 모듈화 할 수 있는 프로그래밍 기법 구성요소 1. Aspect : 묶어 놓은 모듈 2. Target : 적용이 되는 대상 3. Advice : Aspect 안의 기능 4. Join Point : 적용 시점 5. Point cut : 적용해야 할 위치 AOP 적용 방식 1) 컴파일 : 컴파일 시 이미 코드 내용대로 조작이된 바이트코드를 만들어냄 2) 로딩 타임 : 컴파일에서는 저굥되지 않고 각 Aspect를 따로 바이트 코드로 가지고 있지만 로드시 설정한 대로 로드 후 생성 3) 런타임 : 스프링 안에서 사용 A라는 클래스 타입의 Bean을 만들 때 A*인 "프록시 빈" 을 생성 후 Aspect를 호출 PROXY 패턴 프록시와 리얼 서브젝트가 공유하는..

Tools/Spring 2021.02.27

HTTP 헤더

HTTP Header - 요청 / 응답에 대한 일반적인 정보를 담고 있음 1) General 헤더 : 메서지 전체에 적용 2) Request 헤더 : 요청 헤더 3) Response 헤더 : 응답 헤더 4) Entity 헤더 : 컨텐츠 타입 정의 ( JSON ,XML ...) => RFC 723x 이후 부터 Entity 헤더가 표현 헤더로 변함 표현 1) Content - Type : 데이터 형식(Json , img ...) 2) Content - Encoding : gzip, deflate 3) Content - Language : 한국어 ,영어 4) Content - Length 협상 (Content Negotiation) 클라이언트가 서버에게 리소스를 원하는 형태를 요청함 서버는 클라이언트 협상에 ..

C.S/WEB 2021.02.27

HTTP 메서드

GET 리소스 조회 , Body에 데이터 넣지 않음 POST 요청 데이터 처리 , body 에 데이터 존재 => body에 들어온 데이터 처리 ex) "/members => POST처리 할 것" 과 같이 Cilent 와 Server가 약속이 되어 있어야 함 요청된 표현을 처리 PUT 리소스 대체 1. 리소스가 없으면 생성 2. 기존의 리소스가 있으면 대체 => 완전히 대체해서 새로 넣음 3. POST 와 다르게 Resource의 정확한 위치를 Client가 지정하고 메세지를 보냄 PUT 요청시 주의 할 점 1. PUT /user { age : 20 } 요청 2. 서버에 기존 User가 { name : "hi" , age : 30} 로 저장되어 있음 3. 기존의 user 삭제후 { name : null ,..

C.S/WEB 2021.02.27

HTTP 응답코드

HTTP 응답 코드 : 클라이언트의 request에 대한 reponse의 종류 코드 200~ 200 : OK 201 (create) : POST요청을 성공해서 새로운 리소스를 만듦 202 (accept) : 배치 프로그램 등에서 당장 동작하지 않으나 요청은 수락됨 (ex : 1시간 뒤에 동작) 204 (no content) : 요청에 성공했으나 되돌려줄 본문이 없음 300~ 영구,일시,특수 리다이렉션 응답코드 영구 리다이렉트 : 주소가 영구히 바뀜 301 (move permently) : 요청 메서드가 GET으로 변하고 본문이 제거 될 수 있음 ( 반드시는 아님) 308 (permently redirect) : 요청메서드가 변하지 않고 본문이 유지됨 301 동작 방식 1. Client -> POST( b..

C.S/WEB 2021.02.27