목록전산학 (23)
배고픈 개발자 이야기
1.linked_list class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): dummy = Node("dummy") self.head = dummy self.tail = dummy self.current = None self.before = None self.num_of_data = 0 def append(self, data): new_node = Node(data) self.tail.next = new_node self.tail = new_node self.num_of_data += 1 def delete(self): pop_data = self.current..
1.heap 완전 이진 트리 : 노드가 위에서 아래로, 왼쪽에서 오른쪽으로 채워짐 heap : 완전 이진 트리를 기본으로한 자료구조형 O(log N) - min, max를 빠르게 찾기 위해 고안 child node value2: return 1 else: return 0 else: # self.min_max == 2 ==> 최대 힙 if value1 > value2: return -1 elif value1 < value2: return 1 else: return 0 def __init__(self, s_min_max = 'min'): self.dynamic_arr = [None, ] # one based index, 다른 언어는 가변배열을 사용한다. C++은 백터 사용, 효율 좋게 짜는 것이 중요(가변배..
1.bubble_sort 2중 for문으로 두원소를 비교해 가며 swap하여 정렬하는 알고리즘으로 이미 큰값으로 정렬이 끝난 index에 대해서는 연산을 하지 않습니다. 단순 2중 for문 이므로 time complexity : O(n^2) def sort(array): for i in range(len(array)): for j in range(len(array)-i-1): if array[j+1] < array[j]: array[j], array[j+1] = array[j+1], array[j] return array -이미 실행한 루프는 돌지않게 하여 약간의 성능향상 2.insertion_sort insertion sort는 비교연산을 적게하고 값 교환을 많이합니다. 입력 데이터 만큼 for문과 값..
운영체제 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층- 컴퓨터 시스템의 자원을 효율적으로 관리 자원 : 프로세서, 기억장치, 입출력장치 / 프로세스, 파일, 메시지 좁은의미 : 커널 - 부팅후 메모리 상주 넓은의미 : +주변 시스템 유틸리티를 포함한 개념 -single tasking - MS-DOS -multi tasking - UNIX, MS Windows -single user - MS-DOS, MS Windows -multi user - UNIX, NT server -batch processing -time sharing(빠른 응답 시간), interactive한 방식 사람이 느끼기에 빠른시간에 처리, 자원을 최대한 활용 -Realtime..
6. 보조저장장치 6.1 자기 디스크 자화될 수 있는 물질로 코팅된 플라스틱(플로피)이나 금속(하드)을 이용한 원형 디스크 구성요소 -원형 평판(circular platter) : 하드디스크(알루미늄) / 2,3,4장 -헤드(head) : R/W, 전도성 코일을 통하여 표면을 자화(magnetize) 평판수*2 -디스크 팔(disk arm) : 헤드를 이동시키는 장치 -구동장치(actuator) : 디스클 팔을 움직이는 모터 PATA -> SATA, SCSI(서버) 섹터 : 디스크에 한 번에 쓰거나 읽는 데이터 크기의 최소 단위 섹터간 갭 : 섹터 구분 간격 트랙간 갭 : 간섭 오류 방지 등각속도 : 제어를 간단히 하기 위해 안쪽 바깥쪽 크기가 다른 섹트의 데이터를 동일하게 함 디스크 형식화 : 섹터의 ..
3. 컴퓨터 산술과 논리 연산 3.1 ALU의 구성요소 CPU : ALU, CU, R-S 산술 연산장치 : 산술 연산들(사칙연산)을 수행 논리 연산장치 : 논리 연산들(AND, OR, XOR, NOT등)을 수행 시프트 레지스터 : 비트들을 좌측 혹은 우측으로 이동시키는 기능을 가진 레지스터 보수기 : 2진 데이터를 2의 보수로 변환(음수양수 : 보수화) 상태 레지스터 : 연산 결과의 상태를 나타내는 플래그3.2 정수의 표현 2진수 체계 : 0, 1, 부호 및 소수점으로 수를 표현 ex) -13.625 = -1101.101 부호 없는 정수 표현(양수만 나타냄)소수와 음수의 표현 소수 표현 2^n, n자리로 소수를 표현음수 표현 부호화-크기 표현 : 크기앞에 0(양수), 1(음수) 부호로 표현, 실제로 사용..
1. 컴퓨터 시스템 개요 1.1 컴퓨터의 기본 구조 컴퓨터시스템의 구성 = H/W+S/W (응용 소프트웨어 - 시스템 소프트웨어 - 하드웨어) 컴퓨터 하드웨어의 주 구성요소(를 Bus구조로 연결) 1.중앙처리장치(CPU,프로세서) 2.기억장치 : 주기억장치 - 직접데이터엑세스 RAM, ROM / 보조저장장치 - 주기억으로 옮김 디스크, CD-ROM 3.입출력장치 하드웨어 : 컴퓨터 자체를 구성하는 물리적인 실체들(신호전달 및 모니터출력) 소프트웨어 : 실제구동하기 위해 명령어로 구성되는것 1.시스템 소프트웨어 : OS, library code 2.응용 소프트웨어 : 워드, 웹브라우저 등 중앙처리장치(Central Processing Unit: CPU) 프로세서 : CONTROL, ALU, REG 프로그램..
소프트웨어 디자인 패턴에서 싱글톤 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이우에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글톤 패턴이라고 한다. 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. 파이썬의 모듈은 그 자체로 싱글톤이다. 자바는 생성자를 private으로 선언하여 상속이 불가능함을 지정하기도 한다.