일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Java
- react
- 자바
- IT
- Kafka
- Galera Cluster
- Proxy
- MySQL
- 자료구조
- redis
- MSA
- 컴퓨터구조
- mongoDB
- 알고리즘
- Algorithm
- 운영체제
- JavaScript
- Heap
- C
- JPA
- spring webflux
- 디자인 패턴
- 네트워크
- OS
- c언어
- Spring
- design pattern
- Data Structure
- 백준
- 파이썬
- Today
- Total
목록분류 전체보기 (211)
시냅스
함수형 프로그래밍 순수함수(pure function)를 조합하고 공유 상태(shared state), 변경 가능한 데이터(mutable data) 및 부작용 (side-effects)를 피하는 기본 원칙에 따라 소프트웨어를 구성하는 프로그래밍 패러다임 절차보다 기능에 초점을 맞춘다. 1급 객체 (first object) 변수나 데이터 구조 안에 넣을 수 있다. 파라미터로 전달할 수 있다. 동적으로 프로퍼티 할당이 가능 리턴값으로 사용할 수 있다. 자바의 경우 함수형 인터페이스를 통해 구현이 가능 순수 함수 (pure function) 순수 함수란 같은 입력에 대해 항상 같은 출력을 반환하는 함수 멀티스레드에서도 안전하고 병렬처리 및 계산도 가능하다. 동일한 입력에 대해 항상 같은 값을 반환한다. 부수효과..

Docker 란 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 민 운용하기 위한 오픈소스 플랫폼 인프라 환경을 컨테이너로 관리 애플리케이션 실행에 필요한 모든 파일 및 디렉토리들을 컨테이너로 모은다. 애플리케이션 실행에 필요한 모든 것이 포함된 Docker 이미지를 작성하여 컨테이너를 가동시킨다. 이미지는 Docker가 설치된 환경이라면 어디서든 실행할 수 있는 높은 이식성을 갖게 된다. 기본 기능 3가지 build 애플리케이션의 실행에 필요한 모든 것을 모아 Docker 이미지로 만듬 Docker 명령을 통한 수동 / Dockerfile 작성을 자동으로 이미지를 만들 수 있음 ship Docker hub을 통해 이미지를 받을..

Redis in-memory 데이터 자료구조 저장소 아래와 같이 쓰일 수 있다. Database Cache Message broker Streaming engine Redis가 지원하는 자료구조 String Hash List Set Sorted Set Bitmap Hyperloglog Geospatial Indexe Stream atomic 한 연산을 지원한다. Redis Model Transactions Pub/Sub Lua scripting Keys with a limited time-to-live LRU eviction of keys Automatic failover 특징 Key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템이다. RA..

Spring Security가 framework로 하는 일 ServletContext 내부로 가지 않고 Filter 수준에서 보안을 설정한다. 어플리케이션의 모든 상호작용에 사용자 인증 요구 디폴트 로그인 폼 생성 user 라는 이름과 콘솔에 출력한 비밀번호를 사용한 폼 기반 인증 지원 BCrypt로 저장할 비밀번호 보호 사용자 로그아웃 지원 CSRF 공격 방어 Session Fixation 방어 보안 헤더 통합 HTTP Strict Transport Security로 요청을 보호 X-Content-Type-Options 통합 Cache Control (어플리케이션에서 특정 스태틱 리소스에 캐시를 허용하도록 재정의할 수 있다.) X-XSS-Protection 통합 X-Frame-Options 통합으로 클..

경로 표현식 .(점) 을 찍어 객체 그래프를 탐색하는 것 select m.username // 상태 필드 from Member m join m.team t // 단일 값 연관 필드 join m.orders o // 컬렉션 값 연관 필드 where t.name = '팀A' 상태 필드 state field 단순히 값을 저장하기 위한 필드 연관 필드 association field 연관관계를 위한 필드 단일 값 연관 필드 @ManyToOne, @OneToOne 대상이 엔티티 묵시적 내부 조인 발생, 탐색이 가능하다. select m.team from member m 에서 m.team.name으로 갈 수 있음 컬렉션 값 연관 필드 @OneToMany, @ManyToMany 대상이 컬렉션 명시적 조인 join 키..

JPA의 데이터 타입 분류 엔티티 타입 @Entity 로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 값 타입 int, integer string 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 기본값타입 자바 기본 타입 (int, double) 래퍼 클래스 (Integer, Long) String 생명주기를 엔티티에 의존 값 타입은 공유해서는 안된다. 회원 이름 변경시 다른 회원의 이름도 함께 변경되면 안됨 int, double 같은 기본 타입(Primitive type) 은 절대 공유해선 안된다. 기본 타입은 항상 값을 복사함 (깊은 복사) Integer 같은 래퍼 클래스나 String 같은 특수한 클래스는 공유 가능한 객체이지만 변경..

즉시 로딩과 지연 로딩 즉시로딩은 엔티티를 로딩하면서 관련된 모든 엔티티를 함께 로딩 하는것 지연로딩은 필요한 시점에 가져오는 것을 말한다. 가급적 지연 로딩만 사용해야 한다. 즉시 로딩을 적용하면 JPQL에서 N + 1 문제를 일으킨다. 만약 Member가 외래키를 갖고 있는 주인이고, Member가 3개에 각 Member의 소속된 팀이 전부 다르다면 쿼리는 4번이 실행된다 (member, team1, team2, team3) 이런 문제는 N(team) + 1(member)이라고 한다. @ManyToOne, @OneToOne은 기본이 즉시 로딩으로 반드시 LAZY로 설정해야 한다. 영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들 수 이싿. 종류 ..

프록시 em.find() 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 데이터베이스에 조회가 필요할 때 필요한 시점에 조회한다. 데이터베이스에 쿼리가 실행이 되지 않았음에도 조회가 되는 것 프록시는 실제 클래스를 상속 받아 만들어져 겉 모양이 같다. 클라이언트는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨 프록시 객체는 처음 사용할 때 한 번만 초기화한다. 프록시 객체를 초기화 할 때 프록시 객체가 실제 엔티티로 바뀌는 것은 아니고, 초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근 가능하다. 프록시 객체는 원본 엔티티를 상속 받는다, 따라서 타입 체크시 주의해야함 프록시 내부에는 실제 객체의 참조를..

MappedSuperclass 상속관계 매핑과는 관련이 없다. 엔티티, 테이블과 매핑할 수 없다. 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공한다. 테이블과 관계 없고 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할 조회, 검색 불가. (em.find(BaseEntity) 불가) 직접 생성해서 사용할 일이 없으므로 추상 클래스를 권장한다. 주로 등록일 수정일 등록자 수정자 등 전체 엔티티에서 공통으로 적용하는 정보를 모을 때 사용한다. 참고로 @Entity 클래스는 엔티티나 @MappedSuperclass로 지정한 클래스만 상속 가능하다. @MappedSuperclass public abstract class BaseEntity { private String createdBy; p..

상속관계 매핑 관계형 데이터베이스는 상속 관계가 없다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈터파입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 조인전략 각각 테이블로 변환 장점 테이블 정규화 외래 키 참조 무결성 제약조건 활용 가능 저장공간 효율화 단점 조회시 조인을 많이 사용, 성능 저하 조회 쿼리가 복잡함 데이터 저장시 Insert sql 2번 호출 단일 테이블 전략 통합 테이블로 변환 장점 조인이 필요 없으므로 일반적으로 조회 성능이 빠름 조회 쿼리가 단순함 단점 자식 엔티티가 매핑한 컬럼은 모두 Null 허용 단일 테이블에 모든 것을 저장하므로 테이블이 커질 수 있음, 상황에 따라 ..