자바 개발도구. JRE + 개발을 위해 필요한 도구(javac, java 등)들을 포함한다.자바 실행환경. jvm이 자바프로그램을 실행시킬 수 있게 필요한 라이브러리 파일들과 기타 파일들 제공. 환경을 제공g한다. jre 안에 jvm이 있다.자바 가상머신. 자바를 컴파
자바는 기본적으로 JVM이라는 가상머신에서 돌아가는 언어이다.Runtime시 OS에게 할당받은 JVM위에 메모리에 할당되는 구조이다.이 JVM위에 메모리에 할당되는 구조가 'Dynamic Runtime memory area'라고 한다. 줄여서 런타임 메모리구조라고 하겠
GC란 Garbage Collection의 약자다. 한마디로 정리하면, 쓰레기 객체 정리자이다.Java Runtime시 Heap 영역에 저장되는 객체들은 따로 정리하지 않으면 계속해서 메모리에 쌓이게되어 OutOfMemmory Exception이 발생할 수 있다. 이를
JVM은 클래스파일을 실행시키는 것 외에도 다른 많은 작업들을 한다. 그 중 대표적으로 JIT 컴파일러프로그래밍 언어, 컴파일러, 인터프리터 참고가 있고, 또 가비지 컬렉터(Garbage Collector), 즉 메모리 관리가 있다. (다른것도 많다.)가비지컬렉터는 우
JIT라는 것은 Just-In-Time의 약자이다. JIT를 사용하는 언어에는 자바와 .NET 등이 있다. 즉, 자바에서만 사용하는 개념은 아니다.JIT를 좀 더 풀어보면, 동적 변환(Dynamic translation)이라고 보면 된다.이러한 JIT라는 것을 만든 이
jdk 1.0a 1994 jdk 1.0a2 1995 - 자바언어가 공시적으로 발표됨 jdk 1.0 1996 - 이전에 Oak로 불렸으나, 안정화 작업을 거친 1.0.2부터 JAVA로 이름변경 jdk 1.1 1997 - inner class, javabeans, R
Java 10은 라이선스 없이 상업적으로 사용할 수 있는 마지막 무료 Oracle JDK 였어요.JAva 11부터는 Open JDK를 무료로 사용할 수 있어요.Java 11에서 추가된 내용들을 기능, 성능 관점에서 보도록 해요.isBlank, lines, strip,
https://codechacha.com/ko/ubuntu-install-open-jdk11/
자바에서 사용하는 변수의 종류는 4가지이다. 지역 변수(local variables) : 지역변수를 선언한 곳(생성자, 메서드, static 블록 등) 그 블록({}) 안에서만 생명력을 가진다. 지역변수를 선언한 메서드가 끝나면 자동으로 소멸.매개 변수(Paramete
satic 클래스는 중첩 클래스(nested class)를 사용할 때 사용한다. 다음 코드를 보자.이런식으로 쓰면 다음 경로가 날아온다.경고: Inner class may be 'static'Reports any inner classes which may safely
Float.compare Double.compare
volatile keyword는 Java 변수를 Main Memory에 저장하겠다라는 것을 명시하는 것이다.매번 변수의 값을 Read할 때마다 CPU cache에 저장된 값이 아닌 Main Memory에서 읽는 것이며,또한 변수의 값을 Write할 때마다 Main Me
변수를 저장하는데 값만 저장한다.Method1, Method2가 있다고 해보자.자바에서는 Call by Value 방식을 수행할 때, 값을 넘겨받은 메소드에서값을 복사하여 새로운 지역 변수에 저장한다. 이 때 Method2는Method1의 변수를 사용한 것이 아니라,
빌더 패턴(Builder Pattern)을 적용 시에는 다음의 효과를 기대할 수 있다.1) 불필요한 생성자 제거2) 데이터의 순서에 상관없이 객체 생성 가능3) 명시적 선언으로 이해하기 쉬움.만약 요건이 자주 변경되어서 매번 생성자를 만드는 일이 생긴다면?이런 상황을
스트림스트림은 람다와 마찬가지로 자바8에 추가된 기능이다. 스트림이란, 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소로 정의한다. 스트림과 컬렉션스트림도 컬렉션과 마찬가지로 연속된 값 집합의 인터페이스를 제공한다. 단 데이터를 언제 계산하느야가 컬렉션과
ArrayList는 배열보다 많이 쓰인다. 왜냐하면, 지정한 인덱스 요소에 유연성을 가지고 있기 때문이다. 배열은 지정해줘야 때문에 어떤 수량으로 데이터가 오는지 확실하지 않을 때는 ArrayList를 쓰이게 된다. 단순히 add(), remove, get() 메서드
개발을 하면서 Map타입을 자주 사용한다. 이번 기회에 정리를 해볼려고 한다. 특히 Data를 넣어서 forEach문으로 돌릴 때를 기준으로 정리하겠다.forEach문 형태 각 형태들 예시정리하면, Map -> forEach -> keySet, value ,entryS
String은 개발을 하면서 가장 많이 사용하는 레퍼런스 객체이다. 하지만 이런 String에도 쓰지 말아햐 할 상황들이 있다. 바로 값을 이어붙이는 작업을 할 때이다.예시를 보자.결과String에 값이 쌓이는 것은 힙 메모리에 계속 누적되는 것이게 변수가 쌓이는 작업
개발을 할 때 자주 신경쓰이는 부분이 바로 NPE, null 문제이다. 방어로직으로 null 검사를 많이 하게 되는데 if문을 자주 사용했었다. 하지만 이런 null 문제를 객체 차원에서 바로 예방이 되는 걸 사용하는 걸로 요즘은 권장하고 있다. java8 버전에서 나
쿼리 결과값을 리턴받을 때 사용, 프로젝트 때마다 통신시 보내줄 때 사용계층간 데이터 교환을 위한 객체클래스 맴버변수들의 값 그 자체를 가진다. equals()와 hashcode() 메서드를 오버라이딩 하는 것으로 구성된다.Db 테이블 그 자체이다.DB의 1:1로 매핑
절차지향으로 프로그래밍하는 거보다 동시에 실행하는 프로그램을 프로그래밍을 하는 이유가 무엇일까? 이 관점에서 자바 병렬 처리를 하는 이유를 살펴보자. 자바 병렬 처리를 하는 이유 스레드는 자바 언어에서 피할 수 없는 특성이고 복잡한 비동기 코드를 더 단순한 순차적
스레드는 작업의 한단위이다. 여기서 멀티스레드 방식은 멀티태스킹을 하는 방식 중, 한 코어에서 여러 스레드를 이용해서 작업을 처리하는 방식이다.멀티 스레드를 이용하면 공유하는 장원이 멀리 프로세스방식보다 context switcing 오버헤드가 작아져 메모리 누수가 상
스프링은 빈이라는 싱글톤(유일한 하나의 인스턴스) 객체를 IOC 컨테이너에 생성하여 사용한다.스프링의 빈은 일반적으로상태를 가지고 있지 않게 설계 (@Controller, @Service, @Repository, ...)어플리케이션 구동 시 ApplicationCont
자바 면접에서 정말 많이 물어보는 유형이라고 하는 오버라이딩 vs 오버로딩이번 기회에 제대로 알아보기 위해 정리해봅니다.부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하는 것을 말합니다.상속받은 메서드를 그대로 사용할 수 있지만, 자식 클래스에서 상황에 맞게
객체지향으로 계층별 상속을 구현해봅니다.객체 구현(Elf)KingElf -> WolfElf -> Elf(가장 부모클래스)Point1) 계층별로 상속할 때 super(); 부모클래스 생성자 호출시, 인자 호출 그리고 자신의 인자를 불러오는 방법 : this2) 오버라이딩
한 개 이상의 추상메서드를 가진 클래스이름이 추상클래스답게 구체적이지 않고 일반화하여 정의 된 걸로 함. ex. Person, Cat 등등추상메서드는 선언만 하고 구현이 되지 않는 불완전한 메서드이므로 객체로 생성되어서는 안된다. 추상메서드를 사용하기 위해서는 반드시
java ArrayList 활용, 객체 협력이 어떻게 이뤄지는지 '학생성적 산출 프로그램' 으로 확인.행위는 Student : 성적 입력, 성적정보 출력성적 입력 - addSubject(name, score)성적정보 출력 - showStudentInfo() Subjec
일단 예외처리를 알기전에 오류와 예외에 대한 개념을 알아야 한다.오류(Error)는 시스템 비정상적인 상황이 생겼을 때 발생한다. 이는 시스템 레벨에서 발생하기 때문에 심각한 수준의 오류이다. 따라서 개발자가 미리 예측하여 처리할 수도 없기에 오류에 대한 처리는 신경쓰
"호출당하는 쪽의 메소드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴"ex) JDBC, JRE서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것합성, 즉 객체의 속성으로 만들어서 참조하는 디자인 패턴"제어 흐름을 조정하기 위한 목적으로 중
람다는 λ라고 표기하며 원래는 수학기호로 1930년대 수학자 알론소 처치의 람다 계산식에서 시작되었다고 한다. 최신의 프로그램언어에서 사용되는 람다식 혹은 람다함수는 함수형 언어의 특징에서 나온것으로 나중에 한번이상 실행할 수 있는 코드블록을 말하며 실제 구현에는 익명
자바의 최상위 클래스인 Object 클래스의 equals()는 아래와 같은 기능으로써 이 메소드는 비교 연사자인 == 과 동일한 결과를 리턴한다. 오로지 참조값(객체의 주소값)이 같은지, 다시말하면 동일 객체인지를 확인하는 기능이다.자바에서는 두 객체를 동등 비교할 때
상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 일반적인 구체 클래스를 패키지 경계를 넘어 다른 패키지의 구체 클래스를 상속하는 일은 위험하다.상속이 안전 할 때상위 클래스와 하위클래스를 모두 같은 프로그래머가 통제하는 패키지 안에서 사용한다.확장할
자바 리플랙션에 대해서 알아보자.리플렉션은 구체적인 클래스 타입을 알지 못해서 그 클래스의 메소드와 타입 그리고 변수들을 접근할 수 있도록 해주는 자바 API 이다.위 설명에 의하면 구체적인 클래스 타입을 모를때 사용하는 방법을 리플렉션이라는 것이다.여기서 의문점이 든
자바에서 double와 float의 차이점에 대해서 알아볼려고 한다.개발을 하면서 double과 float를 쓰지만 둘 다 실수형을 표현할 때 쓴다는 것만 알았지 정확하게 차이점은 몰랐는데 이번에 정리해볼련다.밑에서 볼 수 있듯이 float는 4바이트의 수까지 표현하고
특히, switch는 Enum 이랑 찰떡궁합이다!break를 빼먹지 말자!
Java enum은 제한된 값 목록을 갖는 타입입니다. enum은 다음과 같은 이점을 갖습니다.enum은 컴파일 타임에 타입 안정성을 보장합니다. 특정 범위의 값만 사용 가능하므로 컴파일 오류나 런타임 예외를 줄입니다.enum은 의도적으로 가독성이 높습니다. 값들이 명
자바 기존 IO와 New IO에 대해 알아보겠습니다. 과거 IO에 때문에 자바가 느리다는 인상을 많이 줬었습니다. 그런 문제를 극복하기위해 Non-blocking IO API를 제공하므로써 자바는 극복해왔는데 Blocking, Non-Blocking부터 정리해보겠습니
java의 final 키워드에 대해서 정리해볼려고 합니다.final 키워드는 변수(variable), 메서드(method), 또는 클래스(class)에 사용될 수 있습니다. 정말 신기한 게 이 final 키워드는 어떤 곳에 사용되냐에 따라 다른 의미를 가집니다.하지만
정규표현식은 개발을 하는 사람이라면 결국 보게 되는 표현이다.가장 쉽게 접하는 분야는 회원가입시 아이디, 이메일, 비밀번호 양식을 지정할 때 접하게 된다.한글, 영어, 특수문자, 이메일 등등 형식을 알고리즘을 통해서 만들게 된 표현식이다.지금은 너무나 잘 정리된 표현식
인터페이스는 상속, 클래스와 달리 인터페이스는 다중 상속도 허용이 된다.인터페이스의 다형성은 다중상속까지 생각해야 한다.하위 인터페이스를 구현하는 클래스는 상위인터페이스의 모든 추상메서드까지 가질 수 있다.<이것이 자바다> 377p
T 유형을 의미합니다.E엘리먼트 ( List: 엘리먼트 목록)
메서드 종류들을 정리합니다.toString(); Object 최상위클래스의 메서드 항상 있음!trim(); space 없앰! 단, 양쪽 앞뒤 만 제거함!substring(3) : 문자자르기, 인덱스3번째부터 나온다.substring(3, 5) : 3번째부터 5번째 전까
기존람다식 이라면 이렇게 인라인으로 메서드 이름만으로 어떤연산을 하는 것인지 바로 알 수 있게 해준다. 기존 람다식https://napasun-programming.tistory.com/32iterator hasNext() 표현식중급 57)중급 58)중급 59
자바의 입력 class에서는 대표적으로 Scanner 을 많이 봤을 것입니다. 오늘은 Scanner 대신 BufferedReader, StringTokenizer을 사용하는 이유를 살펴볼려고 합니다. 결론적으로 Scanner 보다 BufferedReader, St
클래스들은 가변적이여야 하는 매우 타당한 이유가 있지 않는 한 반드시 불변으로 만들어야 한다. 만약 클래스를 불변으로 만드는 것이 불가능하다면, 가능한 변경 가능성을 최소화하라. By Effective Java출처: https://mangkyu.tistory
org.apache.commons.lang의 클래스자바의 String 클래스가 제공하는 문자열 관련 기능을 강화한 클래스라 보면 된다.파라미터 값으로 null을 주더라도 절대 NullPointException을 발생시키지 않는다.(null이 입력되는 경우, 메소드에 따
BooleanUtils, CharUtils, ClassUtils, CharSetUtils, LocaleUtils 일단 이 클래스들은 거의 쓰지 않는다.이들을 포괄하는 클래스가 ObjectUtils이다.기능이 매우 적은 게 문제지만몇가지 알아두면 좋을것이 있고, Obec
생성자 대신 정적 팩터리 메서드를 고려하라.생성자에 매개변수가 많다면 빌더를 고려하라.private 생성자나 열거 타입으로 싱글턴임을 보증하라.인스턴스화를 막으려거든 private 생성자를 사용하라.
자바에서 문자열을 선언하는 방법은 두 가지가 있다. String = "" 과 new String("")은 어떤 차이가 있을까?이 둘의 차이는 실제 메모리에 할당되는 영역에 차이가 있다!new 연산자를 통해 문자열 객체를 생성하는 경우 메모리의 Heap 영역에 할당되고
윈도우에 있는 텍스트 파일에 있는 내용을 읽어 오는 기능(read)과 원하는 내용의 텍스트 파일을 윈도우의 원하는 경로에 쓰는(write) 자바 예제입니다. 해당 기능을 구현하기 위해 Java에서 기본으로 제공해 주는 File BufferedReader/WrtierFi
리눅스의 경로 구분자는 /윈도우는 \\(백슬레시) 예를 들어, 파일 경로 지정할때이렇게 지정하면 윈도우에서는 되겠지만 리눅스에서는 안된다. (\\ 가 하나 더 있는 이스케이프를 하나 두어 경로라는 의미를 주기 위해서)자바에서는 운영체제별로 갖고있는 구분자를 제공해준다.
System.out.println() 은 로그가 표준 출력으로 출력된다. 즉, 파일로 저장되지 않고 휘발된다는 의미이다. 로그는 에러가 발생한 상황을 기록하고, 추후 확인하여 문제를 진단하고, 재현하고, 고치기 위해 사용된다. 하지만 표준 출력으로 한번 출력되고 어디에
isBefore() & isAfter()https://kkh0977.tistory.com/36?category=990089https://junghn.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%82%A0%EC%A7
Java 8에서 추가된 LocalDateTime 클래스는 특정 시점을 표현하는데 사용됩니다. 편리성: LocalDateTime은 날짜와 시간을 직접 관리하기 때문에 java.util.Date와 java.util.Calendar와 같은 클래스보다 보다 사용하기 편리하고
Java 5(1.5)부터 등장한 기능으로, 한 마디로 요약하면 프로그램에 추가적인 정보를 제공해주는 메타 데이터이다.여기서 메타 데이터란 어플리케이션이 처리해야 할 데이터가 아니라 컴파일 과정과 런타임에서 코드를 어떻게 컴파일하고 처리할 것인지에 대한 정보를 말한다.이
build.gradle엑셀 읽어오기셀 타입을 고려하여 읽기
try-with-resources란?jdk 1.7 버전때 등장close() 메서드 호출을 기본으로 해준다.try-with-resources 예시BufferedReader, BufferedWriter 등은 close()를 자동으로 호출해주는 AutoCloseable 인터
웹사이트에 정보를 긁어모아 정보를 축출하는 방법은 크롤링(Crawling)이라고 한다. 전에 Python의 셀레니움 을 사용하여 크롤링을 한 적이 있었는데 자바 크롤링 셀레니움 라이브러리가 있다는 것을 최근에 알게 되었습니다. 이커머스 회사 사이트에 상품 정보
jsong화는 이미 ObjectMapper로 객체(java bean) -> json 변화로 더 많이 사용된다.https://velog.io/@mooh2jj/ObjectMapper-왜-사용하는거야Java에서 간단히 String, Map 등으로 json화 하는 방