본문 바로가기

공부/java39

IO 와 NIO 를 이용한 입출력 (2/2) NIO자바 4에서 새롭게 등장하고 7에서 재정비된 NIO 는 IO 와 비교해 여러 강점을 가진다. 1. MMIO(Merory-Mapped IO) 방식으로 버퍼 지원2. 넌블로킹 모드 지원3. Scatter/Gather 지원4. 파일락 이전 포스팅에 1,2,3, 의 내용이 정리되어 있다. 파일락의 경우, 어떤 파일을 수정하는 동안 다른 쓰레드에서 읽기 작업을 가능하게 할지 설정하는 기술이다. MMIO일반적으로 I/O 작업이 이뤄질때, 이를 위한 별도의 메모리 공간이 할당된다. 문제는 I/O 작업이 일어날 때마다 이 별도의 메모리 공간(자바에서는 Heap)을 사용하기 위한 시스템콜이 일어나고, 이 작업이 상당한 자원을 소모한다는 것이다.이 문제를 해결하기 위해 운영체제는 MMIO 라는 기술을 지원한다.mmi.. 2024. 5. 17.
IO 와 NIO 를 이용한 입출력 (1/2) 자바에는 입출력을 위한 I/O API 존재한다.I/O 클래스는 두개가 존재하는데, 기존 I/O 와 자바4에 등장해서 자바 7에 재정리된 버퍼를 사용하는 New I/O 다. 버퍼버퍼에 대해 쉽게 이해하기 위해 먼저 마트에서 장을 본다고 가정해보자. 살 물건을 하나씩 계산대로 가지고 가기 보다는, 바구니에 담아서 한번에 가져가는 것이 이동시간도 적게 걸리고 힘도 덜 들 것이다. 버퍼는 바로 이 바구니와 비슷한 역할을 한다. 즉, 데이터를 다루기 전 일정 크기만큼 한번에 가져와 가지고 있는 저장소다. 덕분에 데이터를 사용하기 위해 매번 데이터를 찾으러 갈 필요가 없어 실행 시간이 빨라진다는 장점이 있다. 기본 I/O 클래스를 이용한 버퍼코드로 살펴보기에 앞서 일부 세팅이 필요하다.1. 더미 파일 생성파워쉘에서.. 2024. 5. 13.
자바 - Junit5 Jupiter 를 이용한 단위 테스트 시작 1. 프로젝트의 main 폴더 아래에 test 폴더를 만든다. test 폴더 내부에 테스트 클래스를 만들지 않으면 정상적으로 junit 클래스를 import 해올수 없어 테스트 코드를 실행할수 없다. 2. @Test 어노테이션을 이용한 테스트 코드 메서드 작성 @Test void test(){ } 해당 어노테이션이 붙은 메서드는 main 클래스처럼 실행이 가능해진다. main 클래스가 그렇듯, 반환값은 존재하지 않는다. **** 만약 @Test 어노테이션의 import 클래스가 org.junit.jupiter.api.Test 가 아니라면 라이브러리를 추가해야 한다. gradle의 경우 다음의 코드를 작성해줘야 한다. dependencies { testImplementation 'org.junit.jupi.. 2024. 4. 3.
자바(java)의 생성자 함수 생성자 함수 (Constructor) : 객체 생성시 자동으로 호출되는 함수 형식 public 클래스이름() { } - 다른 함수들과 달리 int나 String처럼 반환형식 지정을 안함. //클래스에서 중요한 개념들 //1.상속 : 모듈화/계층화, 중복제거 //2.생성자함수 : 객체생성시 자동으로 호출되는 함수 //3.다형성 : 상속관계에서 하나의 객체가 여러 타입을 가질수 있다. // : B클래스가 A클래스를 상속했다면, 타입을 B타입,A타입 // 2개 다 타입으로 가질 수 있다. //4.추상화 클래스 : 일반 클래스(일반 함수) + 가상함수 //5.인터페이스 : 인터페이스 타입에 가상함수만 있는 것 //생성자 함수 : Constructor // : 객체생성시(new) 자동으로 호출되는 함수 // 용도.. 2023. 1. 23.