분류 전체보기

Backend, Spring

[Spring] DispatcherServlet

목표 Spring을 공부하면서 DispatcherServlet이라는 단어는 정말 많이 접했지만, 단순히 클라이언트의 요청에 따라 알맞은 Controller로 안내하는 녀석으로만 알고있었지 정확히 어떤 방식으로 어떤 일을 하는지 이해하보려고 하지 않았던 것 같다. DispatcherServlet이 어떤 일을 하는지, 어떤 과정을 거치는지 등을 글로 정리하면서 이해하고 학습해보자. DispatcherServlet DispatcherServlet은 모든 HTTP 요청을 가장 먼저 받아 적합한 Controller로 전달하는 역할은 한다. Spring에서 HTTP 요청 및 응답을 처리하는 핵심 기술이라고 할 수 있다. DispatcherServlet은 FrontController라고도 불리는데 GRASP Pat..

Algorithm

[Algorithm] BFS - 넓이 우선 탐색

목표 알고리즘 문제를 풀면서 DFS를 정리한 글로 정리한 적이 있다. BFS 또한, 완벽하게 알고있어야하는 알고리즘이라고 판단되어 DFS와 반대되는 탐색 개념인 BFS 그래프 탐색 알고리즘에 대해 이해하고 하고자 한다. DFS의 개념이 부족하다면 아래 글을 읽고 오면 좋다. https://zzzzseong.tistory.com/23 [Algorithm] DFS - 깊이 우선 탐색 목표 Greedy, Dijkstra, DP 알고리즘과 같이 대표적인 알고리즘 중 하나인 DFS 그래프 탐색 알고리즘에 대해 이해하고 학습한다. DFS(Depth First Search)란 DFS(Depth First Search) DFS란 초기 노드에서 시작하여 해 zzzzseong.tistory.com BFS(Breadth..

Algorithm

[Algorithm] DFS - 깊이 우선 탐색

목표 Greedy, Dijkstra, DP 알고리즘과 같이 대표적인 알고리즘 중 하나인 DFS 그래프 탐색 알고리즘에 대해 이해하고 학습한다. DFS(Depth First Search)란 DFS(Depth First Search) DFS란 초기 노드에서 시작하여 해를 찾을때까지 자식 노드를 계속해서 타고 들어가며 탐색하는 완전탐색 알고리즘이다. 깊이(Depth)의 노드를 우선적으로 탐색하는 BFS와 반대되는 개념이라고 생각하면 이해하기 쉽다. DFS는 Stack 또는 재귀를 이용해 구현할 수 있는데 재귀를 이용해 구현하는것이 일반적이다. BFS에 대한 개념이 부족하다면 아래 글을 읽고 오면 좋다. https://zzzzseong.tistory.com/22 [Algorithm] BFS - 넓이 우선 탐색 ..

Algorithm

[Algorithm] Dijkstra - 다익스트라

목표 최소비용 경로문제로 대표되는 Dijkstra 알고리즘에 대해 이해하고 학습한다. Dijkstra 알고리즘을 활용할 수 있는 알고리즘 문제를 풀어보고 정형화된 템플릿을 만들어보자. Dijkstra란 Dijkstra Dijkstra란 V개의 정점과 각각의 가중치(W)를 가진 E개의 간선을 가진 그래프에서 i번 정점에서 j번 정점까지로의 최소 가중치를 가지는, 최단 경로를 찾는 알고리즘이다. 아래는 Dijkstra 알고리즘을 활용할 수 있는 그래프의 예시이다. Dijkstra 알고리즘을 활용하기 위해서는 앞서 설명한 그래프, 정점 별 최소 가중치를 저장하기 위한 1차원 배열, 그래프 탐색을 위한 자료구조가 필요하다. 그래프 탐색을 위한 자료구조는 인접행렬과 우선순위 큐를 사용할 수 있고, 인접행렬을 개선..

NBCamp

[KPT 회고록] Team Tetris

