본 포스팅은 <토비의 스프링 3.1>을 읽고 공부하면서 이해한 내용을 정리한 것입니다. 정확하고 자세한 내용은 반드시 원문 서적에서 확인바랍니다. 관심사 분리 회원 정보를 관리하는 DAO를 만든다고 해보자. DAO(Data Access Object): DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 일컫는다. 자바빈(JavaB…
흔히 동기/비동기와 블로킹/논블로킹 개념을 혼용하는 경우가 많다. 동기=블로킹, 비동기=논블로킹 이렇게 생각하는 경우가 많은데 이는 틀린 생각이다. 동기/비동기와 블로킹/논블로킹은 서로 다른 관점의 이야기이다. 동기/비동기는 두 작업의 주체가 서로 작업의 시간을 맞추느냐 안 맞추느냐에 대한 개념이고 블로킹/논블로킹은 내가 직접 제어할 수 없는 대상을 상…
https://leetcode.com/problems/valid-palindrome/submissions/ 문자열 문제에서 흔히 등장하는 팰린드롬 문제이다. 처음 생각해낸 방법보다 더 빠르고 좋은 방법이 있어서 정리해둔다. 출처: 파이썬 알고리즘 인터뷰 생각의 과정 가장 먼저 생각해볼 수 있는 방법은 문자열을 반대로 뒤집어서 같은지 확인하는 것이다. 문자…
본 포스팅은 모던 자바 인 액션 을 읽고 내용을 제 나름대로 정리한 것입니다. 자세한 내용은 반드시 해당 책에서 확인하시길 바랍니다. 객체 지향 패러다임이 각광을 받는 가장 큰 이유는 변화에 대한 대응이다. 요구 사항 변화에 유연하게 대응하도록 설계하는 것은 소프트웨어 유지 보수에 있어 매우 중요하다. 를 이용하면 자주 바뀌는 요구사항에 대해 효과적으로…
Prim’s Algorithm 최소 신장 트리를 구성하는 알고리즘 중 하나이며, 최소 신장 트리의 Cut property를 이용하는 그리디 패러다임의 알고리즘이다. Cut property만 이해 했다면 기본 아이디어는 굉장히 쉽다. 근데 코드로 구현하는게 개인적으로 조금 까다로웠다. (Cut Property와 다익스트라 알고리즘에 대한 내용은 링크 참조.…
최소 신장 트리(Minimum Spanning Tree) 신장 트리(spanning)란? : 그래프 G를 구성하는 부그래프로서 G의 모든 정점을 포함하는 그래프. 최소 신장 트리란, 이러한 신장 트리들 중에서 에지의 가중치의 합이 최소인 신장트리를 말한다. image 파란색으로 표시된 에지로 연결된 노드로 구성된 그래프가 위 그래프의 최소 신장 트리이다.…
다익스트라 알고리즘 에지에 가중치가 있는 그래프(weighted graph)에서 최단 경로를 찾는 알고리즘 에지의 가중치가 양수일때만 사용 가능하다. 시작 노드 S로부터 다른 모든 노드까지의 최단 경로를 찾는다. 기본 원리 필요한 자료구조 노드 사이의 관계를 표현할 그래프: graph 시작 노드로부터 각 정점까지의 거리를 기록할 배열: distance 최…
가상 메모리(Virtual Memory) 배경 한 프로세스의 크기는 물리 메모리의 크기보다 클 수 없다. 프로세스는 항상 메모리에 적재되어 있어야하기 때문. 그런데, 반드시 모든 프로세스가 항상 메모리에 올라와 있어야하는가? -> No. 왜냐하면 모든 프로세스가 항상 동시에 실행되는 것은 아니기 때문. 예를 들어, 워드 프로세스와 웹 브라우저를 동시에 실…
REST API가 무엇인지 알아본다. 비바 리퍼블리카 이응준 개발자님이 Naver DEVIEW에서 강연하신 내용을 듣고 요약했으며, 일부 예제는 김영한님의 HTTP 강의를 참고했다. 해당 자료에 대한 링크는 포스트 하단에 명시했다. REST API란 무엇인가 REST(REpresentational State Transfer)는 로이 필딩(Roy Field…
HTTP 상태코드란 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위해 정의한 기능이다. 즉 클라이언트는 HTTP 상태코드를 보고 내가 보낸 요청이 어떻게 처리되었는지 알 수 있다. 따라서 서버는 요청 결과에 알맞은 상태코드를 보내줘야한다. 대략적인 의미 1xx (Informational): 요청이 수신되어 처리중 (거의 사용하지 않음) 2xx …