데이터 중심 어플리케이션 설계 - 07장 트랜잭션 읽기 격리성 동시에 실행되는 트랜잭션은 서로 격리된다는 것을 의미 고전적인 데이터베이스 용어에서는 격리성 == 직렬성의 의미를 가지기도 함 직렬성(serializable)이란 실제로 여러 트랜잭션이 동시에 실행됐더라도 트랜잭션 커밋의 결과가 트랜잭션이 순차 실행됐을때와 동일하도록 보장 직렬성(serializable) 격리는 일반적으로 성능 손해를 동반할 수 밖에 없기 때문에 거의 사용하지 않음. 실제는 보다 약한 스냅샷 격리를 구현 지속성 트랜잭션이 성공적으로 커밋되었다면 하드웨어 결함/데이터베이스가 죽더라도 트랜잭션에 기록한 데이터는 손실되지 않아야 함을 뜻함 예를 들어 쓰기 전 로그(write-ahead log) 혹은 비슷한 수단을 통하여 쓰기 저장소..
블로그 정리 MINIMAL SKIN 적용 불필요 글 비공개 처리 및 태그 삭제 KotlinInAction 제네릭스 관련 글 업로드 @RequestParam 관련 요약 정리 데이터 중심 어플리케이션 설계 - 07장 트랜잭션 읽기 트랜잭션은 어플리케이션 구현 혹은 프로그래밍 모델의 난이도를 낮추기 위한 데이터 저장소의 장치 현대적 의미에서의 트랜잭션은 과거와 많은 차이가 있다. 분산 저장소를 지원하는 데이터베이스 고가용성과 높은 성능을 위해서 트랜잭션은 확장성을 해치는 안티테제로 여기는 믿음이 생김 기존 데이터베이스 벤더에서는 "값진 데이터"와 "중요 데이터"를 필수적인 요건이라고 말하고 있음 ACID의 의미 해석 데이터베이스별로 ACID에 대한 구현은 다음 상위 개념은 동일하지만 악마는 세부사항에 숨겨져 ..
MVC와 WebFlux에서의 @ReqeustParam Spring MVC Spring MVC에서는 기본적으로 querystring, form-data, multipart 요청에 대해 @ReqeustParam으로 매핑이 가능하다. 이는 서블릿 API에서 querystring, form-data(requestBody)를 parameters map에 같이 바인딩하기 때문이다. RequestParamMethodArgumentResolver.resolveName을 살펴보면 간단하게 로직 확인이 가능하다. Spring Webflux 웹플럭스에서는 querystring에서 대해서만 바인딩을 지원한다. RequestParamMethodArgumentResolver.resolveNamedValue을 살펴보면 간단하게 로..
9장 제네릭스 실체화한 타입 파라미터를 사용하면 인라인 함수 호출에서 타입 인자로 쓰인 구체적인 타입을 실행시점에 알 수 있다. 선언 지점 변성을 사용하면 기저 타입은 같지만, 타입 인자가 다른 두 제네릭 타입 Type와 Type가 있을 때 타입 인자 A와 B의 상위/하위 타입 관계에 따라 두 제네릭 타입의 상위/하위 타입 관계가 어떻게 되는지 지정할 수 있다. List를 인자로 받는 함수가 있다고 했을 때, List타입의 값을 전달할 수 있는지 여부를 선언 지점 변성을 통해 지정할수 있음. 사용 지점 변성은 같은 목표(제네릭 타입 값 사이의 상위/하위 타입 관계 지정)를 제네릭 타입 값을 사용하는 위치에서 파라미터 타입에 대한 제약을 표시하는 방식으로 달성 제네릭 타입 파라미터 제네릭 타입의 인스턴스를..
Netty-In-Action 1부, 네티 개념과 아키텍처 1장. 네티: 비동기 이벤트 기반 네트워킹 프레임워크 최초 자바 API(java.net)은 네이티브 시스템 소켓 라이브러리가 제공하는 블로킹 함수만 제공 다수의 클라이언트를 관리하려면 새로운 클라이언트 소켓마다 새로운 스레드를 할당해야 함. 여러 스레드가 입출력 데이터를 무한정 대기하는 상태가 유지될 수 있고, 이는 곧 리소스에 대한 낭비로 이어질 수 있음. 운영체제에 따라 다르지만 스텍의 기본 크기는 64KB ~ 1MB까지 차지할 수 있다. JVM이 많은 수의 스레드 생성을 지원하지만, 동시 접속이 한계에 이르는 순간(1만개 전후) 컨텍스트 스위칭에 따른 오버헤드가 심각한 문제가 될수 있다. 네이티브 소켓 라이브러리에는 오래전부터 네트워크 리소스..
자바 ORM 표준 JPA 프로그래밍 13장 내용을 정리 스프링과 같은 컨테이너 환경에서 JPA를 사용하게 되면, 컨테이너 레벨에서 트랜잭션과 영속성 컨텍스트를 관리해주므로 어플리케이션 개발이 쉬워지게 되는데, 문제가 되는 부분은 내부 동작에 대한 정확한 이해가 없을 때 생기는 트러블 슈팅이 어려워 지는 부분이다. 내부동작에 대한 이해, 스프링 컨테이너에서의 기본 전략, 지연로딩, OSIV에 대한 내용을 가볍게 정리하고자 한다. 트랜잭션 범위의 영속성 컨텍스트 스프링 컨테이너의 기본 전략 스프링은 트랜잭션 범위의 영속성 컨텍스트를 기본 전략으로 사용한다. 트랜잭션 범위와 영속성 컨텍스트의 생존 범위가 동일하며, 트랜잭션 종료 시, 영속성 컨텍스트도 동일하게 종료하게 된다. 스프링 어플리케이션에서는 @Tra..
1. 휴식? 회사를 그만두었기 때문에 누릴 수 있는 가장 큰 사치는 아마 늘어지게 잘 수 있는 늦잠 그리고 자유로운 시간일 것이다. 최근 한달 가량을 그렇게 보내고자 맘을 먹었지만, 불행인지 다행인지 정말로 한번쯤은 도전해보고 싶은 회사에서 공채를 시작하여 거기에 매달려 한달 가량 아니 한 3주 가량의 시간을 전력의 삶(?)을 살다보니 시간이 어느덧 8월 가량이 되었다. 사실 저번달에는 공부도하고 공채 준비도 했으니 이번달에는 전력으로 쉬고자 하는 마음이 가장 크다. 하지만 공채 결과가 어떻게 될지는 모르겠지만, 그래도 좋은 방향으로 흐르고 있는거 같아. 어쩌면 지금의 휴식이 길어지지만은 않겠구나 하는 생각도 든다. 뭐 다시 개발 이야기로 돌아와서 보자면 과제를 준비하면서 해볼 수 있는 건 모두 했다라고..
1. DDD Start 다 읽음 간만에 끝까지 다 읽은 책이다. 책 내용이 너무 흡입력이 좋았다. 기존에 API를 개발하면서 늘 고민하던 설계적인 부분 혹은 구현 패턴에 대한 100%까지는 아니지만 어느정도의 답을 준거 같아서 나름 만족스러운 독서였다고 평하고 싶다. 마지막 부분이라 크게 기억이 남는 것인지는 몰라도 도메인 이벤트 처리하는 방법이나 CQRS에 대한 부분 그리고 락(선점, 비선점, 오프라인)에 대한 구현과 소개도 너무 좋았었다. 이제 내용을 정리해서 마크다운과 블로그에 올리는 일만 남았는데, 3장까지밖에 정리하지 못해서 할일이 많이 남은거 같아 이거도 일종의 기술부채인가 하는 생각이 들었다. 2. MySQL 5.7 MySQL 5.7 관련 신간이 출시하기도 했고, 스터디에서 해당 책을 가지고..
- Total
- Today
- Yesterday
- pm2
- Spring MVC
- WebFlux
- implicit prototype chain
- Spring Boot
- Prototype
- springboot
- tomcat
- ecma
- Sublime Text 3
- maven
- package.js
- Handlebars
- Sublime Text 2
- HttpClient
- Squelize.js
- cluster
- Express.js
- http method
- 스프링
- jade
- node.js
- Til
- HTTP
- SideBarEnhancements
- RestTemplate
- Spring
- Kotlin
- Package Control
- EJS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |