반응형

Java/Basic 22

[Java] Lambda 개념 및 사용

1). 람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어다. 2). 람다의 특징 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다. - 커링 (Curring) 3). 익명함수? 함수의 이름이 없는 함수. 익명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있다. 이 일급 객체란? : 일반적으로 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체를 가르킨다. 함수를 값으로 사용 할 수도 있으며 파라미터로 전달 및 변수에 대입과 같은 연산들이 가능하다. 4). 람다의 장단점 장점 1. 코드의 간결성 - 람다를 사용하면 불필요한 반복문의 삭제가 가능하며..

[Java-Basic] Java 언어의 특징 및 OOP의 특징

자바는 제임스 고슬링 형님이 만든 대표적인 객체지향언어이다. 자바의 특징을 5가지로 나누어본다면 1). 객체지향 프로그래밍(OOP) 2). 자동 메모리 관리 (Garbage Collector) 3). 운영체제에 독립적 실행 -> JVM 4). 멀티쓰레드 지원 5). 동적 로딩 지원 한가지씩 살펴보자 객체지향 프로그래밍 (OOP) 객체지향프로그래밍의 대표적인 특징을 빼놓을 수 없을것이다. 대표적 특징에는 상속, 캡슐화(은닉화), 다형성, 추상화 가 있다. 객체지향 프로그래밍은 저러한 특징들을 이용하여 코드의 재사용성을 좋게 하고, 유지보수를 용이하게 만들며 개념별 관리가 편리하다. 1). 상속 : 부모 클래스의 변수 및 메서드 등을 자식 클래스가 전부 물려받아 사용(접근) 할 수 있는 성질 -> 자식클래스..

[Java-Basic] 함수형 인터페이스 (Functional Interface) 예제

Java 개발자인데 모르는것들이 너무 많아 하나하나 공부하다보니, 함수형 인터페이스를 접하게되었다. 우선 사용법에 대해 알아보자..! 함수형 인터페이스를 사용하는 이유? 자바의 람다식은 함수형 인터페이스로만 접근이 가능하기 때문에, 람다식 사용시 미리 정의된 인터페이스를 사용할 수 있다. java.lang.function 패키지 Function T 타입의 input을 받아, R 타입을 Return하는 함수 인터페이스 주로 매개변수를 반환값 타입으로 변환 후 반환할때 사용한다. 사용 : 타입 변환 예제가 아닌 단순한 덧셈 곱셈 예제로 만들었다... apply() 메소드를 오버라이드 하여 input + 10하는 메소드로 만들어보자. import java.util.function.Function; public..

[Java-Basic] Comparator과 Comparable을 사용한 배열 정렬

1. Interface Comparable 정의 : 기본적으로 정렬하는 기준이 되는 메소드를 정의하는 인터페이스 사용 : 쉽게 말해 Arrays.sort() 메서드는 아래와 같은 정렬 기준인데, 기준을 반대로 역정렬 하고싶을때 등등 사용 => 기본정렬기준 자체를 변경하여 사용하고 싶을때 ex). Integer,Double등 => 오름차순 정렬 String => 사전순 정렬 compareTo()메소드를 사용해서 정렬하는데, 현재객체 return 음수 현재객체 == 파라미터 => return 0 현재객체 > 파라미터 => return 양수 양수인 경우에는 두 객체의 자리가 바뀌고, 음수 또는 0이면 객체의 자리가 그대로 유지된다. 사용방법 : 기존 sort()메소드를 재정의 했기때문에 그대..

[Java-Basic] List<Obj> 특정값 기준 중복제거 방법

자주 필요해서 정리해 놓으려고 한다! 우선 제네릭과 람다를 잘 몰라서.. 공부를 해야겠다...ㅠ 상황 : Object list에서 Grouping 할 수 있는 컬럼을 기준으로 중복을 제거하려고 한다. 보통 이런상황에서는 for문을 여러번 돌려서 사용했다. 하지만 매번 for문을 돌리거나 특정 컬럼을 기준으로 쿼리를 뽑아와서 사용하기에는, 같은 상황이 몇번 발생한다.. 그래서 다같이 편할 수 있도록 Util을 만들어놓고 사용하고자 하여 조사를 해보았다. 해결 : 1). pom .xml => 기존 aspectj Version을 1.6.x 대를 사용했다. 하지만 하위 에러 발생. Error Code : error : org.aspectj.apache.bcel.classfile.ClassFormatExcepti..

