Data Integrity 데이터 무결성은 데이터의 생애주기 동안 정확성과 일관성을 보장하고 관리하는 것을 말한다. 당연하게도 DB를 설계 및 구현할 때 최우선 순위로 확보해야 할 가치이며, 반대말로 'Data Corruption'이 있다. 여기서 정확성과 일관성이란 쉽게 말하면 언제나 의도한 대로 데이터가 저장되어야 하고 추후 복구나 조회 시 처음 상태와 같아야 한다는 뜻이며, 한 마디로 줄이자면 의도치 않은 데이터의 변경을 막는 것을 말한다. 계속해서 데이터 무결성은 두 가지 계층으로 나뉘는데, 짧게 요약하면 아래와 같다. 물리적 무결성(Physical Integrity) 실제 데이터를 안전하게 저장하고 불러오는 것에 대한 무결성 디자인 결함과 휴먼 에러에서 발생할 수 있음 물리적 저장장소를 각종 예..
목차 Principles 설계 자체에 들어가기에 앞서, 좋은 DB 설계란 지켜야 할 몇 가지 원칙이 존재한다. 하나의 거대한 테이블이 아닌 주제에 맞는 여러 개의 테이블로 분할할 것 하나의 테이블 안의 각 필드는 유일한 정보를 가질 것 - 중복 데이터 및 그룹 제거 같은 데이터를 가리키는 필드명은 다른 테이블에서도 동일할 것 각 테이블은 반드시 PK를 가질 것 - 중복 데이터 방지 및 조회 속도 향상 테이블 간 연관관계에 FK를 사용할 것 - 중복 데이터 및 매핑 실수 방지 필드 독립성 - 특정 필드 값의 변화가 다른 필드에 영향을 주지 않을 것 데이터 무결성을 포함하는 위와 같은 원칙을 바탕으로 DB 설계는 총 다섯 단계로 나눌 수 있는데, 이를 정리하면 아래와 같다. 사용자의 요구조건 분석(Requi..
으로 구현한 다른 정렬: [Java+Python]버블 정렬(Bubble Sort) [Java+Python]선택 정렬(Selection Sort) [Java+Python]병합 정렬(Merge Sort) [Java+Python]힙 정렬(Heap Sort) [Java+Python]퀵 정렬(Quick Sort) [Java+Python]카운팅 정렬(Counting Sort) 삽입 정렬(Insert Sort)은 한 마디로 말하면 모든 요소를 정렬이 완료된 부분과 비교하여 자리를 찾아 삽입하는 알고리즘이다. 실생활에서 문제가 주어졌을 때 무의식적으로 가장 먼저 사용하는 알고리즘이며, 이 덕분에 가장 직관적이고 간결하다. 선택 정렬이나 거품 정렬 같은 알고리즘에 비해 빠른 편이며, 최선의 경우 거품 정렬과 함께 최고의..
static 키워드는 클래스의 멤버(필드, 메서드, 내부 클래스)에 붙일 수 있는 키워드이다. 키워드가 붙어있는 멤버를 정적 멤버(static member)라 부르며 다른 멤버와 구분한다. static멤버의 특징은 아래와 같다. static 키워드를 한 마디로 정의하면 '객체와의 분리'이다. 객체 생성 없이 접근할 수 있기 때문이다. 인스턴스 생성 없이도 사용이 가능하다. 즉, 공유가 가능하다. static method의 경우 인스턴스의 공통 기능을 담당한다. static method는 인스턴스 변수나 인스턴스 메서드를 사용할 수 없다. 메모리에 딱 한 번만 할당되어 메모리 사용에 이점이 있다. static class는 하위 클래스에서만 만들 수 있다. 이렇게 생성된 하위 클래스를 static neste..
먼저 테스트 케이스의 5대 원칙이다. Fast - 빨라야 한다. Independent/Isolation - 실행 순서에 독립적이어야 한다. Repeatable - 어떤 환경에서도 반복해서 작동, 같은 결과를 내보내야 한다. Self-Validating - 자체적으로 검증 결과를 판단할 수 있어야 한다. Timely - 기능 구현 직전에 작성해야 한다. 혹은 기능의 업데이트에 맞춰 즉시 개선해야 한다. JUnit JUnit은 스프링에서 지원하는, 가장 많이 사용되는 테스팅 프레임워크이다. Spring Boot Initializr에서 Gradle 기반의 프로젝트를 생성하면 기본적으로 테스트 패키지가 생성되며, JUnit을 포함한 testImplementation 'org.springframework.boot..
ResponseEntity는 HttpEntity를 상속받는 클래스로서, HTTP 응답의 상태 코드, 헤더와 바디를 포함한다. 간단하게 말하면 사용자의 요청에 대한 서버의 응답을 한 번 감싸주는 역할을 하며, 조금 더 구체적으로 말하자면 결과 데이터와 상태 코드 등을 직접 제어하는 역할을 한다. 바디뿐 아니라 응답 상태 코드와 헤더 값을 설정할 수 있어 세밀한 제어가 필요한 경우 사용된다. 추가로 헤더와 바디에는 각각 HTTP header - 요청/응답에 대한 요구사항 HTTP body - 요구사항에 관련된 내용 이 적혀있다. 추가의 추가로 상태코드는 앞자리에 따라 각각 100번대 - 조건부 응답, 요청을 받았으며 작업을 계속한다. 사실상 사용되지 않음 200번대 - 요청 수신 및 이해와 승낙 성공 300..
목차 HTTP의 특징 중 하나는 비연결성이다. 특정 사용자가 한 번 서버에 연결한 적이 있어도 서버는 해당 연결을 유지하지 않는다. 이 때문에 클라이언트의 요청이 없는 실시간 알림이나 메시지 수신이 불가능한데, 이를 해결하는 방식에 대해 정리한다. Polling 폴링은 간단하게 말하면 주기적으로 클라이언트가 서버로 요청을 보내는 방식이다. 가장 간단한 방식이지만 지속적인 HTTP 요청이 발생하기 때문에 리소스 낭비가 발생하며, 진정한 의미의 실시간 연결이라 보기 힘들다는 단점이 존재한다. 추가로 이를 부분적으로 해결하기 위해 긴 폴링(Long Polling)이라는 방식이 존재한다. 이는 요청의 유지시간을 이벤트 발생 시까지 길게 유지하는 방법으로, 어느 정도 실시간 연결이라 볼 구석이 있지만 이벤트 사이..
- Total
- Today
- Yesterday
- Python
- java
- 칼이사
- 파이썬
- 중남미
- BOJ
- 세계일주
- 세모
- 면접 준비
- 백준
- 남미
- 지지
- 여행
- 맛집
- 스프링
- Backjoon
- Algorithm
- 자바
- 유럽
- 유럽여행
- RX100M5
- spring
- 기술면접
- 리스트
- 세계여행
- 야경
- 스트림
- 동적계획법
- 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 |