[Java] 예외 계층과 실무에서의 예외 처리 방법
·
BackEnd/Java
언체크 예외는 체크 예외와 기본적으로 동일하다. 차이가 있다면 예외를 던지는 throws를 선언하지 않고 생략 할 수 있다. 생략한 경우 자동으로 예외를 던진다.RuntimeException을 상속받은 클래스는 언체크 예외가 된다.언체크 예외는 컴파일러가 체크 안하기 때문에 throws로 나열하지 않아도 됨.예외도 객체다. 필요한 필드와 메서드를 가질 수 있다.try catch finallytry -> 정상적인 흐름catch -> 예외 흐름finally -> 마무리 흐름finally 선언시 try catch블록의 흐름에 상관없이 finally 안의 로직은 반드시 실행하게 된다.try { client.connect(); client.send(data); } catch (NetworkCl..
[Java] Exception과 throw, throws, try catch 가 언제 사용 되는가
·
BackEnd/Java
저는 이전에 예외를 처리할 때, 그저 컴파일러에서 추천해주는 해결법으로 alt enter 클릭으로 수정하는 것 밖에 안했습니다. 에러를 대응 하는 방법을 잘 몰랐는데 이번에 공부하면서 알게 되었기 때문에 포스팅 합니다.Exception자바의 예외 처리는 다음 키워드를 사용한다.try, catch, finally, throw, throwsObject -> Throwable -> ExceptionRuntimeException을 제외한 Exception을 상속한 예외는 모두 컴파일러가 체크한다RuntimeException은 언체크 예외, 애플리케이션 구동중 발생하는 에러알 수 없는 에러이기 때문에 좋지못하다.예측 불가능한 에러는 좋지못한 에러 -> Unchecked Exception예측 가능한 컴파일 단계에서..
[Java] 추상 클래스와 인터페이스
·
카테고리 없음
좋은 프로그램은 "제약이 있는 프로그램" 이다추상 클래스동물과 같이 부모 클래스를 제공하지만 실제 생성되면 안되는 클래스를 추상 클래스라고 한다.상속을 목적으로 사용되고 부모 클래스 역할을 담당한다. 추상 클래스는 일반 클래스랑은 같은데 new 키워드로 생성이 안된다. 추상 메서드부모 클래스를 상속 받는 자식 클래스가 반드시 구현해야 하는 메서드를 부모 클래스에 정의 추상 메서드가 하나라도 존재하는 클래스는 추상 클래스로 선언해야한다. 추상 메서드는 기존 메서드와 완전히 같지만, 메서드 바디가 없고, 자식 클래스가 메서드를 반드시 오버라이딩 해야한다는 제약이 추가된 것이다. 정리: 추상 클래스는 인스턴스 생성 불가능. 추상 메서드는 추상 클래스 내부에 구현되어야함. 추상 클래스를 상속받은 자식 ..
[Git] Git에 대한 이해와 형상 관리 도구란?
·
공부중
Git 이란?Git은 간단하게 얘기하면 형상 관리 소프트웨어이다.명령어 단위로 이루어진 프로그램이다.Git 특징Git은 빠른 속도, 단순한 구조를 가지며 직관적이고 명확하다.분산형 저장소를 지원하며, 비 선형적 개발이 가능하다.많은 사람이 Git을 어렵게 느끼는 이유중 가장 큰 점은 협업에서 발생한다.Git을 단순 소스코드 버전관리 및 저장소 느낌으로 사용한다면 크게 어렵지 않다.Github기준으로 그냥 git add -> commit -> push해서 사용하면 크게 문제가 없을 것이다.이후 생성된 repository에서 그냥 clone하고 사용하거나 fork하거나 하면 되니까..단순하게 혼자 소스코드를 관리할래 라면 그냥 대충 찾아보고 써도 된다.하지만, Git은 위에도 말했듯이 형상 관리 도구 이다...
[DB] 효율적인 설계를 위해 어떤 SQL을 사용해야 할까? RDBMS vs NoSQL과 DB에서의 수직 확장(scale-up)과 수평 확장(scale-out)
·
BackEnd
1. RDBMS의 장단점 적어보기장점RDBMS는 스키마에 따라 데이터를 정의하기 때문에, 명확한 데이터 구조를 가짐각 데이터들은 중복없이 한 번만 저장하여 무결성을 유지할 수 있음.단점테이블-테이블 간의 쿼리를 작성할때, RDBMS는 JOIN문을 사용하게 되는데, 이 때문에 복잡한 쿼리가 만들어 질 수 있음.외래키를 사용하여 테이블을 구성하는 경우가 매우 빈번하기 때문에, scale-out 즉, 서버를 늘리는 과정이 매우 복잡하고 어려움데이터가 스키마로 정의되어 있기 때문에 유연한 데이터 관리가 힘듬.2. NOSQL의 장단점 적어보기장점NOSQL은 RDBMS의 단점과 반대로 데이터를 스키마로 정의하지 않기 때문에 자유로운 데이터 구조를 가질 수 있으며, 이는 사용자 입장에서 유연한 데이터 관리를 할 수 ..
[Java] 이것이 자바다 - 3장 연산자
·
BackEnd/Java
오버플로우(overflow)와 언더플로우(underflow)오버플로우는 타입이 허용하는 최대 값을 벗어나는 것을 말한다. 반대로 언더플로우는 타입이 허용하는 최소값을 벗어나는 것을 말한다.정수 타입 연산에서 오버플로우 또는 언더ㅡㄹ로우가 발생되면 실행 에러가 발생할 것 같지만, 그렇지는 않고 해당 정수타입의 최소값 또는 최대값으로 되돌아간다.예를 들어, byte 타입의 최대값인 127에 1을더하면 오버플로우 -127에 1을 빼버리면 언더플로우다.정확한 계산은 정수연산으로산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋다.정확한 연산을 원한다면 정수연산으로 변경해서 다음과 같이 계산하는 것이 좋다.나눗셈 연산의 오류처리나눗셈 또는 나머지 연산에서 좌측 피연산자가 정수이고 우측 피연산..
[Java] 이것이 자바다 - 2장. 변수와 타입
·
BackEnd/Java
프로그래머가 직접 입력한 값 - 리터럴(literal)Long 타입은 수치가 큰 데이터를 다루는 프로그램에서 사용된다.은행이나 과학분야에서 사용함기본적으로 컴파일러는 정수 리터럴을 int타입 값으로 간주하기 때문에 int 타입을 초과하는 리터럴은뒤에서 소문자l이나 대문자L을 붙여 long타입 값임을 컴파일러 에게 알려줘야함하나의 문자를 작은 따옴표로 감싼 것을 문자 리터럴이라고 한다.유니코드로 변환되어 저장된다.유니코드 ?세계 각국의 문자를 0 - 65535 숫자로 매핑한 국제 표준 규약double floatdouble은 float보다 약 2배의 유효 자릿수를 가지기 때문에 보다 정확한 데이터 저장이 가능하다.double이라는 이름도 float보다 2배의 정밀도를 갖는다는 의미String 타입은 자바 기..
[Spring] 스프링이 사랑한 디자인 패턴 - 1
·
BackEnd
디자인 패턴이란?디자인 패턴이란 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션 같은 것입니다. 디자인 패턴 계의 교과서로 불리는 [GoF의 디자인패턴]에서는 객체지향적 디자인 패턴의 카테고리를 "생성 패턴(Creational Pattern)", "구조 패턴(Structural Pattern)", "행동 패턴(Behavioral Pattern)" 3가지로 구분하고 있습니다. 어댑터 패턴(Adapter Pattern) 어댑터를 번역하면 변환기 라고 할 수 있다. 변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다. 어댑터 패턴은 개방 폐쇄 원칙을 활용한 설계 패턴이라고 할 수 있다. 어댑터 패턴은 합성, 즉 객체를 속성으로 만들어서 참조하..