CS 42

[자료구조] 원형연결리스트, 이중연결리스트

단순연결리스트 = 선형연결리스트 = 체인 각각의 노드가 하나의 포인터를 갖는 구조로 포인터는 다음 노드를 가리킨다. 포인터를 이용해 순차탐색하므로 시간 복잡도는 O(n) 마지막 노드의 링크는 null로 표현 해싱 기법에서 오버 플로 처리시 체이닝 기법에서 이용된다. 연결리스트 삽입 void insert(listPointer *first, listPointer x) { /* 입력데이터가 10인 노드를 fisrt의 노드 뒤에 삽입 */ listPointer temp; MALLOC(temp, sizeof(*temp)); temp -> data = 10; if (*first) { temp->link = x->link; x->link = temp; } else { temp->link = NULL; *first =..

CS/Data Structure 2021.09.23

[자료구조] B-트리 B+트리 B*트리

1. 다원 탐색 트리(Multiway search tree) m-원 탐색 트리 (m-way search tree)라고도 한다. 다원 탐색 트리는 한 노드 안에 최대 m-1개의 요소와 m개의 자식을 가질 수 있다. 이진 탐색 트리는 m=2 인 다원 탐색 트리 2. B 트리 Balanced Tree. 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. 균등한 응답속도를 유지하기 위해서 리프 레벨에서 좌우 균형을 유지한다. 모든 노드는 최대 m개의 자식들을 가진다. 루트 노드와 리프 노드가 아닌 모든 노드는 최소 m/2개의 자식을 가진다. 루트노드는 최소 2개 이상의 자식을 가진다. k개의 ..

CS/Data Structure 2021.09.15

[OS] DMA

DMA(Direct Memory Access) DMA는 CPU를 대신하여 I/O장치와 Memory사이의 데이터전송을 담당하는 장치를 지칭한다. DMA에 의한 입출력 방식은 CPU의 개입 없이 직접 주기억 장치와 DMA 사이에서 일련의 입출력 동작이 이루어지는 방식 DMA의 특징 CPU를 경유하지 않고 직접 기억 장치와 입출력 장치 사이에서 전송이 이루어진다. 하나의 입출력 명령어에 의해 하나의 블록 전체가 전송된다. 사이클 스틸에 의해 전송이 이루어진다. 전송이 끝나면 인터럽트를 발생시켜 CPU에게 알린다. 데이터 전송 절차 : 버스 사용 요구 -> 버스 사용 허가 -> 데이터 전송 -> 인터럽트 DMA 필요성 고속의 I/O 장치의 경우 인터럽트로 CPU의 실제 프로세스 작업 시간 감소 디스크 같은 많은..

CS/OS 2021.06.20

EAI (Enterprise Application Integration)

스터디를 진행하며 전산 용어 정리를 시작했다. 내가 정리한 부분만 포스팅을 작성할 예정이다. 이번 주 면접 전형이 마무리되면 상반기도 끝이기에 다시 열정적인 공부 & 포스팅 모드로 돌입해야겠다. EAI (Enterprise Application Integration, 전사적 응용 통합) 새로운 미들웨어를 이용해 비즈니스 프로세스를 중심으로 기업 내 각종 어플리케이션의 상호연동이 가능하도록 통합하는 솔루션이나 방법론 기업 외부에 존재하는 협력업체와의 데이터 및 어플리케이션의 통합을 통해 협업 기반의 B2B를 지원하는 시스템 기존의 정보 시스템을 통합하고 유기적으로 처리할 수 있는 기반기술을 통칭하는 것으로 웹 서비스와 B2B의 개념도 포함 등장 배경 업무 시스템의 규모가 커지면서 분리된 업무는 독자적으로 ..

CS 2021.06.05

[Book] 읽기 좋은 코드가 좋은 코드다

소스 리팩토링을 진행하면서 좋은 소스코드를 만든다는 것은 무엇일까에 대한 의문이 생겼다. 나 같은 주니어 개발자에게 좋은 가이드를 해주는 책인 것 같다. 매번 고민하던 네이밍이나 주석에 관하여 명확하게 기준을 얻을 수 있었다. 다음 주 면접이 끝나면 빠르게 다 읽고 리뷰를 마저 작성해야겠다.! 코드는 이해하기 쉬워야 한다. 코드를 더 좋게 만드는 것은 무조건적인 간결함이 아니다. 가독성의 기본 원리 코드는 다른 사람이 이해하는데 들이는 시간을 최소화하는 방식으로 작성되어야 한다. 일회용으로 작성한 대충 쓴 코드가 어느 다른 프로젝트에 쓰일 수 있다. 분량이 적으면 항상 더 좋은가? 라인 수가 적은 것은 좋은 목표지만.. 이해를 위한 시간을 최소화하는 게 더 좋은 목표다! 이해를 위한 시간은 다른 목표와 ..

CS/Book 2020.11.29

[알고리즘] 하노이의 탑

하노이의 탑 (Towers of Hanoi) 재귀를 활용한 대표적인 알고리즘 문제로 하노이의 탑 문제가 있다. 하노이의 탑은 원하는 위치로 원판을 옮기는 문제다 하노이의 탑 : 작은 원반이 위에, 큰 원반이 아래에 위치할 수 있도록 원반을 3개의 기둥 사이에서 옮기는 문제이다. 모든 원반은 크기가 다르고 처음에는 모든 원반이 규칙에 맞게 첫번째 기둥에 쌓여있다. 이 상태에서 모든 원반을 세 번째 기둥으로 최소의 횟수로 옮기면 된다. 원반은 1개씩 옮길 수 있고 큰 원반을 작은 원반 위에 쌓을 수 없다. [원판을 옮길 때 제약사항] 맨 위에 있는 원판만 이동 가능 한 번에 하나씩만 이동 크기가 큰 원판 위에만 작은 원판 이동 가능 중간 막대를 이용할 수 있지만 다른 조건이 모두 만족해야 함 #include..

CS/Algorithm 2020.11.01

디자인 패턴의 종류

디자인 패턴 유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해놓은 것이다. 소프트웨어 개발에서 효율성과 재사용성을 높일 수 있다. GoF 디자인 패턴의 종류 1. 생성(Creational) 패턴 : 객체 생성 관련 추상 팩토리(Abstract Factory) : 제품군별 객체 생성 빌더(Builder) : 부분 생성을 통한 전체 객체 생성 팩토리 메서드(Factory Methods) : 대행 함수를 통한 객체 생성, 인스턴스 생성 결정은 서브클래스 프로토타입(Prototype) : 복제를 통한 객체 생성 싱글톤(Singleton) : 클래스 인스턴스가 하나만 만들어지고 그 인스턴스에 전역접근하여 사용하는 패턴 2. 구조(Structural) ..

CS 2020.08.10

[SW공학] 결합도(Coupling)와 응집도(Cohesion)

모듈 간의 결합도는 최소화하고 모듈 내 요소들 간의 응집력을 최대화한다는 것을 SW공학에서 배웠다. 전공 이론을 그저 암기하다가 코드를 작성하면서 왜 모듈화를 하고 모듈을 설계할 때에 결합도와 응집도를 왜 고려해야 하는지 기본 이론을 복습하다 보니 난 이렇게 설계하고 있나? 현타가 왔다. 성능 좋고 유지보수 용이한 서비스를 만들기 위해서 좋은 모듈을 설계할 줄 아는 개발자가 되자. 모듈화(Modularization) 전체 프로그램을 한 번에 설계하지 않고 단일 기능을 갖출 수 있도록 부분적으로 묶어서 처리하는 기술이다. 단위 프로그램, 함수, 서브 프로그램을 작성하기 위한 설계 기법이다. 모듈화의 장단점 장점 : 프로그램의 복잡도 감소, 다른 모듈에 영향을 주지 않으므로 수정 용이, 구현 용이, 확장성,..

CS 2020.06.14

[Linux] 프로세스

[프로세스의 정의] 프로세스는 여러가지 형태로 정의할 수 있다. 실행중인 프로그램(컴파일 및 링크가 모두 완료된 실행 프로그램 또는 실행 파일과 실행에 필요한 입럭데이터를 총칭) 커널에 등록되고 커널의 관리하에 있는 작업 컴퓨터 시스템 내의 각종 자원들을 요청하고 할당받을 수 있는 개체 프로세스 관리 블록을 할당받는 개체 [프로세스 자원의 개념] 커널에 의해 다른 주체에게 할당되고 사용이 끝날 경우 다시 반납되는 피동적인 개체 하드웨어 자원 : 기억장치나 프로세서, 하드디스크, 자기테이프, 단말기, 모니터, 키보드 등의 장치 소프트웨어 자원 : 메세지, 시그널, 파일, 각종 공유 소프트웨어 등 [프로세스 관리 블록 : PCB, Process Control Block] 컴퓨터 시스템 내의 프로세스들은 모두..

CS/OS 2020.05.23
반응형