본문 바로가기
functional Interface, default method 언제 사용하고 왜 등장했는가 1. 자바의 함수에 대해서 2. functional Interface는 언제 사용하는거고 왜 등장 했을까? 3. default method는 언제사용하고 왜 등장했을까? 4.추상클래스,인터페이스 비교 1. 자바의 함수 먼저 일급시민(first class citizen)이라는 용어에 대해서 이해하고 넘어가면 좋은데 사실 정의를 읽어도 무슨말인지 이해가 가지 않는다. 하지만 일급시민의 조건은 아래와 같다고 한다. 변수에 담는것이 가능하다 인자로 전달이 가능하다 반환값으로 전달이 가능하다. 위 3가지 조건을 만족하는것이 자바에서는 객체이다. 하지만, 메서드 자체를 자바에서는 일급값으로 취급하지 않았기 때문에 변수로 담지못하고 인자로 전달하지 못하고 반환값으로 사용하지 못하는 문제가 있었다. 메서드가 일급시민이.. 2021. 9. 7.
자바 객체 생성되는 과정에 대해서 1. KeyPoint 자바 객체가 생성될때 초기화 되는 순서 생성자가 필요한 이유 초기화 블록이 필요한 이유 2. 배경지식 자바 객체 생선 순서를 알아보기 전에 기본적으로 알아야 하는 내용을 간략하게 정리했다. 2.1 Static Blocks 클래스가 로딩되고 클래스 변수가 준비된 후 자동으로 실행되는 블록이다. 한 클래스 안에 여러 개의 static블록을 넣을 수 있고 위에서부터 아래로 순서대로 static block을 실행한다. public class ObjectTest { private final static String CONSTANT = "TEST"; private String instant; public ObjectTest() { System.out.println("No Argument Con.. 2021. 9. 2.
Java 배열에 대해서 1.1 배열이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것이다. 서로 다른 타입은 저장이 불가능하고 같은 타입만 저장할 수 있다. 1.2 배열의 선언과 생성 배열의 선언 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열을 의미하는 대괄호를 붙인다. int [] scores; int scores[]; 배열의 생성 배열을 선언하고 선언한 변수에는 배열을 생성해야한다. new연산자를 이용해서 배열을 생성할 수 있다. int[] score; score = new int[5]; 아래 코드는 선언과 동시에 배열을 생성까지하는 코드이다. 위에서 작성한 코드는 선언과 생성을 따로하고 있다. 즉, 선언을하고 생성을 하지 않으면 메모리 공간만 확보한것이고 값을 저장하지는 못하는것이다. int[] score .. 2021. 8. 27.
자바 String 클래스에 대해서 자바 String 클래스에 대해서 이번 주제에서 다룰 핵심내용을 정리해보면 아래와 같다. String은 내부적으로 char[]배열을 사용해서 문자열을 저장한다. new 연산자로 생성하면 String constant pool에 저장하지 않고 힙에 그대로 저장 String은 불변클래스이므로 매번 새로운 인스턴스를 생성하는것이다. String클래스에 대한 간단한 소개 String클래스는 불변객체이다. String클래스 내부에는 final로 선언된 char [] val 이 들어있다. String클래스를 통해 문자열을 저장하면 내부에서는 char [] 배열을 이용해서 문자열 정보를 저장하는것이다. 만약 ,"ABC"라는 문자열을 String클래스로 저장을 한다면 value라는 char 배열에 한문자씩 들어가는것이다.. 2021. 8. 27.
Thread Dump로 DeadLock 확인하기 1. Thread란 쓰레드는 프로세스 내부에서 작업을 실행해주는 흐름이다. 한개의 프로세스에는 반드시 1개의 쓰레드가 존재하고 여러개의 쓰레드가 동작하기도한다. 2. Thread Dump란 여러개의 쓰레드를 실행을 하게되면 쓰레드끼리 공유하는 자원이 있다. 공유하는 자원에 여러개의 쓰레드가 동시에 접근해서 데이터를 변경하면 의도치않은 결과가 발생한다. 이를 방지하기 위해서 공유자원에 접근하는 쓰레드를 제한하는 방법을 제공해준다. 이렇게 잠금을 획득하는 과정에서 쓰레드끼리 서로 같은 잠금을 획득하는 과정에서 DeadLock이 발생할 수 있는데 쓰레드 덤프를 활용하면 각 쓰레드의 상태를 파악할 수 있다. 쓰레드 덤프는 실행중인 애플리케이션의 쓰레드 상태정보를 알려주는것이다. 3. Thread Dump 활용 .. 2021. 6. 12.
카프카 정리 카프카 아파치 카프카는 링크드인에서 개발한 `데이터 스트리밍 플랫폼`이다. 카프카에서 등장하는 몇가지 개념을 정리해보자. 카프카에서 사용되는 개념 1. 토픽 - 스트리밍 하려는 `특정한 데이터`이다. - 토픽은 이름으로 식별 - 토픽은 파티션으로 나눠진다. 2. 파티션 - 토픽 내부의 파티션은 독립적이고 파티션 내부에서는 offset이라는 값으로 식별한다. - 다른 파티션에도 같은 offset이 존재한다 - 파티션 내부에서만 순서가 보장된다. - 데이터가 파티션에 작성되면 변경될 수 없다. - 파티션에 저장된 데이터는 제한된 기간동안 유지된다(기본값은 1주일) 3. 브로커 - 브로커는 카프카를 구성하는 서버를 의미한다. - 카프카 클러스터는 여러개의 브로커로 구성된것을 의미한다. - 각각의 브로커는 ID.. 2020. 11. 11.