2014년 9월 16일에 발행됨. (v2.0) 다른 분야에서 활동하는 조직들은 유사한 소프트웨어를 구축하기 위한 패턴들을 독립적으로 발견하고 있습니다. 이러한 시스템은 보다 견고하고, 탄력적이며, 유연하며 현대적인 요구사항을 반영하기 좋은 위치에 있습니다. 이런 변화는 최는 몇 년간의 급격한 애플리케이션 요구사항의 변화에서 기인합니다. 불과 몇 년 전까지만 해도 거대한 애플리케이션은 수십 개의 서버로 구성되어, 몇 초의 응답 시간과 몇 시간의 오프라인 유지보수를 허용하고, 기가바이트 데이터를 담고 있었습니다. 오늘날의 애플리케이션은 모바일 기기에서 부터 수천 개의 멀티 코어 프로세서에서 동작하는 클라우드 기반의 클러스터까지, 모든 기기에 배포되고 있습니다. 사용자는 밀리초의 응답 시간과 100%의 가동률..
오늘 아침까지만 해도 그게 그거라고 생각하고 내키는 대로 사용해 왔는데, 문득 굳이 같은 기능을 두 개나 만들었을 리가 없다는 생각이 들어 알아보게 되었다. 사전지식이 필요하다면 한없이 많이 필요하고 아니라면 아니라서, 일단 딱 둘의 공통점과 차이점에 대해서만 정리하고 넘어간다. CascadeType.Remove orphanRemoval = true 공통점 부모 엔티티 삭제시 자식 엔티티도 함께 삭제 차이점 연관관계를 끊어도 자식 엔티티 유지 연관관계가 끊기면 자식 엔티티 삭제
목차 인증이 끝난 사용자를 애너테이션으로 분류하는 구현을 하다가 몇 가지 애너테이션을 만나게 되었다. 우선 (CP로)구현은 끝났는데 뭔지는 알고 넘어가야 할 것 같아서. 하나씩 알아보자. @Documented @AuthenticationPrincipal @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.PARAMETER, ElementType.TYPE}) public @interface SignInUser { } @Documented 해당 애너테이션이 메타 애너테이션으로 설정된 애너테이션을 JavaDoc에 포함시킨다. JavaDoc은 기본적으론 애너테이션에 대해선 문서화를 해주지 않는다고 한다. @AuthenticationPrincipal 인증이 끝난 ..
목차 지난 한 주간은 백준에서 집합과 관련된 문제를 주로 풀었다. 그러면서 해시 셋과 트리 셋의 특성에 대해 전보다 익숙해진 느낌이 들어 든든한 느낌도 든다. 어쨌거나 집합과 맵에 대한 문제를 풀어본 김에, 자바 컬렉션 프레임워크에서 제공하는 집합과 관련된 메서드를 정리하고 가면 좋겠다는 생각이 들었다. 대단히 어려운 내용은 없지만, 그림과 함께 하나씩 정리하자. 먼저, 아래와 같은 셋 두 개를 준비한다. public class example { public static void main(String[] args) { Set treeSet = new TreeSet(List.of(1, 2, 3, 4, 5)); Set hashSet = new HashSet(List.of(4, 5, 6, 7, 8)); } }..
어제 수업을 듣다가 동시성과 병렬성에 대해 배웠다. 말로만 들으니 헷갈려서 시간이 난 김에 정리. 선 요약 병렬성은 동시성을 구현하는 방법 중 하나. 동시성은 동시처럼 보이지만 수도(Pseudo) 동시성. 병렬성이 진짜 동시성. Concurrency vs. Parallelism 동시성(Concurrency) 병렬성(Parallelism) 여러 작업이 동시에 실행되고 있는 것처럼 처리되는 것 여러 작업이 실제로 동시에 실행되는 것 싱글(멀티) 코어 환경에서 논리적 멀티 스레드 생성 및 오버래핑 멀티 코어 환경에서 물리적 멀티 스레드 생성 및 실행 2개 이상의 논리 스레드 필요 2개 이상의 코어, 2개 이상의 물리 스레드 필요 빠른 시간에 하나씩 많은 것을 번갈아가며 처리(멀티 태스킹) 한번에 많은 것을 처..
프로젝트 리액터(Project Reactor), 혹은 리액터는 리액티브 스트림즈의 구현체다. 로고와 이름부터 원자로, 아이언맨을 떠오르게 만드는 리액터는 2014년에 태어난 현대적인 기술로 2022년 현재 3.4.24 버전까지 릴리즈 되어있다. 스프링 MVC와 비교했을 때 가장 큰 차이점은 논 블로킹 통신을 지원한다는 점이며, 명령형이 아닌 선언형 프로그래밍으로 이루어졌다는 것 역시 큰 차이점이다. 지난 글에서 리액터를 사용한 리액티브 프로그래밍의 기초와 용어에 대해 보았으니, 2022.10.13 - [Development/Spring] - [Spring]리액티브 프로그래밍 시작하기, 용어 정리 [Spring]리액티브 프로그래밍 시작하기, 용어 정리 지난 글에서 리액티브 프로그래밍과 리액티브 스트림즈, ..
summarizingInt()는 Collectors와 함께 사용 돼 정수형 스트림에서 제목의 계산을 한번에 해주는 연산자이다. 물론 그중 원하는 요소를 뽑아오는 것도 얼마든지 가능한 아주 기특한 아이이다. 코드를 보자. import java.util.IntSummaryStatistics; import java.util.List; import java.util.stream.Collectors; public class SummarizingExample { public static void main(String[] args) { List list = List.of(2, 3, 5, 7, 11, 13, 17, 19); IntSummaryStatistics statistics = list.stream() .coll..
지난 글에서 리액티브 프로그래밍과 리액티브 스트림즈, 그 구현체인 프로젝트 리액터에 대해 알아보았다. 2022.10.12 - [Development/Spring] - [Spring]리액티브 프로그래밍(Reactive Programming) 2022.10.12 - [Development/Spring] - [Spring]리액티브 스트림즈(Reactive Streams) [Spring]리액티브 스트림즈(Reactive Streams) 지난 글에서 리액티브 시스템이란 쉽게 말해 반응 속도가 빠른 프로그램을 설계하는 원칙이며 리액티브 프로그래밍은 그 원칙을 구현하는 논 블로킹, 비동기 방식의 선언형 개발 패러다임이라 gnidinger.tistory.com 짧게 요약하면 아래와 같은 내용이다. 리액티브 프로그래밍 ..
목차 지난 글에서 리액티브 시스템이란 쉽게 말해 반응 속도가 빠른 프로그램을 설계하는 원칙이며 리액티브 프로그래밍은 그 원칙을 구현하는 논 블로킹, 비동기 방식의 선언형 개발 패러다임이라 했었다. 2022.10.12 - [Development/Spring] - [Spring]리액티브 프로그래밍(Reactive Programming) [Spring]리액티브 프로그래밍(Reactive Programming) 리액티브 프로그래밍(Reactive Programming)이란 논 블로킹, 비동기 데이터 흐름 및 새로운 정보의 가용성에 기반을 둔 선언형 개발 패러다임이다. 또는 리액티브 시스템을 구현하는 방법이자 하위 개 gnidinger.tistory.com 이번 글에선 리액티브 프로그래밍의 표준 사양인 리액티브 ..
- Total
- Today
- Yesterday
- 유럽여행
- 기술면접
- BOJ
- 지지
- 유럽
- 세모
- 동적계획법
- Algorithm
- 여행
- java
- 세계여행
- 파이썬
- 칼이사
- 자바
- 백준
- 스프링
- Python
- a6000
- 남미
- 야경
- 맛집
- 면접 준비
- Backjoon
- 세계일주
- spring
- 리스트
- 알고리즘
- 스트림
- 중남미
- RX100M5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |