KDT/Java 55

240418 Java

복잡도 : 알고리즘의 성능을 나타내는 지표 시간복잡도(Time Complexity) : 특정한 크기의 입력에 대하여 알고리즘의 수행 시간 분석 오메가 표기법(Big-Ω Notation) : 최상의 경우(best case) 세타 표기법(Big-Θ Notation) : 평균의 경우(average case) 빅오 표기법(Big-O Natation) : 최악의 경우(worst case) 입력 크기(n)에 따른 단위 연산의 수행 횟수 변화를 함수로 나타낸 것 T(n) = 3n^2 + 2n + 8; n : 입력 횟수 증가, 3n^2 + 2n + 8 : 연산 단위 수행 횟수 증가 점진적 표기법 : Asymptotic Notation 시간복잡도 함수를 대표적인 복잡도 함수 집합의 원소로 표현하는 방법 알고리즘의 기본연..

KDT/Java 2024.04.18

240408 Java - 시간복잡도

※자료 구조 자료(데이터)의 집합으로 데이터들을 어떤 형태로 저장해 둘 것인가에 대해 연구해 놓은 형태 ※알고리즘 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합을 총칭 문제를 해결해 나가는 절차 입력, 출력, 유한성, 명백성, 효과성을 만족 분석을 통해 좋고 나쁨을 평가할 수 있음 논리이며 실질적인 개발에 적용되는 기초적인 아이디어 정해진 상황에서 더 효율적으로 문제를 해결해주는 알고리즘은 분명히 존재하고 알고리즘 분석을 통해 증명 어디에 사용? 개발 전체에 사용 효율적인 알고리즘을 사용함으로써 원하는 결과를 도출 종합적인 개발 역량을 평가하기 좋은 용도 프로그램과 알고리즘 프로그램 : 컴퓨터 상에서 실행할 수 있도록 컴퓨터가 이해할 수 있는 언어로 작성하는 것 알고리즘 : 프로그램을 작성하기..

KDT/Java 2024.04.08

240404 Java - 컬렉션 프레임워크 4

