알고리즘) 시간복잡도와 공간복잡도
·
알고리즘 탐구
시간복잡도와 공간복잡도 시간복잡도 (Time Complexity) 알고리즘에서 시간복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말한다.(시간이 아니다.) 일반적으로는 1억 번의 연산을 1초로 예측한다고 한다. (CPU) 시간복잡도는 3가지 유형이 존재한다. 1. 빅-오메가(Ω(n)) 최선일 때(best case)의 연산 횟수를 나타낸 표기법 2. 빅-세타(Θ(n)) 보통일 때(average case)의 연산 횟수를 나타낸 표기법 3. 빅-오(O(n)) 최악일 때(worst case)의 연산 횟수를 나타낸 표기법 일반적으로 최악의 경우를 염두에 두는 것이 안정적일 것이다. 또한 광범위한 데이터의 집합에 대하여 알고리즘을 적용시켜 평균값을 계산하는 것은 매우 어려울 수도 있다. 따라서 시간복잡도의 척도..
컴퓨터) 절차 지향, 객체 지향, 함수형 프로그래밍
·
컴퓨터 탐구
절차 지향, 객체 지향, 함수형 프로그래밍 절차 지향 프로그래밍 (Procedural Progamming) 순차적인 처리가 중요시됨 프로그램 전체가 유기적으로 연결되어 있음 문제를 작은 단위로 분해하고, 각 단계를 함수 또는 서브 루틴으로 나타냄 데이터와 함수가 별개로 존재하며, 데이터를 처리하는 함수를 중심으로 프로그램을 작성 유지보수가 어려움(디버깅이 힘듦) 절차 지향 프로그래밍 언어의 예 : 알골, 포트란, PL/I, 모듈라-2, 에이다, 베이직, C 등 객체 지향 프로그래밍 (Object-Oriented Programing, OOP) 현실 세계의 사물을 추상화하여 객체로 표현하는 방식 객체는 데이터와 해당 데이터를 처리하는 메서드(함수)의 묶음임 상속, 캡슐화, 다형성 등의 개념을 활용하여 재사용..
컴퓨터) 배열(Array)와 연결 리스트(Linked List)
·
컴퓨터 탐구
배열(Array)와 연결 리스트(Linked List) 배열(Array) 배열은 동일한 데이터 타입을 가진 요소들이 메모리상에 연속적으로 저장되는 자료구조 인덱스를 사용하여 각 요소에 접근할 수 있으므로 빠른 검색과 접근이 가능하다. 크기가 정해져 있어 배열의 크기를 변경하기는 상대적으로 어렵다.(정적인 구조) 연결 리스트(Linked List) 노드들이 포인터로 연결되어있는 자료구조 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성됨 동적인 구조를 가지며, 크기가 동적으로 변경될 수 있음 연결 리스트의 종류 단일 연결 리스트 각 노드에 자료 공간과 한 개의 포인터 공간이 있고, 각 노드의 포인터는 다음 노드를 가리킨다. 이중 연결 리스트 단일 연결 리스트와 비슷하지만, 포인터 공간이 두 개가 있고..
컴퓨터) 스택(Stack)과 큐(Queue)
·
컴퓨터 탐구
스택(Stack)과 큐(Queue) 스택(Stack) 선형 자료구조로, 데이터를 쌓아 올릴 수 있는 구조 Last-In-First-Out(LIFO) 원칙 ➜ 가장 최근에 추가된 데이터가 가장 먼저 삭제되는 구조 주요 연산 : Push(데이터 추가), Pop(데이터 삭제), Peek(가장 상단 데이터 조회), isEmpty(비어있는지 확인) 주로 함수를 호출할 때 인수의 전달등에 이용된다. 큐(Queue) 선형 자료구조로, 데이터를 줄지어 저장하는 구조 First-In-First-Out(FIFO) 원칙 ➜ 가장 먼저 추가된 데이터가 가장 먼저 삭제되는 구조 주요 연산 : Enqueue(데이터 추가), Dequeue(데이터 삭제, 반환), Front(가장 앞 데이터 조회), Rear(가장 뒤 데이터 조회),..
컴퓨터) 웹 서버(Web Server)와 WAS(Web Application Serviece)
·
컴퓨터 탐구
웹 서버와 WAS 웹 서버 (Web Server) 클라이언트로부터 HTTP요청을 받아들이고, 해당 요청에 따라 정적인 웹페이지(HTML, CSS, 이미지 파일 등)를 제공하는 역할을 한다. 주로 정적인 콘텐츠를 처리하는 데 사용됨 ➜ 동적인 콘텐츠를 처리하기 위해서는 외부 프로그램과 연동하는 CGI(Common Gateway Interface) 스크립트를 사용할 수 있다. 웹서버의 예 : Apache, Nginx, Microsoft IIS 등 WAS(Web Application Service) 동적인 웹 애플리케이션을 실행하기 위한 서버로, 웹 서버와 달리 정적인 콘텐츠뿐만 아니라 동적인 콘텐츠를 생성하고 처리할 수 있다. 웹 애플리케이션에 필요한 Java 서블릿, JSP(JavaServerPages),..
네트워크) TCP와 UDP
·
컴퓨터 탐구
TCP와 UDP TCP (Transmission Control Protocol) 신뢰성이 높고 데이터의 순서를 보장하는 연결 지향적인 프로토콜 TCP는 연결 지향적인 프로토콜 (connection-oriented) ➜ 데이터를 주고받기 전에 먼저 열결을 설정해야 한다. 이를 통해 신뢰성 있는 데이터 전송을 보장한다. 연결 설정에는 3-way handshake 과정이 사용된다. 1. 클라이언트가 서버에게 연결 요청 2. 서버가 클라이언트에게 수락 응답 3. 클라이언트가 수락 응답을 확인 후 연결 성립 데이터 전송 중 데이터의 손실, 중복, 순서 변경 등을 방지하기 위해 흐름 제어와 혼잡 제어 기능이 있음 데이터의 순서를 보장하기 때문에 전송 순서대로 도착하며, 수신확인(Acknowledgement)을 통해..
데이터베이스) 트랜잭션
·
데이터베이스 탐구
트랜잭션 은행의 ATM이나 데이터베이스 등의 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다. 트랜잭션 처리가 정상적으로 완료된 경우 커밋(commit)을 하고, 오류가 발생할 경우 원래 상태대로 롤백(rollback)을 한다. 목적 트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 액세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용한다. 트랜잭션의 특성(ACID) 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적인 단위로 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위이다. 하나의 트랜잭션은 커밋(commit) 되거나 롤백(ro..
스프링) @SpringBootTest와 @WebMvcTest의 차이
·
자바 탐구
@SpringBootTest와 @WebMvcTest의 차이 SpringBoot Test SpringBoot 애플리케이션의 테스트를 지원하기 위해 제공되는 테스트 모듈 SpringBoot 애플리케이션의 전체 컨텍스트를 로드하고 설정하는 것으로, 애플리케이션의 실제 구성 요소들과 상호작용하며 통합 테스트를 수행하는 데 사용한다. SpringBoot Test의 특징 애플리케이션 컨텍스트를 로드하여 통합테스트 수행 실제 빈과 구성 요소들과 상호작용하여 실제 환경과 유사한 테스트 수행. @SpringBootTest 어노테이션을 사용하여 테스트클래스에서 SpringBoot 애플리케이션 컨텍스트를 로드 SpringBoot Test 예시 @ActiveProfiles("test") @SpringBootTest class..
오지랖 토끼
알고자 하는 것에 대한 오지랖