본문 바로가기

전체 글

(72)
다이아몬드 상속 문제(다중상속의 문제점) java에서는 다중상속을 허용하지않기 때문에 일어날 수 없는 현상이지만 질문에 대한 답을 하지 못해서 포스팅을 하기로했다. 자바8부터는 인터페이스에 default메서드를 정의할 수 있게 되어서, 자바에서도 다중 인터페이스 상속 시에 다이아몬드 상속문제가 발생합니다! (맨 하단에 정리하겠습니다.) Diamond of Death (다이아몬드 상속 문제) 다중 상속을 지원하게 되면 하나의 클래스가 여러 상위 클래스를 상속받을 수 있다. 이런 특징 때문에 발생하게 되는 문제가 바로 '다이아몬드 문제'이다. * Parent와 uncle클래스는 GrandParent라는 부모 클래스를 상속 받은 자식 클래스이다. * 그런데 child라는 클래스는 Parent와 uncle클래스를 동시에 상속받았다. * 결국 child..
디자인패턴 디자인패턴이란? "효율적인 코드를 만들기 위한 방법론" 소프트웨어 개발 방법으로 사용되는 디자인패턴은 과거의 소프트웨어 개발 과정에서 발견한 설계의 노하우를 축적시켜 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식이다. 디자인패턴의 종류 디자인패턴이라는 용어를 처음 제시한 곳은 GoF(Gang of Four)이라 불리는 네명의 컴퓨터 과학 연구자들이 쓴 서적에서부터다. 23가지의 디자인 패턴을 정리하고 각각의 디자인 패턴을 생성(Creational)..
OOP의 4대 특성 및 5대 원칙 OOP(Object-Oriented-Programming) 객체지향 프로그래밍 방식 객체지향프로그래밍 방식은 절차적 프로그래밍 -> 구조적 프로그래밍을 거쳐 개선된 형태이다. 절차적 프로그래밍 방식 입력을 받아 명시된 순서대로 처리하고 결과를 내는 방식 구조적 프로그래밍 방식 절차적 프로그래밍에서 개선된 형태로 프로그램을 함수단위로 나누고 함수끼리 호출하는 방식이다. 객체지향 프로그래밍 수많은 '객체'로 나눠 서로 상호작용하도록하는 일종의 프로그램 설계에 대한 방법론으로 특징은 아래와 같다. 1. 코드의 재사용성이 높아진다. 2. 유지보수가 쉽다. 3. 코드가 간결해진다. 객체지향의 4대 특성 1. 캡슐화(Encapsulation) = 정보은닉 접근제어자(private, public, protected)..
HTTP 쿠키와 세션 쿠키 쿠키란 웹사이트에 접속할 때 생성되는 정보를 담은 임시파일이다. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용한다. (브라우저마다 쿠키가 다르다. 서버에서는 브라우저가 다르면 다른사용자로 인식한다.) 쿠키 특징 이름, 값, 만료일(저장 기간 설정), 경로 정보로 구성되어 있다. 클라이언트에 총 300개의 쿠키를 저장할 수 있다. 하나의 도메인 당 20개의 쿠키를 가질 수 있다 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다. 동작 순서 클라이언트가 페이지를 요청한다. (사용자가 웹사이트 접근) 웹 서버는 쿠키를 생성한다. 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때, 같이 클라이언트에게 돌려준다. 넘겨 받은 쿠키는 클라이언트..
HTTP 기본 HTTP(HyperText Transfer Protocol) HyperText : HTML. 문서간의 링크를 통해 이동할 수 있는 마크업언어. HTTP는 HTML 텍스트 메세지를 전송하는 용도로 시작되었으나 지금은 다른 거의 모든것들을 HTTP로 전송한다. 이미지,음성,영상 뿐만아니라 *JSON, *XML, 서버간의 데이터를 주고받을때에도 HTTP를 사용한다. *Json JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식 *XML EXtensible Markup Language의 약자로 HTML과 매우 비슷한 문자 기반의 마크업 언어이다. 그러나 XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 ..
URI와 웹 브라우저 요청 흐름 URI(Uniform Resource Identifier) Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것(제한없음) Identifier : 다른 항목과 구분하는데 필요한 정보 URI는 인터넷의 우편물 주소같은 것으로, 정보 리소스를 고유하게 식별하고 위치를 지정할 수 있다. 그리고 이 URI에는 두가지 형태가 있는데 이것이 URL, URN이라는 것이다. URL(uniform Resource Locator) 특정 서버의 한 리소스에 대한 구체적인 위치를 서술한다. URL은 리소스가 정확히 어디에 있고 어떻게 접근할 수 있는지 분명히 알려준다. ex ) http://news.naver.com/main/main.nhn?mode=LSD&mid=shm..
WEB서버 WAS서버 Web서버 웹서버란 사용자가 브라우저에서 어떤 페이지를 요청하면 웹서버에서 그 요청을 받아 *정적 컨텐츠를 제공하는 서버이다. 정적컨텐츠란 단순HTML문서, CSS, javascript, 이미지, 파일 등 즉시 응답가능한 컨텐츠이다. 물론 웹서버는 정적컨텐츠만 제공하지는 않는다. 웹서버가 동적 컨텐츠를 요청받는다면 WAS서버에 해당요청을 넘겨주고 WAS가 처리한 결과를 사용자에게 전달해주는 역할도 한다. 대표적인 웹서버로는 Apache가 있다. WAS WAS = Web Server + Web Container 웹서버와 웹컨테이너가 합쳐진 형태로서, 웹서버 단독으로는 처리할 수 없는 데이터베이스 조회나 다양한 로직 처리가 필요한 *동적 컨텐츠를 제공한다. 덕분에 사용자의 다양한 요구에 맞춰 웹 서비스를 제..
서블릿(Servlet)과 JSP 서블릿(Servlet) 서블릿은 자바 클래스로 웹 애플리케이션을 작성한 뒤 이후 웹 서버 안에 있는 웹 컨테이너에서 이것을 실행하고, 웹 컨테이너에서는 서블릿 인스턴스를 생성 후 서버에서 실행되다가 웹 브라우저에서 서버에 요청(Request)을 하면 요청에 맞는 동작을 수행하고 웹 브라우저에 HTTP형식으로 응답(Response)한다. 간단히 말하면 동적웹페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. [특징] 클라이언트의 request에 대해 동적으로 작동하는 웹애플리케이션 *컴포넌트 HTML을 사용하여 Response한다. JAVA의 스레드를 이용하여 동작한다. MVC패턴에서의 컨트롤러로 이용된다. HTTP프로토콜 서비스를 지원하는 javax.servlet.http.Htt..