💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 네트워크 프로그래밍 애플리케이션 계층은 OSI 7 layer의 최상단에 위치한다. 애플리케이션 계층의 대표적인 HTTP, FTP, Telnet 들은 모두 TCP 통신을 한다. 우리가 자바로 TCP 통신을 하고싶다면 자바에서 제공하는 API를 사용하면 된다. TCP는 3-Way-hashShake를 통해 상대방이 데이터를 받았는지를 확실히 보장할 수 있다. 전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. - 위키피디아 TCP는 안정성을 제공하지만 ..
JAVA/자바의 신
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 Serializable public interface Serializable { } Serializable 인터페이스는 선언된 변수나 메서드가 하나도 없다. 웹 서버를 개발하다보면 생성한 객체를 파일로 저장하거나, 읽는 경우, 해당 객체를 다른 서버로 전송하거 받는 경우가 생긴다. 이럴 때 Serializable 인터페이스를 사용한다. static final long serialVersionUID = 1L; // String @java.io.Serial private static final long serialVersionUID = -6849794470754667710L; serialVers..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 I/O I/O는 Input/Output의 약어이다. 우리가 만든 프로그램의 어떠 내용을 파일에 쓰거나 저장할 일이 있을 때, 다른 서버나 디바이스로 보낼 일이 있을 때 사용한다. 여기서 서버는 DB서버, 웹 서버 등이 될 수 있다. Input Output은 JVM기준이다. (JVM이 읽는 것은 Input, JVM이 쓰거나 외부로 전송하는 것은 Output) 자바 초기 단계에서는 IO를 처리하기 위해 java.io 패키지에 있는 클래스만을 제공했다. java.io 패키지는 바이트 기반의 데이터를 처리하기 위해 여러 종류의 스트림(Stream)을 제공하는데 Stream은 단방향 통신으로 입력과 ..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 Thread Thread란 프로세스 내에서 독립적으로 작업을 수행하는 실행 단위이다. 스레드가 왜 만들어졌을까? 만약 모든 프로세스가 하나의 작업을 수행할 수 있었다면 어땠을까? 프로세스는 많은 자원을 소모하는 실행 단위이다. 만약 하나의 작업을 동시에 수행하려고 할 때, 스레드가 없다면 여러 개의 프로세스를 띄워 실행해야 할 것이다. JVM은 기본적으로 아무런 옵션 없이 실행하면 OS마다 다르지만, 적어도 32 ~ 64MB의 물리 메모리를 점유한다. 그에 반해서, 쓰레드를 하나 추가하면 1MB 이내의 메모리를 점유한다. 그래서, 쓰레드를 “경량 프로세스”라고도 부른다. - 자바의 신 2권 ..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 Set public interface Set extends Collection All Superinterfaces: Collection, Iterable All Known Subinterfaces: EventSet, NavigableSet, SequencedSet, SortedSet All Known Implementing Classes: AbstractSet, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSe..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 JCF (Java Collection Framework) 자바에서 목록형 데이터를 처리하는 자료구조를 지원하는 프레임워크이다. 자료 구조란 하나의 데이터가 아닌 여러 데이터를 담을 때 사용하는 데이터 구조이다. 컬렉션이 왜 생겼을까? 정적으로 메모리를 할당하고 사용하는 배열은 실제 사용에서 불편한 점이 많다. 배열이 가득찬다면 배열을 카피하고 더 큰 메모리를 가지는 배열에 복사하는 로직이 필요할 것이고, 중복을 제거하고 싶디면, 배열을 순회하며 중복인 원소를 지워주는 로직이 필요할 것이다. 이러한 로직은 프로그램 개발에서 자주 쓰이기 때문에 미리 만들어 둔 것이다. JCF에서는 크게 4가지로..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 Generic 제네릭이란 여러 타입을 컴파일 타임에 지정하여 저장하기 위한 개념이다. 제네릭을 사용하면 형 변환 시 발생할 수 있는 문제를 사전에 제거할 수 있다. 예를 들어, 아래와 같은 상황이다. public class GenericTest { private final Objcet value; public GenericTest(Object value) { this.value = value; } public Object getValue() { return value; } } GenericTest g1 = new GenericTest(new String()); GenericTest g2 = ..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 java.lang 자바에서 기본으로 제공하는 라이브러리이다. import를 하지 않아도 사용할 수 있다. 아래는 자바의 신에서 중요하다고 언급하는 java.lang의 클래스이다. 문자열: CharSequence, String, StringBuilder, StringBuffer 기본 자료형 및 숫자: 기본자료형 래퍼클래스들, Math, Number 쓰레드: Runnable, Thread, ThreadGroup, ThreadLocal 예외: Throwable, Exception, RuntimeException 대표적인 에러 OOME(OutOfMemoryError): JVM의 메모리가 부족하면 발..
💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다. ☁️ 내용정리 자바의 창시자는 제임스 고슬링이다. JDK 6 이전과 이후로 각각 SUN, Oracle이 개발하고 있다. JDK는 여러 벤더가 존재한다. 각 벤더의 JDK는 내부 동작이 다를 수 있다. 하지만 버전만 동일하다면 자바 프로그램을 실행하는 데에는 아무런 문제가 없다. 나는 레퍼런스가 많은 오라클이나 OpenJDK를 자주 사용하는 편이다. 용어 정리 JDK: Java Development Kit 자바 개발 키트이다. 소스 코드를 바이트 코드로 변경할 수 있게 javac를 제공하며, 디컴파일 할 수 있는 javap 등 여러 툴과 API를 제공한다. JRE가 포함된다. JRE: Java Runtime..