일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JPA
- Algorithm
- IT
- 파이썬
- 컴퓨터구조
- c언어
- Data Structure
- Spring
- 디자인 패턴
- OS
- design pattern
- spring webflux
- C
- Kafka
- JavaScript
- 자료구조
- Heap
- 자바
- Java
- Galera Cluster
- 알고리즘
- react
- redis
- Proxy
- MySQL
- 운영체제
- MSA
- mongoDB
- 백준
- 네트워크
- Today
- Total
목록분류 전체보기 (214)
시냅스
와일드카드(Wildcard) 와일드 카드는 모든 타입을 대신할 수 있는 타입이다. 와일드 카드는 정해지지 않은 unknown type 이기 때문에 모든 타입에 대한 호출이 가능하다. 상한 경계 와일드 카드
equals, hashcode Object 의 메소드인 equals와 hashcode에 대해 알아보자. euqals 함수는 객체의 값이 같은지에 대한 여부를 boolean 값으로 반환하는 함수이다. hashcode 함수는 객체의 주소값을 해시코드로 반환하는 함수이다. equals 함수는 객체에 대한 주소 값으로 같은지 여부를 판단하고, hashcode 함수는 객체의 주소값을 해시테이블로 갖고 있기 때문에 객체의 값이 아닌 다른 기준으로 분류하고 싶다면 클래스 내부에서 오버라이딩 해줘야 한다. 구현 예시 class Car { private String model; private String color; public Car(String model, String color) { this.model = mode..
자바 가상 머신, JVM이란 운영체제에 독립적으로 실행하게 하는 버츄얼 머신 자바는 컴파일 과정에서 OS와 소통하는 기계어로 컴파일 되지 않고 JVM이 이해할 수 있는 Java bytecode(.class) 로 변환된다. JVM이 이 bytecode를 OS가 이해할 수 있게 해석한다. 자바 바이트 코드, Java Bytecode 바이트 코드란 가상 컴퓨터(VM)에서 돌아가는 실행 프로그램을 위한 이진 표현법을 의미한다. 자바 바이트 코드(Java bytecode)는 JVM이 이해할 수 있는 언어로 변환된 자바 소스코드를 의미한다. 변경된 자바 바이트 코드(.class) 파일들을 클래스 로더를 통해 JVM 메모리 영역으로 로딩한다. 이 바이트 코드는 다시 인터프리터 또는 JIT 컴파일러에 의해 바이너리 코..
컴퓨터 정보의 종류 프로그램 코드 데이터 2진수 비트(bit)들의 조합으로 표현 고급 언어에서 기계어 프로그램으로 번역 고급 언어 : Z = X + Y 어셈블리 LOAD A, X ADD A, Y STOR Z, A 기계어 00100101 10000110 01000111 명령어 형식 연산코드(명령코드, Op code) CPU가 수행할 연산을 지정 모드 1bit로 직접번지 및 간접번지를 나타냄 오퍼랜드 필드(operand field) 명령어 실행에 필요한 데이터가 저장된 주소 시스템의 구성 주소 버스, Address bus 메모리 주소나 I/O Unit 포트 번호 전달 CPU와 Memory는 단방향으로 데이터 전달이 가능한 버스를 이용, 주소 전달은 CPU에서 메모리로만 가능 주소는 CPU에 의해 발생되어 기..
파일 시스템 구조, File-System Structure 파일시스템은 쉽게 데이터를 저장하고, 찾고 인출할 수 있게 함으로써 저장장치를 더욱 효율적이고 편리하게 사용 고려해야 할 것 사용자에게 어떻게 보여야 할지 파일은 무엇인지, 그 속성 디렉터리 구조 파일에 허용되는 연산 각 층은 낮은 층의 기능을 사용하여 새로운 기능을 만들어 상위층에게 제공한다. 입/출력 제어 층은 장치 드라이버 루틴들과 인터럽트 핸들러로 이루어져 있어서 메모리와 디스크 시스템 간의 정보 전송을 담당한다. 기본 파일 시스템 층은 적절한 장치 드라이버에게 저장장치상의 블록을 읽고 쓰도록 일반적인 명령을 내리는 층이다. 파일-구성 모듈 층은 파일과 상응하는 논리 블록을 알고 있다. 논리 파일 시스템 층은 메타데이터 정보를 관리한다. ..
명령어 하드웨어가 알아들을 수 있는 언어 그 어휘를 명령어 집합이라고 한다. MIPS cf) 내장 프로그래밍 개념 : 여러 종류의 데이터와 명령어를 메모리에 숫자로 저장할 수 있다는 개념. 하드웨어 연산 MIPS 산술 명령어는 반드시 한 종류의 연산만을 지시한다. 항상 변수 세 개를 갖는 형식을 엄격히 지킨다. 아래는 MIPS 어셈블리어를 통한 덧셈 명령어 예시이다. add a, b, c # b와 c의 합이 a에 자리한다. add a, a, d # b, c, 와 d의 합이 a에 들어간다. add a, a, e # b, c, d, e의 합이 a에 들어간다. 명령어가 피연산자를 반드시 세 개씩 갖도록 제한하는 것은 하드웨어를 단순하게 하자는 원칙과 부합한다. 피연산자의 개수가 가변적이면 하드웨어가 복잡해진다..
파일 시스템 인터페이스, File-System Interface 파일 시스템은 정보를 저장한 실제적인 파일의 집합체와 시스템 내의 모든 파일에 관한 정보를 제공하는 디렉터리 구조로 구성된다. storage에 logical하게 data를 쓴 것! 파일 연산 파일을 정의하기 위해 OS는 아래의 시스템 콜을 제공한다. 아래는 파일 조작을 위한 최소 연산이다. 파일 생성 : 공간 확보 -> 디렉터리에 포함 파일 열기 : open() 사용 -> fd... 파일 쓰기 : 쓰기가 일어날 위치를 가리키는 쓰기 포인터를 유지해야 한다, 쓰기가 일어날 때마다 갱신된다. 파일 읽기 : 순차적 읽기를 위한 읽기 포인터 유지 및 갱신, 프로세스는 하나의 현재 파일 위치 포인터(ftell)을 가진다. 파일 위치 재설정 : fse..
컴퓨터 구조 분야의 8가지 위대한 아이디어 Moore의 법칙을 고려한 설계 Moore의 법칙은 18~24개월마다 칩에 집적되는 소자의 수가 2배가 된다는 것. 프로젝트 시작 시점보다 종료 시점의 기술을 예상해야 한다. 설계를 단순화하는 추상화 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화한다. 병렬성을 통한 성능 개선 여러 개의 제트 엔진을 장착한 비행기... 파이프라이닝을 통한 성능 개선 사람들이 길게 늘어서서 물을 나르는 것... 예측을 통한 성능 개선 예측을 잘못해서 이를 복구하는 비용이 비싸지 않고, 예측이 성공할 확률이 비교적 높은 경우 예측을 해서 미리 일을 수행하는 것이 평균적으로 빠른 경우가 종종 있다. 메모리 계층 구조 최상위 계층에는 제일 비싸지만 작고 빠른 메..
입출력 시스템, I/O System Web, File 수정, Youtube 시청, game 등 컴퓨터는 입출력 작업을 주로 한다. PCI 버스로 모든 Device 와 연결한다. 메모리 맵드 입출력 Memory-mapped I/O 모든 컨트롤러는 레지스터(제어용 또는 데이터용)를 가지고 있고, 레지스터를 프로세서의 주소 공간으로 사상한다. CPU는 물리 메모리에 사상된 장치-제어 레지스터를 읽고 쓸 때 표준 데이터 전송 명령을 사용함으로써 입출력 요청을 수행하게 된다. 입출력 장치 컨트롤러는 보통 4개의 레지스터로 구성되어 있다. 입력 레지스터 : 입력을 얻기 위해 읽기를 수행한다. 출력 레지스터 : 출력하기 위해 쓰기를 수행한다. 상태 레지스터 : 현재 명령이 완료되었는지, 입력 레지스터로부터 한 바이트..
플로이드 알고리즘 Floyd algorithm 모든 지점에서 모든 지점으로의 최단 경로를 모두 구하는 경우 꼭짓점 k를 두고, k를 경유할 경우를 원래의 값과 비교하여 더 짧다면 업데이트 한다. (i,j) > (i,k) + (k,j) 와 같은 꼴이다. 다이나믹 프로그래밍 기술에 의거한다. 구현이 쉽고 간단하지만 O(n^3) 시간복잡도가 높다. 구현 int INF = 99999999; int **arr_init(LinkedGraph *graph) { int **arr = calloc(graph->currentVertexCount, sizeof(int *)); ListNode *temp; for(int i = 0; i currentVertexCount; i++) arr[i] = calloc(..