목록전체 글 (119)
철학과 학생의 개발자 도전기

1. 인덱스란 데이터 검색 속도를 향상시키기 위한 자료구조 특정 속성의 값과 해당 레코드의 위치를 매핑하여, 데이터를 빠르게 찾을 수 있다. B-트리를 사용하여 O(logN)의 시간복잡도로 탐색이 가능하다. 추가적인 저장 공간을 필요로 하며 데이터 삽입, 수정, 삭제 시 시간이 더 많이 소요된다. 2. 클러스터형 인덱스 테이블 당 1개만 생성 가능 클러스터가 적용된 속성을 기준으로 데이터가 정렬됨 PK는 자동으로 클러스터형 인덱스 역할 수행 데이터는 페이지에 들어가게 되며, 각 페이지는 MySQL 기준 16kbyte이다. (페이지 = 노드) 페이지의 용량을 넘게 되면 B-트리의 분할을 수행한다. 3. 보조 인덱스 테이블 당 여러개 생성 가능 실제 데이터를 가르키는 인덱스 페이지 생성 데이터 자체가 정렬되..

1. 이상 릴레이션에서 속성 간 종속이나 데이터 중복으로 인해 발생하는 문제 데이터 조작 시 발생하며 삽입, 수정, 삭제 이상이 있다. 삽입 이상: 의도하지 않은 데이터까지 삽입해야 데이터 추가가 가능한 문제 수정 이상: 데이터가 중복되어 일부만 수정되고 데이터 모순이 발생하는 문제 삭제 이상: 데이터를 삭제할 때 의도하지 않은 데이터도 같이 삭제되는 문제 삽입 이상 학생(학번, 이름, 나이, 성별) 데이터를 추가할 때 강의 데이터를 함께 넣어줘야 한다. 수정 이상 3번 레코드를 수정하면 4번 레코드와 충돌이 발생한다. 삭제 이상 김영호 학생 데이터를 삭제하면 데이터베이스 개론 데이터도 함께 삭제된다. 2. 정규화 데이터 중복과 종속 관계를 제거하여 이상현상을 해소하는 과정 1NF, 2NF, 3NF, B..
개요 우테코 6기 웹 백엔드에 지원했다. 4주동안 4번의 프리코스 과제를 제출하고, 최종 코딩테스트에 통과해야 합격할 수 있다. 합격보다는 프리코스를 통한 성장을 목표로 세웠다. 1주차 과제 Java로 숫자 야구 게임을 만드는 미션이었다. 무난한 난이도였지만, 사용자의 잘못된 입력에 대해 꼼꼼히 예외처리를 해야 했다. 정규표현식을 새로 배워 깔끔하게 예외처리를 할 수 있었다. https://github.com/woowacourse-precourse/java-baseball-6 GitHub - woowacourse-precourse/java-baseball-6 Contribute to woowacourse-precourse/java-baseball-6 development by creating an acc..

데이터베이스 여러 사람이 공유하고 사용할 목적으로 관리되는 데이터 모음 데이터 공유 : 많은 사람들이 데이터를 공유할 수 있다. 중복의 제거 : 데이터를 한 곳에 모으면서 중복되는 데이터를 제거할 수 있다. 데이터 통합 : 흩어져 있는 데이터를 한 곳에 모을 수 있다. 보안성 : 권한이 있는 관리자가 데이터를 관리하여 데이터의 보안을 지킬 수 있다. DBMS (Data Base Management System) DB를 관리하고 운영하는 소프트웨어 응용프로그램들이 DB에 접근할 수 있는 인터페이스를 제공 복구 및 보안 기능 등을 제공 DBMS의 장점 자료의 통합성을 증진시키고 데이터의 접근을 용이하게 해준다. 데이터의 통제가 쉬워지고 애플리케이션을 쉽게 개발하고 관리할 수 있다. 중복되는 데이터를 최대한 ..

M원 검색트리(M-way Search Tree) 특징 차수를 2에서 m으로 확장해 이진탐색트리의 높이 문제를 해결한 자료구조 각 노드는 m-1개의 레코드와 m개의 서브트리를 가질 수 있다. 각 노드의 레코드들은 정렬되어 있다. B 트리 특징 높이 문제를 개선한 M원 검색트리에서 균형 문제도 해결한 자료구조 데이터의 삽입, 삭제 시 균형을 맞추는 알고리즘을 수행한다. 규칙 모든 단말 노드는 같은 레벨에 있다. 노드는 최대 M개, 최소 ⌈M/2⌉개의 자식을 가진다. 노드는 최대 M−1개, 최소 [M/2]−1개의 키를 가진다. 노드의 키가 X개면, 자식의 수는 X+1개다. 시간 복잡도 원소 삽입, 삭제, 탐색: O(logN) Key 삽입 과정 요소를 삽입할 단말 노드를 선택 후 Key 삽입 Key의 최대개수..

트라이란? 문자열을 효율적으로 탐색하기 위한 트리 형태의 자료구조 검색(reTRIEve)이라는 단어에서 유래되었으며, 검색엔진이나 자동완성 등에서 사용된다. 자식 노드의 포인터를 저장해야하므로 저장 공간이 추가로 요구된다. (배열 또는 HashMap 사용) 시간 복잡도 원소 삽입, 삭제, 탐색: O(M) (M은 문자열의 길이) 원소 탐색 과정 1. 루트의 자식 노드에서 첫번째 글자를 찾는다. 2. 첫번째 글자의 자식 노드에서 다음 글자를 찾는다. 3. 마지막 글자에 해당하는 노드가 존재하고, 노드에 실제 값이 존재하면 탐색 성공 *삽입과 삭제도 위 탐색 과정을 거친 후, 노드를 추가하거나 삭제하면 된다.
목차 1. 게시판 프로젝트 - 스프린트1 2. 게시판 프로젝트 - 스프린트2 3. 게시판 프로젝트 - 스프린트3 4. 게시판 프로젝트 - 스프린트4 5. 게시판 프로젝트 - 스프린트5 스프린트 개요 기간: 10월 9일 (월) ~ 10월 16일 (월) 목표: 버전1 릴리즈 구성원: BE 1명, FE 1명 GitHub Repository API 문서 개발 진행과정 날짜별 게시글 조회 API 개발 좋아요 눌렀는지 확인하는 기능 - 성능 최적화 도커 컴포즈 설정 및 배포 자동화 배운 점 JPA Batch Size 설정에 대해 배웠다. 스프링부트와 MySQL 연동에 대해 배웠다. 도커 컴포즈를 생성하고 배포 자동화 스크립트 작성법을 배웠다. 개선할 점 정규 스프린트는 이번으로 마무리되었다. 이제 수시로 코드를 고..
해시 테이블 특징 Key-Value 매핑 구조 해시 함수를 이용해서 키에 해당하는 값에 빠르게 접근 가능 해시 함수: 입력값을 고정된 길이의 출력값으로 변환 -> 주소값으로 사용 해시 알고리즘에 따라 성능이 달리진다. 시간복잡도 원소 접근, 삽입, 삭제: 평균 O(1) -> 최악의 경우 O(N) *해시 충돌 서로 다른 키가 같은 해시값을 가질 수 있다. 충돌 문제에 대한 대응으로 체이닝 기법을 사용한다. 최악의 경우, 체이닝으로 연결된 데이터를 탐색하면서 시간복잡도가 O(N)이 될 수 있다. 체이닝을 선형구조가 아니라 레드 블랙 트리 등의 트리 구조로 사용하면 시간복잡도를 O(logN)으로 줄일 수 있다.