목차 평소에 관성적으로 써오면서도 정확히 무슨 역할을 하는지 몰랐던 애너테이션 몇 개를 정리하고 넘어가려고 한다. 대상은 아래와 같다. @Lazy @LazyCollection @JsonManagedReference @JsonBackReference @JsonIgnoreProperties @JsonProperty @Lazy 스프링 프레임워크를 사용하면 소프트웨어 시작시 애플리케이션 컨텍스트 로드와 함께 등록된 모든 빈들이 생성된다. 따라서 코드의 규모가 커지고 빈의 개수가 많아질수록 필연적으로 메모리 점유율이 올라가고 시작시간이 느려질 수밖에 없는데, @Lazy는 이런 문제를 조금이라도 해결하기 위해 스프링 프레임워크에서 지원하는 애너테이션이다. 해당 애너테이션을 붙인 빈은 자동으로 지연로딩(Lazy Lo..
알고리즘 문제를 이리저리 돌려가며 풀다가 Map을 스트림으로 다룰 때의 자료형이 필요했다. 일단 인텔리제이에서 알려주는 대로 사용해서 문제를 풀고, 따라가며 공부하기. Map.Entry 소개부터 하자면 Map.Entry는 자바 컬렉션 프레임워크의 Map 인터페이스의 내부 인터페이스이다. Map과 마찬가지로 키-값의 데이터를 저장하며, Map에서 .entrySet() 연산자를 호출하면 생성할 수 있다. 정확하게 말하자면 .entrySet()의 경우 이름 그대로 아래와 같은 Set을 생성하며, Map integerMap = new HashMap(); Set set = integerMap.entrySet(); 위 Set에 모든 엔트리 객체가 담겨있기 때문에 개별 Map.Entry를 제어하려면 그대로 스트림을..
[WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 Method vs. Operator 별생각 없이 메서드나 연산자라는 단어를 마구 뒤섞어 쓰다가 의문이 들었다. 같은 뜻의 단어를 두 개나 사용할 필요가 있을까? 하고. 해서 연산자 정리도 할 겸 아주 얕게 알아보았는데, 결론부터 말하면 둘은 다른 개념이지만 아주 남남은 아니다. 요약하면 아래와 같다. 메서드(Method) - 클래스나 객체 내부에 정의된 함수. Mono와 Flux 역시 내부에 많은 메서드를 가지고 있음 연산자(Operator) - 실제 연산에서 사용되는 메서드. 스트림의 데이터 처리를 연산이라고 부르기 때문에 붙..
목차 지난 글에선 리액티브 선언문과, 그에 맞춰 개발 및 통합이 진행 중인 리액티브 스트림에 대해 훑었다. 2023.03.25 - [Development/WebFlux] - [WebFlux]리액티브 스트림(Reactive Streams) [WebFlux]리액티브 스트림(Reactive Streams) 원래 계획은 리액티브 스트림에 이어서 모노, 플럭스까지 정리하는 거였지만, 하나도 모르는 내가 한 번에 몰아 정리하기는 불가능하다는 판단이 들어 글을 나누었다. 읽고, 실습해도 이상하게 gnidinger.tistory.com 또한 리액티브 스트림의 구현체중 하나인 프로젝트 리액터와, 그 구현체인 스프링 웹플럭스에 대해서도 언급했다. 이 글에서는 웹플럭스 내부의 인터페이스 중 Publisher를 구현한 두 가..
원래 계획은 리액티브 스트림에 이어서 모노, 플럭스까지 정리하는 거였지만, 하나도 모르는 내가 한 번에 몰아 정리하기는 불가능하다는 판단이 들어 글을 나누었다. 읽고, 실습해도 이상하게 개념이 잡히지 않는 웹플럭스, 쪼개서 알아보자. Reactive Streams 리액티브 스트림은 비동기/논블로킹 처리를 위한 스트림 기반의 프로그래밍 모델이다. 또한 데이터 생산자와 소비자 사이에서 백프레셔를 지원해 데이터의 흐름을 제어할 수 있으며, 이는 리액티브 선언문에 쓰여있는 대로 병목현상이나 예기치 못한 소프트웨어의 정지를 방지한다. 리액티브 스트림의 탄생 이전에는 라이브러리마다 다른 방식으로 같은 목적의 프로그램을 구현해야 했으며, 2013년 넷플릭스와 레드햇을 위시한 기업들이 공동으로 개발하며 표준화 작업을 ..
목차 이전 글에서 NGINX에 대해 개괄적으로 공부할 때 이벤트 루프(Event Loop)라는 것이 등장한 적이 있다. 2023.03.07 - [Development/Network] - [Network]NGINX 튜토리얼 [Network]NGINX 튜토리얼 여기저기에서 이름은 많이 주워들은 엔진엑스. 좋다! 빠르다! 가볍다! 길래 쓰지 않을 이유가 없어 보여 한 번 써볼까 하고 기웃거리는 것이 이 글의 목적이다. 엔진엑스는 2004년 10월, 러시아에 gnidinger.tistory.com 이번 글에서는 웹플럭스에서도 사용되는 이벤트루프와 네티(Netty)에 대해 훑어보자. Event Loop 이벤트 루프란 한 마디로 정의하면 비동기 처리를 위해 사용되는 단일 스레드이자 메인 루프라고 할 수 있다. 단어..
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)); } }..
- Total
- Today
- Yesterday
- 지지
- 기술면접
- 백준
- Backjoon
- java
- 칼이사
- RX100M5
- 중남미
- 야경
- 면접 준비
- 세계일주
- 세모
- 유럽여행
- 스프링
- 유럽
- 세계여행
- BOJ
- 동적계획법
- 스트림
- 리스트
- 알고리즘
- 여행
- 남미
- spring
- 파이썬
- 맛집
- Python
- Algorithm
- a6000
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |