본문 바로가기
반응형

컴퓨터공학14

[Data Structure] 자료구조란? 기본 자료 구조 - 배열(Array), 링크드리스트(LinkedList), 스택(Stack), 큐(Queue), 해시 테이블(Hash Table), 그래프(Graph), 트리(Tree) 자료구조란? - 대량의 데이터를 효율적으로 관리할 수 있는 데이터 구조 - 프로그래밍에서 데이터 특정에따라 어떤 데이터 구조를 사용하느냐에 따라 코드 효율이 달라진다. 배열(Array) - 같은 종류의 데이터를 순차적으로 연결된 공간에 나열하는 자료 구조 - 각 데이터를 인덱스에 대응하도록 구성한다. 장점 첫 데이터의 위치에서 상대적인 위치(인덱스 번호)로 데이터를 접근하므로, 빠른 접근이 가능하다. - 인덱스 위치를 안다면, 상수 시간으로 접근 가능하다 O(1) 단점 데이터의 길이가 정해져있으므로, 크기 이상의 데이터를 저장할 때 새로운 배열을 만들어야한다. 링크드리스트( LinkedList) - 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 배열, 순차적으로 연결된 공간에 데이.. 2021. 12. 29.
여러 가지 다형성: 임시 다형성, 파라미터화한 다형성, 서브타입 다형성 학습 목표 · 다형성이란? · 임시 다형성 (ad hoc polymorphism) · 파라미터화한 다형성 (parametric polymorphism) · 서브타입 다형성 (subtype polymorphism = overriding) 다형성이란? https://scshim.tistory.com/55 임시 다형성 (ad hoc polymorphism) · 같은 이름의 함수를 매개 변수의 개수 또는 타입을 변경하여, 여러 개의 함수가 서로 다르게 행동할 수 있도록 하는 성질 · 오버로딩 · 컴파일 타임 다형성 ▶ 예시 class Animal{ public void move(){ System.out.println("동물이 움직입니다."); } } class Human extends Animal{ public.. 2021. 10. 19.
[Computer Science] SGML이란? , <!-- --> 주석의 유래 SGML이란? , 주석의 유래 · 문서용 마크업 언어를 정의하기 위한 메타 언어 - 복잡하고 다양한 자료를 텍스트 기반 자료 구조로 표현할 수 있는 매우 강력한 언어 · JSP, HTML, XML 등에서 사용하는 주석의 유래 · IBM에서 1960년대에 개발한 GML(Generalized Markup Language)의 후속으로, 1986년 표준으로 확정(ISO8879) · 정부나 항공우주 기업의 대규모 계획 사업 과정에서 기계 판독형(machine-readable) 문서를 공유할 목적으로, 몇 십 년 이상의 기간 동안 판독 가능하도록 설계 · 인쇄와 출판 산업에 광범위하게 사용되었지만, 너무 복잡하여 소규모 범용 목적으로 사용하는데는 걸림될이 됨(웹 브라우저 등에 적용이 어려움) · 파일 확장자: .s.. 2021. 10. 14.
MVVM vs MVC, 장점과 단점 MVC · 애플리케이션을 세 가지 주요 논리 구성 요소인 Model, View, Controller로 분리하는 아키텍처 · 비즈니스 로직과 프레젠테이션 레이어를 서로 분리함 · Model: 로직과 관련된 모든 데이터를 포함 · View: 사용자에게 데이터를 표현하거나 유저와 상호작용을 처리함 · Controller: 모델과 뷰 구성요소 간의 인터페이스 MVVM · 애플리케이션을 세 가지 주요 논리 구성 요소인 Model, View, ViewModel로 분리하는 아키텍처 · 마틴 파울러의 Presentation 모델 패턴에서 파생된 디자인 패턴 · MVVM 패턴의 목표: 비즈니스 로직과 프레젠테이션 로직을 UI로 부터 분리하는 것 - 이를 통해 테스트, 유지 보수, 재사용이 쉬워짐 · 동작원리: 1. 사용.. 2021. 10. 14.
카오스 엔지니어링과 카오스 몽키 카오스 몽키 · 서비스를 공급하는 인스턴스에 일부러 랜덤으로 장애를 일으키는 것 · 목적: 1. 가장 약한 부분이 어디인지 파악하여 엔지니어가 문제에 대처하는 자동화된 트리거를 성정 -> 한밤중에 장애 발생으로 엔지니어가 호출될 일이 없음 2. 지역 단위의 중단을 시뮬레이션하는 실험을 정기적으로 실행해 조기에 모든 시스템 약점을 파악해 수정 가능 · 카오스 몽키의 종류: 1. Latency monkey: RESTful 클라이언트-서버 통신 계층에 인공적인 지연 유발 2. Conformity monkey: 최상의 조건이 아닌 인스턴스를 찾아 종료 (예:자동 스케이링 그룹에 속하지 않은 인스턴스를 찾아 재시작) 3. Doctor monkey: 인스턴스들의 상태를 점검하고 CPU 부하율 등의 정보들을 모니터링.. 2021. 10. 14.
[Computer Science] 스핀락(spinlock)의 정의와 사용 이유 스핀락이란? · 임계구역(critical section)에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락 · 임계구역(공유변수 영역): 둘 이상의 스레드가 동시에 접근해서는 안되는 공유자원을 접근하는 코드의 일부 스핀락의 사용 이유 · 임계구역에 짧은 시간 안에 진입할 수 있는 경우 context-switching을 제거할 수 있어 효율적이다. - 운영 체제의 스케줄링 지원을 받지 않기 때문에 해당 스레드에 대한 context-switching이 일어나지 않음 - But, 만약 스핀락에 오랜 시간을 소요한다면 다른 스레드를 실행하지 못하고 대기하게 되어 비효율적인 결과를 가져옴 출처 https://ko.wikipedia.org/wiki/스핀락 2021. 9. 13.
반응형