Stream에 많이 사용되는 Collectors에 대해 알아보는 시간을 가져보도록 하겠습니다. 1. Collectors 인터페이스란? Collector 클래스는자바스트림 API에서 제공하는 기능 중 하나로, Stream에서 수행한 연산 결과를 수집하여 다양한 형태의 컬렉션을 반환할 수 있는 정적 메소드를 제공하는 클래스이다. Collectors를 사용하면 요소들을 적절하게 그룹화,분할,집계,변환 할 수 있지만, 이를 위해서는 추가적인 객체 생성이 필요하다. 따라서 스트림의 크기가 작은경우나, 간단한 작업을 처리할때는 Collectors 를 사용하지 않고 직접 구현하는것이 더 효율적이다. 하지만, 스트림의 크기가 크고 복잡한 작업을 수행할 때는 Collectors를 사용하면 코드의 가독성과 유지보수성이 향..
Java에서 주로 사용되는 enum에 대해 정리해보는 시간을 가져보도록 하겠습니다 1. ENUM이란? 자바 1.5버전부터 새롭게 추가된 열거형 상수로, 서로 연관된 상수들의 집합으로 상수 값을 정의하고, 그 외의 값은 허용하지 않는다. enum이 존재하기 전에는 아래와 같이 static final 을 이용하여 모두 상수로 선언해서 사용했었다. public static final String MON = "Monday"; public static final String TUE = "Tuesday"; public static final String WED = "Wednesday"; 추가로 같은 의미를 가지는 상수들끼리 묶어서 class or interface로 구현체를 만들어서 사용했으나, 해당 방법은 서로 ..
Mysql에서 제공하는 DATE_FORMAT 함수는 'DATE' , 'DATETIME' , 'TIMESTAMP' 등의 데이터 타입을 원하는 형식으로 출력하고자 할때 사용하는 함수입니다. 출력형식은 아래와 같이 다양하게 존재하여 날짜값을 다양한 형식으로 출력이 가능합니다. %Y : 4자리 연도를 출력합니다. ex) 2022 %y : 2자리 연도를 출력합니다. ex) 22 %m : 월을 2자리 숫자로 출력합니다. ex) 01 %M : 월의 이름을 출력합니다. ex) February %d : 일을 숫자로 출력합니다. ex) 15 %D : 일을 출력하되, 해당 일이 몇번째 일인지 영어로 출력합니다. ex) 15st %h : 12시간 단위로 시(hour)를 출력합니다. ex) 14 %H : 24시간 단위로 시(h..
1. Nginx 란? NGINX 는 오픈 소스 웹서버 프로그램 중 하나로, Apache보다 동작이 단순하고 동시 접속을 처리하기에 특화된 서버이다. 동시접속자(700)이상이라면 서버를 증설하거나 Nginx 환경을 권장한다고 한다. Nginx가 많이 사용되는 이유는 리버스 서버의 프록시로서의 역할을 수행하고 있기때문에 응용프로그램 서버 앞에 설치되어 사용되고 있다. 클라이언트가 서버에 요청(request)을 하게 되면, 맨 앞에 위치해있는 Nginx가 프록시 서버의 역할을 수행 해 리버스서버(응용프로그램 서버)에 전달해 데이터를 가져오는 기능을 제공한다. 리버스 서버의 프록시 역할을 수행한다고 해서 리버스 프록시라고 사용되는 편이다. Q. 리버스 프록시 없이 응용프로그램으로 요청 할 경우에는? 프록시 서버..
상속 클래스 관련해서 간단하게 정리하고자 포스팅을 남깁니다. 자바에서는 extends를 통해 클래스를 상속받을 수 있다. 자바에서 클래스를 상속받을때, 하위 클래스는 상위클래스의 모든 멤버(필드,메서드 등)을 상속받는다. 하지만 부모 클래스의 생성자는 상속되지 않고 있으므로 부모클래스의 생성자를 하위 클래스에서 super 키워드를 통해 명시적 호출 후 초기화를 진행해줘야 한다. 부모클래스에 기본생성자가 존재할 경우에 super 키워드를 사용하지 않아도 자동으로 적용된다. Q. 부모 클래스에 생성자가 없을 경우 ? 부모클래스에 생성자가 존재하지 않을 경우에 컴파일러가 자동으로 기본 생성자 (매개변수가 없는 생성자) 를 생성해 런타임 오류가 발생하지 않도록 조치를 해준다. 대신 컴파일러가 무조건 기본 생성자..
여러스키마를 종합적으로 사용중일 때 , 테이블명이 사용된 스키마를 조회해야하는 경우가 존재한다. SELECT table_schema FROM information_schema.tables WHERE table_name = '테이블명'; 위의 쿼리로 스키마를 확인 할 수 있다.
Oracle 에서는 seq를 생성 하고 seq명.NEXTVAL 로 설정해주면 자동으로 seq가 채번이 된다 하지만 MySql에서는 seq 개념 자체가 존재하지 않기때문에 Oracle에서 제공해주는 기능처럼 사용자가 프로시저를 만들어 사용해야 되는 차이점이 존재한다. 1. SEQ 테이블 생성하기 SEQ 의 값이 저장되고 변경될 때 사용하는 테이블을 생성해준다. 보통 SEQ 스키마를 따로 생성하여 SEQ.테이블명으로 구분해놓는다. CREATE TABLE "seqTable" ( "seq_nm" varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin NOT NULL, "bgin_val" bigint unsigned DEFAULT NULL, "max_val" b..
JAVA 8 Date API 에서 출시된 LocalDate는 이전에 사용되었던 Calendar 클래스 대체 용도로 많이 사용되고 있습니다. LocalDate는 인스턴스 객체를 생성해주는 new 연산자를 사용하지 않고, of(), now(),parse() 와 같은 Public 정적 패토리 메소드를 이용해 선언되고 있습니다. new연산자를 사용 할 수 없는 이유는 생성자가 아래와 같이 Public이 아닌 Private로 구성되어있기때문입니다. 여기서 하나의 궁금증이 생기지 않나요? 왜 Public으로 생성자를 만들지 않고 Private으로 선언 해 놓았을까???? 이유는 아래와 같습니다. 첫번째, 불필요한 객체 생성을 제한하기 위해서 설정해놓는다. localDate에서 제공하는 함수들중 일부분은 정적메소드(..
기존에 Oracle로 쿼리를 짜는게 익숙해진 상태에서 MySql 로 전환하고 있어 오랜만에 정리하고자 글을 쓰려고 합니다 :) 운영 소스에서 보게된 쿼리중 제일 많이 사용하는 부분이 order by Cast (컬럼 as unsigned) 였습니다. 문자열 char형식으로 구성되어 있으나, 해당 컬럼값에 숫자들이 들어가 있으면 정상적으로 정렬되기 어렵기때문에 cast를 이용하여 정렬할때 많이 사용되는 것 같습니다. 그리하여 Cast에 대해 정리를 가져보는 시간을 가져볼께여 Cast 는 형변환을 제공해주는 함수로서, 아래의 형태로 형변환이 가능합니다. BINARY[(N)] CHAR[(N)] [charset_info] DATE DATETIME DECIMAL[(M[,D])] JSON NCHAR[(N)] SIGN..
프로그래머스 Level 1 옹알이(2) JAVA 풀이 과정 머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 초반에 substring을 이용하여 아래와 같이 시도하였으나, substring으로 해당 글자 순서가 아니면 존재하는 문자를 체크를 못한다는 단점이 존재했다. int answer = 0; List avaivable = Arrays.asList(new Strin..