전체 글

윤유후의 기술 블로그
Spring

[Spring + MyBatis + Oracle] 그래프 탐색(BFS, DFS)를 활용한 무한 계층형 댓글 구현

1. 요구사항 댓글/대댓글 CRUD 기능 댓글을 생성, 수성, 삭제할 수 있어야 함 댓글 삭제 시 하위에 있는 모든 대댓글은 함께 삭제 계층형 댓글 구조 댓글을 계층 구조로 표현하며, 대댓글이 해당 댓글에 속하도록 구현 출력된 목록은 사용자가 쉽게 읽을 수 있도록 표현 SQL 사용 최소화 댓글 목록을 조회, 삭제할 때 SQL 쿼리 실행 횟수를 최소화 중복된 쿼리를 피하고 필요한 데이터만을 조회하는 방식을 고려 그래프 탐색 시 O(n)으로 동작하도록 코드 구현 댓글 목록을 계층 구조로 탐색할 때 시간 복잡도가 O(n) 이하여야 함 효율적인 자료구조나 알고리즘을 사용하여 계층 구조를 효율적으로 관리 2. 사용 기술 스택 Java Spring5 MyBatis Oracle 3. 데이터베이스 설계 주요 Colum..

Java

배열(Array)의 개념과 Java에서 배열의 활용

1. 배열(Array)의 개념 1.1 배열이란? 우리가 흔히 생각하는 배열의 개념은 자료를 선형적으로 모은 자료구조입니다. 실제로 배열은 선형 자료구조의 한 종류이긴 합니다. 하지만, 컴퓨터 공학에서 배열은 몇 가지 추가적인 특징을 가지고 있습니다. In computer science, an array is a data structure consisting of a collection of elements (values or variables), of same memory size, each identified by at least one array index or key. Contiguous : 배열의 각 요소는 메모리 공간에서 인접한 곳에 위치하고 있습니다. Fixed Size : 배열 요소의 개수(..

Git

Git Branch의 개념과 사용 방법

1. Git Branch란? Git에는 개발 작업을 분리시켜 병렬적인 개발을 지원하는 기능인 branch가 있습니다. 기존 코드에 새로운 branch를 생성하여 원래 하던 작업과 완전히 독립적인 개발을 할 수 있습니다. 또한, 각 branch는 고유의 commit history를 가지고 있어 작업의 flow를 분리할 수 있습니다. 2. branch 생성 git branch 브랜치이름 위와 같이 터미널에 git branch new를 입력하여 새로운 new 브랜치를 생성했습니다. 3. branch 전환(checkout) git checkout 브랜치이름 생성한 new 브랜치로 이동하기 위해 checkout 명령을 사용했습니다. new 브랜치로 전환한 상태에서 파일 a, b를 수정하여 이를 commit 하면 ..

Git

Git, 버전 관리 시스템이란 무엇일까?

1. Git이란? 개발자라면 git을 한번 써봐야 한다는 소리는 누구나 한 번씩 들어본 경험이 있을 것입니다. 또한 요즘 신입 개발자들은 자신을 pr 하기 위해 github에 자기 작업물들을 올리는 것이 기본 소양입니다. 하지만 실제 실무를 경험해보지 못한 신입 개발자가 git으로 프로젝트를 version 별로 관리하는 경험하기란 쉽지 않습니다. 그래서 최소한 면접장에 가서 git이 어떠한 기능이 있고, 특징이 무엇인지 말할 수 있도록 자세하게 알아보겠습니다. Git 공식문서에 따르면 Git은 프로젝트를 분산하고, 버전별로 관리할 수 있도록 설계된 오픈소스이다. Git is a free and open source distributed version control system designed to han..

Java

Java 형변환 완벽정리 - 기본 타입(Primitive Type)

1. 형변환이란? Java는 데이터를 크게 2가지(Primitive, Refence) 타입으로 분류하고 있습니다. 또한 데이터를 다룰 때 데이터 타입을 매우 엄격하게 다루는 편입니다. 기본(Primitive) 타입끼리 연산 시에도 반드시 같은 데이터 형끼리 연산하도록 강제하고 있습니다. 따라서 종류가 다른 2개의 데이터를 연산 시에는 반드시 형변환이 필요합니다. Java가 지원하는 기본 데이터 타입은 각자의 크기와 범위가 정해져 있습니다. 따라서 크기가 큰 타입을 작은 타입으로 변환하거나 범위가 벗어나는 변환을 시도하면 데이터의 손실이 발생합니다. 이번 포스팅에서는 Java에서 기본 Type끼리의 변환은 어떤 방식으로 하고, 어떠한 예외가 있는지 자세히 살펴보겠습니다. 형변환이란 두 개의 다른 타입을 처..

Algorithm

개발자가 알고리즘을 공부해야하는 이유

1. 개발자는 왜 알고리즘을 공부해야 할까? 왜 개발자는 알고리즘을 공부해야 할까요? 요즘 대다수의 신입 개발자분들은 취업을 위해서 알고리즘 문제를 풀고 있습니다. 코딩 테스트가 채용 프로세스의 한 부분이기 때문이죠. 굉장한 실력을 갖추신 시니어 개발자분들은 입을 모아 알고리즘 공부가 중요하다고 강조하고 있습니다. 하지만, 저와 같은 개발자 지망생들에게 크게 와닿기는 힘듭니다. 왜냐하면 신입 개발자 & 개발자 지망생들이 실무에서의 알고리즘을 통한 성능 최적화, 코드 리펙토링을 경험하기는 쉽지 않으니까요. 또한, 요즘 대부분의 언어 및 프레임워크에는 개발자가 사용하기 편한 알고리즘 메소드들이 많이 구현되어 있습니다. 때문에 Linked List, Stack, Sort와 같은 기본적인 자료구조와 알고리즘은 ..

윤유후
윤유후의 블로그