Develop/TIL(Today I Learned)
SpringMVC DispatcherServlet 동작 방식
SpringMVC의 DispatcherServlet 동작 방식에 대한 내용에 앞서 Front Controller 패턴에 대해서 알아보고 넘어가도록 하자 Front Controller 패턴 일단 간단하게 Front Controller 패턴을 적용하지 않는 경우와 적용한 경우에 따른 동작을 그림으로 알아보면 다음과 같다. Front Contoller 패턴을 적용한 것과 적용하지 않은 것의 차이는 그림으로 한눈에 파악할 수 있듯 클라이언트의 요청에 하나의 Servlet으로 관리를 하느냐 아니냐의 차이로 볼 수 있다. 그렇다면 왜 Front Controller 패턴을 사용해야 하는가? 클라이언트의 요청에 대한 입구를 하나로 통일시킬 수 있다. 그렇기에 공통 처리 부분을 관리하기 편해진다. 추가적으로 N:N 관계..
[2022.06.10] Instagram 스키마 디자인
오랜만에 포스팅을 하는데.. 계속 다짐을 하지만 천천히라도 정리한 글을 올릴 예정입니다.. ㅠㅠ 해당 포스팅은 Instagram의 피드에 대한 DB 스키마 디자인을 생각해 보고 정리한 글입니다. DB 스키마 디자인을 실습한 사이트는 이곳입니다. 인스타그램 피드 인스타그램의 피드는 위 이미지와 같은 형태로 올릴 수 있습니다. (위 피드는 제 계정인데.. 활동을 안 합니다) 해당 이미지로 피드의 기능들을 분류해 보면 다음과 같이 분류가 가능합니다. 여러 장의 사진 업로드 본문 댓글 게시글에 대한 좋아요 및 댓글에 대한 좋아요 태그 (해당 이미지에는 보이지 않지만.. 인스타그램의 "#태그"를 의미합니다) 대강 이 정도의 기능으로 분류가 가능하며, 인스타그램의 시스템 중 계정 팔로우, 팔로워 기능도 존재합니다...
[2022.05.24] 자료구조/알고리즘 - 재귀
Section1이 끝나고 Section2가 시작되었다! Section2부터는 매일 간단한 코딩 테스트 문제 1개를 풀기 시작하였다. 그리고 오늘은 자료구조/알고리즘에서 재귀함수에 대해 공부를 하였다. Daily coding 오늘은 입력받은 배열의 첫 요소와 마지막 요소를 뽑아 이를 각각 Key와 Value로 HashMap으로 만들어 반환하는 메서드를 구현하는 문제였다. 이제 시작인 부분이기 때문에 쉬운 문제가 출제된 것 같으나.. HashMap을 초기화하는 방법을 몰라서 검색을 해봐야 했다. 검색 결과 HashMap을 초기화하는 방법은 아래와 같이 구현이 가능하다는 사실을 알았다. new HashMap(){ { put("Key", "Value"); } } 처음 생각할 땐 "new HashMap(){ "K..
[2022.05.23] 모의 기술 면접
페어와 함께 간단한 모의 기술 면접을 진행하였다. 간단한 몇 가지의 질문 리스트 중 각자 3가지를 정하고 그에 대한 답변을 준비해 보고 돌아가면서 질문을 해보고 답변을 해보는 시간이었다. 여러 질문 리스트 중 선택한 3가지의 질문은 아래와 같았다. 자바의 메모리 영역에 대해 설명해 주세요. static 키워드에 대해 설명하고, static을 언제 사용해야 하는지 설명해 주세요. 추상 클래스와 인터페이스의 차이는 무엇인가요? 이 질문들에 대한 답변으로 아래와 같이 정리를 해보았다. 아래는 직접 말로 답변하는 것을 염두에 두고 작성했었기 때문에 구어체로 작성되어 있습니다. 자바의 메모리 영역에 대해 설명해 주세요. 자바의 메모리 영역은 크게 메서드, 힙, 스택 영역으로 나뉩니다. 먼저 메서드 영역에 대해 말..
[2022.05.13] OOP 심화 2/2 - 다형화, 추상화
OOP의 4가지 특징 상속화 캡슐화 다형화 추상화 오늘은 위 4가지 특징 중 다형화와 추상화에 대한 공부를 진행하였고, 해당 내용들을 두서없이 정리한 게시글입니다. 틀린 내용이 있다면 알려주세요! 다형성(polymorphism) 하나의 객체가 여러 가지 형태(타입)를 가질 수 있는 것을 의미 Java에서는 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있는 것을 의미 => 상위 클래스 참조 변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용한 것 위 문장은 "참조 변수의 제어 가능한 메모리 범위가 참조하려는 객체의 메모리 범위보다 같거나 작아야 한다"라고 표현할 수 있다. 예제 코드로 동작을 알아보자 class Vehicle { public void printInfo() { System..
[2022.05.12] OOP 심화 1/2 - 상속화, 캡슐화
OOP의 4가지 특징 상속화 캡슐화 다형화 추상화 오늘은 위 4가지 특징 중 상속과 캡슐화에 대한 공부를 진행하였고, 해당 내용들을 두서없이 정리한 게시글입니다. 틀린 내용이 있다면 알려주세요! 상속(inheritance) 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 문법 요소 상위 클래스와 하위 클래스로 나뉘며, 상위 클래스의 멤버(필드, 메서드, 이너클래스)를 하위 클래스에게 내려주는 것 이때 "두 클래스를 서로 상속 관계에 있다."라고 표현 하위 클래스는 상위 클래스가 갖는 모든 멤버를 상속받기 때문에 상위 클래스의 멤버 개수와 비교를 했을 때 언제나 같거나 많다. 상위 클래스 - 하위 클래스의 관계를 "부모 - 자식" 관계로 표현하기도 한다. (But, 상위 - 하위 클래스라는 표현이 바람..
[2022.04.28] Web 기초 - CSS
CSS는 Web 페이지를 구성하는데 있어 모양/표현 등의 스타일을 정의하는 역할을 한다. 공부한 내용을 추후 참고하기 위하여 간단하게 정리를 하기 위한 게시글입니다. 혹시 내용이 틀리거나 하는 부분이 있다면 알려주세요! 참고한 사이트 : w3school, MDN CSS란? CSS란 Cascading Style Sheets의 약어이며 위에서 언급했듯이 Web 페이지를 구성하는 데 있어 모양/표현 등의 스타일을 정의하는 역할을 한다. 간단한 예를 들자면 폰트나 배경색 등을 변경하거나 화면의 레이아웃을 정의하는 데 사용되게 된다. 그리고 Cascading은 "폭포처럼 떨어지는"이라는 뜻을 갖는 단어인데, 이러한 단어가 이름에 들어가게 된 이유는 CSS로 정의하는 내용들이 위에서부터 아래로 흐르듯 연속하여 적용..
[2022.04.27] Web 기초 - HTML
Web에 대한 공부를 진행 후 잊기 전 기록을 하기 위해 작성하였습니다. 기본적으로 웹 페이지를 구성하는 요소로 HTML, CSS, JS(JavaScript)를 꼽을 수 있다. 각각의 특성은 아래와 같이 정의할 수 있다. HTML 웹 페이지의 구조를 정의 CSS 웹 페이지의 모양/표현 등 스타일을 정의 JS(JavaScript) 웹 페이지의 기능/동작 등 동적인 기능들을 정의 이 3가지를 복합적으로 사용하여 웹 페이지를 구성하게 된다. HTML 이란? HyperText Markup Language의 약자로써 웹 페이지를 기술하기 위한 마크업 언어 웹 페이지의 의미와 구조를 정의할 때 사용 프로그래밍 언어에 속하지 않는다. HTML 구성 요소 태그(tag) 여는 태그(opening tag)와 닫는 태그(c..