목록분류 전체보기 (119)
철학과 학생의 개발자 도전기
1. 트리 특징 루프가 없는 무방향 그래프 구조 루트, 부모, 자식, 형제 노드로 구성되는 계층형 자료구조 하나의 루트가 존재하며, 자식 노드는 하나의 부모 노드만 가진다. 2. 힙 특징 최대값이나 최소값을 빠르게 찾기 위한 자료구조 왼쪽 자식 노드부터 채워지는 완전이진트리 구조 중복을 허용한다. 우선순위 큐를 구현하는 데 사용된다. 시간복잡도 원소 삽입: O(logN) 원소 삭제: O(logN) *원소 삽입 1. 최하단에 노드를 삽입한다. 2. 부모 노드와 값을 비교해서 힙 종류에 맞게 스왑한다. 3. 스왑되지 않을 때까지 반복한다. *원소 삭제 1. 루트 노드를 삭제한다. 2. 최하단 노드를 루트 노드로 옮긴다. 3. 자식 노드와 값을 비교해서 힙 종류에 맞게 스왑한다. 4. 스왑되지 않을 때까지 반..
목차 1. 게시판 프로젝트 - 스프린트1 2. 게시판 프로젝트 - 스프린트2 3. 게시판 프로젝트 - 스프린트3 4. 게시판 프로젝트 - 스프린트4 6. 게시판 프로젝트 - 스프린트6 스프린트 개요 기간: 10월 2일 (월) ~ 10월 9일 (월) 목표: 좋아요 API 개발 구성원: BE 1명, FE 1명 GitHub Repository API 문서 개발 진행과정 게시글 좋아요 기능 댓글 좋아요 기능 좋아요 수 확인 기능 배운 점 좋아요 수를 카운트하는 여러 방법에 대해 고민할 수 있었다. DB에 count 쿼리를 날리는 방법과 메모리에서 stream 연산을 수행하는 방법의 장단점을 비교해 볼 수 있었다. JPA 일대다 관계를 여러개 fetch join할 수 없다는 것을 배웠다. 개선할 점 다음 스프린트..
1. 스택 특징 LIFO 구조 입력과 출력이 한 곳에서만 발생한다. (top) 삽입 연산을 push, 삭제 연산을 pop이라고 부른다. 시간복잡도 원소 접근: O(N) 원소 삽입, 삭제: O(1) 원하는 순서 혹은 데이터를 찾으려면 순차적으로 접근해야 한다 -> 최악의 경우 O(N) 삽입과 삭제는 한 곳에서만 발생한다 -> O(1) 2. 큐 특징 FIFO 구조 입력은 맨 뒤(rear), 출력은 맨 앞(front)에서만 발생한다. 삽입 연산을 enqueue, 삭제 연산을 dequeue라고 부른다. 시간복잡도 원소 접근: O(N) 원소 삽입, 삭제: O(1) 원하는 순서 혹은 데이터를 찾으려면 순차적으로 접근해야 한다 -> 최악의 경우 O(N) 삽입과 삭제는 각각 한 곳에서만 발생한다 -> O(1) 3. 스..
1. 배열 특징 메모리에 데이터가 연속적으로 저장되는 자료구조 고정된 크기의 메모리를 미리 할당받는다. 순서가 존재하며 데이터를 참조할 때 인덱스를 사용한다. (0번부터 시작) 시간복잡도 원소 접근: O(1) 원소 삽입, 삭제: O(N) 배열의 시작 주소와 offset만 알면 offset 덧셈을 통해 원하는 인덱스에 한 번에 접근할 수 있다 -> O(1) 삽입을 할 경우, 삽입에 필요한 공간을 마련하기 위해 원소들을 한 칸씩 뒤로 밀 수 있다 -> 최악의 경우 O(N) 삭제를 할 경우, 데이터의 연속성을 보장하기 위해 원소들을 한 칸씩 앞으로 밀 수 있다 -> 최악의 경우 O(N) 2. 연결 리스트 특징 데이터가 비연속적으로 저장되며 순서를 가지는 자료구조 각 노드는 데이터 값과 다음 노드의 주소를 가지..
목차 1. 게시판 프로젝트 - 스프린트1 2. 게시판 프로젝트 - 스프린트2 3. 게시판 프로젝트 - 스프린트3 5. 게시판 프로젝트 - 스프린트5 6. 게시판 프로젝트 - 스프린트6 스프린트 개요 기간: 9월 25일 (월) ~ 10월 2일 (월) 목표: 게시글 및 댓글 API 완성 구성원: BE 1명, FE 1명 GitHub Repository API 문서 개발 진행과정 게시글 페이징 - 정렬 - 검색 조회 게시글 단건 조회 시 댓글도 함께 조회 URL 재설계 및 원격서버 업데이트 배운 점 스프링 데이터 JPA에서 페이징 기법을 배웠다. 어노테이션을 이용해 엔터티의 엔터티까지 fetch join 하는 법을 배웠다. 브라우저의 Preflight에 대해 알게 됐다. 개선할 점 매번 수동으로 배포를 해야되는..
목차 1. 게시판 프로젝트 - 스프린트1 2. 게시판 프로젝트 - 스프린트2 4. 게시판 프로젝트 - 스프린트4 5. 게시판 프로젝트 - 스프린트5 6. 게시판 프로젝트 - 스프린트6 스프린트 개요 기간: 9월 18일 (월) ~ 9월 25일 (월) 목표: 회원 API 완성, 게시글 API 개발 구성원: BE 1명, FE 1명 GitHub Repository API 문서 개발 진행과정 인증 정보 가져오기 리팩토링 - SecurityContextHolder에서 Authentication 객체 사용 게시글 생성, 삭제, 단건 조회 API 개발 도커 이미지를 활용해서 AWS EC2에 배포 배운 점 스프링 데이터 JPA에서 fetch join하는 법을 배웠다. 도커 이미지를 생성하고 컨테이너를 실행하는 방법을 배..
목차 1. 게시판 프로젝트 - 스프린트1 3. 게시판 프로젝트 - 스프린트3 4. 게시판 프로젝트 - 스프린트4 5. 게시판 프로젝트 - 스프린트5 6. 게시판 프로젝트 - 스프린트6 스프린트 개요 기간: 9월 11일 (월) ~ 9월 18일 (월) 목표: 회원 관련 API 개발 구성원: BE 1명, FE 1명 GitHub Repository API 문서 개발 진행과정 JWT 인증 시스템 개발 - spring-boot-starter-oauth2-resource-server 활용 Custom Exception 및 Global Exception Handler 구현 PATCH 수정 API 개발 배운 점 JWT의 내부구조와 SCOPE 권한에 대해 알게 되었다. 스프링 시큐리티의 동작 과정에 대해 알 수 있었다. ..
목차 2. 게시판 프로젝트 - 스프린트2 3. 게시판 프로젝트 - 스프린트3 4. 게시판 프로젝트 - 스프린트4 5. 게시판 프로젝트 - 스프린트5 6. 게시판 프로젝트 - 스프린트6 프로젝트 시작 Java/Spring을 학습하고 인턴도 경험했지만 팀프로젝트를 진행한 적은 없었다. 학습한 내용을 내 것으로 만들기 위해서는 실제로 개발해보는 것이 최고라고 생각한다. 그리고 웹 개발에서는 협업이 중요하기 때문에 프론트엔드 팀원 한 분과 함께 게시판 프로젝트를 진행하기로 했다. 일기를 공유할 수 있는 게시판 서비스를 만드는 것이 최종목적이다. https://github.com/happyhun/diary-board/tree/develop GitHub - happyhun/diary-board Contribute ..