책 정리 (30) 썸네일형 리스트형 CGI, Servlet의 등장 MVC 패턴의 탄생 초기의 웹 프로그래밍은 웹 서버만 존재했었습니다. 웹 서버는 미리 준비된 정보를 클라이언트의 요구에 응답해 보내는 역할을 수행합니다. 사용자의 요청이 들어와도 웹 서버에서 모두 같은 정적인 *.html 파일만 조회가 되었습니다. 이런 불편한점을 개선시키기 위해 서버 프로그램에서 다른 프로그램을 불러내고, 그 처리 결과를 클라이언트에 송신하는 방법이 고안되었는데, 이를 실현 하기 위한 프로그램 연계 방법을 정한 CGI(Common Gateway Interface)가 등장했습니다. CGI (Common Gateway Interface) 공용 게이트웨이 인터페이스로 서버 프로그램과 외부 프로그램과의 연계법을 정한 표준 인터페이스 CGI는 웹 서버 상에서 사용자 프로그램을 동작시키기 위해 서버 프로그램에서 다른.. Chapter03. 배열을 이용한 리스트 구현 리스트는 크게 두가지로 구분되어 있다. º 순차 리스트 : 배열을 기반으로 구현된 리스트 º 연결 리스트 : 메모리의 동적 할당을 기반으로 구현된 리스트 이는 구현 방법을 기준으로 한 구분이다. 따라서 이 두 리스트의 ADT가 동일하다고 해서 문제가 되지는 않는다. 리스트의 특징 º 저장 형태 : 데이터를 나란히(하나의 열로) 저장한다. º 저장 특성 : 중복이 되는 데이터의 저장을 허용한다. 이것이 리스트의 ADT를 정의하는데 있어서 고려해야 할 유일한 내용이다. 이러한 특성을 유지하려고 하다보니 순차, 연결로 나뉘는 것이다. 모든 자료구조는 내부적으로 다양한 정보를 담게 된다. 그저 데이터만 담는 게 아니라 그 데이터를 효율적으로 저장 및 참조하기 위한 정보들도 담기기 마련이다. 배열을 기반으로 한 .. Chapter 03. ADT 첫 번째 자료구조이다. 컴퓨터 공학에서의 추상 자료형(Abstract Data Type) 추상 자료형이란? "구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것" 지갑을 기준으로 우리는 "카드를 넣고/빼고, 지폐를 넣고/빼고, 동전을 넣고/빼고" 이러한 기능을 가졌다고 볼 수 있다. 하지만 "지갑을 열고 동전 칸 지퍼를 열고 동전을 넣고 지퍼를 닫고 지갑을 닫는다"는 이런 일련의 과정들은 생략이 되어서 이야기를 했다. 이것처럼 추상자료형은 "구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것" 으로 볼 수 있다. 추상 자료형 = 자료형 = 기능 자료형은 기능적으로 설명할 수 있지만 데이터적 관점으로 설명하기엔 너무 애매하다. 자료형이라고 하면 그와.. Chapter 02 재귀 재귀는 자료구조와 알고리즘에 있어서 매우 중요한 요소이고, C언어는 이렇듯 중요한 재귀를 지원하는 언어이다. 재귀함수란 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다. 재귀함수는 종료조건을 반드시 넣어줘야 한다. 아니면 무한루프에 빠지게 된다. (열혈 C에서 재귀함수를 설명하였으므로 나머지는 열혈 C를 참고하자.) 더보기 이것은 팩토리얼을 재귀함수로 구현한 것이다. Factorial(int num) { if (n == 0) return 0; else return n * Factorial(num-1); } 복사의 개념으로 생각하자. 실제로 함수를 구성하는 명령문은 CPU로 이동이 되어서(복사가 되어서) 실행이 된다. 02 - 2 재귀의 활용 함수를 잘 이해했다는 기준 : 호출관계 + 호출순서 그러.. Chapter 01. 자료구조와 알고리즘의 이해 (이진탐색 알고리즘) 이진 탐색(Binary Search) 알고리즘의 소개 이진 탐색 알고리즘은 순차 탐색보다 훨 씬 좋은 성능을 보이는 알고리즘 이다. 하지만 다음의 조건을 만족하여야 한다. "배열에 저장된 데이터는 정렬되어 있어야 합니다(정렬의 기준 및 방식과는 관계없다)" 아래와 같은 배열이 있다고 가정해보자. arr = {1, 2, 5, 7, 9, 12, 21, 23, 27} 이진 탐색 알고리즘의 첫 번째 시도: 1. 배열 인덱스의 시작과 끝은 각각 0과 8이다. 2. 0과 8을 합하여 그 결과를 2로 나눈다. 3. 2로 나눠서 얻은 결과 4를 인덱스 값으로 하여 arr[4]에 저장된 값이 3인지 확인한다. 즉, 배열의 중앙에 찾는 값이 저장되어 있는지 확인하는 것이 이진 탐색 알고리즘의 첫 번째 시도이다. ↓ 1 2.. Chapter01. 윤성우의 열혈 자료구조(성능검사, 순차탐색) 자료구조는 수학을 기반으로한 학문이다. 그러므로 자료구조는 이론을 바탕으로 구현을 직접 경험하는 것이 올바른 공부방법이다. 구현을 바탕으로 이론을 공부하면 재대로된 공부방법이 아니므로 다시 한번 보자. 자료구조 학습에 있어서 기억할 것 두 가지 - 자료구조의 모델을 그림으로 우선 이해해야 한다. (글로만 책에서 보여주는것이 전부 라고 생각하지 말고 거기에 없는 다양한 케이스들을 그림으로 그려봐야 한다.) - 구현이 가능해야만 의미가 있는 것은 아니다. (능동적으로 코드 공부를 해라. 책에 나와있는 코드를 가리고 직접 넣던지,, 등등) Chapter 01. 자료구조와 알고리즘의 이해 01-1 자료구조(Data Structure)에 대한 기본적인 이해 이 책은 기본적으로 C언어의 문법을 알고 난 후 보는게 .. Chapter 27. 파일의 분할과 헤더파일의 디자인 C언어로 구현되어 있는 프로그램은 보통 여러 개의 파일로 구성이 된다. 하나의 파일 안에 많은 내용을 담는 것은 관리 측면이나 코드의 의미 전달 측면에서 그리 합리적이지 못하기 때문이다. 따라서 여러 개의 파일을 생성해서 프로그램을 구현하는 것이 일반적이다. 컴파일러가 별도로 컴파일한 파일들을 링커가 링킹 작업을 하여 하나의 실행파일로 만든다. (파일들을 하나로 묶어주는 역할을 한다.) 27-1 파일의 분할 현명한 프로그래머들은 여러 개의 파일을 만들어서 서로 연관 있는 함수와 변수들을 구분해서 담는다. 파일을 그냥 나둬도 될까요? 파일을 나눠서 각각의 파일에, 용도 및 특성 별로 함수와 변수를 나눠서 저장라면 소스코드의 관리가 용이해진다. 그럼 파일을 나누는 방법에 대한 고민을 시작해보자. 더보기 #i.. Chapter 26. 메크로와 선행처리기(Preprocessor) 26-1 선행처리기와 매크로 Chapter 01에서는 실행파일이 컴파일과 링크의 과정을 거쳐서 만들어지는 것으로 설명하였다. 그러나 실제로는 컴파일 이전에 '선행처리'라는 과정을 거치게 된다. 다만 이를 컴파일 과정에 포함시켜서 이야기하는 것이 보통이다. 선행처리는 컴파일 이전의 처리를 의미합니다. 선행처리 -> 컴파일 -> 링크 의 과정을 거치게 되며 선행처리 = 선행처리기, 컴파일 = 컴파일러, 링크 = 링커 가 역할을 수행하게 된다. 선행처리는 단순치 치환의 형태를 띠는 경우가 대부분 이며, 선행처리가 이뤄지면 그대로 그전과 같은 소스파일 이지만 "정의된형태로 치환된 상태" 로 생성되고, 컴파일이 이뤄지면 바이너리 데이터로 이뤄진 오브젝트 파일이 생성된다. 그리고 선행처리 명령문은 # 문자로 시작 .. 이전 1 2 3 4 다음