[Java-Basic] Java 정규표현식

Java 정규표현식 만드는 방법 기록!!!!! 표현식설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 문자 [단 ‘'는 넣을 수 없습니다.] * 앞 문자가 0개 이상의 개수가 존재할 수 있습니다. + 앞 문자가 1개 이상의 개수가 존재할 수 있습니다. ? 앞 문자가 없거나 하나 있을 수 있습니다. [] 문자의 집합이나 범위를 표현합니다. -기호를 통해 범위를 나타낼 수 있습니다. ^가 존재하면 not을 나타냅니다. {} 횟수 또는 범위를 나타냅니다. () 괄호안의 문자를 하나의 문자로 인식합니다. | 패턴을 OR 연산을 수행할 때 사용합니다. \s 공백 문자 \S 공백 문자가 아닌 나머지 문자 \w 알파벳이나 문자 \W 알파벳이나 숫자를 제외한 문자 \d [0-9] 숫자 \D 숫자를 제외한 모든 문자 (?..

[Java-Basic] JVM 메모리구조 및 개념

JVM(Java Virtual Machine) 이란? 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체 CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. JVM은 크게 ClassLoader / Execution Engine / Garbage Collector / Runtime Data Area 로 나뉜다. 각각의 아이들이 무엇을 의미하는지 알아보자.! JVM의 구성 Class Loader Java 소스파일 (.java)를 .class 파일(바이트코드)로 컴파일 한다. 생성된 클래스파일들을 엮어서 JVM이 운영체제로부터 할당받은 메모리영역..

[Java-Basic] Reflection API 편리하게 사용하여 Vert.x Verticle 사용하기

Vert.x로 데몬을 만들다가 instance, worker 및 poolsize를 설정하는것을 편리하게 Annotation으로 만들때 사용하려고 찾아보다 알게된 내용. 언제든지 편하게 사용할 수 있을것 같아 기록..! => Reflection API를 편리하게 사용할수 있게 해주는 라이브러리가있다!!! org.reflections reflections 0.9.10 요 라이브러리를 사용하면 아주 편리하게 Annotation에 정해놓은 값들을 꺼내서 사용할 수 있다. 아래는 사용부분 코드 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Verticle { boolean isWorker() default true; ..

[Java/Basic] Queue란 ? Stack이란? 사용법 및 기본개념

Queue와 Stack을 알아보려고 한다. Queue(큐) Queue는 FIFO First in First Out 구조로, 먼저 들어간 데이터를 먼저 꺼내는 방식이다. 데이터를 일시적으로 쌓아두기 위한 자료구조 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행 그래프의 넓이 우선 탐색(BFS)에서 사용 버퍼링(담아놓고 순차적으로) Enqueue : 큐 맨 뒤에 데이터 추가 Dequeue : 큐 맨 앞쪽의 데이터 삭제 Queue Method 메서드 설 명 add( ) 객체 추가 성공 : true, 실패(저장공간이 부족 등) IllegalStateException 발생 remove( ) 객체삭제 비어있으면 NoSuchElementExcep..

[Java/Basic] Daemon Thread란? 백그라운드 실행데몬?

프로젝트를 진행하다보면 Daemon Thread를 사용해야 할 경우가 있다. 본인은 서버가 시작될떄 background로 떠있는 daemon이 필요하여, Daemon Thread를 사용하였다. 자 그럼 Daemon Thread란? 무엇인가. 자바에서 스레드는 각자의 작업이 끝날때까지 계속해서 작업을 하게 되어 있다. Daemon Thread는 main Thread가 종료될때 같이 종료가 되는 점을 이용한 자식 Thread라고 보면된다. Daemon Thread : 주 스레드의 작업을 돕는 보조적인 역할을 수행 : 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동종료 => 워드 프로세서의 자동저장, 미디어 플레이어의 동영상 및 음악재생 등 Daemon Thread 설정 방법 사용법은 간단하다. Threa..

반응형