Java 13

Java Input/Output(I/O)

배경java는 데이터 입력, 출력과 관련하여 추상클래스와 다양한 구현클래스를 제공한다.InputStream : AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStreamReader : BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader, URLReaderOutputStream : ByteArrayOutputStream, FileOutputStream, FilterOutput..

Java 2024.03.07

Java.lang

java.lang이란?자바 언어로 개발하기위한 기본적인 기능들이 담겨져 있는 패키지숫자에 대한 참조자료형과 기본자료형자바에서는 숫자를 처리하기 위한 자료형으로 같은 유형의 값을 다루지만 기본자료형과 참조자료형 두가지가 존재하고 참조자료형은 기본자료형처럼 형변환 없이 사용하는것을 컴파일러에서 지원한다. 그 이유는 다음과 같다.매개 변수를 참조자료형으로만 받는 메소드를 처리하기 위해서이다.제네릭과 같이 기본자료형을 사용하지 않는 기능을 사용하기 위해서이다.최소값이나 최대값과 같이 클래스에 선언된 상수값을 사용하기 위해서이다. → 숫자의 참조료형 클래스들은 MIN_VALUE와 MAX_VALUE라는 상수값을 가지고 있다. 이 값들은 각 자료형들의 최소최대값 범위를 나타낸다.문자열과 숫자간 변환을 쉽게하고 2,8..

Java 2024.03.05

Java Collection

자바에서 제공하는 Collection interface에 대해서 정리한 내용 Java에서 Collection이란?여러 데이터를 담을 수 있는 자료구조를 뜻한다. 기존 배열과의 차이점으로 데이터의 갯수에 따라서 동적메모리 할당이 가능하다.Iterable인터페이스를 상속받는다. 기본적으로 Iterable인터페이스를 사용하여 순차적으로 데이터를 가져올 수 있다는것을 의미한다. 향상된 for문을 쓸 수 있다는걸 의미하기도 한다.컬렉션의 인터페이스는 List, Set, Queue, Map으로 구분할 수 있다. 이 중에서 Map은 Collection Interface를 상속받고 있지 않지만 Collection으로 구분한다.Java에서 자료구조의 분류선형자료구조(Linear Data Structure) : List,..

Java 2024.03.02

Effective Java 정리 #1

이펙티브 자바 3판 2장에 해당하는 아이템중 스스로 정리가 필요하다고 생각되는 내용들을 정리했다. 아이템 1 생성자 대신 정적 팩토리 메소드를 고려하라 클래스의 인스턴스를 얻는 수단은 public 생성자가 있지만 그 외에 정적 팩토리 메소드를 제공하는 방법이 존재한다. 클래스의 인스턴스를 반환하는 단순한 정적 메소드를 이야기한다. 장점 정적 팩토리 메소드를 사용하는 경우 이름을 지을 수 있다. 반환될 객체의 특성을 이름에서 나타내는것이 가능하여 가독성을 높인다 자바에서 하나의 시그니쳐로는 생성자를 하나만 만들 수 있다. 임시방편으로 전달하는 파라미터의 순서를 변경하는 방법으로 이 제한을 회피할 수 있지만 좋은 방법은 아니다. 파라미터의 순서로는 각 생성자의 역할을 나타내기 충분하지 않다. 호출될때 마다 ..

Java 2023.12.10

동기와 비동기, Java Synchronized

정의 동기화 동일한 객체나 메소드에 먼저 접근한 쓰레드가 작업을 마칠때까지 나머지 쓰레드는 작업을 수행하지 않고 기다리는 역할을 말한다. 동일한 객체에 접근했을때 먼저 접근한 쓰레드가 작업을 마치기 전까지 다른 쓰레드에 의해서 방해받지 않도록 하는것을 말한다. 프로세스(쓰레드)가 수행되는 시점을 조절하여 프로세스(쓰레드)간 알고 있는 정보가 일치하도록 하는것을 말한다. 정리 : 다수의 작업이 있더라도 순차적으로 작업을 처리하는 방식을 말한다. / 공유자원(객체)을 상대로 순서대로 작업이 이루어지도록 처리하는 방법을 말한다. 비동기 요청과 결과가 동시에 일어나지 않는다를 의미한다. 요청을 보냈을때 응답상태와 상관 없이 다음 동작을 수행하며 응답을 기다리는것이 가능하다. 예시를 들어보자면, 쇼핑몰에서 우측하..

