기존의 클래스를 재사용하는 것이다. 적은 양의 코드로 새로운 클래스를 구현할 수 있고, 공통된 코드를 수정하는데에도 용이한 기법이다. 만약 사람이라는 클래스와 학생이라는 클래스를 정의한다고 했을때, 학생이라는 클래스는 사람이라는 공통된 성질을 가지면서, 학생이라는 특수한 성질을 가질 수 있다. 따라서 학생 클래스를 정의한다고 할때, 사람이라는 클래스를 상속받아서 공통된 특성을 포함시키고, 학생의 특수한 부분은 따로 만들어낼 수 있다는 것이다. 아래 코드를 통해 자세히 알아보도록 하자. // 사람 class Person { int age;// 나이 String name;// 이름 // 먹는다 void eat() {} } // 학생 class Student extends Person { int student..
환경변수 공식적인 의미의 환경변수(Environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들이다. OS상에서 동작하는 응용프로그램들이 참조하기위한 설정이 기록된다. 따라서 이 환경변수를 건드려야 할 상황이 생긴다면 신중하게 해야한다. 때에 따라서 프로그램의 정상적인 동작을 보장받지 못할 수 있기 때문이다. 그래서 우리가 주로 개발환경을 설정해야할 때 변경하는 환경변수는 Path나 CLASSPATH정도가 되겠다. 환경변수에도 두가지가 존재한다. 사용자 변수 - OS내의 사용자 별로 다르게 설정가능한 환경변수시스템 변수 - 시스템 전체에 모두 적용되는 환경변수 다른 사용자에게 영향을 미치느냐 미치지 않느냐에 따라서 환경변수를 변경할때도 주의를 기울이도록 해야한다..
메소드로 인자값을 넘기는 방법 메소드로 인자값을 넘기는 방법은 크게 두 가지가 있다. Call by valueCall by reference Call by value라는 것은 그대로 해석하면 '값에 의한 호출'이다. 메소드로 인자값을 넘길때 그 값을 복사하여 넘기는 형태이다. 따라서 이 방식으로 메소드 호출을 하면 메소드 내에서는 복사된 값으로 작업을 하기 때문에 원래의 값을 변경시키지 않는다. Call by reference는 '참조에 의한 호출'이다. 인자값을 메소드로 넘겨 줄때 그 객체를 참조하는 주소를 넘겨주는 형태이다. 따라서 메소드 내에서도 원래의 값에 접근이 가능하다. 아래의 예시를 통하여 정확하게 알아보도록 하겠다. 1. 인자값으로 기본형을 사용했을 때 public class Test { ..
클라이언트가 서버에게 어떤 페이지를 요청한다. 그럼 서버는 그 페이지를 클라이언트에게 전송해준다. 클라이언트가 요청하는 페이지는 크게 두 종류가 있다. 정적 페이지(Static Page) HTML파일과 CSS파일, 이미지파일과 같이 어떠한 클라이언트에서 요청해도 동일한 결과를 보여주는 페이지이다. 동적 페이지(Dynamic Page) PHP파일, JSP파일이 대표적으로 존재하며, 일정한 데이터의 처리가 필요한 페이지이다. DB에 저장된 특정한 정보를 가져와서 동적으로 생성된 페이지를 뜻한다. 이 페이지는 사용자마다의 데이터가 구별되어 다른 페이지를 보여주게 된다. 서버에서 위의 두 페이지를 처리하는 방식이 같을 수는 없을 것이다. 정적 페이지는 어떤 특정한 처리과정이 없어 전송만 해줘도 되지만, 동적 페..
클라이언트와 서버가 TCP소켓으로 연결할때 서로의 연결상태를 3단계로 확인하는 것이 3-Way Handshake다. 이를 이해하려면 먼저 TCP소켓의 특징에 대하여 알아야할 필요가 있다. TCP는 연결 지향 소켓으로 클라이언트와 서버가 연결되었는지 확인하는 과정이 존재한다. 그 확인하는 과정중에 하나의 방법이 3-Way Handshake이다. 이를 수행하는 정확한 목적을 무엇이냐고 묻는다면, 클라이언트에서 서버로 통신할 수 있는 경로를 생성하고 검사하는 작업이라고 할 수 있다. 처음에 클라이언트는 서버의 IP주소를 가지고 서버에 접근한다. 그 IP에 도달하기 위한 다양한 경로 중 가장 적절한 경로(라우터의 역할)를 거쳐서 도달하게 된다. TCP는 이런 경로가 생성되고 나면 그 경로를 통해 클라이언트, 서..
JVM(Java Virtual Machine)은 자바 가상 머신으로 자바 프로그램을 실행시키기 위하여 반드시 실행되어야 하는 기초가 되는 프로그램이다. 즉 자바 프로그램을 실행시킨다는 것은 JVM을 실행시키고 그 위에서 자바 프로그램을 실행시킨다는 의미가 된다. 따라서 JVM은 운영체제와 자바프로그램 사이를 연결해주는 중계자 역할을 한다. 이러한 특징으로 인해 자바 프로그램에서 오류가 발생해도 JVM만 다운될 뿐 전체 시스템에 데미지를 주지 않는다. 또한 플렛폼에 의존적이지 않게 모든 자바의 프로그램이 구동된다고 할 수 있다. 정확히 말하면 JVM이 설치될 수 있는 모든 플렛폼이라고 보는것이 더 나을것이다. 자바라는 언어는 기본적으로 동적할당을 프로그래머에게 맡기지 않는다. C언어에서 malloc(), ..
유니코드는 전 세계의 모든 문자들을 컴퓨터에서 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이 표준은 유니코드 협회(Unicode Consortium)가 제정한다. 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함하고 있다. 유니코드가 등장하기 이전의 문자 코드들은 한정된 범위의 문자를 표현하여 만약에 다른 문자 집합(Character Set)을 사용하는 컴퓨터에서는 표시될 수가 없었다. 따라서 세계의 모든 컴퓨터 환경에서 문자 인코딩 방식이 호환되지 않아 불편함을 느껴 유니코드를 개발하게 되었다. 유니코드가 만들어 진 후부터는 컴퓨터 소프트웨어가 같은 문자인코딩으로 해석될 수 있었기 때문에 국제적으로 널리 퍼질 수 있게 되었으..
Base64란 8비트 이진 데이터를 문자 코드에 영향을 받지않는 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 뜻한다. (여기서 이진 데이터라는 것은 실행가능한 실행파일, 알집파일, 이미지파일 등의 0과1로 기록된 파일을 뜻한다.) 번역하면 64진법이라는 뜻이다. 64는 2의 6제곱으로 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이다. 인코딩된 문자열은 알파벳 대소문자, 숫자, '+', '/' 총 64개로 이루어지며, '='은 끝을 알리는 코드로 쓰인다. Base64에는 어떤 문자와 기호를 쓰느냐에 따라 여러종이 있지만, 잘 알려진 것은 모두 처음 62개는 A-Z, a-z, 0-9를 사용하고 있다는 것이다. 그리..