백엔드/Java의 정석 33

TIL 정리_33

네트워킹 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것이다 java.net패키지를 사용하면 네트워크 어플리케이션의 데이터 통신부분을 쉽게 작성할 수 있다 클라이언트/서버(client/server) 서버 : 서비스를 제공하는 컴퓨터(service provider) 클라이언트 : 서비스를 사용하는 컴퓨터(service user) 서버는 다수의 클라이언트에게 서비스를 제공하기 때문에 하드웨어의 사양에 관계없이 서비스를 제공하는 소프트웨어가 실행되는 컴퓨터를 서버라 한다 서비스는 서버가 클라이언트로부터 요청받은 작업을 처리하여 그 결과를 제공하는 것을 뜻한다 서버가 제공하는 서비스의 종류에 따라 파일서버, 메일서버, 어플리케이션 서버 등이 있다 서버에 접속하는 클라이언트 수에 따라 하나의 서버..

TIL 정리_32

File 파일은 기본적이면서도 가장 많이 사용되는 입출력 대상이기 때문에 중요하다 자바에서는 File 클래스를 통해서 파일과 디렉토리를 다룰 수 있도록 하고 있다 -> File 인스턴스는 파일일 수도 있고 디렉토리일 수도 있다 File의 생성자와 경로에 관련된 메서드 생성자/메서드 설명 File(String fileName) 주어진 문자열을 이름으로 갖는 파일을 위한 File 인스턴스를 생성한다. 파일뿐만 아니라 디렉토리도 같은 방법으로 다룬다 fileName은 주로 경로를 포함해서 지정해주지만, 파일 이름만 사용해도 되는데, 이 경우 프로그램이 실행되는 위치가 경로(path)로 간주된다. File(String pathName, String fileName) File(File pathName, strin..

TIL 정리_31

문자기반 스트림 Reader&Writer byte 배열대신 char 배열을 사용한다 그 외에는 InputStream/Outpurstream 메서드와 같다 문자기반 스트림이라는건 단순히 2 byte로 스트림을 처리하는 것만이 아니다 문자데이터를 다루는데 필요한 또 하나의 정보는 인코딩이다 Reader/Writer와 자손들은 여러종류의 인코딩과 자바에서 사용하는 유니코드(UTF-16)간의 변환을 자동적으로 처리해준다 Reader : 특정 인코딩 -> 유니코드로 변환 Writer : 유니코드 -> 특정 인코딩 변환 FileReader FileWriter 파일로부터 텍스트 데이터를 읽고 파일에 쓰는데 사용된다 //FileInputStream을 사용하면 한글을 사용할 경우 깨진다 PipedReader PipedW..

TIL 정리_30

FileInputStream과 FileOutputStream //실제로 많이 사용 -파일에 입출력 하기위한 스트림 생성자 설명 FileInputStream(String name) 지정된 파일이름(name)을 가진 실제 파일과 연결된 FileInputStream을 생성한다 FileInputStream(File file) 파일의 이름이 String이 아닌 File인스턴스로 지정해주어야 하는 점을 제외하고 위와 동일하다 FileInputStream(FileDescriptor fdObj) 파일 디스크립터(fdObj)로 FileInputStream을 생성한다 FileOutputStream(String name) 지정된 파일이름(name)을 가진 실제 파일과 연결된 FileOutputStream을 생성한다 File..

TIL 정리_29

자바에서의 입출력 I/O란? Input과 Output의 약자로 입출력을 의미한다 입출력 : 컴퓨터 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고받는 것이다 입출력의 예 : 키보드로부터 데이터 입력받기, println()으로 화면에 출력 스트림 데이터를 운반하는데 사용되는 연결통로이다 스트림은 단방향통신만 가능하여 입출력을 동시에 할 수 없다 -> 입력 스트림/출력 스트림 2개가 필요 FIFO(First In First Out)구조로 되어있으며 건너뜀 없이 데이터를 연속적으로 주고받는다 바이트기반 스트림 - InputStream OutputStream 스트림은 바이트 단위로 데이터를 전송한다 입력/출력 스트림의 종류 입력스트림 출력스트림 입출력 대상의 종류 FileInputStream FileOut..

TIL 정리_28

Optional와 OptionalInt // java.util.Optional (JDK 1.8) Optonal는 지네릭 클래스로 T타입의 객체를 감싸는 래퍼클래스이다 **래퍼(wrapper)클래스 : 객체가 아닌 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스 ->Optional타입의 객체에는 모든 타입의 참조변수를 담을 수 있다 public final class Optional { private final T value; // T타입의 참조변수 --- } 최종연산의 결과를 Optional 객체에 담아서 반환한다 ->반환된 결과가 null인지 if문으로 체크하는 대신 Optional에 정의된 메서드를 통해 간단히 처리가능 Optional 객체 생성 of() 또는 ofNullable()을 사용한다 //..

TIL 정리_27

스트림 만들기 컬렉션 컬렉션의 최고조상인 Collection에 stream()이 정의되어 있다 stream()은 컬렉션을 소스(source)로 하는 스트림을 반환한다 Stream Collection.stream() 예) List로부터 스트림을 생성하는 코드 List list = Arrays.asList(1,2,3,4,5); Stream intStream = list.stream(); 배열 배열을 소스로 하는 스트림을 생성하는 메서드는 Stream과 Arrays에 static 메서드로 정의되어 있다 Stream Stream.of(T[]) 문자열 스트림 Stream strStream = Stream.of(new String[]{ }); 특정 범위의 정수 IntStream과 LongStream은 지정된 범위의..

