
DB에 설정을들여다보다가 뜬금없지만, 정규화(Normalization)에 대해 정리를 하고 넘어가는게 좋겠다 생각이 들었다. 정규화의 목적은 DB CRUD 중 이상현상(Abnomaly) 발생과 컬럼 간 종속성을 피하기 위함이다. 삭제 이상: 데이터를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상 삽입 이상: 데이터를 삽입할때, 특정 컬럼에 해당하는 값이 없어 NULL을 입력해야 하는 현상 갱신 이상: 데이터를 갱신할때, 중복된 데이터 중 일부만 수정되어 데이터 불일치 현상 이러한 이상 현상들을 피하기 위해 정규화를 거친다. 정규화를 통해 데이터 중복을 피하고, 무결성을 유지하는게 목표이다. 코딩애플 유튜브를 보면서 정리했다. 1. 제 1 정규화 제 1 정규화는 테이블의 컬럼이 원자값(Atom..

1. Array 에서 ArrayList 변환 1.1. Stream 이용 String[] arr = new String [] {"1", "A", "a", "b"}; List list = Arrays.stream(arr).collect(Collectors.toList()); System.out.println(list.getClass().getName()); 결과화면 : 1.2. Lists 클래스 이용 String[] arr = new String [] {"1", "A", "a", "b"}; List list = Arrays.asList(arr); list.forEach(System.out::println); 결과화면 : 2. ArrayList 에서 Array 변환 2.1. toArray() 이용 String..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138477 2. 풀이 어쩌다 보니 계속 우선순위 큐 문제를 풀게 됐다. peek()을 알면 쉽게 풀 수 있다. peek()은 우선순위 큐의 값을 pop 하지 않고, 맨 앞 값을 가져올 수 있다. 오름차순으로 자동 정렬되는 우선순위 큐에서는, 맨 앞 값이 최하위 점수가 된다. 정리하면 아래와 같은 순서로 구현했다. 우선순위 큐와 정답을 ArrayList로 저장할 answerList 정의 우선순위 큐에 k개가 다 차기 전에는 우선순위 큐에 무조건 삽입 peek() 함수를 통해 우선순위 큐의 맨 앞의 값을 가져와 answerList에 삽입 k개가 다 차면, score와 우선순위 큐의 맨 앞의 값..

DB를 조회할 때, 조회를 할때마다 테이블 전체를 조회하는 건 너무 비효율적이다. 수십, 수백 단위의 데이터에서는 별 문제가 안될 수 있지만, 수백, 수천만 이상의 데이터가 쌓여있을 때는 큰 문제가 된다. 이럴 때 INDEX를 사용한다. 1. INDEX 란? 데이터베이스에서 인덱스(INDEX)는 쓰기 속도가 느리고 저장 공간이 늘어나는 대신 검색 작업의 속도를 향상시키는 데이터 구조이다. 인덱스의 가장 큰 특징은 데이터들이 정렬이 되어있다는 점이다. 이 특징으로 인해 인덱스를 사용하면 DBMS(데이터베이스 관리 시스템)가 조건 검색을 할 때, 테이블에서 특정 데이터 행을 매우 빠르게 찾고 검색할 수 있다. WHERE 절 테이블의 레코드는 순서 없이 저장되기 때문에 특정 조건에 맞는 데이터를 찾아낼 때도 ..

내가 운영/개발 하는 서비스에선 사용자나, 구분이 필요한 무언가를 위해 13자리의 난수를 생성해 아이디를 부여한다. 난수 생성기를 올바르게 사용하지 못 한다면, 동일한 아이디가 생성되고, 그 아이디로 특정 데이터를 insert했을 때 DB에선 PK 에러가 발생한다. 빼도 박도 못하는 서버 에러다. 최근 로스트아크에서 카드 확률에 대한 논쟁이 있었었다. 영웅 카드 팩 230개를 개봉했다. 첫 개봉에서 사이카 카드 5장, 피요르긴 카드 5장이 등장했다. 190개를 개봉했지만 똑같이 사이카, 피요르긴 카드 5장씩만 나타났다. 스마일게이트의 설명에 따르면 해당 사례는 시스템 구조상 14억분의 1 확률로 발생할 수 있는 버그 현상이라고 설명했다. 출처 : 게임톡(https://www.gametoc.co.kr) 이..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/134240 2. 풀이 팰린드롬을 만드는 문제 칼로리 높은 것을 먼저먹기 때문에, 마지막 행렬의 index부터 처리하도록 한다. 매우 난이도가 낮은 문제다. 3. 코드 class Solution { public String solution(int[] food) { String answer = "0"; for(int i=food.length-1; i>=1;i--){ if(food[i] / 2 > 0) { String eatable = String.valueOf(i); for(int j =0; j
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/135808 2. 풀이 1. 우선순위 큐를 역순정렬되도록 정의 2. 우선순위 큐에 삽입한다. 반복문을 사용하긴 했지만, N번이기 때문에 별 문제는 없다. 3. while문을 통해 이익 계산식을 수행한다. - 역순 정렬을 했기 때문에, 한 상자에 들어가는 마지막 사과가 전체 가격을 결정한다. 4. 마지막 값만 관심이 있고 나머진 다 pop 처리 3. 코드 import java.util.Collections; import java.util.PriorityQueue; class Solution { public int solution(int k, int m, int[] score) { // 우선순위..

이전 글에 이어서 서버에서 HTTP 요청을 하는 방법에 대한 정리 글이다. 이전 글에선 JAVA에서 사용되는 API를 살펴봤다면, 이번에는 Spring에서 제공하는 방식에 대해 알아보려 한다. Spring Framework 에서는 HTTP 요청을 위해 대표적으로 세 가지 API를 지원한다. RestTemplate Spring 3부터 지원, 전통적인 blocking/동기식 HTTP request 기능 제공 AsyncRestTemplate Spring 4에 추가된 RestTemplate에 비동기 기능을 추가한 방식 WebClient Spring 5에 추가된 RestTemplate을 보완하기 위한 HTTP requests non-blocking/reactive 클라이언트 크게 RestTemplate/WebCl..
- Total
- Today
- Yesterday
- 후쿠오카
- S3
- java
- CloudFront
- EKS
- lambda
- elasticsearch
- Log
- AOP
- ecs
- ChatGPT
- 후기
- JWT
- 스프링부트
- springboot
- AWS
- docker
- cache
- object
- GIT
- 티스토리챌린지
- Kotlin
- CORS
- serverless
- OpenAI
- AWS EC2
- terraform
- Spring
- 람다
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |