JVM

    Kotlin in Action Part 1. 코틀린 소개

    Chapter 01 - 코틀린이란 무엇이며, 왜 필요한가 대상 플랫폼 = 자바가 실행되는 모든 곳 자바가 사용되는 모든 용도에 적합하면서 더 간결하고 생산적이며 대체 가능한 언어를 만드는 것이 주목적 일반적으로는 Backend 서버 상의 코드와, 안드로이드 디바이스에서 실행되는 모바일 애플리케이션에서 사용됨 정적 타입 지정 언어 자바와 마찬가지로 코틀린도 정적 타입(statically typed) 지정 언어 정적 타입 지정 : 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해주는 것 코틀린의 타입 추론(type inference) : 대부분의 경우 프로그래머가 변수 타입을 명시하지 않아도 컴파일러가 유추 정적 타입..

    AOP의 간단한 개념들

    AOP는 흩어진 Aspect를 모듈화할 수 있는 프로그래밍 기법이다. 클래스들이 비슷한 메소드, 필드, 코드 등을 사용하고 있다면, 개발자가 한 클래스를 수정하려고 할 때 연관된 모든 클래스를 찾아가서 또다시 수정을 진행해야 할 것이다. 이렇듯, 클래스마다 겹치고 반복되는 코드를 Crosscutting Concerns(흩어진 관심사) 라고 부른다. 이는 AOP를 활용해서 해결해야 한다. 위 이미지를 보면 흩어져 있는 부분들을 Aspect를 활용해서 모듈화한 모습을 볼 수 있다. 이처럼 모듈화한 Aspect를 클래스의 어떤 곳에서 사용해야 하는지 정의해주면 된다. 결론적으로, Aspect를 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP이다. 주요 개념 Aspect : 모듈화한 클..

    Spring Boot 핵심 개념들

    Spring Boot 주요 어노테이션 @SpringBootApplication : @Configuration, @EnableAutoConfiguration, @ComponentScan 등의 어노테이션을 합친 것으로, 주로 메인 클래스 위에서 사용 @EnableAutoConfiguration : 미리 설정해놓은 Java 설정 파일들을 빈으로 등록 @ComponentScan : @Component 어노테이션이 붙어있는 클래스들을 찾아서 빈으로 등록 @Component : 선언된 클래스를 빈으로 등록 @Controller : Spring MVC의 Controller로 사용되는 클래스 선언 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMappin..

    Process, Thread, Multi-Thread

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Process, Thread, Multi-Thread Process 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데, 이것을 프로세스라고 부른다. 하나의 애플리케이션을 두 번 이상 실행해서 다중 프로세스를 만들기도 한다. Thread 쓰레드는 사전적 의미로 한 가닥의 실이라는 뜻이다. 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어놓았다고 해서 유래된 이름이다. 하나의 쓰레드는 하나의 코드의 실행 흐름이기 때문에 한 프로세스 내에 쓰레드가 두 개라면 두 개의 코드 실행 흐름이..

    Stream

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Stream 자바 8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 반복자 Stream ※ Stream 이전의 Iterator 반복자 코드 List list = Arrays.asList("김코딩", "이자바", "김인기"); Iterator iterator = list.iterator(); while(iterator.hasNext()){ String name = iterator.next(); System.out.println(name); } ※ Stream으로 변경한 코드 List list = Arrays.asList("김코딩", "이자바", "김인기"); Stream st..

    람다식

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 람다식 자바는 객체 지향 프로그래밍이 개발의 주된 패러다임이었던 90년대에 디자인되었다. 객체 지향 프로그래밍 이전에도 함수적 프로그래밍 언어들이 있었는데, 현업에서 큰 호응을 받지 못했다. 그러나 최근 들어 함수적 프로그래밍이 다시 각광받고 있는데, 병렬 처리와 이벤트 지향 프로그래밍에 적합하기 때문이다. 그래서 객체 지향 프로그래밍과 함수적 프로그래밍을 혼합함으로써 더욱 효율적인 프로그래밍이 될 수 있도록 프로그램 개발 언어의 양상이 변하고 있다. 자바는 함수적 프로그래밍을 위해 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌다. 람다식은 수학자 Alonzo Church가 발표한 ..

    Collection

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Collection 어떤 데이터를 저장할 때, 가장 간단한 방법은 배열을 이용하는 것이다. 배열은 쉽게 생성하고 사용 가능하지만 저장할 수 있는 배열의 객체 수가 배열을 생성할 때 결정되기 때문에 불특정 다수의 객체를 저장하기에는 문제가 있다. 이런 문제점을 해결하기 위해서 자바는 데이터를 저장하기 위해 널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 그런 역할을 하는 컬렉션을 만들고, 관련된 인터페이스와 클래스를 포함시켜 두었다. 그리고 이들을 총칭해서 컬렉션 프레임워크라고 부르고 있다. 또한 몇 가지 인터페이스를 통해서, 다양한 컬렉션 클래스를 이용할 수 있도록 하고 있다. 컬렉..

    Generics

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. Generics 제네릭은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 외부에서 지정하기 위해서 타입을 파라미터 형태로 제공한다. 기존에는 객체에 여러 자료형을 받을 수 있도록 제작하려면 int, float, String 등 모든 자료형에 대해서 클래스를 하나씩 만들어줘야 했다. 이런 불편함을 해결하기 위해 가상의 자료형을 정의하고, 객체를 정의할 때 타입 파라미터로 선언하여 사용할 수 있도록 한 문법이다. 타입 파라미터에는 정해진 규칙은 없지만 일반적으로 대문자 알파벳 한 글자로 표현한다. 타입 인자 설명 T Type E Element K Key N Number V Value R Result p..

    예외처리

    ※ 본문은 코드스테이츠에서 제공해준 학습자료를 공부하고 정리한 내용임을 알립니다. 예외 처리 예외와 예외 클래스 자바에서는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 프로그램 실행 오류가 발생하는 것을 에러라고 한다. 또한 자바에서는 에러 이외에 예외(Exception)이라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 뜻한다. 예외가 발생하면 프로그램은 곧바로 종료된다는 점에서는 에러와 동일하다. 그러나 예외 처리(Exception Handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지 종류가 있다. 하나는 일반 예외(Exception)이고, 다른 하나는 실행 예외(Runtime ..