2번째 팀 ( Team_Tetris ) 과제 "호텔 예약 시스템" 만들기 KPT 회고 KPT 란? 본 주차 회고록도 지난주차를 따라 Keep, Try, Problem 으로 분류하여 작성한다. KEEP 팀원 모두가 성장 하려는 의지를 보였다. 협업을 위한 다양하고 새로운 시도 `Code with me` `Git` 를 통해 협업률을 높일 수 있었다. 모르거나 부족한 부분이 있으면 적극적인 질문을 통해 팀원과 상호 성장하였다. Problem 자료구조 효율적인 활용에서 난항을 겪었다. 플로우차트나 클래스 다이어그램등 UML에 익숙하지 못하여 완벽하게 활용하지 못하였다. 완성된 과제를 문서화하지 못하였다. Try 기능의 구현보다 기획 단계에 더욱 투자하여 완성도를 높이는 것이 중요하다. 팀원의 한마디 정유진 안녕..

Java

[Java] OOP와 OOP의 특성

목표 예전부터 누군가 나에게 OOP가 무엇인지 묻는다면 자동차를 예로 들거나, "원하는 객체를 만들어서 레고처럼 조립하는 거야!" 라는 식으로 두루뭉실하게 설명하며 "OOP는 무엇이다!" 라고 명확하게 정의하지 못했다. 오늘 글을 쓰면서 OOP에 대해 확실히 이해해보려고 한다. OOP언어를 배우면 가장 먼저 마주하는 내용이 OOP의 특성이다. OOP의 대표적인 4가지 특성을 글로 정리해 항상 이것을 참고하며 프로그램을 설계, 구현하고자 한다. OOP란 OOP(Object-Oriented Programming) 객체 지향 프로그래밍 현실 세계에서 어떤 제품을 만들 때는 부품을 먼저 만들고, 이 부품들을 하나씩 조립해서 완성품을 만든다. 소프트웨어를 개발할 때에도 부품에 해당하는 객체를 먼저 만들고, 이 객..

Data Structure

[Data Structure] Heap

Heap Heap은 최솟값, 최댓값을 빠르게 찾기 위해 고안된 자료구조이고, 무엇인가를 차곡차곡 쌓아 놓은 더미와 비슷하다 하여 Heap이라고 부른다. Heap은 '이진 트리'이되 '완전 이진 트리이다. '이진 트리'란 각 노드가 자식 노드를 최대 두개까지 가질 수 있는 트리를 말하며 '완전 이진 트리'란 마지막 레벨을 제외하고 모든 레벨이 채워져 있는 트리를 말한다. 탐색보다는 삽입과 삭제에 최적화된 자료구조이다. Array, Linked List에서 데이터 저장의 시간 복잡도는 O(n)이지만, Heap은 O(logn)이라는 좋은 성능을 보여준다. 그 이유는 Heap에 저장할 수 있는 데이터의 수는 트리의 높이가 하나 늘 때마다 두 배씩 증가하기 때문에, 데이터의 수가 두 배 늘 때마다 비교연산의 횟수..

Data Structure

[Data Structure] Priority Queue - 우선순위 큐

Priority Queue Priority Queue는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조이다. Queue와 구조가 비슷할 것 같지만 둘은 많은 차이가 있다. Queue는 연산의 결과로 FIFO 즉, 먼저 들어간 데이터가 먼저 나오지만 Priority Queue는 그렇지 않다. 앞서 설명한 것처럼 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나온다. Priority Queue는 Array, List, Heap으로 구현할 수 있다. 하지만 Array와 List는 데이터 삽입과 삽입 위치를 찾는 과정에서 성능을 저하시킬 수 있기때문에 일반적으로 Heap을 이용해 구현한다. Priority Queue의 개념은 사실상 Heap에 대한 개념과 같기 때문에 Heap에 대한..

DevOps

[Git] Git Stash 사용하기

목표 Git을 이용해 협업을 하다보면 pull시에 내가 수정한 코드를 다른 팀원도 수정해 충돌이 나는 경우가 있다. 이럴 때 충돌 상황을 해결할 수 있는 Git Stash에 대해 이해해보자. Your local changes to the followings files would be overwritten by merge 코드를 개발하다보면 팀원의 commit을 내 working directory에 반영하기 위해 pull 해야한다. 하지만, 내가 수정한 파일을 팀원도 수정했다면 제목과 같은 에러가 발생할 것이다. 이때 git stash를 사용할 수 있다. git stash를 이용하면 지금까지 working directory에서 작성한 내 코드는 모두 백업되고 가장 최근 commit으로 프로젝트를 되돌린다...

Jisung Jung
'분류 전체보기' 카테고리의 글 목록 (6 Page)