본문 바로가기

분류 전체보기

(276)
JAVA - Lambda, Stream 자바 8부터 가장 큰 변화는 함수형 프로그래밍, 람다, 스트림이 생겼다는 점이다. 함수형 프로그래밍이란 '어떻게'가 아닌 '무엇에'에 집중하는 프로그래밍 방식이다. 스트림과 for,if문의 차이로 생각하면 쉽다. 이번 블로그에서는 람다에는 무엇이 있고 어떻게 사용하는지와 Stream을 사용하는 방법에 대해서 전체적인 정리를 해보고자 한다. 람다와 함수형 인터페이스 람다란 익명 클래스를 좀더 간소화하여 사용하는 방식이다. 또한, 람다를 사용하기 위해서 함수형 인터페이스를 보통 사용하곤 한다. T : 클래스를 의미 R : 반환 값을 의미 기본적으로 import는 java.util.function 익명 클래스 new Class(){} 다음과 같은 클래스가 있다고 가정하자 아래 프로그램의 메서드는 모두 짝수를 ..
DataBase - Plus 이번 블로그에서는 그동안 정리하지 못한 추가적인 내용에 대해서 정리해보고자 한다. 1. DDL vs DML vs DCL 모두 기적으로 DBMS에서 사용되는 SQL언어의 종류로 SQL을 위의 세가지의 범주로 구분한다고 이해하면 쉽다. DDL (Data Definition Language) - 데이터 베이스 구조를 정의하거나 변경하는데 사용된다. 구조는 테이블, 스키마, 제약 조건, 인덱스 등을 의미한다. - 객체를 관리 (테이블, 뷰, 인덱스 등) - 스키마를 정의하고 조작하는데 사용된다. 주요 명령어 CREATE : 데이터베이스 객체 생성 ALTER : 데이터 베이스 객체의 구조를 변경 DROP : 데이터 베이스 객체를 삭제 TRUNCATE : 테이블 내의 모든 데이터 삭제 RENAME : 데이터 베이스..
java.lang.IllegalArgumentException: org.hibernate.query.SemanticException: query specified join fetching, but the owner of the fetched association was not present in the select list 해당 오류는 조인 관계에서 발생하는 오류로 만약, select의 주체로 조인의 주인이 조회되지 않는 경우, 발생합니다. 예를 들어, 부모-자식이 있고 from에 부모가 있다고 가정했을 때, 부모 자체를 조회하지 않았을 때 발생하는 오류입니다.
Effective JAVA - Item25 : 톱 클래스 파일은 한 파일에 하나만 담아라 주제 : 톱클래스는 한 소스파일 안에 하나만 담아라. 아래 예시를 살펴보자 // Utensil.java class Utensil { static final String name = "pan"; } class Dessert{ static final String name = "cake"; } // Dessert.java class Utensil { static final String name = "pot"; } class Dessert{ static final String name = "pie"; } // Main.java public static void main(String[] args){ System.out.println(Utensil.name, Dessert.name); } 위와 같이 같은 내용이 있..
Effective JAVA - Item24 : 멤버 클래스는 되도록 static으로 만들어라 주제는 멤버 클래스는 되도록 static으로 만들어다 이고 자세히 살펴보자 우선, 멤버 클래스는 보통 중첩 클래스를 의미한다. 중첩 클래스란 클래스 내부에 정의된 클래스로 enum 클래스가 될 수도 있고 익명클래스가 될 수도 있다. 또한, 중첩 클래스는 자신을 감싼 클래스 안에서만 사용되어야 하고 그렇지 않다면 톱 클래스로써 사용되어야 한다. 중첩 클래스의 종류 정적 멤버 클래스 비정적 멤버 클래스 익명 클래스 지역 클래스 - 정적 멤버 클래스를 제외한 나머지 클래스는 inner class를 의미한다. 각각의 중첩 클래스를 언제 그리고 왜 사용하는지 알아보자 1. public static 멤버 클래스 특징 - 바깥 클래스의 private 멤버 접근 가능 - 바깥 클래스와 함께 쓰일때만 용이한 public..
Effective JAVA - Item23 : 태그 달린 클래스보다는 클래스 계층 구조를 활용하라 태그 달린 클래스 - 아래처럼 태그 필드가 있는 코드를 태그 달린 클래스라고 한다. - 두가지 이상의 의미를 표현할 수 있으며, 그 중 현재 표현하는 의미를 태그값으로 알려주는 클래스 public class Figure { enum Shape {RECTANGLE, CIRCLE}; // 태그 필드 - 현재의 모양을 나타냄 final Shape shape; // Rectangle 일 때만 사용된다. double length; double width; // Circle 일때만 사용 double radius; // 원 생성자 Figure(double radius){ shape = Shape.RECTANGLE; this.radius = radius; } // 사각형 생성자 Figure(double length, ..
이코테 - 청소년 상어 with JAVA 이 문제는 로직은 간단하다. 데이터의 수가 적고 범위가 한정적이라 완전탐색으로 가능하다. 하지만 조건이 많아 실수가 발생해서 기록을 해두려고 한다. 세가지를 주의하자. 문제의 조건을 분리해두자. 설계를 하고 코딩을 하자. int[][] 는 복사시 반복문을 통해 항상 따로 해주자. 코드 import java.util.*; // 청소년 상어 public class Q2 { public static int[][] size_map = new int[4][4]; public static int[][] dir_map= new int[4][4]; public static List fish_size = new ArrayList(); // 상어 정보 public static int[] pos = {0, 0}; publi..
복합 인덱스 적용기 이번 블로그에서는 개인 프로젝트에 복합 인덱스를 적용해보면서 느끼는 고찰에 대해 기록해보려고 한다. 배경 회원 엔터티가 프로젝트내의 존재한다. 구성은 userId, userPwd, userName, userNumber, userAddress, userEmail 이 존재하고 upadatedDate, createdDate 가 부수적으로 존재한다. 검색 API를 구성했다. - 동적 쿼리로 구성 기본적으로 동적 쿼리로 구성해 조건에 있으면 해당 조건을 넣어 검색하고 없으면 해당 조건을 빼고 검색했다. 예를 들어, 이름과 주소로만 검색 가능하고 모든 조건을 넣어서도 검색이 가능하다. 또한, 동적 쿼리 구성시 BooleanExpression을 각 필드마다 null여부를 체크해서 반환해주는 메서드를 모두 만들고 좀 ..