본문 바로가기

분류 전체보기72

객체지향 프로그래밍이란? 객체 지향 프로그래밍이란? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 ‘객체’들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 객체지향 프로그래밍은 레고 블럭 조립하듯이, 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법이다. 객체지향의 장점으로 코드의 재 사용성이 높다. 새로운 코드를 작성할 때 기존 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다.(유지보수가 용이하다.) 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를.. 2022. 4. 17.
Web Server와 WAS Web Server는 클라이언트로 부터 HTTP 요청을 받아 HTML 문서나 각종 정적 컨텐츠(.html, .png, .css)를 전달하는 서버이다. 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터) 정적 컨텐츠를 요청(request)했으면 정적 컨텐츠를 확인하고 => .html, .png 등 응답(response) 정적 컨텐츠가 아니면 웹 서버에서 간단히 처리 못해서 WAS에게 처리를 부탁한다. => 결국 WAS가 처리해준 컨텐츠를 받은 웹 서버는 응답(response)을 해준다 Web Server가 필요한 이유는 클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버.. 2022. 4. 13.
인증, 쿠키, 세션, JWT 인증, 쿠키, 세션, JWT Http 메시지를 보내는 것 헤더, 공백(헤더와 바디를 나누는 것), 바디 헤더 - 요청에 대한 정보가 들어감 바디 - 서버로 보내야할 데이터가 들어감 1. Session / Cookie 방식 순서는 요약하면 다음과 같습니다. 사용자가 로그인을 한다. 서버에서는 계정정보를 읽어 사용자를 확인한 후, 사용자의 고유한 ID값을 부여하여 세션 저장소에 저장한 후, 이와 연결되는 세션ID를 발행하고, HTTP 헤더에 실어 사용자에게 돌려보낸다. 사용자는 서버에서 해당 세션ID를 받아 쿠키에 저장을 한 후, 인증이 필요한 요청마다 쿠키를 헤더에 실어 보냅니다. (쿠키에 세션ID를 넣어 헤더에 실어 서버에 보낸다.) 서버에서는 쿠키를 받아 세션 저장소에서 (세션ID를) 대조한 후 대응되.. 2022. 4. 12.
Java - 멤버변수, 지역변수, 클래스변수, 인스턴스변수 변수를 선언위치에 따라 크게 구분하면 딱 2가지로 나눌 수 있다. 바로 멤버변수 / 지역변수 입니다. 멤버변수는 선언위치가 '클래스 영역' 이고, 지역변수의 선언위치는 '메소드나 생성자 내부' 이다 멤버변수는 다시 두 가지로 나누어진다 바로 클래스변수 / 인스턴스변수 이다 이 둘은 같은 멤버변수에 속하지만 필요한 상황이 굉장히 다르다 이해를 돕기 위해 예를 하나 들어보겠다. 우리가 게임을 처음 시작할 때, 캐릭터를 하나 만든다. 캐릭터를 만들 때 머리색깔을 블랙,골드,브라운 중에서 고를 수 있다고 하면, 머리색깔이라는 변수는 모든 캐릭터마다 다른 값을 가질 수 있다. 즉, 각각의 객체(=인스턴스)마다 개별적인 속성을 가져야 할 때, 우리는 인스턴스 변수를 선언해서 사용한다. 반대로 클래스 변수는, 모든 .. 2022. 4. 7.
n+1 쿼리문제 및 fetch n+1 쿼리문제 쿼리 1개로 n개의 쿼리가 더 나가는 문제 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. 일단 기존에 우리 코드에서 default가 FetchType.EAGER 라서 이미 영속화된 USER는 SELECT로 불러올 필요 없고 1차 캐시에서 가져오기만 하면 되니까 SELECT 할 필요가 없다. EGGER 연관관계에 있는거 다불러온다. 즉, EAGER(즉시로딩) : 연관된 엔티티를 즉시 조회 LAZY(지연로딩) : 사용할 때만 연관된 엔티티를 조회 연관관계라 FetchType.EAGER 로 돼있는 엔티티를 불러오면 그 엔티티의 연관관계를 또 불러.. 2022. 4. 4.
힙(heap) 자료구조 힙(heap)이란 - 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. - 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. - 힙 트리에서는 중복된 값을 허용한다. (이진 탐색 트리에서는 중복된 값을 허용하지 않는다.) 힙의 종류 최대 힙(max heap) 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 key(부모 노드) >= key(자식 노드) 최소 힙(min heap) 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 key(부모 노드) 2022. 3. 16.