일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 함수형 인터페이스
- Switch Expressions
- 합병 정렬
- throwable
- 자바할래
- Study Halle
- 정렬
- 프리미티브 타입
- raw 타입
- System.in
- 브릿지 메소드
- 제네릭 타입
- 로컬 클래스
- yield
- 람다식
- 항해99
- 접근지시자
- github api
- 익명 클래스
- auto.create.topics.enable
- junit 5
- 자바스터디
- annotation processor
- System.err
- System.out
- docker
- 제네릭 와일드 카드
- 상속
- 바운디드 타입
- 스파르타코딩클럽
- Today
- Total
목록IT Study/JAVA OOP (37)
코딩하는 털보
객체 지향 프로그래밍 77. Multi-thread 프로그래밍 임계 영역(critical section) 두 개 이상의 thread가 동시에 접근하게 되는 리소스 critical section에 동시에 thread가 접근하게 되면 실행 결과를 보장할 수 없음 thread간의 순서를 맞추는 동기화(synchronization)가 필요 동기화 임계 영역에 여러 thread가 접근하는 경우, 한 thread가 수행하는 동안 공유 자원을 lock하여 다른 thread의 접근을 막음 동기화를 잘못 구현하면 deadlock에 빠질 수 있음 자바에서 동기화 구현 synchronized 수행문과 synchronized 메서드를 이용 synchronized 수행문 synchronized(참조형 수식) { } //참조형 ..
객체 지향 프로그래밍 74. Thread 구현하기 쓰레드를 구현할 일이 많지는 않지만 안드로이드 개발에서 쓰임 쓰레드 프로그래밍에서는 공유 자원이 중요 Process 실행중인 프로그램, OS로부터 메모리를 할당 받음 Thread 실제 프로그램이 수행되는 작업의 최소 단위 하나의 프로세스는 하나 이상의 Thread를 가지게 됨 Thread 구현하기 자바 Thread 클래스로부터 상속받아 구현 Runnable 인터페이스 구현 상속 방식 package thread; class MyThread extends Thread { public void run() { int i; for (i=0;i
객체 지향 프로그래밍 72. 그 외 입출력 클래스와 데코레이터 패턴 File 클래스 파일 개념을 추상화한 클래스 입출력 기능은 없고 파일의 속성, 경로, 이름 등을 알 수 있음 RandomAccessFile 클래스 입출력 클래스 중 유일하게 파일 입출력을 동시에 할 수 있는 클래스 파일 포인터가 있어서 읽고 쓰는 위치의 이동이 가능함 다양한 자료형에 대한 메서드가 제공됨 package stream.others; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFileTest { public static void main(String[] args) throws IOException { RandomAcc..
객체 지향 프로그래밍 71. 직렬화 인스턴스의 상태를 그대로 저장하거나 네트웍으로 전송하고 이를 다시 복원하는 방식 ObjectInputStream, ObjectOutputStream 보조스트림 사용 Serializable 인터페이스 직렬화는 인스턴스의 내용이 외부로 유출되는 것이므로 프로그래머가 객체의 직렬화 가능 여부를 명시함 구현 코드가 없는 마크 인터페이스 package stream.serialization; import java.io.*; // class Person implements Externalizable { //직렬화가능하며 구현해야할 기능이 있음 class Person implements Serializable { //직렬화가능하다는 마크 인터페이스 String name; transi..
객체 지향 프로그래밍 70. 보조 스트림 실제 읽고 쓰는 스트림이 아닌 보조적인 기능을 추가하는 스트림 데코레이터라고도 불린다 상위 클래스 FilterInputStream, FilterOutputStream 생성자의 매개변수로 다른 스트림을 가진다 데코레이터 패턴(Decorator Pattern) 기반 스트림 > 보조 스트림1 > 보조 스트림2 Buffered 스트림 : 내부에 8192바이트 배열을 가지고 있음, 읽거나 쓸때 속도가 빠름 private static int DEFAULT_BUFFER_SIZE = 8192; Buffered 스트림을 이용하여 파일 복사 package stream.decorator; import java.io.*; //import java.net.Socket; //import ..
객체 지향 프로그래밍 68. 바이트 단위, 문자 단위 입출력 스트림 바이트 단위 스트림 InputStream : 바이트 단위 입력 스트림 최상위 클래스 OutputStrem : 바이트 단위 출력 스트림 최상위 클래스 추상 메서드를 포함한 추상클래스로 하위 클래스가 구현하여 사용 주요 하위 클래스 FileInputStream, ByteArrayInputStream, FilterInputStream, etc FileOutputStream, ByteArrayOutputStream, FilterOutputStream, etc FileInputStream, FileOutputStream 사용하기 파일에 한 바이트 씩 자료를 읽고 쓰는데 사용 입력 스트림은 파일이 없을 때 예외 발생 출력 스트림은 파일이 없는 경우..
객체 지향 프로그래밍 66. 자바 입출력 스트림 입출력 스트림 이란 네트웍에서 자료의 흐름이 물과 같다는 의미에서 유래 다양한 입출력 장치에 독립적으로 일관성 있는 입출력 방식 제공 입출력이 구현되는 곳에서는 모두 I/O 스트림을 사용 :키보드, 파일, 디스크, 메모리 등 구분 I/O 대상 기준 : 입력 스트림, 출력 스트림 자료의 종류 : 바이트 스트림, 문자 스트림 스트림의 기능 : 기반 스트림, 보조 스트림 입력 or 출력 스트림 입력 스트림 : 대상으로 부터 자료를 읽어 들이는 스트림 ex) FileInputStream(바이트), FileReader(문자), BufferedInputStream(보조), BufferedReader, etc 출력 스트림 : 대상으로 자료를 출력하는 스트림 ex) Fi..
객체 지향 프로그래밍 65. 다양한 예외 처리 예외 처리 미루기 throws를 이용하여 예외처리 미루기 try{} 블록으로 예외처리 하지 않고, 메서드 선언부에 throws를 추가 예외가 발생한 메서드에서 예외처리를 하지 않고 메서드를 호출한 곳에서 예외처리함 main()에서 throws를 사용하면 가상 머신에서 처리 됨 package exception; import java.io.FileInputStream; import java.io.FileNotFoundException; public class ThrowsException { public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotF..
객체 지향 프로그래밍 63. 예외와 예외 처리 컴파일 오류 : 프로그램 코드 작성 중 발생하는 문법적 오류 실행 오류 : 실행중인 프로그램이 의도치 않은 동작을 하거나(bug) 프로그램이 중단되는 오류(runtime error) 자바는 예외 처리를 통하여 프로그램의 비정상 종료를 막고 log를 남길 수 있음 시스템 오류(error) : 가상 머신에서 발생, 프로그래머가 처리할 수 없음 동적 메모리를 다 사용한 경우, stack over flow 등 예외(Exception) : 프로그램에서 제어할 수 있는 오류 읽으려는 파일이 없는 경우, 네트웍이나 소켓 연결 오류 등 자바 프로그램에서는 예외에 대한 처리를 수행 함 Exception 클레스 : 모든 예외 클래스의 최상위 클래스 IOException, Ru..
객체 지향 프로그래밍 60. 스트림 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능(자료의 추상화) 배열, 컬렉션에 동일한 연산이 수행되어 일관성 있는 처리 가능 한번 생성하고 사용한 스트림은 재사용할 수 없음 스트림 연산은 기존 자료를 변경하지 않음 중간 연산과 최종 연산으로 구분 됨 최종 연산이 수행되어야 모든 연산이 적용되는 지연 연산 중간 연산 filter(), map() 조건에 맞는 요소를 추출하거나 요소를 변환 함 문자열의 길이가 5이상인 요소만 출력하기 sList.stream().filter(s->s.length()>=5).forEach(s->System.out.println(s)); 고객 클래스에서 고객 이름만 가져오기 customerList.stream().map(c->c.ge..