Backend(96)
-
Elasticsearch nested 쿼리, 자바에서 사용하기
postman이나, elasticsearch head에서 아래와 같은 중첩 쿼리를 사용하면 곧바로 원하는 결과를 얻을 수(조회) 있습니다. Java-spring framework에서 중첩 쿼리의 데이터 조회는 QueryBuilder 클래스의 nestedQuery메서드를 통해 가능합니다. Spring 에서 중첩쿼리를 이용한 데이터 조회 방법을 바로 알아보겠습니다. license라는 중첩 필드 중 test_type이 '정보처리기사'인 데이터를 조회할 수 있는 자바코드를 생성하겠습니다. 자바 코드입니다. propertyValues 객체에, license.test_type 을 key 값으로, 찾고자 하는 값인 '정보처리기사'를 value 값으로 넣었습니다. 이것이 하나의 조회 조건이 됩니다. 즉, nestedQ..
2021.01.24 -
[파이썬] 2차원 리스트를 1차원 리스트로 만들기
2차원 리스트를 1차원 리스트의 형태로 만드는 것을 flatten이라 부른다. 즉 matrix(2차원 배열)를 리스트(1차원 배열) 형태로 만드는 것이다. my_list = [[1, 2], [3, 4], [5, 6]] 방법 1 - sum 함수 answer = sum(my_list, []) print(answer) >>> [1, 2, 3, 4, 5, 6] itertools 라이브러리 활용 방법 2 - itertools.chain print(list(itertools.chain(*board))) >>> [1, 2, 3, 4, 5, 6] 또한, itertools 라이브러리에는 iterable한 객체를 연결하여 반환하는 itertools.chain() 함수가 있다. itertools.chain() 메서드 인자의..
2020.12.30 -
자바 람다식, lambda expression
람다식 도입 배경 (문제점) 자바는 메서드를 매개변수로 전달하지 못한다. 메서드를 매개변수로 전달하기 위해선 인스턴스 생성 후(인스턴스화)에 해당 메서드를 호출해야 하는 식이었다. 인터페이스가 가진 메소드를 즉흥적(인스턴스화를 거치지 않고)으로 사용하는 것이 목적 (해결책) 메서드를 매개변수로 전달하기 위해 자바8에서 도입된 기능이 람다식이다. 인스턴스화를 거친 후에 메소드를 전달할 수 있는 불편한 점을 람다식으로 해결한다. 람다 표현식 // 람다 표현식 (매개변수 목록) -> { 실행문 } 예시 1) 동일한 패키지 내에서 Car, CarExam 클래스 파일 생성 Car.java package lambda; public class Car { public String name; public int capa..
2020.11.25 -
자바 제너릭 Generic
아래 예시를 보며 generic이 왜 필요한지 느껴보자 feel it Human class public class Human{ private Object height; public void setHeight(Object height){ this.height = height; } public Object getHeight(){ return height; } } 1. Object라는 클래스형의 height라는 필드를 생성 2. height에는 값 할당 가능 3. get 메소드(getHeight) 는 값을 꺼내는 것이기에 리턴 타입 필요 -> public Object getHeight() Main method public class Humanbeing { public static void main(String..
2020.11.25 -
파이썬 딕셔너리 value 기준 정렬 (key, lambda)
1. 딕셔너리의 value를 기준으로 key를 정렬하기 (내림차순 경우) result = { 1: 2, 2: 4, 3: 3, 4: 6, 5: 1 } sorted(result, key = lambda x: result[x], reverse=True) >>> [4, 2, 3, 1, 5] sorted 메서드 sorted(iterable, key, reverse=) iterable 할 자료형을 넣어주고(result), 정렬할 기준을 정한다 (key = lambda x: result[x]) ▶️▶️▶️ result[x]는 각 key에 대응되는 value를 뜻한다. 2. 1번 과정에서 set을 거쳐 전환하기 result = sorted(result.items(), key = lambda x: x[1], revers..
2020.11.22 -
다양한 의존객체 주입 (constructor-arg, property)
다양한 의존 객체 주입 방법 bean 객체 내에 의존객체를 주입하는 대표적인 방법은 생성자(constructor) 주입 기본자료형(property) 주입 리스트 주입 해쉬맵 주입 4가지가 있습니다. 그중에서 constructor-args와 property의 차이점을 알아보겠습니다. 1. Constructor-args: 생성자 - 우선 의존 주입이란 뜻은, 1) 의존성 있는 객체를 2) 외부에서 주입 한다는 뜻입니다. - 여기서 의존성 있는 객체는 StudentDao, 외부에서 주입은 constructor-arg를 통해 이뤄집니다. - 아래 코드는, StudentRegisterService bean객체에 studentDao라는 객체를 주입한 것입니다. - 즉, StudentRegisterService 클래..
2020.11.19 -
Spring container Lifecycle
Spring Container 생애주기 - Spring Container: 프로젝트 내의 여러 클래스 파일들을 bean이라는 형태로 xml에 모아둔 것 스프링 컨테이너 초기화(생성) : Bean 객체 생성 및 주입 스프링 컨테이너 종료 : 스프링 컨테이너가 메모리에서 소멸 ( Bean 객체 소멸 ) Spring Lifecycle 확인하는 2가지 방법 1) InitailizingBean, DisposableBean import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; public class BookDao implements InitializingBean,..
2020.11.18 -
Spring 기본 환경 세팅/ Maven이란?
- Eclipse, Spring tool suite이 설치됐다는 전체하에 포스팅 1. package explorer 창에서 마우스 우클릭 후 new ⏩ other 클릭 2. 입력창에서 maven검색 후, Maven project 선택 3. 아래의 항목 체크 create a simple project (checked) use default workspace location (checked) 4. Group Id와 Artifact Id 이름 설정 - Group Id: 프로젝트 명 - Artifact Id: 모듈 명 (하나의 프로젝트 내에는 하나 이상의 모듈 존재 할 수 있다) 설정 후 Finish 클릭 5. 디렉토리에서 pom.xml 파일 수정 아래와 같이 와 태그 추가해줘야한다. pom.xml - Prod..
2020.11.16 -
예시를 통한 추상 클래스 이해
추상 클래스 한줄 정리: 하위 클래스로 공통된 속성과, 개별 속성(abstract method)을 상속해 줄 상위 클래스 현대차에서는 다양한 종류의 자동차가 생성된다. 각각의 자동차는 각각의 고유한 특징을 갖지만, 현대차의 공통된 특성(엠블럼, 규격 등)을 가질 수 도 있다. 공통된 부분은 취하고, 아닌 부분은 자체(각각의 자동차)에서 구현한다. 이를 자바의 추상 클래스에 빗대어 말하면 추상 클래스는 다양한 종류의 클래스를 생성한다. 각각의 클래스는 각자의 고유한 속성(인스턴스 속성)을 갖지만, 추상 클래스로부터 공통된 속성을 상속받아 사용하기도 한다. 상속받은 부분은 그대로 취하고, 그렇지 않은 부분은 자체 메소드로 구현한다. - ex) HyundaiCar(추상 클래스) => (개별 클래스) Sonat..
2020.11.16