Programing Language

Programing Language/Java

[Java] 서블릿 (Servlet)

서블릿(Servlet) 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다. 스레드 방식으로 실행되고, 컨테이너 종류에 상관없이 실행되므로 플랫폼 독립적이다. 멀티 스레드 방식이기 때문에 여러 사용자에 의해 호출될 수 있다. 서블릿의 인스턴스는 재활용 가능하므로 한 번만 생성되면 된다. 서블릿 동작 과정 클라이언트가 웹 서버에 요청을 한다. 웹 서버는 클라이언트로부터 받은 요청을 웹 애플리케이션 서버(WAS)에 위임하고, 웹 애플리케이션 서버는 요청에 해당하는 서블릿을 실행한다. 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환(서블릿 → 웹 애플리케이션 서버 → 웹 서버)하여 클라이언..

Programing Language/Java

[Java] 예외 처리 throws와 예외 클래스 생성

throws 메서드 설계 시 예외 처리를 직접 하지 않는 경우에 사용한다. 메서드 이름 뒤에 throws Exception을 추가하면, 메서드에서 예외가 발생했을 때 메서드를 호출한 곳으로 exception이 던져진다. Exception 및 이를 직접 상속받은 Exception을 throws 하는 메서드의 경우 이 메서드를 호출하는 쪽에서 반드시 예외 처리(handling)를 해야 한다. 하지 않는 경우 에러가 발생한다. 이와 달리 RuntimeException 및 이를 상속받은 예외를 throws 하는 메서드는 호출하는 쪽에서 매번 예외 처리를 하지 않아도 된다. Exception 또는 RuntimeException 클래스를 상속 받아서 직접 Exception 클래스를 만들어 사용할 수 있다. 💻 예제..

Programing Language/Java

[Java] 예외(Exception) 처리 try-catch문 예제

예외 (Exception) 예외는 컴파일 에러와는 다르다. 컴파일 에러는 문법 상의 오류이지만 예외는 문법 상 오류가 아닌 실행 중에 발생되는 오류 상황을 일컫는다. 일반적으로는 예외가 발생하는 경우에 예외 관련 메시지를 출력하고 프로그램을 종료한다. 예외 예시 ArithmeticException 0으로 나누었을 때 발생하는 예외이다. ClassCastException 타입 변환(Casting)은 상위 클래스와 하위 클래스 간 또는 구현 클래스와 인터페이스 간에서 발생한다. 두 클래스가 위와 같은 관계가 아닌 상황에서 타입 변환을 시도하는 경우 발생하는 예외이다. ArrayIndexOutBoundsException 배열 사용 시, 배열 사이즈를 벗어난 인덱스에 접근하는 경우 발생하는 예외이다. Negat..

Programing Language/Java

[Java] 인터페이스(Interface) 예제

