분류 전체보기
-
[자료구조 Java] 공간복잡도, 자료구조의 시간 복잡도Computer Science/Data Structure 2022. 10. 2. 13:57
[ 참고용: 시간복잡도 ] 출처: https://erinh.tistory.com/entry/자료구조-Java-시간복잡도-점근표기법-빅오표기법?category=1046468 공간복잡도란? : 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 양 - 정적 변수로 선언된 것 외에, 동적인 재귀적 함수로 인해 공간을 계속해서 필요로 할 경우도 포함 - 시간복잡도와 마찬가지로 빅오표기법을 사용 - int 자료형 기준으로 배열 크기에 따른 메모리 사용량을 일반적으로 아래와 같음 int a[1000] : 4KB int a[1000000] : 4MB int a[2000][2000] : 16MB 자료구조에서의 시간 복잡도 1. 최악 시간 복잡도 자료구조 접근 탐색 삽입 삭제 배열 O(1) O(n) O(n) O(n) 스택..
-
[자료구조 Java] 시간복잡도 (점근표기법, 빅오표기법)Computer Science/Data Structure 2022. 10. 1. 14:34
시간복잡도란? : 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계 ▶︎ 어떠한 알고리즘의 로직이 '얼마나 오랜 시간'이 걸리는지 나타날 때 사용되며 보통 Big-O 표기법으로 표현 📍점근 표기법 1) Big-O(빅오) : 상한 점근, 시간복잡도가 최악인 경우 2) Big-Ω(빅오메가) : 하한 점근, 시간복잡도가 최선인 경우 3) Big-Θ(빅세타): 상한, 하한의 평균(중간값) ▶︎ 빅오표기법의 경우, 프로그램 실행 과정에서 소요되는 최악의 시간까지 고려하기 때문에 효율적인 코드의 판단 척도로 사용 가능 // 시간복잡도 10n^2+n을 가지는 경우의 코드 for (int i = 0; i < 10; i++) { for (int j = 0; j < n; j++) { for ( int k = 0; k <..
-
[Java 자바] 14. 람다식Programming/Java 2022. 9. 14. 00:26
14-1. 람다식이란? - 익명 함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가까움 - "(매개변수) -> {실행코드} " 형태로 작성 // Runnable 인터페이스의 익명 구현 객체를 생성하는 코드 Runnable runnable = new Runnable() { public void run() {...} } // 람다식을 이용해 표현할 경우 Runnable runnable = () -> {...}; 14-2. 람다식 기본 문법 // 기본 형태 (타입 매개변수, ...) -> { 실행문; ... } // int 매개 변수 a 값을 콘솔에 출력할 때 (int a) -> {System.out.println(a);} // 매개 변수 타입은 런타임 시 대입값에 따라 자동으로 인식될 수..
-
[Java 자바] 12. 멀티 스레드 ④ 스레드풀Programming/Java 2022. 9. 12. 20:08
12.9 스레드 풀 - 병렬 작업 폭증으로 인한 스레드의 폭증을 막기 위해 사용 - 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐(Queue)에 들어오는 작업들을 하나씩 스레드가 처리 - 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리 - 작업 처리 요청이 폭증하여도 스레드 전체 개수가 늘어나지 않아 성능의 급격한 저하 방지 12-9-1. 스레드풀 생성 및 종료 [ 스레드풀 생성 ] - ExecutorService 구현 객체(스레드풀)는 Executors 클래스의 두 가지 메소드 중 하나로 생성 가능 메소드명 (매개 변수) 초기 스레드 수 코어 스레드 수 최대 스레드 수 newCachedThreadPool() 0 0 Integer.MAX_VALUE newFixe..
-
[Java 자바] 12. 멀티 스레드 ③ 데몬 스레드, 스레드 그룹Programming/Java 2022. 9. 12. 15:39
12-7. 데몬 스레드 - 주 스레드의 작업을 돕는 보조적 역할을 수행하는 스레드로, 주 스레드가 종료되면 강제적으로 종료됨 - setDaemon(true)를 호출함으로써 스레드를 데몬으로 만들 수 있음 - start() 메소드 이후 setDaemon(true)를 호출하면 IllegalThreadStateException이 발생하므로 이전에 호출해야 함 - isDaemon(): 실행 중인 스레드가 데몬스레드인지 아닌지 확인 public static void main(String[] args) { AutoSaveThread thread = new AutoSaveThread(); thread.setDaemon(true); thread.start(); ... } 12-8. 스레드 그룹 - 관련된 스레드를 묶어..
-
[Java 자바] 12. 멀티 스레드 ② 동기화, 스레드 상태와 제어Programming/Java 2022. 9. 12. 15:19
12-4. 동기화 메소드와 동기화 블록 12-4-1. 공유 객체를 사용할 때 주의점 - 싱글 스레드 프로그램에서는 한 개의 스래드가 객체를 전부 사용하지만, 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우 발생 - 이 경우, 다른 스레드에 의해 객체가 상태 변경이 되어 의도와 다른 결과가 산출될 수 있기 때문에 주의해야 함 12-4-2. 동기화 메소드 및 동기화 블록 - 임계 영역 (critical section): 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역 => 자바에서는 이를 지정하기 위해 동기화 메소드와 동기화 블록을 제공 => 스레드가 객체 내부의 동기화 메소드 또는 블록에 들어가면 즉시 객체에 잠금을 걸어 다른 스레드가 임계 영역의 코드를 실..
-
[Java 자바] 12. 멀티 스레드 ① 개념과 생성방법, 우선순위Programming/Java 2022. 9. 12. 14:02
12-1. 멀티 스레드란? 12-1-1. 프로세스와 스레드 - 프로세스: 운영체제에서 실행 중인 하나의 애플리케이션 - 멀티태스킹: 두 가지 이상의 작업을 동시에 처리하는 것 => 멀티태스킹이 꼭 멀티프로세스를 뜻하지는 않으며, 한 프로세스 내에서 두 가지 이상의 작업을 처리할 수 있음 => 멀티 스레드를 이용하여 한 프로세스 내에서 여러가지 작업을 가능하게 하는 것! - 멀티 프로세스들은 운영체제에서 할당 받은 자신의 메모리를 가지고 실행되기 때문에 상호 독립적 - 멀티 스레드로 동작하는 파일은 다른 스레드에서 오류가 발생하면 함께 영향을 받음 => 예외, 오류 처리에 주의해야 함 12-1-2. 메인 스레드 - 모든 자바 어플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작 - 기본적으로 ..
-
[Java 자바] 11. 기본 API 클래스 ⑧ Wrapper(포장), Math, Random 클래스Programming/Java 2022. 9. 4. 22:34
11-9. Wrapper(포장) 클래스 - 포장 객체: 기본 타입(byte, char, short, int, long, float, double, boolean)의 값을 갖는 객체 - 포장하고 있는 기본 타입 값은 외부에서 변경 불가 기본 타입 포장 클래스 byte Byte char Character short Short int Integer long Long float Float double Double boolean Boolean 11-9-1. 박싱(Boxing)과 언박싱(Unboxing) - Boxing: 기본 타입의 값을 포장 객체로 만드는 과정 (기본타입의 값이나 문자열을 넘겨주면 됨) (1) 생성자 new 를 사용하여 생성 (2) value of를 사용하여 생성 - Unboxing: 포장 객체..