일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- jpa
- JDBC
- 스프링
- AOP
- 스프링 핵심 기능
- JPQL
- QueryDSL
- spring
- transaction
- kotlin
- springdatajpa
- db
- 그리디
- 스프링 핵심 원리
- Servlet
- pointcut
- Thymeleaf
- Spring Boot
- Android
- Proxy
- Exception
- Greedy
- 자바
- java
- SpringBoot
- 김영한
- http
- 인프런
- 알고리즘
- Today
- Total
목록Java/다양한 기능 (24)
개발자되기 프로젝트
1. wait(), notify() 리소스가 어떤 조건에서 더 이상 유효하지 않은 경우 리소스를 기다리기 위해 Thread가 wait() 상태가 된다. wait()상태가 된 Thread는 notify()가 호출될 때 까지 기다린다. 유효한 자원이 생기면 notify()가 호출되고 wait()하고 있는 Thread 중 무작위로 하나의 Thread를 재시작 하도록 한다. notifyAll()이 호출되는 경우 wait()하고 있는 모든 Thread가 재시작 된다. 이 경우 유효한 리소스 만큼의 Thread만이 수행될 수 있고 자원을 갖지 못한 Thread의 경우 다시 wait()상태로 돌아감. 자바에서는 notifyAll()메서드 사용을 권장 2. 도서관에서 책을 빌려보자 class Library{ publi..
1. Critical Section과 semaphore Critical Section은 두 개 이상의 thread가 동시에 에 접근 하는 경우 문제가 발생할 수 있기 때문에 동시에 접근할 수 없는 영역 semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다. 한 순간 오직 하나의 thread만이 semaphore를 얻을 수 있고, 나머지 thread들은 대기(blocking)상태가 된다. semaphore를 얻은 thread만이 critical section에 들어갈 수 있다. 2. Park 과 Park2 가 동시에 Bank 자원에 접근하여 작업이 이루어지는 경우의 예제 Shared resource : Bank객체 Critical Section : saveMoney(..
1. Thread 우선순위 Thread.MIN_PRIORITY(=1)~Thread.MAX_PRIORITY(=10) 디폴트 우선순위: Thread.NORMAL_PRIORITY(=5) 우선 순위가 높은 Thread가 CPU의 배분을 받을 확률이 높음 setPriority()/ getPriority() Thread 우선순위 예제 class PriorityThread extends Thread{ @Override public void run() { int sum = 0; Thread t = Thread.currentThread(); System.out.println(t + " start"); for (int i=0; i
1. Thread??? process(실행중인 프로그램) : 프로그램이 실행되면 os로 부터 메모리를 할당받아 프로세스 상태가 됨. process(프로그램이 메모리에 올라간 상태) thread : 하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread 프로그램이 돌아가려면 cpu를 점유해야 함. CPU를 점유하는 단위가 thread 2. multi-threading 여러 thread가 동시에 수행되는 프로그래밍. 여러 작업이 동시에 실행되는 효과 thread는 각각 자신만의 작업 공간을 가짐(context) 각 thread사이에서 공유하는 자원이 있을 수 있음(자바는 static instance) 여러 thread가 자원을 공유하여 작업이 수행되는 경우 서로 ..
1. Decorator Pattern 자바의 입출력 스트림은 decorator pattern 여러 decorator들을 활용하여 다양한 기능을 제공 상속 보다 유연한 구현 방식 데코레이터는 다른 데코레이터나 또는 컴포넌트를 포함해야 함 데코레이터는 다른 데코레이터를 감싸거나 컴포넌트를 감싼다. 지속적인 기능의 추가와 제거가 용이 decorator와 component는 동일한 것이 아님(기반 스트림 클래스가 직접 읽고 쓸 수 있음, 보조 스트림은 추가적인 기능 제공) 즉 데코레이터를 통해 component의 메서드를 호출하고, 데코레이터는 부가기능을 제공. 2. 예제 Coffee component = coffee public class EtiopiaAmericano extends Coffee{ @Overr..
1. File 클래스 파일 개념을 추상화한 클래스 입출력 기능은 없고, 파일의 이름, 경로, 읽기 전용등의 속성을 알 수 있음. 이를 지원하는 여러 메서드들이 제공됨. createNewFile() 메서드를 통해 파일 생성 가능 public class FileTest { public static void main(String[] args) throws IOException { File file = new File("newFile.txt"); file.createNewFile(); System.out.println(file.isFile()); System.out.println(file.isDirectory()); System.out.println(file.getName()); System.out.printl..
1. DataInputStream과 DataOutputStream 자료가 메모리에 저장된 상태 그대로 읽거나 쓰는 스트림 DataInputStream 메서드 DataOutputStream 메서드 public class DataStreamTest { public static void main(String[] args) { try(FileOutputStream fos = new FileOutputStream("data.txt"); DataOutputStream dos = new DataOutputStream(fos)) { dos.writeByte(100); dos.writeChar('A'); dos.writeInt(10); dos.writeFloat(3.14f); dos.writeUTF("Test"); }c..
1. 보조 스트림 실제 읽고 쓰는 스트림이 아닌 보조 기능을 제공하는 스트림 FilterInputStream과 FilterOutputStream이 보조 스트림의 최상위 클래스 생성자의 매개변수로 또 다른 스트림(기반 스트림이나 보조 스트림)을 가짐 즉 보조스트림 혼자만으로는 읽기/쓰기가 불가능하기 때문에 inputStream, outputStream을 주입받음. Decorator Pattern으로 구현됨 상위 클래스 생성자 생성자 설명 protected FilterInputStream과(InputStream in) 생성자의 매개변수로 InputStream을 받습니다. public FilterOutputStream(OutputStream out) 생성자의 매개변수로 OutputStream을 받습니다. 2...