일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- nestjs공부
- 스프링 공부
- Flutter
- K8S
- JPA스터디
- 카프카
- 기술면접공부
- nestjs스터디
- 자료구조공부
- 자바공부
- JPA예제
- 프로그래머스
- 스프링
- 플러터 개발
- 코테공부
- Kafka
- JPA 공부
- Axon framework
- 스프링부트공부
- DDD
- 코테준비
- 알고리즘공부
- querydsl
- 스프링부트
- JPA공부
- 플러터 공부
- 기술공부
- nestjs
- 스프링공부
- Today
- Total
목록Develop (320)
DevBoi
공부를 막 시작한 친구를 위해.. 기록용 Spring 에서는 profile별로, 변수나 정적 값의 정보를 다르게 가져갈수 있다. 간단하게 파일 구조는 이렇게 분리가 가능하다. application-환경.yaml 이다. 흔히 Java를 런시거나, Jar파일을 실행할때, VM Options을 주게 되는데 이 Vm Option으로 환경변수에 대한 값을 지정해주면 해당 Profile로 분기처리를 하여, 동작을 제어할 수 있다. 인텔리제이를 예로 위 처럼 -D로 변수명,값을 Vm option으로 넘겨주게 되면 스프링이 기동될때 해당 프로파일에 대한 값으로 정보를 가져오게 된다. 이게 가장 흔하고 기본적인 내용이다. @ActiveProfile이나 등등 해당 프로파일을 가지고 빈의 값을 동적으로 분기처리하는.. 그런..
머리속에 들어있는 내용들을 정리한다. 1. 밸리데이션 관련 의존성 주입. implementation 'org.springframework.boot:spring-boot-starter-validation' 2. 간단한 테스트 @RestController @RequiredArgsConstructor public class MemberController { private final MemberMapper memberMapper; @RequestMapping("/member") public String mapperTest(@RequestBody @Valid MemberDto memberDto){ return "success!"; } } @Getter @Setter @AllArgsConstructor public..
갑자기 생각난것과. 좋은 공통화에 대한 고민을 하다가. 작성하는 글 사실 공통화를 그렇게 열광하지는 않는다. 운영 측면에서 공통화가 무조건 이득이라고 생각하지도 않는다. 때로는 각 상황에 맞는 클래스파일이 하나씩 있는게 좋다고도 생각한다. 단순히 아래와 같은 Response가 있다고 가정하자. @PostMapping("/sample") public Member test(@RequestBody Member member){ System.out.println("id_post~~:"+member.getId()); return member; } 해당 응답 객체를 좀더 공통화를 한다면 아래와 같을 것이다. @AllArgsConstructor @Getter public class EntityResponse { T d..
1. 카프카 바이너리 파일 다운로드 https://kafka.apache.org/downloads Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org 2.디렉토리 구조확인 kafka 2.8버전을 받았다. 2.12는 스칼라 버전이다. bin은 바이너리나 쉘 스크립트가 포함되어있다. config에는 설정에 필요한 여러 설정파일들이 libs 브로커를 실행할떄 필요한 라이브러리가 있다. 해당 폴더 내에 추가로 data 디렉토리를 생성한다. 이는 데이터를 적재하기 위함이다. 3. 내용 살펴보기 config/server.properties는 브로커를 실행할때 필요한 설정 들이다. # Licensed to the Apache So..
아파치 카프카 클러스터를 서버에 직접 설치하는 것은 가장 전통적이다. 세부적인 서버 설정을 통해, 최고의 성능으로 최적의 클러스터를 활용할 수 있다. 하지만, 시행착오가 필요하다. 따라서 Saas를 도입하는 형태도 많다. 아래 그림을 보면 이해가 편하다. 직접 관리영역이 적을수록, 편하지만 세부적인 설정은 점점 더 불가능해진다. 오픈소스로 직접 구축하면 32/6 기가로 세팅할수있다. 이유는 OS Page cache영역을 사용할 수 있기 떄문에, 오히려 더 빠르고 성능 좋게 처리할 수 있다. 개발용이더라도, 브로커 개수는 여러개로 두는 것이 좋다. 파티션은 한번 늘이면, 다시 줄일수 없지만 브로커는 줄일수 있기 때문이다.
카프카 클라이언트는 메타데이터를 요청하고 응답받는다. 클러스터는 브로커가 여러개일 수있다. 리더 파티션이 몇번 브로커에 있는지 알수있는 메타데이터를 요청하고 전달 받는다. 카프카 프로듀서 메타데이터 옵션 -metadata.max.age.ms : 메타데이터를 강제로 리프래시하는 간격, 기본 5분이다. -metadata.max.idle.ms : 프로듀서가 유휴 상태일 경우, 메타데이터를 캐시에 유지하는 기간이다. 카프카 클라이언트는 반드시 리더파티션과 통신해야한다. 그게 아니라면, Exception이 발생된다. 대부분, 메타데이터 리프래쉬 이슈로발생하고, 해당 리프레쉬 기간에 대한 재설정이 필요하다. 파티션과 리더파티션의 개념을 살짝 추가로 얘기하면 아래와 같다. 브로커는 파티션으로 이루어져있고, 이 파티션..
Spring boot 3.2 버전으로 올렸다. 스웨거 관련 다양한 설정방법들이 난무해서 어떤게 문제인지 알기 쉽지않다. 그리고 swagger설정에 시간투자를 많이하면 귀찮기도하다. 그래서 정리하자면 단순히 아래 의존성만 주입해도된다. implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' 아래 주소로 확인 가능하다.(로컬 빌드 기준) http://localhost:8080/swagger-ui/index.html 패키지 스캔도 자동으로하고, 여러가지 자동으로 지원해준다. 더 세세한 설정방법등은..사실 뭐 있겠지만.. 사실 나는 스웨거에 별로 시간투자를 안하려고한다 (할게 많다..)
java.sql.SQLNonTransientConnectionException: (conn=48) Got a packet bigger than 'max_allowed_packet' bytes 오류가 발생할 수 있다. 아래 두개의 커맨드를 입력해서 디비 설정 값을 바꿔주면 된다. set global max_allowed_packet=1000000000; set global net_buffer_length=1000000;
매번 찾아보고, 약간의 삽질을 하게 되는 JPA 초기 세팅 Mariadb JPA 세팅방법 0. docker image run docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb 1. build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.0-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.2' } group = 'com.boiler.backend' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' conf..
토픽 이름에는 제약조건이 있다. -빈문자열은 지원하지 않는다. -마침표나 마침표둘로 생성될수는 없다. -토픽이름은 영어대소문자 0~9 마침표언더파,하이픈 조합으로 생성가능하다. -동일한 이름으로는 생성이 불가능하다 -마침표와 언더바가 동시에 들어가면 안된다.(워닝 발생됨) 의미있는 토픽이름을 작명하는 법 모호하게 작성하면 망한다. 토픽 이름 변경이 안된다. 아래의 방법으로, 생성하는 것을 추천한다고 한다. 되도록이면 이런식으로 최대한 세분화하여, 토픽이름에 데이터를 넣도록 하자. 예시로는 .json을 넣을수가 있는데 이는 컨슈머가 데이터를 받아서 역직렬화를 할떄, 유용하게 사용된다. json이던 뭐든 데이터타입을 포맷에 적게되면 해당 사용시에 유용하다.