분류 전체보기(89)
-
blocking io/non blocking io
IO: input /output의 약자이다. 데이터 입출력 I/O 종류: network :(socket) 통해서 데이터가 입출력된다. *backend server: 네트워크 상의 요청자들과 각각 소켓을 열고 통신한다. file:파일 통해서 프로세스가 서로 공유하며 통신 한다. pipe: os에서 제공하는 pipe 통해서 프로세스간의 통신시 device( 모니터 , 키보드 ): 입출력 blok I/O :i/o 작업을 요청한 프로세스/스레드는 요청이 완료 될때 까지 블락( 기다린다) 된다. read 시스템콜을 호출하는 데 , 해당 시스템콜을 호출한 thread는 블락이 되고 컨텍스트 스위칭이 되면서 kernel모드가 실행이 되고 , 커널에서는 read I/O를 요청하면 관련 디바이스가 시간이 흐른뒤 읽을 준..
2022.12.10 -
Synchronous / ASynchronous 차이
Synchronous Programming :여러 작업(tsek)들을 순차적으로 실행하도록 개발 ASynchronous Programming :여러 작업을 독립적으로 실행하는 프로그래밍 방법론 멀티코어: 쓰레드 많이 만들면 , 컨텍스트 스위칭에 비용이 많이 들고, 레이스 컨디션을 발생 시킬 수 있다. 싱글 스레드: I/O작업하고 다른일 할수 있다, CPU작업과 I/O 작업은 동시에 할 수 있기에 non-block 이면 싱글스레드 라도 여러작업 처리가 가능하다. 1) Synchronous I/O = block I/O aSynchronous I/O = non-block I/O 2) Synchronous I/O: 요청자가 I/O완료 까지 챙겨야 할때 aSynchronous I/O:완료를 os가 noti주거나 ..
2022.12.10 -
file stream close 하지 않는 경우 메모리 누수가 발생하는 이유
파일으로 예를 들면 파일 출력을 위해서 하드디스크에 저장되있는 파일에 내용을 메모리로 가져와햐 하는데 파일의 내용을 모두 메모리에 올리는 것이 부담인 경우가 많습니다, 그래서 많은 프로그래밍 언어들이 파일에 대해서 입출력 스트림을 연결합니다. 즉! File 인스턴스를 생성하는 순간 파일의 모든 내용이 메모리에 올라오는 것이 아니라 스트림을 연결하여 언제든지 원하는 부분의 원하는 만큼 내용을 읽어 들일수 있도록한다, 그때 이 연결된 Stream 을 자원이라고 하고 이것을 시스템os에서 제고해주는 것이다 *os자원: DB커넥션 , 네트워크 커넥션, 쓰레드가 있다. close(): 외부자원을 다썼다 얘기하는 것이다 확실한 close()해서 알려야한다, 왜? 스트림을 사용하고 close를 안하면 메모리 반환이 ..
2022.12.10 -
System.out.println 로깅시 사용하지 말아야 하는이유?
1)System.out.pirntln 메소드는 무엇인가? Hello World! 우리는 너무도 쉽게 System.out.println()을 사용한다. 다음은 Hello world!를 출력하는 코드이다. public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } } Hello World! 뭔가 이상하다 그런데 이런 생각을 한 적 있는가? println() 메서드는 PrintStream 클래스의 메서드이지만 코드 어디에도 PrintStream 이라는 이름은 찾을 수 없다. 게다가 System.out.println() 대신 PrintStream.println()을 사용하면 컴파일 에러가 발생한..
2022.12.10 -
파일 대상 입출력
File fiel = new File("data"); 자바에서 제공되는 파일 클래스를 이용해서 데이터라는 이름의 파일을 객체로 생성한다. 하드디스크에 실제 존재하든 안하든 자바 메모리상에 만들어지는 객체이다 ( 경로를 가지고 있는 객체이다). 1) Stream =흐름 (파일을 출력하기 위한 흐름) FileOutputStream pos =null; 2)이클래스를 이용해서 객체를 생성할때 어떤 파일로 출력할 것인가? 나타낸다. 절대 경로 , 상대경로 사용 할수 있다. pos = new FileOutputStream(file); //파일=목적지= 빨대를 꼽는다. 3) 입출력 클래스 종류 Stream :1byte 자료형 기반, 한글은 안된다 Reader, Writer: Char 형이 디폴트 이다. 2byte 단..
2022.12.10 -
Json 실습 ( 깊은 복사 > 특정 인스턴스를 직렬화 및 역직렬화)
객체 직렬화 객체 직렬화 정의와 등장 배경 객체 직렬화 정의 -프로그램 실행시 생성되는 인스턴스의 상태를 장치에 저장하거나 네트워크로 전송하는 기능 등장배경 - 인스턴스의 상태를 다른 프로그램이나 네트워크로 전송해야 할 경우가 발생한다. 자바 객체 직렬화 특징 -객체의 상태를 지속시키는 방법을 제공한다. -스트럼을 통해 다른 장치나 네트워크 에서 사용 가능하게 한다 -객체는 바이트 데이터로 저장되거나 전송 자바 객체 직렬화 과정 Java.io.serializable 인터페이스를 구현한다. -인터페이스를 구현한 클래스의 속성은 모두 직렬화의 대상이 된다. -직렬화 대상에서 제외시키고 싶은 경우에는 transient 를 이용한다. 스트림 클래스를 이용하여 직렬화 또는 역직렬화 한다. -ObjectOutput..
2022.12.10