Serializable 생성한 객체를 파일로 저장하거나, 파일로 저장한 객체를 읽거나 객체를 다른 서버로 보내거나, 다른 서버에서 생성한 객체를 받을 때 이 인터페이스를 구현해야 한다. public class SerialDto implements Serializable { static final long serialVersionUID = 1...
[Java] JDK에 따른 ArrayList 비교
ArrayList 클래스에 주요 메소드로는 생성자, get, add, remove등이 있습니다. 그 중에서도 add 메소드의 변화가 성능에 미치는 영향이 가장 크다고 느꼈기 때문에 add메소드를 비교해보겠습니다. JDK 6 add메소드 /** * Appends the specified element to the end of th...
[Java] File
I/O (Input Output) 프로그램에 있는 내용을 파일에 읽거나 저장할 일이 있을 때, 다른 서버나 디바이스로 보낼 일이 있을 때 사용한다. Java의 I/O 처리 초기 단계 : java.io 패키지에 있는 클래스만 제공 여러 종류의 Stream 클래스 제공 읽는 작업은 Input...
[Java] Garbage Collection
Garbage Collection 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역(Garbage)을 자동으로 해제하는 기능이다. 더 이상 필요없게된 영역이란, 어떤 변수로 가리키지 않게 된 영역을 의미한다. C, C++ 등의 프로그래밍 언어는 수동으로 메모리 관리를 해주어야 한다. 하지만 Java는 JVM...
[Java] Thread 스레드
Thread 스레드 java 명령어를 사용해서 클래스를 실행시키는 순간 자바 프로세스가 시작되고, main 메소드가 수행되면서 하나의 쓰레드가 시작된다. 많은 쓰레드가 필요하다면, main 메소드에서 쓰레드를 생성해주면 된다. (하나의 프로세스 내에 여러 쓰레드가 수행된다.) 웹에서는 WAS를 사용하고, 똑같이 main 메소드에서 생성한...
[Java] Immutable Object
Immutable Object란 객체가 생성된 이후 객체 내의 데이터들이 변할 수 없는 객체를 의미합니다. 재할당은 가능하지만, 한 번 할당하면 내부 데이터를 변경할 수 없습니다. 자바에서는 대표적인 예로 String, Integer가 있습니다. 반대개념으로는 Mutable Object(가변 객체)로, 생성 후에도 데이터를 변경할 수 ...
[Java] Java에서는 왜 static을 지양해야할까?
왜 static을 지양해야할까? 1. 동시성 문제 발생 static 변수는 다른 스레드에서도 접근할 수 있어서 값을 보장하지 않는다. 이를 synchronized를 통해 해결할 수 있다. 현재 데이터를 사용하고 있는 스레드를 제외하고 나머지 스레드들은 데이터에 접근할 수 없도록 막는 개념이다. 하지만 대량의 접속이 생기면서 이러한 처리가 많...
[Java] Java 8 이후 메모리 변화
Java 8이 나오면서 JVM의 메모리 영역 중에 Permanent Generation 영역이 사라지고 Metaspace 영역이 생겼다. JVM에서의 PermGen(Java 7 이전), Metaspace(Java 8 이후) PermGen과 Metaspace는 JVM Runtime Access Memory 중 Method Area에 해당하는 ...
[CS] IEEE 754
실수를 저장할 때 고정소수점 방식과 부동소수점 방식이 있다. 고정소수점 정수를 표현하는 비트 수와 소수를 표현하는 비트 수를 미리 정해놓고, 해당 비트만큼만 사용해서 숫자를 표현하는 방식이다. 정수를 표현하는 bit를 늘리면 큰 숫자를 표현할 수 있지만 정밀한 숫자를 표현하기에는 힘들다. 그래서 소수를 표현하는 bit를 늘릴 경우 정밀한 ...
[Java] JVM
JVM (Java Virtual Machine) 자바 가상 머신, 자바를 실행하기 위한 가상 컴퓨터 자바와 운영체제 사이에서 중개자 역할을 수행하고, 자바가 운영체제에 구애받지 않고 프로그램을 실행할 수 있도록 도와줍니다. 특징 속도가 느립니다. 일반 애플리케이션 코드는 OS만 거치고 하드웨어로 전달되는데,...