본문 바로가기
반응형

Language/자바&코틀린15

직렬화와 역직렬화 직렬화(Serialization)메모리에 존재하는 데이터를 디스크에 저장하거나 다른 네트워크에 전송하기 위한 포맷으로 변환(직렬화)하고이를 다시 재구성 할 수 있는 포맷으로 변환(역직렬화)하는 과정직렬화의 종류json 직렬화정의 : json 형식의 문자열로 변환장점 : json 형식이기에 모든 프로그램에서 사용 가능함사용 예시 :  - 직렬화 : 스프링 서버에서 응답 객체를 클라이언트에 json 형식으로 변환함                  - 역직렬화 : 클라이언트가 json형식으로 전송한 http 메시지의 request body를 객체로 변환함바이너리 직렬화정의 : 바이너리 코드라는 기계어로 변환장점 : 텍스트 기반 직렬화보다 저장 공간에 효율적이며, 전송 속도가 빠름사용예시 :  - 직렬화 : 브라.. 2024. 7. 19.
Optional 클래스의 특징과 올바른 사용법 0. Optional 클래스optional 클래스는 객체가 null을 참조하는 경우 발생할 수 있는 NPE 예외를 벗어나기 위해내부적으로 null 처리를 대신해주는 래퍼 클래스이다.public final class OptionalT> {  private final T value;     ...} 1. Optional 클래스를 사용하는 이유null을 직접 다루게 되면 NPE 예외 발생 가능성이 높아질 수 있음 -> 간접적으로 null을 다루기 위함null 체크 로직이 반복됨 -> if문으로 지저분해짐 Bag이라는 클래스 안에 Purse가 있는 예제를 통해 optional 클래스 사용시 얻는 이점을 살펴보자. [Optional을 사용하지 않는 경우] Bag bag = getBag();if (bag == nu.. 2024. 7. 8.
Garbage Collection의 동작 방식과 종류 Garbage CollectionJVM의 가비지 컬렉터가 불필요한 메모리 자원을 해제하는 작업 자바에서 명시적으로 불필요한 데이터를 표현하기 위해서 null을 선언할 수 있다. 허나, 이러한 패턴의 코드는 잘 보이지 않는다. JVM의 가비지 컬렉터가 객체들의 참조여부를 체크하여 객체가 점유한 메모리를 해제 시켜주므로 자바 코드에서는 메모리 자원을 해제하는 코드가 잘 보이지 않는다.(System.gc()를 이용해 호출할 수 있지만, 시스템의 성능에 안 좋음)  용어 구분 * 가비지 컬렉터 : 메모리 자원을 할당하고 해제(GC)하는 프로그램Garbage Collection의 동작 방식기본 개념가비지 컬렉션은 Reachable이라는 대상 객체를 참조하는 다른 자원이 있는지 여부 제거 대상을 판단한다.가비지 컬.. 2024. 7. 6.
[I/O 이해하기-2] Stream vs Channel I/O스트림과 채널은 I/O 작업을 처리하는데 사용된다.I/O란 Input/Ouput의 약자로 입력값을 읽어들이는 작업과 출력값을 쓰는 작업을 말한다. I/O 작업은 대게 애플리케이션 내에서만 이뤄지는 작업이 아니다.대표적인 I/O 작업을 통해 어떻게 동작하는지 알아보자.클라이언트의 요청을 읽어들이는 서버(전송계층 -> 애플리케이션 계층)클라이언트가 서버로 요청을 보내게되면 요청 데이터가 전송계층에 패킷 형태로 존재한다.서버의 애플리케이션에서 시스템 콜을 실행하는 프로그래밍 명령어를 통해 이를 애플리케이션으로 가져온다.디스크에 저장된 파일 읽어들이는 경우 (하드웨어 -> 애플리케이션 서버)파일이 존재하는 디스크 경로에 접근하여 해당 데이터를 읽어들여 메모리에 적재함그다음 애플리케이션에서 시스템 콜을 수행.. 2024. 5. 9.
반응형