목록JAVA (17)
고코딩
[JAVA] Java SE, EE, ME의 차이점 Java SE(Standard Edition) Java SE는 데스크톱 및 서버, 최근의 고사양 임베디드 시스템을 위한 표준 자바 플랫폼으로 표준적인 컴퓨팅 환경을 지원하기 위한 자바 가상 머신 규격 및 API 집합을 포함한다. 따라서 Java EE, Java ME 등 다른 플랫폼은 구체적인 목적에 따라 Java SE를 기반으로 API를 추가하거나 자바 가상 머신 규격 및 API의 일부를 택해서 정의된다. Java SE는 Java Software Development Kit(SDK)으로 구현된다. 대체로 처음에 자바개발에 입문할 때 접한다. Java EE(Enterprise Edition) 자바 플랫폼, 엔터프라이즈 에디션(Java EE)는 자바를 이용한..
Java의 직렬화(Serialize)란? Java를 공부하고 Spring을 쓰다보면 계속해서 Serialize를 상속받은 클래스들을 볼 수 있었다. 도대체 직렬화란 무엇일까? 공부를 해보자 직렬화(Serialize) 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술. JVM(Jaava Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술 역직렬화(Deserialize) byte로 변환된 Data를 원래대로 Object나 Data로 변환하는 기술을 역직렬화(Deserialize)라고 부릅니다. 직렬화된 바이트 형태의 데이터를 객체로 변환해서 J..
CSV 파싱 클래스 만들기 회사에서 고도화 프로젝트를 하던 도중 csv파일을 파싱해야할 일이 생겼다. 당연히 csv파일을 파싱하는 라이브러리가 이미 만들어져있었고, 당연히 가져다 사용하려고 했다. 근데 왠걸... 최소 jdk 1.8이상에서만 작동하는 라이브러리였다. 근데 고객사 서버의 자바 버전은 jdk 1.6(아직 까지도 옛날 자바를 쓰는 회사가 많다고 들었지만 실제로 만날 줄 이야...) 결국 csv파일을 파싱하는 코드를 직접 짰다. 근데 짜놓고 나니 왠걸 생각보다 잘 짰었다. 일단 내가 받은 csv파일은 간단한 파일형식이 아니였다. 설명을 시작해보겠다. , 로 구분하면 되는 거 아니야...? Csv 파일은 형식이 정해져 있다. CSV(영어: comma-separated values)는 몇 가지 필드..
java.lang.IllegalArgumentException:Illegal pattern character 'Y' 에러 java.text.SimpleDateFormat을 사용할 때 다음과 같은 에러가 나는 경우가 있다. java.lang.IllegalArgumentException:Illegal pattern character 'Y' 이 경우는 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd");에서 발생하는데 이유는 JAVA 8 이상에서는 SimpleDateFormat에서 Y(대문자)를 쓸수 있지만 JAVA 7 이하에서는 Y(대문자)를 인지를 못해서 y(소문자)를 써야만 한다!! 소문자로 작성하면 ..
JAVA CSV 파일 ""안의 , 무시하기 링크 참고 일하던중 CSV 읽는 형식을 짜야하는 순간이 왔다. 개발환경이 JDK1.6 이여서 openCSV라이브러리가 작동하지 않는다 ㅜㅜ 단순히 한줄씩 읽어 split(",")으로 잘라주고 싶었지만 예외의 상황이 발생했다. 우리가 알고있던 csv파일 형식은 a,b,c,d,f value1,value2,value3,value4,value5 value11,value22,value33,value44,value55 형식일 것이다. 하지만 만약에 값이 문자열이라면? 그 문자열 안에 ,가 들어가 있는게 정상이라면? split(",")으로는 문제가 발생할 것이다. a,b,c,d,f value1,"Value2 have , char value",value3,value4,valu..
log4j Java 실행시 에러 log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.slf4j 로그를 쓰고싶었는데 실행하니 위와 같은 에러가 떴다. 여러 블로그를 참조해 보고 찾아봤지만 나는 실행환경이 Simple Java Project여서 의존성 추가나 slf4j 설정을 만져주는 등 나에게는 올바르지 않았다. 그러던 중 간단한 해결 방법을 찾았다. 역시..
JNDI란? 회사에서 개발환경을 세팅하다가 JNDI를 설정할 일이 있었다. 처음에는 JNDI가 뭐지? 생각하고 있다가 이것 저것 알아보니 매우 중요한 기술인것을 알고 내 나름대로 정리해본다. JNDI(Java Naming and Directory Interface)는 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견(discover)하고 참고(lookup) 하기 위한 자바 API다. JNDI는 일반적으로 다음의 용도로 쓰인다: 자바 애플리케이션을 외부 디렉터리 서비스에 연결 (예: 주소 데이터베이스 또는 LDAP 서버) 자바 애플릿이 호스팅 웹 컨테이너가 제공하는 구성 정보를 참고 출처 : 위키백과 간단히 요약하자면 우리가 연결하고 싶은 데이터베이스의 DB Pool을 미리 Naming 시켜주는 방법 중..
모던 자바 인 액션 이라는 책을 공부하면서 풀었던 스트림 기초 문제 입니다. 기본적으로 Trader Transaction 2가지 클래스가 정의되어 있어야 합니다. Trader public class Trader { private final String name; private final String city; public Trader(String n, String c){ this.name = n; this.city = c; } public String getName() { return name; } public String getCity() { return city; } @Override public String toString() { return "trader:"+this.name+" in "+this..
이 글은 모던 자바 인 액션책 내용을 정리한 내용입니다. 람다 표현식은 무엇일까? 람다 표현식은 메서들 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. 전달 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있다. (함수형 프로그래밍이랑 비슷한 특징이다.) 간결성 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. 묻지도 따지지도 말고 예제 ..
JVM Java Virtual Machine의 약어 자바 프로그램을 컴파일 해서 나온 결과인 바이트코드를 실행시켜주는 가상 머신이다. 어플리케이션을 실행시켜주는 가상머신을 사용함으로써, 윈도우와 리눅스/맥 등 다양한 환경에서 언제나 동일하게 실행되도록 할 수 있다는 장점을 가지고 있다. 각 운영체제별 JVM은 자바측에서 개발하여 배포하므로, 프로그래머는 운영체제에 관계없이 프로그램을 개발할 수 있어, 한번 컴파일 됐으면 운영체제에 따라 다시 컴파일할 필요가 없는 WORA(Write Once Run Anywhere)을 만족한다. JRE 자바 실행환경을 의미한다. JVM을 동작하는데 필요한 각종 자바 라이브러리를 담고 있다. JDK Java Development Kit의 약자로, 자바 개발 키트를 의미한다...
Spring을 공부하던 중 파일 업로드를 하는 코드를 작성하던 중 UUID를 사용하는 코드를 보게 되었다. 근데 UUID가 무엇일까? UUID 범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화하였다. 라고 위키피디아 에서 정의하고 있다. 간단하게 정의하자면 각 개체를 고유하게 식별 가능한 값을 말한다. 어느 시스템에서 각 유저마다 ID를 위한 고유 식별자(Key)를 만드는데 처음에야 다르겠지만, 시스템이 커지고 사용자가 많아짐에 따라서 중복이 일어날 수 있게 된다. UUID를 사용하게 되면 위의 이미지 규칙에 따라서 식별자를 만들..