Backend/Java 23

[Java] 멀티스레드 와 멀티 프로세스

학습목표 자바 스레드란? 스레드와 프로세스의 차이 멀티 프로세스와 멀티 스레드의 차이 컴퓨터 유저는 동시에 한개 이상의 시스템을 쓸 수 있는 것을 당연히 받아들인다. 하나의 어플리케이션일지라도 하나 이상의 작업을 동시에 진행한다. 동시에 오디오를 들으며 playback그리고 화면이 업데이트되는 등 여러작업이 동시에 진행된다. 이런 것을 concurrent software라고 한다. Java플랫폼은 concurrent programming을 적용되어 있다. Java 5.0이후 high-level concurrency API들을 제공한다. (java.util.concurrent) # 자바 스레드(Java Thread) 란? 일반 스레드와 거의 차이가 없으며, JVM가 운영체제의 역할을 한다. 자바에는 프로세..

Backend/Java 2021.03.03

Java NIO 알아보기

Java NIO > java.nio.file 패키지에서 file I/O, 디렉토리 I/O에 관해서 알아보자. 유저영역 : 실행 중인 프로그램이 존재하는 제한된 영역으로 하드웨어에 직접 접근이 불가. 커널영역 : 반대로 하드웨어에 직접 접근이 가능하고 다른 프로세스를 제어할 수 있는 영역을 말함. 이런 그림을 기반으로 기반의 I/O 프로세스를 정의해보면 다음과 같습니다. ※ 자바 I/O 프로세스 1) 프로세스가 커널에 파일 읽기 명령을 내림. 2) 커널은 시스템 콜[read()]을 사용해 디스크 컨트롤러가 물리적 디스크로부터 읽어온 파일 데이터를 커널 영역안 버퍼에 쏜다. * DMA(Direct Memory Access) : CPU의 도움없이 물리적 디스크에서 커널영역의 버퍼로 데이터를 읽어오는 것 3) ..

Backend/Java 2021.03.01

Java I/O (Input / Output)

목표 자바의 Input과 Output에 대해 학습하세요. 학습할 것 (필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 # 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 1. 스트림(Stream) 기반의 I/O Byte Streams : 프로그램은 바이트 스트림을 8비트 I/O를 수행하기 위해 사용한다. 모든 바이트 스트림 클래스는 InputStream과 OutputStream의 자손 클래스이다. 많은 바이트 스트림 클래스가 있다. 대표적으로 ..

Backend/Java 2021.02.21

JAVA 상속

학습목표 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 # 자바 상속의 특징 객체에 메소드(기능)를 추가하는 것을 하고 싶다. 그러나 아래 2가지 때문에 어렵다. 1. 만약 객체에 추가하는 메소드를 자신이 만들지 않았다. 그렇다면 원 소스를 업데이트 하면 추가한 메소드가 사라져서 이런 문제가 일어나지 않기 위해서는 지속적으로 코드를 관리해야 한다. 2. 해당 객체가 다양한 곳에서 사용되면 다른 곳에서 불필요한 기능이 포함될 수 있다. 그럼 기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법이 없을까? 이런 맥락에서 등장하는 것이 상속이다. 즉 기존의 객체를 수정하지 않으..

Backend/Java 2021.02.20

annotations

학습목표 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 애노테이션 기본 @GetMapping("hello") //hello 같이 동적인 변수는 들어갈 수 없다. static(정적)이어야 한다. public String hello(){ return "hello"; } # 애노테이션 정의하는 방법 애노테이션의 여러 가지가 있는 데 주로 3가지 용도로 쓰인다. 1. 컴파일러에 대한 정보 : 컴파일러가 오류를 감지하거나 경고를 억제하는 데 주석을 사용할 수 있다. 2. 컴파일 시간 및 배포 시간 처리 : Software tools 는 annotation 정보를 처리하여 코드를 생성, XML 파일 등을 생성할 수 있다. 3. 런타임 처리 : 일부 주석을 런타임..

Backend/Java 2021.02.06

Enum 자바의 열거형

학습 목표 enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum은 자바 5.0부터 사용할 수 있게 되었다. 상수는 유일무이 고정된 값. enum 정의하는 방법 상수의 그룹을 미리 정할 수 있는 것이 열거형(enumerated type)이다. 서로 연관된 상수들의 집합이라고 할 수 있다. 문법적으로 미리 상수를 고정시켜서, 런타임 에러를 방지하고, 컴파일시에 발견할 수 있도록 한다. (좋은 프로그래밍은 자기자신을 견제해야 한다.) class Fruit{ public static final Fruit APPLE = new Fruit(); public static final Fruit PEACH = new Fruit(); p..

Backend/Java 2021.01.29

[Java] 클래스

# 클래스 정의하는 방법 객체지향 컨셉으로 아래 샘플로 각각 필드와 생성자, 메소드에 관해서 설명해보겠다. public class Bicycle { // the Bicycle class has // three fields public int cadence; public int gear; public int speed; // the Bicycle class has // one constructor public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; } // the Bicycle class has // four methods publ..

Backend/Java 2021.01.20

[Java] 선택문, 반복문

#선택문 if-then & if-then-else 가장 기본적인 선택문이다. 오직 특정 if조건이 true일때만 해당 if 블럭이 실행된다. void applyBrakes(){ //the "if" clause: bicycle must be moving if(isMoving) //the "then" clause: decrease current speed currentSpeed--; } } void applyBrakes(){ //the "if" clause: bicycle must be moving if(isMoving) //the "then" clause: decrease current speed currentSpeed--; } else{ System.err.println("The bicycle has a..

Backend/Java 2021.01.18

Java 예외 처리 정리

# 목표 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 # 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try ~ catch : try를 활용해서 코드를 실행 시키고, catch 조건에 맞는 예외 발생시 작성된 코드대로 예외 처리를 시킬 수 있다. finally 는 예외처리된 후에도 실행될 수 있게 코드작성을 할 수 있다. import java.io.FileWriter; import java.io.IOException; public class Exceptio..

Backend/Java 2021.01.16

Junit5 문법 / 예제 / 활용 방법

#시작하며 모두가 테스트를 싫어하지만 최근 TDD환경이 트렌드로 되면서 Junit을 활용해 테스트코드를 짜는 개발방식이 중요해졌다. Test Driven Development (Write test first, then code) #Junit5 라이브러리 활용 방법 (vs code) 1. 아래 jar파일을 받아서 폴더에 저장한다. mvnrepository.com/artifact/org.junit.platform/junit-platform-console-standalone Maven Repository: org.junit.platform » junit-platform-console-standalone Module "junit-platform-console-standalone" of JUnit 5. Versi..

Backend/Java 2021.01.16