Java 2022.05.28

Servlet서블릿

정의 자바로 웹페이지를 동적으로 생성하는 서버측 프로그램 or 사양을 말한다. 클라이언트의 요청을 처리하고 그 결과를 반환하는 servelt class의 구현규칙을 지킨 자바 웹 프로그래밍 기술 자바를 사용하여 웹을 만들기 위해 필요한 기술. 클라이언트가 페이지를 요청하면 결과를 전송해줄때 사용되는 자바 기술. 자바로 구현된 CGI라고 부르기도 한다. 정리 : 자바에서 클라이언트요청을 처리하고 그 결과를 반환하는 웹 프로그래밍 기술이다. http request/response를 해석하고 처리해주는 일을 대신해준다. 특징 동적으로 페이지를 제공하기 위해 사용한다. 사용 urlPatterns = “/test” 가 호출되면 서블릿이 실행된다. HttpServletRequest/HttpServletRespons..

Java 2022.05.25

동등성과 동일성의 차이

정의 객체는 동일성(indentity) 비교와 동등성(equality)비교라는 두 가지 비교 방법이 있다. 차이 동일성 동일성 비교는 ==비교다. 객체 인스턴스의 주소 값을 비교한다. equals를 별도로 overriding하여 구현하지 않은 경우 ObjectClass의 equals()가 호출되며 여기서 equals()는 동일성을 비교한다. public boolean equals(Object obj) { return (this == obj); } 동등성 동등성 비교는 서로 다른 인스턴스이지만 객체 내부의 값이 같은지를 비교한다. 동등성 비교를 위해서는 equals()를 Override해야한다. 결론 동일성과 동등성 비교의 차이는 두 객체가 같은 인스턴스인지 아닌지를 확인하는것이다.

Java 2022.05.25

JVM - java버전별 변경점

JAVA7 메모리구조 변경사항 : Permanent영역이 별도로 존재했다. JAVA8 메모리구조 변경사항 : Permanent영역이 제거되고 Native영역으로 이동하여 MetaSpace영역으로 변경되었다. Permanent영역에 저장되던 static object들은 Heap영역으로 옮겨져 GC의 대상이 됐다. 기존 permanent영역은 JVM에 속한 영역으로 크키가 고정되어있었는데 meta space로 옮겨가며 OS에 속한 영역이 되어 자동으로 크기를 조절한다. 그에 따라서 더 큰 메모리 영역을 가지게 되어 OOM이슈가 줄어들었다, 패러럴 컬렉터가 기본사항이다. Generation Memory구조 Young : eden, survivor로 이루어져 있다 Tenured : virtual로 이루어져 있다..

Java 2022.05.24

JVM

JVM의 역할 컴파일된 자바클래스파일(자바바이트코드)를 읽어 운영체제에 맞게 프로그램으로 실행시키는 가상머신이다. 자바코드를 컴파일하면 기계어가 아닌 바이트코드로 변환되는데 이때 운영체제에서 바이트코드를 읽을수 있도록 해석해주는 역할이다. 가비지컬렉터를 이용해서 메모리 관리도 담당한다. Java7부터는 G1GC가 나와서 힙영역의 객체들을 관리하는 역할도 담당한다. OS에 종속적이다. 윈도우의 JVM과 리눅스의 JVM은 다르다 JVM의 구성요소 ClassLoader / ExecutionEngine / Memory(Runtime Data Area) / Native 크게 네가지로 나눠볼 수 있다. .class파일(바이트코드)를 불러와서 JVM메모리에 로드한다. 로딩된 클래스는 runtime data area에..

Java 2022.05.24