-
[자바의정석] Ch16. 네트워킹(Networking)스터디플래너/공부하기 2022. 10. 8. 14:03
1. 네트워킹(Networking) - 네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것 - java.net패키지를 사용하면 네트워크 어플리케이션을 구현 가능 1.1 클라이언트/서버(client/server) - 서버(server)란 서비스를 제공하는 컴퓨터(service provider) - 클라이언트는 서비스를 사용하는 컴퓨터(service user) - 서비스란 서버가 클라이언트에게 요청받은 작업을 처리하여 결과를 제공하는 것 - 서버가 제공하는 서비스의 종류에 따라 파일서버(file server), 메일서버(mail server), 어플리케이션 서버(application server) 등이 있음 - 서버가 서비스를 제공하기 위해서 서버 프로그램이 필요하고 클아이언트가 서..
-
[자바의 정석] Ch.15 입출력(I/O)스터디플래너/공부하기 2022. 10. 3. 09:56
6. 표준입출력과 File ᐧ Class System - System 클래스는 유용한 클래스 필드(class field)와 메소드를 갖고있음 → 클래스 필드란 클래스에 포함된 변수로 선언된 위치에 따라 클래스 변수(static variable), 인스턴스 변수(instance variable), 지역 변수(local variable)로 나뉨 - System 클래스의 필드는 인스턴트화할 수 없음 - System클래스의 기능은 다음 네 가지로 나눌 수 있음 → Standard input, Standard output, Error Output Stream → 환경변수나 외부에 정의된 속성에 접근 → 파일이나 라이브러리를 로딩하는 수단 → 배열의 일부분을 빠르게 복사하기 위한 메소드 6.1 표준입출력 - Sys..
-
[자바의 정석] Ch.15 입출력(I/O)스터디플래너/공부하기 2022. 10. 3. 09:49
3. 바이트기반의 보조스트림 3.1 FilterInputStream과 FilterOutputStream https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/FilterInputStream.html https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/FilterOutputStream.html - FilterInputStream과 FilterOutputStream은 각각 InputStream과 OutputStream의 자식 클래스이면서 보조스트림 클래스의 조상 클래스 - FilterInputStream/FilterOutputStream은 보조스트림으로 자체적으로 입출..
-
[자바의 정석] Ch.15 입출력(I/O)스터디플래너/공부하기 2022. 9. 18. 12:35
1. 자바에서의 입출력 1.1 입출력이란? - I/O는 입력을 뜻하는 Input과 출력을 뜻하는 Output의 줄임말. - 입출력은 컴퓨터 내부/외부 장치와 프로그램간의 데이터를 주고받는 것으로 Scanner를 통해 키보드로 데이터를 입력받고 System.out.println()을 이용하여 화면에 출력하는 것이 예시. 1.2 스트림(Stream) - 스트림은 데이터를 어느 한 쪽에서 다른 쪽으로 전달할 때 두 대상을 연결하고 데이터를 전송할 수 있는 무언가를 뜻함. - 스트림은 데이터를 운반하는데 사용하는 연결통로로 단방향통신만 가능해 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없음 → 입출력을 위해 입력 스트림과 출력 스트림 ,두 개의 스트림이 필요. 1.3 바이트기반 스트림 - InputStr..
-
[자바의 정석] Ch.14 람다와 스트림스터디플래너/공부하기 2022. 9. 10. 11:57
2.4 Optional와 OptionalInt Optional은 null이 아닌 값을 가질 수도 있고 가지지 않을 수도 있는 객체를 담는 클래스이다. 만약 값이 있다면 isPresent()메소드를 사용할 때 true를, 값이 없다면 빈 것으로 판단하여 false를 반환한다. orElse()메소드를 사용하면 값이 있다면 그 값을, 없을 때는 기본값을 반환한다. 값이 Null인지 아닌지 알 수 없을 때 ofNuallble() 메소드를 사용하면 null일 때 NullPointerException으로 처리하지 않고 Optional 객체를 만들 수 있다. 덕분에 if(a == null)와 같이 null인지 여부를 확인하기 위해 조건문을 여러 개 작성하여 코드를 복잡하게 작성할 필요가 없어졌다. Optional을 ..
-
[자바의 정석] Ch.14 람다와 스트림스터디플래너/공부하기 2022. 9. 3. 11:59
2. 스트림(Stream) 2.1 스트림이란? 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 스트림을 사용하면 데이터 소스가 무엇이든 간에 같은 방식으로 다룰 수 있어 코드의 재사용성이 높아진다. 배열이나 컬렉션에 국한되지 않고 파일에 저장된 데이터도 같은 방식으로 다룰 수 있다. public class StreamEx { public static void main(String[] args) { String[] arr = {"aaa", "ddd", "ccc"}; List list = Arrays.asList(arr); //스트림을 이용하여 문자열 배열 arr와 문자열 List list를 정렬하여 출력하기 Stream strStream1 = list.stre..
-
[자바의 정석] Ch.14 람다와 스트림스터디플래너/공부하기 2022. 8. 28. 14:41
1. 람다식(Lambda expression) 1.1 람다식이란 정수 n을 매개변수로 받아 길이 n의 배열을 만들고 1부터 5까지의 숫자를 무작위로 배열에 넣는 메소드를 만들어보자. int N = scan.nextInt(); int[] arr = new int[N]; public void maekArray(int N){ for(int i=0; i (int)(Math.random() * 5) + 1); 람다식(Lambda expression)은 메서드를 하나의 식으로 표현하여 함수를 간략하고 명확한 식으로 표현할 수 있게 해준다. 람다식은 익명함수(anonymous function)라고도 한다. 람다식을 이용하면 메서드를 사용하기 위해 클래스와 객체를 만들어야하는 번거로움도 없고 메서드의 이름과 반환값이 ..
-
[자바의 정석] Ch.13 쓰레드스터디플래너/공부하기 2022. 8. 13. 21:22
9. 쓰레드의 동기화 String name = "자바의 정석"이라는 자원을 두고 쓰레드 A와 쓰레드 B가 함께 작업을 한다고 가정해보자. 쓰레드 A는 2초 후 "자바의 정석"을 출력하고싶어하고 쓰레드 B는 name을 "스프링의 정석"으로 바꾼 뒤 이를 출력하고자 한다. 쓰레드 A가 먼저 작업한 다음 쓰레드 B가 작업하지만 쓰레드 A가 2초간 대기하는 사이 쓰레드 B가 끼어들어서 스프링의 정석으로 바꿨기 때문에 쓰레드 A와 B 모두 스프링의 정석을 출력한다. 의도한 대로 작업하려면 어떻게 해야할까? String name="자바의 정석"을 임계 영역(critical section)으로 정하고 이 데이터가 갖고있는 lock을 획득한 쓰레드만 이 영역의 코드를 수행할 수 있게 한다. lock을 가진 쓰레드가 작..