컬렉션 프레임워크 Map key와 Value로 구성된 객체를 저장하는 구조 데이터나 객체를 담아두기 편함 key는 중복이 될 수 없고, value값은 중복이 가능 기존 저장된 key와 동일한 key로 값을 저장한다면 기존 값은 없어지고 새로운 값을 덮어쓰게 됨 HashMap, TreeMap 등이 있음 HashMap 해시 함수를 통해 키와 값이 저장되는 위치를 결정 JSON 파일 형태를 가지고 있음 ex) put(key, value) => put('apple','사과') package test22; import java.util.HashMap; import java.util.Iterator; import java.util.Set; public class HashMapTest1 { public static ..

KDT/Java 2024.04.04

240403 Java - 컬렉션 프레임워크 3

컬렉션 프레임워크 Hash: 정보를 저장하거나 검색할 때 사용하는 자료 구조 -> Hash Table, Hash Map 해시코드 해시는 내부적으로 배열을 사용하여 데이터를 저장하기 때문에 빠른 검색 속도를 갖음 데이터 삽입, 삭제 시 기존 데이터를 밀어내거나 채우는 작업이 필요 없도록 특별한 알고리즘을 이용하여 데이터와 연관된 고유한 숫자(index)를 만들어 낸 뒤 저장 위치로 사용 특정 데이터가 저장되는 인덱스는 그 데이터만의 고유한 위치이기 때문에 삽입 시 다른 데이터의 사이에 끼어들거나 삭제 시 다른 데이터로 채울 필요가 없으므로 삽입과 삭제 시 데이터의 이동이 없도록 만들어진 구조 해시가 내부적으로 사용하는 배열을 Hash Table이라고 하며 그 크기에 따라서 성능 차이가 많이 남 키-값 형식..

KDT/Java 2024.04.03

240401 Java - 컬렉션 프레임워크 2

컬렉션 프레임워크 데이터를 효율적으로 다루기 위한 클래스들의 집합 Iterable 자바 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화 한 것 Iterable forEach -> next();, hasNext(), remove(); List(ArrayList, LinkedList, Vector) 동일한 타입의 여러 원소를 선형 집합으로 관리하는 동적 데이터 구조 요소 추가, 삭제됨에 따라 크기가 변경될 수 있음 List Interface 구현체에 따라 특성이 다름 ArrayList 인덱스를 통한 요소 접근이 빠름 원소 삽입/제거가 느림 LinkedList 인덱스를 통한 요소 접근이 느림 원소 삽입/제거가 빠름 Vector ArrayList 이전 사용 클래스 스레드 동기화 지원..

KDT/Java 2024.04.01

240328 Java - 컬렉션 프레임워크 1

컬렉션 프레임워크 컬렉션 프레임워크 데이터의 저장, 이와 관련있는 알고리즘을 구조화 해놓은 프레임워크 자료구조와 알고리즘을 클래스로 구현해 놓은 것 컨테이너 클래스라고도 함 컬렉션 프레임워크를 구성하는 클래스들은 많은 양의 인스턴스를 다양한 형태로 저장한느 기능을 제공 자료구조와 알고리즘을 잘 몰라도 자바의 컬렉션 프로엠워크를 활용하면 다양하고 효율적으로 인스턴스의 저장이 가능 자료 구조 자료의 집합 데이터들을 어떤 형태로 저장해 둘 것인가에 대해 미리 연구해 놓은 형태들 특별한 사용 목적의 데이터를 특별한 형태로 담을 수 있도록 설계된 공간 데이터의 검색, 삽입, 삭제 등의 다양한 측면을 고려하여 효율적인 데이터의 저장 방법을 연구 알고리즘 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합을 총..

KDT/Java 2024.03.28

240327 Java - 제네릭 2

제네릭 타입 자료형을 매개변수로 가지는 클래스와 인터페이스 class 및 interface 뒤에 를 적어주고 타입 매개변수를 지정 기본 자료형으로 지정할 수 없음. Integer, Double과 같은 Wrapper 클래스로 객체 타입으로 변환하여 데이터 값으로 사용해야함 사용할 자료형을 제한하는 제네릭 클래스에서 T 자료형에 사용할 자료형에 제한을 둘 수 있음 제네릭 클래스의 T에 대입된 자료형을 사용할 클래스를 추상 클래스로 상속 받는다. package test20; //추상 클래스 abstract class Material{ public abstract void doPrinting(); } //일반 클래스 class Powder extends Material{ @Override public v..

KDT/Java 2024.03.27

240325 Java - 제네릭 1

제네릭 동일한 프로그램 코드에 다양한 데이터 타입(자료형)을 적용 클래스 내부에서 사용할 변수의 형태를 외부에서 지정하는 방법으로 주로 멤버 변수의 자료형이나 메소드 반환 타입을 외부에서 지정해줄 때 사용 클래스와 메소드들을 일반화시켜 제네릭 메소드와 제네릭 클래스를 만듦 제네릭 메소드나 제네릭 클래스는 개발자가 원하는 데이터 타입으로 구체화시켜 메소드나 클래스의 프로그램 코드를 틀로 찍어 내듯 생산하는 기법 어떤 클래스나 메소드에 모든 사용 가능한 자료형을 미리 명시해 주어 클래스를 선언할 때 타입을 결정하지 않고 객체 생성 시 유동적으로 재사용하기 위한 것 제네릭을 활용하면 따로 형변환을 시켜 사용할 필요가 없고, 타입 에러가 발생하지 않기 때문에 유용하게 사용할 수 있음 제너릭 타입 자료형을 매개변..

KDT/Java 2024.03.25

240321 Java - 스레드 3

스레드 웹 서버 내에서 처리하기 위해서 스레드를 발생시켜 응답을 처리 인터럽트 하나의 프로그램 실행을 하드웨어적인 방법으로 중단하고 후에 재개할 수 있도록 다른 프로그램의 실행으로 옮기는 것 어떤 프로그램의 실행 중에 외부로부터의 몇 가지 사건에 의해 그 프로그램의 실행이 일시 정지되어, 그 사건에 대응한 다른 프로그램이 먼저 실행되는 것을 '인터럽트'라고 함 인터럽트 되어 실행된 프로그램이 완료되면 원래 프로그램의 실행이 중단점으로부터 재개 인터럽트는 하나의 명령의 실행마다 일어날 가능성이 있음 인터럽트를 일으키는 인터럽트 사건 또는 인터럽트를 발생시키는 주된 원인으로는 컴퓨터의 내부 구성 부품의 고장, 정의되어 있지 않는 명령의 발생, 자리 수가 넘침, 기억 보호 위반, 전원 및 지진에 의한 이상, ..

KDT/Java 2024.03.21

240320 Java - 스레드 2

스레드 싱글 스레드 package test18; public class Thread1 { public static void main(String[] args) { //스레드(Thread) //하나의 프로세스에서 동시에 기능을 처리하기 위한 목적으로 사용되는 실행 단위 //하나의 프로세스에는 1개 이상의 스레드가 존재함 //싱글(메인) 스레드 : 최초 실행 시 메인 스레드가 main() 함수를 실행시킴 //멀티 스레드 : 하나의 기능을 실행할 수 있는 실행 단위(스레드)가 여러 개인 것을 말함 //스레드를 사용하는 목적은 '동시 작업 처리' //JVM이 운영체제 역할을 함(CPU 역할) //자바는 프로세스가 존재하지 않고 스레드만 존재 //JVM에 의해 스케쥴되는 실행 단위 코드 블록. 하나의 프로세스(응..

KDT/Java 2024.03.20
728x90