본문 바로가기

반응형

CS

(24)
[Java] Runnable, Thread 예시 기본 예시 1. Runnable 인터페이스 생성 Runnable logic1 = () -> { //logics } Runnable logic2 = () -> { //logics } 자바에서 람다식은 인터페이스에서만 사용가능 2. Thread에 Runnable 함수형 인터페이스를 넣어줌 Thread thread1 = new Thread(loagic1) Thread thread2 = new Thread(loagic2) 3. Thread를 실행 thread1.start(); thread2.start(); 쓰레드 실행 제어 함수들 sleep(long millis), sleep(long milis, int nanos) 지정된 시간동안 쓰레드를 정지 시간이 지난 후, 자동으로 실행대기상태가 됨 join(), joi..
[JAVA] - GC(Garbage Collection) 가비지 컬렉션 정리 가비지 컬렉션(Garbage Collection)이란 ? 자바의 메모리 관리 기법으로 동적으로 할당했던 메모리 영역(=heap) 중 더 이상 참조되지 않는 메모리 객체를 모아 제거 해주는 객체. -> Heap Area에서 더이상 사용하지 않는 메모리를 제거 Heap Area Heap Area Eden survivor 1 survivor 2 Old Generation Permanent Young Generation ※ Permanent 는 Java 7까지만 Heap에 존재. Java 8부터는 Native Method Stack으로 편입. Stack vs Heap Stack : 정적으로 할당한 메모리 영역 원시 타입의 데이터(int, double, boolean 등... )가 값과 함께 할당. Heap영역에..
[컴퓨터구조] 캐시 메모리 캐시 메모리란? 속도가 빠른 장치 ↔️ 느린 장치 간 속도 차이에 의한 병목 현상을 줄이기 위한 메모리 Cache의 장단점 장점 속도가 매우 빠름 단점 용량이 적음 비용이 비쌈 ( SRAM 가격이 비싸기 때문) L1, L2, L3, 디스크 캐시 메모리 각 캐시의 위치 L1 : CPU 내부 ( 속도가 가장 빠르고, 용량이 가장 작음 ) L2 : CPU ↔️ RAM 사이 L3 : 메인보드 디스크 캐시 : 주기억장치(ROM, RAM)와 보조기억장치(하드디스크) 사이 CPU에 "L1", "L2", "L3" 캐시 메모리가 위치 L1, L2, L3는 속도와 크기에 따라 분류된 것으로 일반적으로 L1 캐시부터 사용 (L1에서 데이터를 찾지 못하면 L2, L3 순서로 참조) 만약 L1 캐시가 128KB면, 64KB +..
[컴퓨터구조] 총정리 컴퓨터 구조를 배워야하는 이유 문제해결 능력을 키울 수 있다. 성능, 비용, 용량을 고려하여 개발할 수 있다. 컴퓨터의 구성 요소들 메인보드 안 CPU 메모리에 저장된 값을 읽고, 해석, 실행 ALU(계산기) + 제어장치(제어신호 송신, 명령어 해석) + 레지스터(CPU 내부 작은 저장소) ALU 레지스터 ➡️ (연산할 데이터) ➡️ ALU 제어장치 ➡️ (제어 신호) ➡️ ALU ❇️(위의 과정으로 연산 후 ) ALU ➡️ (연산 결과) ➡️ 레지스터 제어장치 플래그 레지스터 ➡️ (플래그) ➡️ 제어장치 명령 레지스터 ➡️ (해석할 명령어) ➡️ 제어장치 (시스템버스의 제어버스) 제어신호 ➡️ 제어장치 ❇️(위의 과정 이후) 제어장치 ➡️ (제어 신호) ➡️ 레지스터 / ALU / 메모리 / IO장치..
[JAVA] 객체 지향 설계의 5원칙 - SOLID 정리 SOLID 원칙 객체 지향 설계의 기반이 되는 원칙 잘 지키면, 더욱 구조화되며 유지보수성이 증대됨 SRP(Sing Responsibility Principle) : 단일 책임 원칙 클래스는 한 가지 기능 혹은 역할만 가져야 한다. 왜? 코드의 응집도와 유지보수성 향상 OCP(Open/closed Principle) : 개방-폐쇄 원칙 확장에는 개방 변경에는 폐쇄 즉, 기존의 코드를 변경하지 않고, 새로운 기능을 추가할 수 있어야 한다. 어떻게? 인터페이스와 추상화를 활용 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 상위 타입은 하위 타입으로 대체 가능해야 한다. 즉, 부모 클래스를 사용하는 코드는 자식 클래스를 사용해도 정상 동작해야 함 왜? 다형성을 보장하고,..
운영체제 - 프로세스와 스레드 프로세스 프로그램을 메모리 상에서 실행중인 작업 프로세스마다 최소 1개의 스레드를 소유 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드를 같이 생성 프로세스는 각각 별도의 독립적인 주소공간 할당 1. Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령) 2. Data : 전역변수, 정적변수, 배열 등 3. Heap : 동적 할당 시 사용 4. Stack : 지역변수, 매개변수, 리던 값 (임시 메모리 영역) 스레드 프로세스 안에서 실행되는 여러 흐름 단위 스레드는 Stack만 따로 할당 받고, 나머지 영역은 공유 멀티 프로세스 하나의 프로그램을 여러개의 프로세스로 구성하여, 각 프로세스가 병렬적으로 작업 수행 장점 안정성 (메모리 침범 문제 ➡️ OS 차원에서 해결) 단점 각각 독립된..
운영체제 정리! -2 HTML 삽입 미리보기할 수 없는 소스 운영체제 메모리의 커널 영역에 적재되는 특별한 프로그램 자원들을 분배/관리하여 다른 프로그램들이 올바르게 실행되도록 운영하는 응용프로그램을 위한 프로그램 하드웨어 ↔️ 운영체제 ↔️ 응용프로그램s 커널 운영체제의 핵심 운영체제가 제공하는 기능들 중 가장 핵심적인 기능 커널이 제공하는 가장 핵심적인 기능? 자원에 접근/조작 하는 기능 응용 프로그램들이 자원에 직접 접근할 경우, 자원을 동시에 사용해 충돌이 일어날 수 있다. A 프로그램과 B프로그램이 동시에, CPU를 사용해 충돌하는 상황 A프로그램이 데이터를 저장하고 있는데, B프로그램이 같은 장소에 데이터를 덮어 쓰는 상황 따라서, 응용 프로그램들이 자원에 접근할 때, 반드시 운영체제를 통해 접근하도록하여, 자원을..
자료 구조 - 트리 구조 정리 Tree Tree = Node + Edge Tree의 특성 사이클이 없다. 사이클이 있으면, 그래프 모든 노드는 자료형으로 표현이 가능 루트에서 한 노드로 가는 경로는 유일한 경로 유일한 경로 : 간선이 중복해서 존재하지 않는 경로. 즉, 가는 길이 하나만 존재. 간선의 개수 = 노드의 개수 - 1 그래프 VS 트리 사이클이 있으면 그래프, 없으면 트리 ! 트리의 순회 방식 4가지 트리의 순회 방식은 우선순위로 따라가면 쉽다. 전위 순회 pre-order 루트부터 항상 왼쪽을 먼저 순회! 🔥우선 순위 : Root ➡️ 왼쪽 자식 ➡️ 오른쪽 자식 1➡️2➡️4➡️8➡️5➡️9➡️3➡️6➡️10➡️11➡️7 중위 순회 in-order 🔥우선 순위 : 왼쪽 서브트리 ➡️ 현재 서브트리의 Root ➡️ 오른쪽..