Computer Science
-
Array & ListComputer Science 2020. 12. 23. 00:44
배열 (Array)같은 타입의 데이터를 나열한 선형 자료구조연속된 메모리 공간에 순차적으로 저장배열의 크기는 고정. 선언할 때 배열의 크기를 정하고, 변경할 수 없다.시간복잡도삽입/삭제배열의 맨 앞에 삽입 삭제하는 경우 : O(n)배열의 맨 뒤에 삽입/삭제하는 경우 : O(1)배열 중간에 삽입/삭제하는 경우 : O(n)탐색O(1)장점인덱스를 가지고 있어 바로 접근 가능 - O(1)연속된 메모리 공간에 존재하기 때문에 관리가 편하다.단점삽입과 삭제가 어렵고 오래 걸린다.원소를 삽입하거나 삭제할 경우, 해당 원소 이후의 모든 원소들을 한칸씩 밀거나 당겨야 한다.연속된 메모리 공간에 저장되기 때문배열의 크기를 바꿀 수 없다.배열은 처음 생성할 때 크기를 결정하고 고정크기를 변경하기 위해서는 원하는 크기의 새로..
-
Java Collection FrameworkComputer Science 2020. 12. 21. 14:58
컬렉션은 기본 데이터형이 아닌, 참조 데이터형만 저장이 가능하다는 것이다. 따라서 Collection에서의 데이터는 Object 타입의 객체로서 저장이 되는 것인데, 그렇다면 여기서 기본 데이터형은 어떻게 저장하고 관리할 수 있을까? 기본 데이터형인 5를 Wrapper클래스의 Integer 타입 객체로 변환하여 autoboxing으로 저장할 수 있다. 즉, 오토박싱을 통해 기본 데이터형을 컬렉션에 직접 대입하여 저장해도 컴파일러가 자동으로 Wrapper 클래스로 변환해준다 저장된 값을 얻어올 때에도 객체화된 데이터를 기본 데이터형으로 바로 얻어올 수 있는 데, 이 경우 언박싱(unboxing)이라는 용어를 사용한다.List : Interface동일한 데이터의 중복을 허용한다.데이터 저장 순서가 유지된다힙..
-
JVM 이해Computer Science 2020. 12. 19. 17:39
JVM의 역할 Java Byte Code를 OS에 맞게 해석해주는 역할 JVM이 Byte Code를 해석해주기 때문에 OS에 종속적이지 않고 실행 가능 (플랫폼 독립적) 또한 GC, 메모리 관리 등을 수행한다. JVM 실행 과정 .java -> (javac) -> .class -> (jvm) -> process Java Compiler는 .java 파일을 .class (java byte code)로 변환 byte code는 기계어가 아니기 때문에 OS에서 바로 실행되지 않음 이 때 JVM이 OS가 Byte Code를 이해할 수 있도록 해석해줌 Byte Code는 JVM위에서 OS에 상관없이 실행 JVM의 해석을 거치기 때문에 c언어와 같은 로우레벨 언어에 비해 속도가 느림 JVM 구조 .java → (j..
-
의존성 주입(Dependecy Injection) 이란?Computer Science 2020. 12. 17. 01:55
의존성 주입(DI, Dependency Injection)이란? 하나의 객체에 다른 객체의 의존성을 제공하는 기술이다. 의존성: 객체 지향에서 두 클래스 간의 관계이다. 둘 중 하나가 다른 하나를 필요로 한다. 예를 들면, Computer 클래스는 Cpu 클래스에 의존적이다. 주입: 생성자나 메서드 등을 통해 외부로 부터 생성된 객체를 전달 받는 것을 의미한다. public class Computer{ private CPU cpu; public void setCPU(CPU cpu){ this.cpu = cpu; } } setCPU(CPU) 메서드를 통해 외부로 부터 생성된 객체를 전달받아 멤버 변수에 할당하는 코드이다. 요악하면, 의존성 주입은 "의존 관계에 있는 클래스의 객체를 외부로 부터 생성하여 주..
-
커널(Kernel)Computer Science 2020. 12. 9. 23:41
커널은 컴퓨터의 운영체제의 핵심이 되는 컴퓨터 프로그램의 하나로, 시스템의 모든 것을 완전히 통제한다. 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공한다. 소프트웨어와 하드웨어간의 커뮤니케이션을 관리하는 프로그램 운영체제의 핵심 구성요소로서 입출력을 관리하고 소프트웨어로부터의 요청을 컴퓨터에 있는 하드웨어(CPU, 메모리, 저장장치등)가 처리 할 수 있도록 요청을 변환하는 역할을 한다. 이렇게 하드웨어를 관리하고 필요한 프로세스를 나눠주는 등 여러 시스템 자원을 제어하고, 컴퓨터 부팅시 부트로더에 의해 로드되어 항상 메모리에 상주하게 됩니다. 커널의 역할 보안 커널은 컴퓨터 하드웨어와 프로세스 보안을 책임진다. 자원 관리 한정된 시스템 자원을 효율적으로 관리하여 프로그램의..
-
Garbage Collector 이해Computer Science 2020. 12. 1. 01:59
JVM 운영체제 메모리영역에 접근하여 메모리를 관리하는 프로그램 GC 동적으로 할당된 메모리의 사용하지 않는 영역을 해제하는 기능 Stack 정적으로 할당한 메모리 영역 원시타입 데이터 값을 할당 Heap영역에 생성된 Object 타입의 데이터 참조 Heap 동적으로 할당된 메모리 영역 모든 Object 타입의 대에티가 할당 Heap 영역의 object를 가리키는 참조변수가 stack에 할당 main(){ int a = 10; int b = 20; int sum = a+b; String text = "던"; } main() 메서드가 실행될때 a, b, sum 변수는 스택메모리에 할당이됩니다. text의 참조값도 스택매모리에 할당됩니다. heap 메모리에는 text의 참조변수가 할당이 됩니다. main()..
-
PNG와 JPG 파일 차이Computer Science 2020. 11. 30. 17:59
1. PNG와 JPG차이 PNG PNG 파일은 비손실 압축방식을 사용하여, 원본이 훼손되지 않는다. 투명배경이 지원된다. 문자 혹은 아이콘 등 인공적으로 만든 그래픽 이미지에 주로 사용한다. JPG JPG 파일은 손실 압축을 사용하여 원본이 훼손된다. 풍경사진, 인물사진 등 복잡한 사진은 JPG 파일로 저장하는 것이 좋다. JPEG 알고리즘은 사람의 눈에 거슬리지 않을 정도로 원본을 훼손해 압축효과를 극대화시킴. 압축과정에서 품질저하가 발생하는 손실압축 방식. 저장 시에 압축률을 조절할 수 있고, 압축률에 따라 용량에 영향. 용량을 축소할 수 있기 때문에, 인터넷 상에서 많이 사용 공통점: 비트맵 방식 이미지를 아주작은 화소(픽셀)로 분해하고, 각 화소의 색상과 위치를 기록해 저장하는 방식. 비트의 지도..
-
메모리 영역Computer Science 2020. 9. 24. 19:12
JAVA Part 프로그램을 구동하기 위해서는 운영체제가 메모리(RAM)에 데이터 및 명령어를 저장할 공간을 할당해준다. 한정된 용량을 갖고 있는 메모리를 어떻게 관리하느냐에 따라 프로그램의 성능이 좌우된다. 메모리 공간은 크게 Static, Stack, Heap 영역으로 구분되고, 데이터 타입에 따라 해당 공간에 할당된다. Static Area static 키워드를 사용하여 변수를 선언하면 static 영역에 데이터가 저장된다. static 영역의 데이터는 프로그램의 시작부터 종료될 때 까지 메모리에 남아있게 된다. 즉, 스태틱 전역변수는 프로그램이 종료될 때까지 어디서든 사용가능하다. static 전역변수를 무분별하게 사용하다 보면 메모리가 부족할 우려가 있어 필요한 변수만 static으로 선언해야 ..