전체 글 (109) 썸네일형 리스트형 우선순위 큐 Priority Queue 큐(Queue)는 우선순위와 상관없이 먼저 들어간 데이터가 먼저 나오는 FIFO 방식의 자료구조이다. 우선순위 큐는 들어간 순서에 상관없이 우선순위가 높은 데이터가 우선적으로 나오는 자료구조이다. 그렇다면 우선순위 큐는 어떻게 구현할 수 있을까? 1. 배열로 우선순위 큐 구현하기 우선순위대로 데이터들이 들어온다고 가정했을 때, 우선순위대로 앞의 인덱스부터 채워나가면 되기 때문에 문제가 되지 않는다.(데이터가 모두 들어오고 난 뒤에는 정렬된 상태) 하지만 연속적인 우선 순위 데이터의 입력이 보장되지 않을 경우에는 우선 순위에 맞춰 데이터를 이동시켜야 한다. 이렇게 할 경우 처음 인덱스부터 우선순위를 비교해야 하기 때문에 데이터 삽입의 최악의 시간 복잡도는 O(n)이 걸리게 된다. Enqueue : O(n).. 7. JDBC, SQL Mapper, ORM Youtube [10분 테코톡] 🧘♂️코즈의 JDBC, SQLMAPPER, ORM,⏰ 아마찌의 ORM vs SQL Mapper vs JDBC을 참고하여 정리하였습니다. Persistence JDBC, SQL Mapper, ORM은 데이터들이 사라지지 않도록 하는 Persistence(영속성)와 관련이 있다. 프로그램이 실행된 후 객체지향의 데이터들은 객체 생성 후 RAM에 저장되어 있다가 프로그램이 종료 되면서 날라가게 된다. 온라인을 활용한 비즈니스가 증가하면서 데이터의 영속성은 반드시 필요했고 데이터베이스를 활용해 데이터들이 지워지지 않도록 하였다. 출처 : https://herbertograca.com/2017/08/03/layered-architecture/ 클라우드 환경의 발달로 단순했던 La.. Process란 OS에서 프로세스는 하나의 작업 단위를 말한다. 사용자가 프로그램을 실행하면 HDD 또는 SDD 저장장치에서 프로그램 코드를 메모리로 가져오게 되면서(Fetch) 하나의 작업이 생성된다. 이러한 작업들은 CPU를 할당받아 처리되어진다. 프로그램은 명령어, 코드 및 정적 데이터들의 묶음이라 보면 된다. Process 실행 중인 프로그램을 말하며, 원초적으로는 하나의 쓰레드만을 가지고 있는 단일 스레드 프로세스를 의미한다. 프로세스가 생성되는 과정 1. 사용자에 의해 프로그램이 실행되어진다. 2. 프로그램 실행에 필요한 코드와 자원들을 메모리로 옮긴다(Fetch). 3. 해당 프로세스의 정보를 가지고 있는 PCB(Process Control Block)가 같이 생성된다. 4. 해당 프로세스는 준비 큐에 들어.. 스택과 큐 스택과 큐는 선형의 자료구조로 순서를 가지고 있고, 메모리에 연속적으로 저장된다. 스택과 큐 모두 배열과 연결리스트로 구현 가능하다. 배열로 구현할 경우 확실한 메모리의 사용크기를 알 수 없어 연결리스트로 구현하는 편이 좀 더 쉽다. STACK 스택의 사전적 의미 "쌓이다" 처럼 데이터들이 차곡차곡 쌓이는 자료구조의 모습이다. LIFO(Last In First Out, 후입선출) 구조로 가장 마지막에 저장된 데이터가 가장 먼저 출력된다. 스택은 한 곳으로만 접근할 수 있으며 이 곳을 탑(또는 SP, 스택포인터)이라고 부른다. 스택의 주요 연산으로는 push(삽입)와 pop(삭제)이 있다.위의 그림에서 최초의 탑은 0번 인덱스를 가리키고 있고 데이터가 들어갈 때마다 탑이 가리키는 포인터는 다음 인덱스의 위.. TDD와 BDD 패스트 캠퍼스 강의 'The RED 백발의 개발자를 꿈꾸며'와 카카오 if - "Kotest가 있다면 TDD 묻고 BDD로 가!"를 보고 정리 하였습니다. TDD와 BDD는 소프트웨어 개발 방법론에서 많이 쓰이는 것들이다. 이 두가지의 방법론은 전혀 다른 것이 아닌 테스트 코드를 작성하는 관점의 차이라고 볼 수 있다. 나의 경우, 분명 테스트 케이스를 설계하여 자신의 기능을 검증하는 것은 반드시 필요하다고 생각하지만 테스트 과정을 설계하는 것 자체가 어렵기도 하고, 그 과정에서 시간을 많이 소비하게 되어 효율적이지 않은 것 같다. TDD(Test Driven Development) 테스트로부터 시작하는 개발 방식(테스트 주도 개발)으로 기능을 구현하기 전에 테스트 케이스를 설계하고, 이 테스트를 통과할 .. 하노이 탑 문제 해결하기 문제 설명 세개의 탑이 있고 반경이 서로 다른 n개의 원반이 있다. 1. 한 번에 하나의 원반만 옮길 수 있다. 2. 쌓여있는 원반은 항상 아래의 원반보다 위의 원반이 작아야한다. 3. n개의 원반을 A에서 C로 옮겨라. 원반의 이동 횟수를 최소화하면서 이동 순서를 출력하라 문제 접근 위의 조건을 만족하며 n개의 원반을 C로 이동시키기 위해서는 반복적인 동작을 필요로 한다. 원반의 개수가 짝수인 경우 첫번째 원반을 B로 이동시키고, 홀수인 경우 C로 이동시키면서 처리하게 된다. 크게 생각해보면 n번의 원반을 C로 옮기기 위해서는 1부터 n-1번까지의 원반이 B에 위치해 있어야 한다. 즉 이 부분을 재귀적으로 처리한다면 문제를 쉽게 해결할 수 있다. 문제 해결 1. n번의 원반을 목적지(C)로 옮기기 위해.. Array VS Linked List 리스트 : 어떤 순서가 있는 데이터의 집합을 의미한다. Array(배열) 특징 Array는 배열로 연속적인 공간에 순차적으로 데이터를 저장할 수 있는 자료구조이다. 데이터를 입력할 때 인덱스 순서대로 입력이 되고, 메모리의 저장 위치도 인접한 위치에 저장이 된다. 데이터에 접근할 때는 인덱스 번호를 통해 접근하기 때문에 데이터의 양이 얼마나 많든 O(1)의 시간 복잡도로 탐색이 가능하다. 특정 인덱스의 데이터 삽입과 삭제에 있어서는 반드시 기존 데이터들의 이동을 필요로 하기에 O(n)의 시간이 소요된다. 배열을 정적으로 할당한 경우 배열의 크기는 Compile time에 할당되기 때문에 한번 사이즈가 정해지면 변경이 불가능하다. 배열은 메모리의 Stack 영역에 저장된다. 배열을 동적으로 할당한 경우 r.. 6. 스프링 Servlet 책참고하여 정리하였습니다. 초기의 웹 서버는 클라이언트의 요청에 대해서 정적인 페이지로만 응답할 수 있었다. 하지만 사용자가 늘어나고 기능도 많아지게 되면서 사용자는 자신이 필요로 하는 정보를 받기를 원하게 되었다. 따라서 사용자가 원하는 정보를 포함한 동적인 페이지를 제공하기 위해 만들어진 프로그램이 Servlet이다. Web Server VS WAS Web Server 웹 브라우저의 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를 제공(HTML, CSS, 사진) →Web Server선에서 처리 클라이언트가 동적인 컨텐츠 제공을 요청하면 WAS에게 그 요청을 전달한다. WAS에서 처리한 결과를 클라이언트에게 응답한다. Apache, Nginx WAS(Web Application Server) 동적.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 14 다음