일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링부트공부
- 자료구조공부
- nestjs스터디
- 스프링
- 플러터 개발
- 플러터 공부
- querydsl
- DDD
- Axon framework
- 코테공부
- JPA
- 스프링부트
- 기술공부
- nestjs
- JPA공부
- nestjs공부
- 자바공부
- 프로그래머스
- JPA스터디
- Flutter
- 스프링 공부
- 카프카
- 스프링공부
- JPA예제
- 기술면접공부
- K8S
- Kafka
- 알고리즘공부
- 코테준비
- JPA 공부
- Today
- Total
목록분류 전체보기 (715)
DevBoi
1) BooleanBuilder, BolleanExpression 사용 비슷한 용도이지만 내 생각에 두개의 용도는 다르다. BooleanExpression은 null인 경우 null을 반환해주면서, 조건에서 제외가 된다. 즉 특정 조건에 따라서 다이나믹하게 조건절이 추가되어야 하는경우, 심하면 없어도되는경우 BooleanExpression을 사용한다. BooleanBuilder는 항상 객체가 생성이 되지만 복잡한 조건절의 쿼리를 생성해야할 때 이걸 사용하게 되면, 그나마 보기 쉽고 조합을 자유롭게 해줄수있다 다만 무조건 사용해야하고 복잡한 조건절의 조합 도구라고 보면된다. 물론 두개다 때에 따라서 용도와 장점과 어긋나게 사용은 가능하지만 장단이 있으니 그에 따라 맞게 사용하면 좋을 것 같다. Boolea..
Spring 에서 기본 필터를 제공해주거나, 빈으로 등록하는데 스프링 버전이 변경되면서 Response를 내리는 필터의 설정 방법도 조금 바뀌었다. server: servlet: context-path=/: encoding: charset: UTF-8 force: true 위 처럼 진행하면 된다.(application.yaml)
뭐 별건없다. 배포할때는 서비스에 대한 구성을 따로 올리지만, 그게 아닐때 로컬에서 개발할때는 마리아 디비를 도커에서 구성해서 올리는데 자꾸 설정에 대한 오류, 버퍼에 대한 오류가 나서 짜증나서 로컬용 docker-compose 파일을 만든다 (디비만, 필요시 카프카나 추가예정) version: "3.2" services: database: container_name: database image: mariadb volumes: - ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro - ~/docker/mariadb/var/lib/mysql:/var/lib/mysql - ~/docker/mariadb/var/log/maria:/var/log/maria envi..
추천친구 (나랑 아무런 친구 요청이 없는 것) 친구 요청(추천친구에서 친구 요청) 친구 검색(닉네임 기준 친구 검색) 친구 리스트 (본인과 친구관계인 사람) 친구 수락(친구 요청에 대한 승인) 친구 요청 내역 확인(본인 기준 친구 요청을 보낸사람) 우선 이렇게 3가지에 대한 API를 개발할 것이고, 포스팅은 한개만 예시로 할 것이다. 해당 API는 플러터에서 사용 목적으로 개발한다. 친구 controller @GetMapping("/recommand-friends") public List recommandFriends(@RequestParam("userId") String userId) { return friendService.recommendFriends(userId); } @PostMapping("/..
친구데이터 관련 설계를 하고 있었다. 뭐가 좋을까. 고민 되었다. 특히 추천 친구라는 기능을 하나 만들고 싶었다. 우선 Entity간의 연관관계를 두기 싫었다. 그래서... 나는 이렇게 설계했다. 회원가입하면, Friends 테이블에 자기 자신도 넣어주는 것이다. 자세한건 아래 로직을 보자 1) 회원가입 로직 @PostMapping("/user") public User saveUser(@RequestBody UserDto userDto) { return userService.saveUser(userDto); } public User saveUser(UserDto userDto) { List result = userRepository.findByUserId(userDto.getUserId()); if(re..
해당 설정을 application.yaml에 넣어주면 된다. spring: jpa: properties: hibernate: show_sql: true format_sql: true use_sql_comments: true logging: level: org: hibernate: type: descriptor: sql: trace
buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.2.0-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.2' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'com.boiler.flutterbackend' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor ..
토픽을 생성하는 상황은 크게 2가지이다. 1. 컨슈머 or 프로듀서가 카프카 브로커에 생성되지 않은 토픽에 대해 데이터를 요청할때 2. 커맨드 라인툴로 명시적으로 토픽을 생성하는 것이다. 유지보수를 위해서는 명시적으로 생성하는 것이좋지만 동시 처리량이 많아야 하는 토픽의 경우 파티션의 개수를 다르게 설정할 수 있고 단기간 데이터 처리만 필요한 경우 토픽에 들어온 데이터의 보관기간 옵션을 짧게 설정할 수 있다. 토픽의 특성별로 다르게 관리가 되어야 하기 때문에 명시적으로 생성하는 것이 좋다. broker의 옵션 중 토픽 auto topiccreate true로 주게 되면? 컨슈머나 프로듀서의 요청이 지금 없는 토픽이라면? 신규 토픽에 대해서 토픽을 생성해주는 것이다. (1번상황)
kafka-consumer-perf-test.sh는 컨슈머로 퍼포먼스를 측정할 때 사용된다. 카프카 브로커와 컨슈머간의 네트워크를 체크할 때 사용한다. kafka-reassign-partitions.sh 해당 과 같이 브로커 마다 파티션이 몰릴 수 있다. 이때 리더파티션과 팔로워 파티션을 적절하게 분산할 수 있는데, 해당 분산시에 사용된다. 근데 이걸 사용하면 리더 파티션과 팔로워 파티션이 위치를 변경 할 수 있다. kafka broker에는 auto leader rebalance.enable옵션이 있는데, 이 옵션의 기본값은 true로 클러스터 단위에서 리더 파티션을 자동 리밸런싱 하도록 도와준다. 브로커의 백그라운드 스레드가 일정한 간격으로 리더의 위치를 파악하고 필요시 리더 리밸런싱을 통해 리더의 ..
컨슈머 그룹에 대한 걸 알아보자. 컨슈머 그룹으로 생성된 컨슈머로 해당 토픽에 대한 데이터를 가져갔다. 컨슈머 그룹은 따로 생성하는 명령을 날리지 않고 컨슈머를 동작할 때 컨슈머 그룹이름을 지정하면 새로 생성된다. 또한 어떤 컨슈머 그룹이 어떤 토픽을 대상으로 레코드를 가져갔는지 그리고 상태와 오프셋 컨슈머 렉 컨슈머 ID,호스트 등을 알 수 있다. (컨슈머 렉 - 현재 레코드의 오프셋과 마지막 레코드의 차이이다 ,즉 컨슈머가 읽지않은 데이터라고 이해하면 된다.) 컨슈머의 상태를 조회할때도 유용하다. 또한 컨슈머그룹의 오프셋을 리셋할 수 있다. 오프셋의 리셋은 처음부터 시작되는 것만은 아니다. 특정 오프셋으로 이동할 수 있는 것이다. 순차처리가 필요없는 경우, 최신의 데이터로 오프셋을 이동할 수 있다는 ..