반응형

전체 글 101

AutoBoxing vs UnBoxing

JAVA에 타입은 Primitive 데이터과 Object 데이터로 존재 Primitive Data는 가벼울 데이터로 bool, char , float, int 등 stack 메모리로 존재 Object데이터는 무거운 데이터로 Reference만 stack에 존재하고 데이터는 heap에 존재 이 둘을 호환하기 위해서는 개발자가 직접 설정해야 해야 했지만 J2SE 5 부터 자동으로 Boxing, Unboxing 하여 자동으로 변환 가능하도록 변경 AutoBoxing int -> Integer 와 같이 Primitive type을 Object (Wrapped type) 으로 컴파일러가 자동으로 변환시켜서 사용하는것 int a = 5; Integer b = a; UnBoxing 반대로 Integer -> Int ..

Platform Independent Language

Why is Java called "Platform Independent" 1. 자바는 일정문법에 의해서 코드를 작성후 JAVA 확장자로 저장 2, JAVA 파일을 javac라는 명령어를 통해 클래스라는 바이트코드로 변환 (컴파일) 3. 변환을 통해 생성된 클래스파일을 JVM이 실행됨 JVM이 OS에 종속적이기 떄문에 자바 코드를 OS에 종속적으로 작성할 필요가 없음 따라서 Platform에 독립적으로 코드 작성 가능 JVM java virtual machine : 컴파일된 클래스파일을 구동하는 역할 JRE 1. JVM 2. ByteCode verifier : 바이트 코드가 정상적으로 작성되어 있는지 확인 3. ClassFile Loader : JVM이 자바 클래스 파일을 실행할 수 있도록 자바 클래스파..

JAVA Stream API -1 (기본 사용법)

JAVA Stream : 데이터를 담고 있는 저장소가 아닌 데이터를 처리하는 과정 데이터를 오직 한번씩 처리한다. 병렬처리게 가능하며 중간 단계를 Lazy하게 처리한다. Collection 객체의 Stream 메서드를 통해 생성이 가능하다. 중계 오퍼레이션 Stream을 리턴한다. Stateless / Stateful 오퍼레이션으로 더 상세하게 구분할 수도 있다. (대부분은 Stateless지만 distinct나 sorted 처럼 이전 이전 소스 데이터를 참조해야 하는 오퍼레이션은 Stateful 오퍼레이션이다.) filter, map, limit, skip, sorted, ... 종료 오퍼레이션 Stream을 리턴하지 않는다. collect, allMatch, count, forEach, min, ma..

Effective Final과 lambda expression의 Scope

Effective Final : 메서드 안에 정의 된 필드 값으로 Final이 선언되지 않았지만 사실상 변수를 변경하는 부분이 없는 변수 예제 public static void main(String[] args) { } public void run() { int num = 10; //effective Final //로컬 클래스 class local { void print() { int num=11; System.out.println("hi"); } } //익명 클래스 Consumer anomy = new Consumer() { @Override public void accept(Integer t) { int num=11; System.out.println("hi"); } }; //람다식 Consumer ..

JAVA 기본 함수형 인터페이스 정리

자바가 기본적으로 제공해주는 인터페이스 입출력 값의 유무, 사용기능등에 따라서 다양한 함수형 인터페이스들을 사용 할 수 있다. 기본적인 구현 import java.util.function.Function; public class Plus implements Function{ @Override public Integer apply(Integer t) { return t+1; } } 함수형 인터페이스를 사용 할 시 본래는 클래스를 함수형 인터페이스를 구현하는 형식으로 사용한다. 위의 예제는 Function이라는 기본제공 함수형 인터페이스를 사용하여 Plus라는 클래스를 생성하는 예제이다. 이는 메서드가 한개인 함수형 인터페이스이므로 람다식을 써서 구현 할 수 있다. 람다식을 통해 구현 할 시 클래스 파일을 ..

Elastic Search High Level Client JAVA API (Search API)

*Elastic Search 공식문서 참조 (https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html) * 현재 구동중인 Elastic Search에는 KOSPI 관련 인덱스(주가, 종목명 , 코드) "Stockinfo2"가 저장되어 있는 상태 1. Client initializing Maven 의존성 추가 org.elasticsearch.client elasticsearch-rest-high-level-client 7.6.2 접속하려는 Elastic search API와 동일한 버젼의 클라이언트를 추가하여야 한다 RestHighLevelClient client; public void init() {..

Tools/ELK 2020.08.16

함수형 인터페이스와 람다 표현식

함수형 인터페이스 package prac; @FunctionalInterface public interface AnyInterface { int method1(int a); static void print() { System.out.println("hi"); } default void print2() { System.out.println("hi2"); } } 함수형 인터페이스는 추상 메서드를 1개 가진 인터페이스로 정의 된다. 추상 메서드는 1개이며 Static 메서드 Defalt 메서드 등 다른 한정자 메서드들은 상관 없다. 추상 메서드가 2개 이상이면 @FunctionalInterface 어노테이션에 의해서 컴파일 오류가 발견된다. 함수형 인터페이스는 익명 내부 클래스를 구현하여 사용한다. 익명 내부..

Component와 Component Scan

Component Scan의 동작원리 스프링 프로젝트의 @SpringBootApplication 어노테이션이 존재하는곳에서 스프링 프로젝트가 시작됨 @SpringBootApplication 내부에는 String[] scanBasePackages() default {} 메서드가 존재하는데 이러한 메서드를 통해 @SpringBootApplication이 존재하는 클래스가 속해 있는 클래스를 basepackage로 설정된다. 이렇게 basepackage로 등록된 package 내부에서 빈으로 등록될 Component들을 검색한다. @Component 어노테이션을 기본으로 각각의 용도에 따라 @Repository, @Service, @Controller ,@Configuration으로 세분화 할 수 있으며 위의..

Tools/Spring 2020.08.09

ApplicationContext-2 (Autowired)

Autowired : 스프링의 의존성 주입 어노테이션 , 등록되어 있는 빈들을 명시된 객체에 주입한다. (생성자, 클래스 필드) 기본적인 사용법 - 1 (클래스 변수 주입) package main; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class repo2{ @Autowired repo1 rp1; public repo2(repo1 rp1) { this.rp1=rp1; } } 클래스 변수에 Autowired를 통한 의존성 주입 방식 기본적인 사용법 - 2 (생성자를 통한 주입) package main; import org..

Tools/Spring 2020.08.06

ApplicationContext-1 (Bean을 등록하는 방법)

ApplicationContext : BeanFactory를 상속받은 인터페이스 , 스프링에서 주로 사용 >ApplicationEventPublisher, BeanFactory, EnvironmentCapable, HierarchicalBeanFactory, ListableBeanFactory, MessageSource, ResourceLoader, ResourcePatternResolver 상속 1. 프로젝트 resources에 Spring XML Configuration file을 생성 후 Bean 등록 repo1 package main; public class repo1{ public repo3 giveA(repo3 repo) { return repo; } } repo2 package main; p..

Tools/Spring 2020.08.04
반응형