CS
-
JAVA - JVMCS/Java 2021. 2. 17. 20:15
JVM JVM(Java virtual machine) 자바 소스코드로 부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다. 바이너리 코드를 읽고, 검증하고 실행하며 실행 환경의 규격을 제공한다. 구조 Class Loader 자바 파일(.java)이 생성되면 자바 컴파일러가(javac) 컴파일하여 바이트코드(.class)로 변환해 준다. 이때 이러한 class파일들을 모아서 JVM이 OS로부터 할당받은 메모리 영역인 Runtime data area로 적재하는 역할을 한다. Execution Engine class loader에 의해 메모리에 적재된 클래스(바이트코드)들을 기계어로 변경해 명령어 단위로 실행한다. Garbage Collctor Heap 메모리 영역에 생성된 객체들 중에 참조되..
-
JAVA - 접근 제어자CS/Java 2021. 2. 17. 19:40
접근 제어자 private private이 붙은 변수, 메소드는 해당 클래스 에서만 접근이 가능하다. default 접근 제어자를 별도로 설정하지 않는다면 해당 패키지 내에서만 접근이 가능하다. protected protected가 붙은 변수, 메소드는 해당 패키지 내 또는 패키지 내의 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다. public public이 붙은 변수, 메소드는 어떤 클래스에서라도 접근이 가능하다. reference velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#java wikidocs.net/232
-
JAVA - 객체지향CS/Java 2021. 2. 17. 19:36
객체지향 OOP(Object Oriented Programming) - 객체지향 프로그래밍 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 장점: 코드 재사용이 용이하고, 유지보수가 쉽다. 클래스 단위로 모듈화하여 대형 프로젝트에 적합하다. 단점: 처리속도가 상대적으로 느리고, 객체가 많으면 용량이 커질 수 있다. 설계시 많은 시간과 노력이 필요하다. 객체지향 VS 절차지향 절차지향 프로그래밍) 순차적인 처리가 중요하며 컴퓨터 작업 처리 방식과 비슷하여 속도가 빠르다. 데이터를 중심으로 함수를 구현한다. 객체지향 프로그래밍) 필요한 객체의 종류와 속성이 중요하며 메소드를 통해서만 객체에 접근할 수 있어 속도가..
-
알고리즘 - Shortest PathCS/알고리즘 2021. 2. 16. 22:50
Shortest Path 최단경로 간선 가중치가 있는 유향 그래프에서 두 정점 사이의 최단 경로를 찾는다. Dijkstra Algorithmn 첫 정점을 기준으로 연결되어있는 정점의 거리 정보를 min heap에 넣고 가장 작은 거리를 갖는 정점을 선택한다. (방향성이 있다는 것만 제외하면 MST의 prim알고리즘과 유사하다.) 시작 정점이 A일때, A -> B: 8이고, B -> E: 10이면 A -> E: 18로 갱신해준다. 하나의 정점에서 다른 모든 정점들의 최저 비용을 구한다. 모든 간선의 가중치는 음이 아니어야하고 재방문을 허용하지 않는다. 수행시간: O(ElogV) 구현 with JAVA (백준 1753 최단 경로) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..
-
OS - CPU스케줄링CS/OS 2021. 2. 16. 20:16
CPU 스케줄링 CPU 스케줄링 CPU와 같은 자원을 우선순위에 기반하여 프로세스에 할당하는 방법을 말한다. 이때 사용되는 Queue에는 세 가지가 있다. Job Queue: 현재 시스템 안에서 돌고 있는 프로세스를 의미한다. Ready Queue: 메모리 안에서 CPU의 할당을 기다리는 프로세스를 의미한다. Device Queue: 장치 입출력을 기다리고 있는 프로세스를 의미한다. 스케줄러의 종류 장기 스케줄러(Job 스케줄러) 어떤 프로세스를 메모리에 먼저 적재할 것인지 결정한다. 단기 스케줄러(CPU 스케줄러) CPU 스케줄링. 메모리에 올라온 프로세스들 중에서 어떤 프로세스를 먼저 CPU의 할당을 받게 할지 순서를 결정한다. 중기 스케줄러(Swapper) 자원 고갈 등의 이유로 메모리에 적재된 프..
-
알고리즘 - MSTCS/알고리즘 2021. 2. 15. 22:21
MST MST Minimum Spanning Trees. 최소 신장 트리. 조건: 싸이클이 없는 무향 연결 그래프. 연결 그래프란 모든 정점 간에 경로가 존재하는 그래프를 말한다. 간선의 합이 최소인 신장트리를 말한다. Prim Algorithmn 임의의 시작 노드를 골라 min heap에 insert한 후 노드와 연결된 노드를 min heap에 insert해준다. 거리가 작은 노드부터 꺼내며 꺼낼 때마다 연결된 노드를 찾아 min heap에 넣어주는 과정을 반복한다. min heap에 저장되는 정보는 현재 노드 정보와 이전 노드에서 현재 노드까지의 거리 정보이다. 수행시간: O(ElogV) 구현 with JAVA (백준 1197 최소 스패닝 트리) 1 2 3 4 5 6 7 8 9 10 11 12 13 ..
-
OS - 프로세스와 쓰레드CS/OS 2021. 2. 15. 20:52
프로세스와 쓰레드 프로세스 실행중인 프로그램으로 메모리에 적재되어 CPU자원의 할당을 받을 수 있는 것을 말한다. 쓰레드 프로세스의 작업 실행 단위로 프로세스에 할당된 메모리, 자원을 공유할 수 있다. 쓰레드 간에는 각자 독립적인 작업을 수행하기 때문에 각각의 스택과 레지스터를 가진다. 프로세스의 메모리, 자원등을 공유하므로 커널의 도움 없이 상호 통신이 가능하다. 사용자 수준의 쓰레드: 사용자가 만든 라이브러리를 사용하여 쓰레드를 운용한다. 속도는 빠르지만 구현이 어렵다. 커널 수준의 쓰레드: 운영체제의 커널에 의해 쓰레드를 운용한다. 구현이 쉽지만 속도가 느리다. 멀티 프로세스 다수의 프로세스를 실행하는 것이다. 멀티 프로세스는 프로세스 간 데이터, 힙, 스택영역 모두를 비공유 한다. 장점 하나의 프..