2024/07 49

[Java] 15. 예외 처리(Exception handling)(4) - finally블럭, 자동 자원 반환: try-with-resources문, 사용자 정의 예외

예외처리(4) - finally블럭, 자동 자원 반환: try-with-resources문, 사용자 정의 예외finally블럭finally 블럭은 try-catch문과 함께 예외의 발생여부에 상관없이 실행되어야할 코드를 포함시킬 목적으로 사용된다.try-catch문의 끝에 선택적으로 덧붙여 사용할 수 있으며, try-catch-finally 순서로 구성된다예외 발생시 : try->catch->finally예외 발생 X : try->finallyclass FinallyTest { public static void main(String args[]) { try { startInstall(); // 프로그램 설치에 필요한 준비를 한다. ..

[Java] 14. 예외 처리(Exception handling)(3) - 메서드에 예외 선언하기

예외 처리(3) - 메서드에 예외 선언하기메서드에 예외 선언하기지금까지 다룬 try-catch 사용법 말고 예외를 메서드에 선언하는 방법이 있다.메서드 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는 예외를 적어주기만 하면 된다.예외가 여러 개일 경우 쉼표(,)로 구분한다void method() throws Exception1, Exception2, ... ExceptionN { // method body}Exception 클래스를 메서드에 선언하면, 모든 종류의 예외가 발생할 가능성이 있다는 뜻이다.메서드의 선언부에 예외를 선언하므로써 메서드를 사용하려는 사람이 메서드를 사용하기 위해 어떠한 예외들이 처리되어져야 하는지를 쉽게 할 수 있다.기존의 많은 언어들은 메서드에 예외..

[Java] 13. 예외 처리(Exception handling)(2) - try-catch 문

예외 처리(2): try-catch문try-catch문try { // 예외가 발생할 가능성이 있는 문장} catch (Exception1 e1) { // Exception1이 발생했을 경우, 이를 처리하기 위한 문장을 적는다.} catch (Exception2 e2) { // Exception2이 발생했을 경우, 이를 처리하기 위한 문장을 적는다....} catch (ExceptionN eN) { // ExceptionN이 발생했을 경우, 이를 처리하기 위한 문장을 적는다.}하나의 try블럭 다음에는 여러 종류의 예외를 처리할 수 있도록 하나 이상의 catch 블럭이 올 수 있다.이 중 발생한 예외의 종류와 일치하는 단 한 개의 catch블럭만 수행된다...

[Java] 12. 예외 처리(Exception handling)(1) - 예외 처리란?

예외 처리(exception handling) - 예외 처리란?프로그램 오류컴파일 에러 : 컴파일 시에 발생하는 에러런타임 에러 : 실행 시에 발생하는 에러논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것그러면 에러와 예외의 차이점은 무엇인가요?에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류예외 : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류예외 클래스의 계층 구조자바는 실행 시 발생할 수 있는 오류(Exception, Error)를 클래스로 정의했다.모든 클래스의 조상은 Object이므로 Exception과 Error클래스 역시 Object 클래스의 자손이다.예외 클래스는 다음과 같이 두 개의 그룹으로 나눌 수 있다.RuntimeException 클래스와 그 자손클래스..

[HTTP] HTTP 메서드 활용 - HTTP API 설계 예시

HTTP 메서드 활용HTTP API 설계 예시HTTP API - 컬렉션POST 기반 등록예) 회원 관리용 API 제공하는 상황이라고 가정HTTP API - 스토어PUT 기반 등록예) 정적 컨텐츠 관리, 원격 파일 관리PUT과 POST 모두 데이터를 등록할 때 사용할 수 있지만, 약간 다른 특징이 존재한다PUT과 POST의 각각의 특징에 대해서 아래서 다룰 것이다.HTML FORM 사용웹 페이지 회원 관리GET, POST만 지원회원 관리 시스템API 설계 - POST 기반 등록회원 목록 /members -> GET정렬 등의 검색 옵션이 필요하면 query parameter를 사용하자회원 등록 /members -> POST컬렉션에, 회원을 관리하는 uri(/members)에 데이터를 넣으면 회원이 새로 등록..

WEB/HTTP 2024.07.08

[HTTP] HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

HTTP 메서드 활용클라이언트에서 서버로 데이터 전송HTTP API 설계 예시클라이언트에서 서버로 데이터 전송데이터 전달 방식은 크게 2가지가 있다.쿼리 파라미터를 통한 데이터 전송GET주로 정렬 필터(검색어)ex) ?q=hello메시지 바디를 통한 데이터 전송POST, PUT, PATCH회원 가입, 상품 주문, 리소스 등록, 리소스 변경4가지 상황 정적 데이터 조회이미지, 정적 텍스트 문서동적 데이터 조회주로 검색, 게시판 목록에서 정렬 필터(검색어)HTML Form을 통한 데이터 전송회원 가입, 상품 주문, 데이터 변경HTTP API를 통한 데이터 전송회원 가입, 상품 주문, 데이터 변경서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)정적 데이터 조회쿼리 파라미터를 사용하지 않는다 정리이미지..

WEB/HTTP 2024.07.08

[Java] 11. OOP - 내부 클래스(Inner Class), 익명 클래스

내부 클래스(inner class)내부 클래스는 AWT나 Swing같은 GUI Application 이벤트 처리를 제외하고는 잘 쓰이지 않는다.이런 게 이렇게 작동하는구나 정도만 이해하고 넘어가자내부 클래스란?내부 클래스: 클래스 내에 선언된 클래스클래스에 다른 클래스 선언하는 이유 : 두 클래스가 서로 긴밀한 관계에 있기 때문내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점이 있고, 외부에는 불필요한 클래스를 감춰 코드 복잡성을 줄일 수 있다.class A { // class B { // }}class A는 외부 클래스, class B는 내부 클래스이다.이 때 내부 클래스인 B는 외부 클래스인 A를 제외하고..

[Java] 10. OOP - 인터페이스(Interface)

인터페이스(Interface)인터페이스란?일종의 추상 클래스추상 클래스처럼 추상 메서드를 갖지만 추상화 정도가 높아서 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.오직 추상메서드와 상수만을 멤버변수로 가질 수 있다.추상 클래스를 '미완성 설계도'라고 하면, 인터페이스는 아무 것도 없고 밑그림만 그려져 있는 '기본 설계도' 라고 할 수 있다.인터페이스는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다.인터페이스의 작성class 대신 interfaceinterface에도 클래스와 같이 접근 제어자로 public 또는 default를 사용할 수 있다.interface 인터페이스이름 { public static final 타입 상수이름 = 값; public ab..

[Algorithm/Greedy] 동전 거스름돈 문제

동전 거스름돈(Coin Change) 문제란?동전 거스름돈의 최소 동전 수를 찾는 그리디 알고리즘달성 목표 : 최소 동전 수제한 조건 : 거스름돈의 가치가 같도록 한다 그리디 방식의 동전 거스름돈을 결정하는 해결 문제매 순간마다 남은 거스름돈의 총액을 초과하지 않는 조건하에 ‘greedy, 욕심내어’ 가장 큰 액면의 동전을 취함가장 큰 액면을 가진 동전부터 차례로 선택하여 남은 거스름돈 액수보다 작을 경우 해답에 포함시킨다슈도 코드동전의 액면은 500원, 100원, 50원, 10원, 1원이라고 할 때입력 : 거스름돈 액수 W출력 : 거스름돈 액수에 대한 최소 동전수1. change=W, n500=n100=n50=n10=n1=0 // n500, n100, n50, n10, n1은 각각의 동전 카운트2. w..

Algorithm/Greedy 2024.07.04

[Algorithm/Greedy] 웰시-포웰 알고리즘(Welsh-Powell algorithm)

웰시-포웰 알고리즘이란앞에서 봤던 그리디 그래프 컬러링 알고리즘은 1번 정점부터 그래프 컬러링을 시작했다.시작한 정점에 따라 사용한 색상의 수가 달라질 수 있다. 이를 조금 향상시키는 방법은 차수(degree, 정점에 연결된 에지의 개수)가 높은 정점부터 차례대로 그래프 컬러링을 수행하는 것이다.이를 웰시-포웰 알고리즘이라고 한다.모든 정점을 차수에 대한 내림차순으로 정렬하고 배열에 저장한다정렬된 배열에서 색상이 지정되지 않은 첫 번재 정점을 선택하고(배열에서 색상이 지정되지 않은 것들 중에서 차수가 제일 높은 것), 이 정점과 연결된 모든 정점을 조사하여, 아직 사용되지 않은 색상을 해당 정점(아까 말한 차수가 제일 높은 정점)에 지정한다. 이 색상을 C라고 지칭하자.정렬된 배열에서 색상이 지정되지 않..

Algorithm/Greedy 2024.07.04