개발자 수업/Java
-
32. 연결리스트(Linked List) 구현개발자 수업/Java 2021. 11. 2. 20:25
0-1. 자료구조란 무엇인가? (Data Structure) 1) 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법들 2) 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 3) 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음 4) 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 함 0-2. 선형 자료구조 (한 줄로 자료를 관리하기) 1) Array(배열) - 정해진 크기의 메모리를 먼저 할당받아 사용 - 자료의 물리적 위치와 논리적 위치가 같음 1. LinkedList 특징 1) 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 2) 자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음 3) 자료가 추가될 때..
-
Java Miniproject 중 Builder개발자 수업/Java 2021. 10. 27. 13:04
package kr.co.ezenac.project; /* * Builder Pattern * * 1. 메서드의 조합으로 결과물을 생성 * 1) 생성에 대한 과정과 각 결과물을 표현하는 방법을 분리하여 동일한 생성 과정에 서로 다른 여러 결과물이 나올 수 있도록 함 * 2) 단계별 생성에 중점을 두는 패턴 * 3) 새로운 결과물이 필요한 경우에도 동일한 과정으로 생성할 수 있음 * 4) 생성 과정과 구현 방법을 분리하여 동일한 생성에서 여러 다른 표현이 나올 수 있음 * * 2. 생성자를 대체하는 방법 * 1) 객체를 생성할 때 매개 변수가 여러 개인 경우 여러 개의 생성자를 사용하기보다는 인스턴스 생성을 위한 Builder를 제공함으로써 * 이후 매개 변수가 늘어나더라도 유연하게 수정할 수 있는 구조를..
-
-
문제 2 - Chap09 / kr.co.ezenac.assignment개발자 수업/Java 2021. 10. 26. 10:01
package kr.co.ezenac.assignment; /* * String 메서드 * indexOf() : 특정 문자열 찾는 메서드 * - 매개값으로 들어가는 문자열의 시작되는 인덱스 리턴함 */ public class IndexOfTest { public static void main(String[] args) { String str = "오늘은 자바 공부하기가 참 좋네요."; int index = str.indexOf("공부"); System.out.println("공부라는 문자열의 index : " + index); if(str.indexOf("공부") != -1) { System.out.println("공부와 관련된 내용이에요."); } else { System.out.println("공부와..
-
문제 1 - Chap13 / kr.co.ezenac.review02개발자 수업/Java 2021. 10. 26. 09:59
package kr.co.ezenac.review02; import java.io.IOException; /* * 고객센터에 전화 상담을 하는 일반인들이 있습니다. * 일단 고객에게서 전화가 오면 대기열에 저장되고 각 상담원에게 배분이 됩니다. * 배분이 되는 정책은 크게 3가지가 있습니다. * 1. 모든 상담원이 동일한 상담 건수를 처리하도록 상담원 순서대로 배분합니다. * 2. 쉬고 있거나 상담원에게 할당된 통화 수가 가장 적은 상담원에게 배분합니다. * 3. 고객 등급에 따라 등급이 높은 고객은 업무능력이 우수한 상담원에게 배분합니다. * * * 전화 상담원 할당 방식을 선택하세요. * R : 한 명씩 차례대로 * L : 대기가 적은 상담원 우선 * P : 우선순위가 높은 고객 우선 숙련도 높은 상..
-
31. 멀티스레드2개발자 수업/Java 2021. 10. 25. 18:17
package kr.co.ezenac.wait2; /* * 책을 못빌릴 경우에 wait() 호출해서 기다림 * 책이 반납되어 빌릴 수 있게 될 경우 깨워주는게 notify()임 */ import java.util.ArrayList; class EzenLibrary { public ArrayList books = new ArrayList(); public EzenLibrary() { books.add("인텔리제이 IEDA1"); books.add("인텔리제이 IEDA2"); books.add("인텔리제이 IEDA3"); } // 책 빌림 public synchronized String lendBook() throws InterruptedException { Thread t = Thread.currentTh..
-
30. Review개발자 수업/Java 2021. 10. 25. 18:14
1. 중첩 클래스(nested class) 1) 클래스 안에 또 다른 클래스가 정의되는 것 2) 특정 클래스를 자신의 클래스 내부적인 용도로만 사용 3) 멤버로 존재하는 inner 클래스 : 객체를 생성해야만 사용할 수 있는 형태 4) static inner 클래스 : outer 클래스 객체를 생성하지 않아도 inner 클래스에 접근 가능 5) 메서드 지역(local) 안에 존재하는 inner 클래스 - 로컬 변수처럼 인식 - 메서드 호출될 때 생성되며 메서드가 종료될 때 삭제됨 6) 익명 클래스 - 이름이 없는 클래스로 단 한 번 임시적으로 사용하는 클래스로 유용 - 인터페이스, 클래스 모두 익명 클래스로 객체를 생성할 수 있음 - 인터페이스 구현 없이 생성과 동시에 오버라이드 가능 - 익명 클래스 내..
-
29. 멀티스레드개발자 수업/Java 2021. 10. 22. 17:19
1. 프로세스(process) 1) 프로그램 ---실행---> 프로세스 2) 프로그램이 실행되면 OS(Operating System)로부터 메모리를 할당받아 프로세스 상태가 됨 3) 하나의 프로그램이 여러 개의 프로세스를 만들기도 함 2. 멀티 태스킹(multy tasking) 1) 통상 두 가지 이상의 작업을 동시에 처리하는 것을 칭함 2) 구현 방법 - 멀티 프로세스 - 독립적 프로그램을 여러 번 실행하고 작업을 처리하는 것 - 멀티 스레드 - 하나의 프로그램을 실행하여, 내부적으로 여러 가지 작업을 처리하는 것 ex) 카카오톡 - 채팅 스레드, 파일 전송 스레드 등 - 소프트웨어 병행 작업 처리를 위해 multy thread를 사용함 3. 스레드(thread) 1) 하나의 프로세스는 하나 이상의 t..