일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LV02
- 일정관리 프로젝트
- LV0
- 프로그래머스
- 데이터 베이스
- GIT
- JPA
- 일정관리프로젝트
- CI/CD
- LV03
- Lv.0
- Kafka
- spring boot
- Redis
- 알고리즘
- LV1
- 연습문제
- docker
- Java
- 포트폴리오
- SQL
- S3
- CoffiesVol.02
- Join
- LV.02
- 디자인 패턴
- 이것이 자바다
- LV01
- 코테
- mysql
- Today
- Total
목록분류 전체보기 (204)
코드 저장소.
목차1.에라토네스의 체?2.작동원리3.예제 1.에라토네스의 체?에라토네스의 체는 대 그리스의 수학자 에라토스테네스가 고안한 소수 판별 알고리즘이다. 이 알고리즘은 2부터 N까지의 자연수 중에서 소수를 효율적으로 찾는 방법으로, 현재까지도 널리 사용되고 있다.2.작동원리에라토스테네스의 체는 배수 제거 방식을 사용하여 소수를 판별한다. 초기에는 2부터 N까지의 모든 정수를 소수라고 가정한 뒤, 각 수의 배수를 지워나가면서 최종적으로 소수만을 남기는 방식입니다. 작동원리는 다음과 같습니다. 만약에 n 이 30일 때2부터 30까지 나열→ [2, 3, 4, 5, ..., 30]가장 작은 수인 2는 소수니까 남기고, 2의 배수들 제거남은 수 중 다음 작은 수(3)는 소수니까 남기고, 3의 배수들 제거남은 수 중 ..

목차1.메시지 큐2.Kafka의 작동원리3.RabbitMq의 작동원리4.Kafka vs RabbitMq 1.메시지 큐일단은 Kafka와 RabbitMq를 알기 위해서는 메시지큐의 개념을 알아야 합니다. 우선은 아래의 사진을 보면 메시지 큐에 대한 개념을 알 수 있습니다. 위 사진의 용어를 보면 다음과 같습니다. Producer : 정보를 제공하는 자Queue: FIFO의 개념으로 Producer에서 보낸 메시지를 처리를 하는 방식으로 처리합니다.Consumer: 정보를 받는 자. 그래서 메시지큐의 작동순서를 다시 정리를 하자면 다음과 같습니다. 1.메시지를 보낸다.2. 보낸 메시지는 Producer가 받아서 Queue에 보낸다.3.해당 메시지는 consumer가 사용하기 전까지 Queue에서 저장한다...
목차1. 현재 코드의 문제2. 문제의 대안 1. 현재 코드의 문제현재 일정관리 프로젝트를 진행을 하면서 일정을 등록시 첨부파일을 등록을 하는 기능을 만들었다. 현재의 업로드 방식은 업로드후 로컬에 저장을 하는 방식이었다. 아래는 내가 작성한 첨부파일에 관련된 코드의 일부분이다. // 기존 방식: 로컬 경로에 파일 저장 + 썸네일 생성 + AttachModel 생성까지 모두 한 메서드에서 처리public static List uploadMultipleFiles(...) { // 1. 디렉토리 생성 // 2. 확장자 판별 // 3. 썸네일 생성 // 4. 파일 저장 및 AttachModel 구성} 이 방식에는 여러가지의 문제점이 있는데 문제점은 아래와 같습니다. 1-1. 서버 자원(I/..

목차1.사건의 발단2.println을 쓰면 안되는가?3.그래서? 어떻게 해야되는가?4.느낀점. 1.사건의 발단첨부파일 모듈에서 첨부파일 업로드에 관한 로직을 작성을 했고 pr을 올렸는데 다음과 같은 리뷰가 들어왔습니다. 업로드를 테스트를 하기 위해서 작성을 했던 System.out.println()이었는데 사용을 하면 안된다고 해서 왜 안돼는지에 관해서 알아보기로 했습니다.2.println을 쓰면 안되는가?사실 처음엔 크게 문제 될 거라 생각 안 했습니다. 그냥 테스트용으로 했거든요. 근데 찾아보니 이게 생각보다 심각했었습니다. 우선은 System.out.println()이 무엇인지를 알아보기로 했습니다. System.out.println()System.out.println은 Java개발할때 디버깅 ..
목차1.기존의 문제점2.코드 리팩토링 1.기존의 문제점 기존에 작성을 했던 회원의 위치의 위경도를 기준으로 해서 반경3km에 있는 가게를 보여주는 기능에서 리팩토링을 해야되는 부분이 발생을 해서 고쳐보기로 했다. 기존의 코드의 문제점은 다음과 같다. 1. 현재 @Retryable을 사용해서 API 호출이 실패하면 3번까지 재시도하도록 되어 있음. 하지만 3번 재시도 후에도 실패하면 null을 반환함. 2. @Recover에서 응답값이 null이라는 점. 3. URI 중복 요청 가능성 Set uris = new HashSet(); -> 현재 Set을 사용하지만, page가 1로 고정되어 있어 항상 한 개의 URI만 추가됨. 2.코드 리팩토링이러한 문제점을 해결하기 위해서 기존의 코드에 변경을 했습니다..

목차1.트랜잭션?2.스프링 내부에 있는 트랜잭션 구조 1.트랜잭션?우선 트랜잭션은 데이터베이스(DB)에서 하나의 논리적 작업 단위(작업 묶음)를 의미하며, 모두 성공하거나(Commit) 실패하면(Rollback) 원래 상태로 되돌리는(Atomic) 연산을 의미합니다. 그리고 트랜잭션을 나타내는 특징은 다음과 같습니다. 트랜잭션은 ACID 원칙을 따라야 한다.특성설명Atomicity (원자성)트랜잭션이 모두 성공하거나 모두 실패해야 한다.Consistency (일관성)트랜잭션 수행 전후 데이터의 무결성이 보장되어야 한다.Isolation (격리성)동시에 여러 트랜잭션이 실행될 때, 서로 간섭하지 않아야 한다.Durability (지속성)트랜잭션이 성공적으로 완료되면, 결과가 영구적으로 저장되어야 한다. ..