목록전체 글 (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 ..