일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- *
- ddd
- 서명
- junit5
- JSON
- Transaction
- spring
- Rest
- OOP
- mockito
- JWT
- di
- SOA
- Spring Data Redis
- IOC
- AOP
- Generic
- Java
- jvm
- bounded context
- redis
- PSA
- rest api
- Exception
- MSA
- bytecode
- reflection
- Today
- Total
목록전체 글 (25)
개발자일기
도메인 주도 개발 무엇인가 ? 요구사항, 유즈케이스, 스펙등을 도메인으로 표현하고 해당 도메인들을 도메인 모델로 설계 부터 구현까지의 패턴과 원칙들 객체 지향 + 추가적인 개발론 : oop를 위반하는 경우도 잇음 : 간접 참조, 재사용보단 각각의 모델 장점 보통 서비스(어플리케이션) 레이어에 도메인 로직이 담겨있다. 이럴경우 도메인 로직에 대한 응집도가 떨어지고 코드 중복성이 늘어나 가독성 및 유지보수가 어렵게 된다. 비지니스(도메인) 로직을 도메인 모델이 책임지게 하여, 해당 도메인에 대한 응집도를 높이게 되고, 객체 지향적인 설계 원칙( 객체는 기능+상태)을 잘 적용할수 있다. 단점 아무래도 oop는 재활용성을 강조하지만 ddd는 각각의 도메인 모델을 추구 함으로 코드에 대한 중복이 늘어날수 있다. ..
1. Generics 자바 5에서 추가된 기능으로서 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다 static 메소드 제네릭 public static class Utils{ public static int size(T[] anArray) { return anArray.length; } } 클래스 제네릭 class MyClass { T t; private MyClass(T t){ this.t = t; } T getT(){ return t; } } 2. type eraser 자바는 컴파일시에 제네릭 타입 정보들을 제거 한다. 런타임시에는 실제로 타입정보는 존재 하지 않고 강제 캐스팅 된다. class MyClass { Object t; private MyCl..
동기 비동기 동시성 개념 동기 한쓰레드에서 순차적으로 실행, 호출에 대한 결과를 계속 기다림 비동기 동시에 실행됨, 블로킹/논블로킹 함수(메소드)가 바로 리턴되느냐의 의미이다. 블로킹 : 함수 호출후 블로킹됨 논블로킹 : 함수 호출후 바로 리턴됨 조합 동기/블로킹 : 메소드 호출도 블로킹되고 동기작업됨 동기/논블로킹 : 메소드 호출은 리턴됬지만 콜백이 올때까지 다른작업 못함 비동기/블로킹 : 메소드 호출이 블로킹되었지만 다른작업은 동시에 진행함 비동기/논블로킹 : 메소드 호출도 리턴되고 동시에 다른작업도 진행 참조 https://jins-dev.tistory.com/entry/%EB%8F%99%EA%B8%B0Synchronous-%EC%9E%91%EC%97%85%EA%B3%BC-%EB%B9%84%EB%8..
JSON Web Token 정의: 어려움.... JWT(Json Web Token)은 클레임 기반 토큰이며, 이름에서 알 수 있는 것처럼 JSON을 이용한 토큰이고 웹 표준(RFC 7519)를 구현한 것이다. 자세한 것은JWT 공식페이지에서 확인 가능하다. 쉽게 말해 JSON을 이용한 토큰 , self-contained데이터를 저장하는 토큰이다. 다음과 같은 구조이다. 헤더(header) 구성 타입 : JWT 토큰 유형이다. 알고리즘 : HMAC, SHA256 또는 RSA와 같은 해시 알고리즘을 사용 { "typ": "JWT", "alg": "HS256" //HS256 = HMAC+ SHA-256 } 위의 json을 base64로 인코딩 하여 토큰의 첫번째 헤더부분에 위치 한다. ex) eyJhbGciO..
암호화 방식 대칭키 암호화 하나의 키로 암호화 복호화를 모두 하는 암호화 방식 AES(Advanced Encryption Standard), DES (Data Encryption Standard) 방식등이 있다. 공개키(비공개키) 암호화 공개키 암호화라고 불린다. 두개의 키로 암호화 복호화를 하는 암호화 방식이다. 보통 하나의 키는 Private Key(비공개키) 라고 부르고, 다른 하나는 Public Key(공개키)라 한다. 보통 공개키로 암호화 하고 비공개키로 복호화하는 방식이다. RSA(Rivest, Shamir and Adleman) 방식등이있다. 대칭키 VS 공개키 대칭키는 암화화 키의 공유에 대한 보안적인 문제가 있고, 비대칭키는 속도가 느리다는 단점이 있다. 그래서 https(ssl)에서는 ..
redis 트랜잭션 redis는 트랜잭션을 지원한다. 실행될 항목들을 QUEUE넣고 한번에 순차적 실행한다. //reids cli > MULTI //트랜잭션 시작 OK > INCR foo QUEUED > INCR bar QUEUED > EXEC //트랜잭션 종료 1) (integer) 1 2) (integer) EXEC 이후 발생한 오류는 특별한 방법으로 처리되지 않습니다. 트랜잭션 중에 일부 명령이 실패하더라도 다른 모든 명령들이 실행됩니다. 롤백 미지원 실패는 오직 syntax에러만, 잘못된 타입 접근 결국 프로그래밍 오류로만 도중 에러가 발생한다. 롤백이 없기 때문에 속도가 빠르다. spring data redis? 스프링에서 redis를 사용하기 쉽게, 설정 코드 같은 것들을 간결하게 해준다. h..
개발을 하다보면 귀차니즘으로 인해 RuntimeException으로 throw한다. 검사 예외와 런타임 예외를 어떻게 구분 해야될까 검사(체크) 에러 호출하는 쪽에서 복구 하리라 여기지는 상황이면 검사(체크) 예외를 사용해라 API설계자가 검사 예외를 던져주어 핸들링 하라는 의미 ex) DB 트랜잭션 실패의 경우에는 롤백이 필요하니 검사 에러가 적합 API를 제대로 사용해도 발생할수 있는 오류, 프로그래머가 조치를 취할수잇는 오류 일반적으로 복구 가능한 정보도 전달 Exception에 메소드 제공 FailType failType; public OrderCancelFailException(FailType failType){ this.FailType = failType; } FailType getType()..
https://www.youtube.com/watch?v=RP_f5dMoHFc 의 영상을 토대로 정리함. WEB의 등장 Q : 어떻게 인터넷에서 정보를 공유할 것인가? A : 정보들을 하이퍼텍스트로 연결한다. 표현형식 : HTML, 식별자 : URI, 전송방법 HTTP HTML : (HyperText Markup Language) 하이퍼텍스트 : 문서 내부에 다른 문서로 연결되는 참조를 집어 넣음으로서 서로참조할수있도록한다. https://restfulapi.net/ REST Rest는 웹의 창시자(HTTP) 중의 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다. HTTP/1.0 (1994 - 1996) 로이필딩은 생각했다. "How do I improve HTTP without ..