인터페이스 (Interface) 인터페이스는 선언 시 interface라 선언하고, 인터페이스를 구현(상속)하는 클래스에서는 implements 키워드를 사용해 구현(상속)한다. 인터페이스는 모든 메서드가 public abstract로 선언되고, 모든 멤버 변수가 public static final로 선언된 특별한 종류의 추상 클래스이다. 메서드 선언 시 public abstract는 생략 가능하고, 멤버 변수 선언 시 public static final 또한 생략 가능하다. 인터페이스는 다른 클래스와는 달리 다중 상속이 가능하다. 💻 예제 1 📝 소스 코드 public class Main { public static void main(String[] args) { TestImpl test1 = new ..

Programing Language/Java

[Java] 추상 클래스(Abstract class)와 추상 메서드(Abstract method)

추상 클래스 (abstract class) 간단히 말하자면 추상 메서드를 가지고 있는 클래스이다. 일반적으로 생각하는 클래스는, 해당 클래스를 사용해 객체를 직접 생성할 수 있다. 그리고 이러한 클래스를 실체 클래스라고 말한다. 추상 클래스는 실체 클래스와는 달리 클래스의 공통적인 특성을 추출해서 선언하는 것이다. 따라서 추상 클래스는 인스턴스를 생성할 수 없다. 즉 객체를 직접 생성할 수 없다. new가 불가능한 것이다. 추상 클래스는 선언할 때 abstract 키워드를 반드시 써주어야 한다. 추상 클래스와 실체 클래스는 상속의 관계를 가진다. 추상 클래스가 부모이고 실체 클래스가 자식으로 구현된다. 추상 클래스를 상속받는 자식 클래스에 반드시 구현해야 할 메서드가 있는 경우, 그 메서드를 추상 메서드..

Programing Language/Java

[Java] 다형성(Polymorphism) 예제

Polymorphism (다형성) 다형성은 하나의 이름을 가진 클래스나 메서드가 여러 가지 형태의 동작을 하는 능력이다. 다형성에 의해 자손 타입 객체가 부모 타입으로 자동 형 변환이 될 수 있다. 즉, 부모 타입인 객체만으로도 상속된 모든 자손 타입들을 담을 수 있다. 클래스에서 다형성 예시로 첫 번째는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것이다. 두 번째는 조상 클래스 타입의 참조 변수로 자손 클래스의 인스턴스를 참조할 수 있는 것이다. 메서드에서의 다형성은 메서드 오버라이딩과 메서드 오버로딩이 있다. HAS-A (멤버), IS-A (상속) HAS-A 관계 같은 경우는 멤버로 설계하고, IS-A 관계는 상속으로 설계한다. HAS-A Car is-a Tire (X) Tire is..

Programing Language/Java

[Java] 오버라이딩(Overriding)과 오버로딩(Overloading) 예제

오버라이딩 (Overriding) Overloading 과는 다른 개념으로, 오버라이딩은 상속 관계에서 부모 클래스에 있는 메서드를 재정의하는 것이다. 부모 클래스에 있는 메서드와 매개변수 리스트가 동일해야 한다. 또한 부모 클래스에 있는 메서드와 접근 권한 수식어가 동일할 필요는 없지만 기존 부모 클래스의 메서드 접근 권한의 범위보다 작게 설정할 수는 없다. 즉, 접근 권한은 같거나 더 넓은 수식어를 사용해야 한다. 메서드 앞에 final 키워드가 붙으면 해당 메서드는 더 이상 오버라이딩이 불가능하다. 클래스 앞에 final 키워드가 붙으면 해당 클래스를 상속할 수 없다. 예제 Main.java public class Main { public static void main(String[] args) {..

Programing Language/Java

[Java] 상속 관계에서 생성자 호출 순서

상속에서의 생성자 호출 순서 자식 클래스의 생성자에서 명시적으로 부모 클래스의 생성자가 호출되지 않으면 자동으로 부모 클래스의 default 생성자가 호출된다. 부모 클래스에 디폴트 생성자가 없는 경우도 있는데 그럴 때는 부모 클래스의 다른 생성자를 반드시 호출해야 한다. 자식 클래스의 생성자에서 명시적으로 부모 클래스의 생성자를 호출할 수도 있다. super 키워드를 사용하여 부모 클래스의 생성자를 호출할 수 있는데, 이때 super 키워드는 자식 생성자의 첫째 줄에 호출되어야 한다. 그러지 않으면 'Constructor call must be the first statement in a constructor'라는 오류 문구가 뜬다. 예제 현재 코드에서 상속은 (부모) Vehicle - Car - Hy..

Programing Language/Java

[Java] 상속(Inheritance) 예제

상속 (Inheritance) 상위 클래스를 상속받아서 하위 클래스를 정의하는 방법이다. 자바에서는 오로지 하나의 부모로부터만 상속받을 수 있다. 다중 상속은 허용되지 않는다. 상속을 사용하면 기존에 있는 객체를 그대로 활용하면서 새로운 객체에서 추가되거나 변경되는 부분만 작성하면 되므로 소프트웨어 개발 효율을 높일 수 있다. Sub Class(하위 클래스)에서는 Super Class(상위 클래스)가 가지고 있는 멤버 변수들을 선언하지 않아도 사용할 수 있다. 따라서 상위 클래스에 없는 멤버 변수만 선언하면 된다. 예제 1 - 상속 사용 안 함 BasicTV.java public class BasicTV { boolean isPowerOn; int channel; int volume; public voi..

Programing Language/Python

[Python] filter()와 lambda 예제

filter() filter(함수, iterable) filter() 함수에 인자로 사용되는 함수는 처리되는 각각의 요소(iterable 객체 요소)에 대해 bool 값을 반환한다. True를 반환하는 요소는 그대로 남아있고, False를 반환하는 요소는 삭제된다. filter() 함수의 결과는 filter 객체로, 이것도 iterable 하다. 예제 1 multiple3 함수는 인자 값이 3의 배수이면 리턴한다. filter() 함수에 첫 번째 매개변수로 multiple3 함수를 넣고, 두 번째 매개변수로는 list [3, 7, 9]를 넣었다. filter() 함수로 반환된 결과를 list로 형 변환해서 확인하면 3의 배수인 3과 9만 list에 남고, 7은 삭제된 걸 볼 수 있다. 인자 값으로 그냥 ..

Programing Language/Python

[Python] BeautifulSoup로 정적 웹 사이트 파싱하기

BeautifulSoup 아래와 같은 simple.html 파일이 있다. 이 파일을 파이썬에서 그대로 불러오고 싶을 때 사용하는 방법이 두 가지가 있다. header This is a paragraph 이것은 div 입니다 dog cat frog this apple banana 네이버 daum fish 제목 가격 1.이것이 파이썬이다 [도서] 19,200원 2.저것도 파이썬이다 [할인] 12,800원 3.그래도 파이썬인가? [중고] 6,500원 데이터 파싱 하기 우선 현재 경로에 있는 simple.html 내용을 가져오는 것이니 with as를 사용하여 파일 자체를 읽어온다. BeautifulSoup 파싱 라이브러리를 사용하면 손쉽게 html, json, xml 파일 등을 파싱 할 수 있다. In [7]..

Programing Language/Python

[Python] map()과 lambda 예제

map() map(함수, iterable 값) 이와 같이 map() 함수를 이용하면 집합 데이터 + 데이터에 대한 ~한 동작/연산을 수행할 수 있다. map() 함수의 결과는 map 객체이고, map 객체도 iterable 하다. map() 함수 사용 예제 매개변수 값을 제곱한 뒤 리턴하는 square() 함수를 만든 뒤 map() 함수의 첫 번째 인수로 넣었다. map() 함수로 리턴된 값을 변수 m에 저장하고 실행해보면 m은 map 객체라고 나온다. map 객체 또한 iterable 한 객체이고, list로 형 변환할 수 있다. [1, 2, 3] 데이터를 넣었는데 모두 제곱이 되어서 [1, 4, 9]가 된 것을 확인할 수 있다. list() 형 변환 함수 인수로 map() 함수 자체를 넣어 바로 li..

밈아
'Programing Language' 카테고리의 글 목록 (3 Page)