Exception classes 코틀린에서 모든 예외 클래스는 Throwable 클래스를 상속받고 있습니다. 모든 예외 클래스는 메시지, 스택 트레이스, optional cause를 가지고 있습니다. 예외 객체를 던지기 위해서는 throw 식을 사용합니다. fun main() { throw Exception("Hi There!") } 위 코드를 실행시키면 아래와 같이 예외가 발생됩니다. Hi There이라는 메시지를 주고, 어느 위치에서 오류가 발생했는지 스택 트레이스를 보여줍니다. Exception in thread "main" java.lang.Exception: Hi There! at FileKt.main (File.kt:2) at FileKt.main (File.kt:-1) at jdk.inter..
코틀린과 자바의 대표적인 차이점이 몇 가지 있는데 그중 Null Safety에 대해서 기록. Java와 같은 여러 언어들은 기본적으로 객체에 Null 값을 허용해 줍니다. 그렇기 때문에 Null 객체를 호출해서 사용을 하려고 하고, 이때 null 참조 예외 ( == NullPointerException == NPE )가 발생합니다. 정말,, 많이 본 오류 ^^,, 그래서 코틀린은 객체가 기본적으로 Null을 허용하지 않도록 해서 NPE 오류를 없애려고 합니다. 하지만 기본 값이 Non-Null이지 Nullable로 객체를 선언할 수 있습니다. Non-Null, Nullable 객체 선언 var a: String = "abc" // 기본적으로 a 변수를 선언하고 값을 할당하는 경우 Null이 아님을 의미 ..
@Resource, @Autowired, @Inject 이 어노테이션들은 JAVA를 이용해서 개발을 해봤다면 한번쯤은 봤을 어노테이션들입니다. 3가지 다 의존 객체를 자동으로 주입할 때 사용한다는 공통점이 있습니다. 그럼 차이점은 무엇일까요? 바로 서로 의존 객체를 찾는 방식이 다르고, 사용환경이 다릅니다. 1. @Resource @Resource는 자바에서 제공해주는 어노테이션으로 특정 프레임 워크에 종속적이지 않습니다. 이름 → 타입 → @Qualifier 순서로 객체를 찾습니다. 못찾을 경우 @Resource(name='test') 와 같이 name 속성을 이용해서 의존 객체를 찾습니다. 멤버변수, setter메소드에 사용합니다. 2. @Autowired @Autowired는 스프링 프레임워크에서 ..
Spring 에서 어노테이션을 이용한 설정이 불가능한 경우 주로 xml파일을 이용해서 환경설정을 해줍니다. 아래는 xml을 이용해서 직접 bean을 등록해준 예시입니다. 하지만 @Configuration 과 @Bean 어노테이션을 사용하면 xml에 위와 같이 선언해주지 않아도 환경설정이 가능합니다! 사용방법 @Configuration 애플리케이션 컨텍스트(빈 팩토리)가 사용할 설정정보라는 표시를 해주는 어노테이션. import org.springframework.context.annotation.Configuration; @Configuration public class SampleConfig { }이렇게 Class위에 @Configuration 만 붙여주면 Spring은 해당 클래스가 설정을 담당하는 ..
람다 표현식이란? JAVA8에서 나온 대표적인 새로운 기능으로, 함수형 프로그래밍에서 사용 가능한 이름이 없는 익명 함수 입니다. 이전 JAVA버전에서 할 수 없었던 일을 할 수 있도록 만들지는 않지만 동적 파라미터등을 이용할 때 코드를 간결하게 작성함으로써 유연한 코드 작성이 가능합니다. 람다 특징 익명성 : 보통 메서드와 다르게 이름이 없는 익명 표현식 함수형 : 특정 클래스에 종속되지 않는 '함수' 지만, 보통 메서드처럼 파라미터, 바디, 반환형식, 예외 리스트를 포함 전달 : 람다 표현식을 파라미터나 변수로 저장 가능 간결성 : 익명 클래스처럼 잡다한 코드를 작성할 필요가 없음 람다 구성 (Sample a, Sample b) -> a.getSize().compareTo(b.getSize()); 위..
1. Proxy server란? : Proxy는 '대신'이라는 의미를 가지고 있고, 서버와 클라이언트 사이에서 중계기능을 하는 서버가 프록시 서버이다. 보안상의 문제로 시스템이 방화벽을 가지고 있거나, 직접 통신이 어려운 경우 대리로 통신을 수행하는 기능을 Proxy, 그 기능을 하는 것이 Proxy 서버 라고 정의할 수 있다. 2. Proxy server 사용이유 1) 대리로 통신을 수행해주기 때문에 보안 상의 이유로 2) 시간 절약 : 프록시는 프록시 서버에 요청된 내용들을 캐시에 저장해놓기 때문에 동일한 요청 시 시간 및 리소스 사용을 절약할 수 있다. 3) 트래픽 분산 : 로드 밸런싱 기능을 재공해서 여러대의 분산된 서버에 트래픽에 분산시켜 주기도 한다. 3. Forward Proxy : 일반적인..
컴퓨터는 0, 1 과 같은 이진수(기계어)만 이해하는 기계라는건 모두가 알고 있다. 그런데 우리는 eclipse, vs code, IntelliJ 등을 이용해서 java, js, python 등의 코드를 작성하고 이것으로 컴퓨터를 동작시킨다. 이 고급언어를 컴퓨터가 이해할 수 있는 기계어로 번역해주는게 바로 컴파일러와 인터프리터다. 컴파일러와 인터프리터는 언어를 다른 언어로 번역해주는 프로그램이라는 점이 동일하다. 그럼 차이점은 무엇일까? 1. 컴파일러 (Compiler) 코드의 전체를 한번에 기계어로 번역한다. 모든 코드를 한번에 번역하기 때문에 처음에는 시간이 오래걸리지만 한번 번역해 놓으면 바이너리 파일이 생성되어 메모리에 저장되기 때문에 사용하는 메모리는 많지만, 실행시에 번역하는 시간이 적어 수..
알고리즘을 풀던 중 == 와 equals 때문에 한참을 헤맸던 적이 있다. 분명 같은건 줄 알았는데.. 이제 알면 됐다.. == 와 equals 의 차이점을 정리하기 전에 CBV와 CBR에 대해 정리해보자. 1. CBV vs CBR CBV ( Call By Value ) : 값에 의한 호출 이라는 뜻으로, 함수를 호출하면 그 변수를 그대로 전하는게 아니라 변수를 복사해서 전달하기 때문에 원본 변수에는 변화가 없습니다. CBR ( Call By Reference ) : 참조에 의한 호출 이라는 뜻으로, 함수를 호출하면 그 변수의 주소값이을 복사하여 전달하므로, 원본에 접근이 가능합니다. 많은 예제들을 보면 알겠지만 CBV에 대한 예제는 java로 구현이 가능하지만, CBR에 대한 예제는 포인터 등을 사용하..