TIL 정리_26

함수형 인터페이스 람다식 = 익명 클래스의 객체와 동일하다 인터페이스 : 단 하나의 추상 메서드만 선언 람다식을 다루기 위한 인터페이스 : 함수형 인터페이스 (functional interface) -> 함수형 인터페이스 타입의 참조변수로 람다식을 참조할 수 있다 @FunctionalInterface를 붙이면 컴파일러가 함수형 인터페이스를 올바르게 정의했는지 확인한다 함수형 인터페이스 타입의 매개변수와 반환타입 메서드의 매개변수가 MyFunction 타입이면 이 메서드를 호출할 때 람다식을 참조하는 참조변수를 매개변수로 지정해야 한다 참조변수 없이 람다식을 매개변수로 지정 aMethod( () -> System.out.println("myMethod()")); 람다식의 타입과 형변환 함수형 인터페이스로 ..

TIL 정리_25

쓰레드의 동기화 멀티쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다 -> 한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는 것이다 synchronized를 이용한 동기화 1. 메서드 전체를 임계 영역으로 지정 public synchronized void calcSum() { //임계영역(critical section) } -> 한번에 1쓰레드를 사용, 최소화하기 2. 특정한 영역을 임계 영역으로 지정 synchronized(객체의 참조변수) { //임계영역(critical section) } wait()와 notify() 동기화된 임계 영역의 코드를 수행하다가 작업을 더 이상 진행할 상황이 아니면 wait()를 호출하여 쓰레드가 락을 반납하고 기다리게 한다, 나중에 진행할..

TIL 정리_24

쓰레드의 우선순위 쓰레드는 우선순위(priority)라는 속성(멤버변수)을 가지고있다 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있다 쓰레드의 우선순위 지정하기 void setPriority(int newPriority) 쓰레드의 우선순위를 지정한 값으로 변경한다 int getPriority() 쓰레드의 우선순위를 반환한다 public static final int MAX_PRIORITY = 10 //최대 우선순위 public static final int MIN_PRIORITY = 1 //최소 우선순위 public static final int NORM_PRIORITY = 5 //보통 우선순위 쓰레드 그룹 서로 관련된 쓰레드를 그룹으로 묶어서 다..