프로그래밍 언어 92

#085_닷넷(.NET)_ ADO.NET -DB & DBMS

안녕하세요 삽잡이입니다. 이번시간에는 ADO.NET에 본격적으로 들어가기전에간단하게(?) DB에 관련된 기초적으로 알아야될 사항들에 대해서 알아보려고합니다. DB는 말 그대로 'Data Base'입니다.DB와 DBMS를 헷갈려하실 수 있는데 DB는 DB일뿐이고, DBMS는 DataBase Management System 즉, DB 관리 시스템입니다. 여기서, Data Base는 일련의 데이터의 규칙성을 가지는 데이터를 뜻합니다.데이터가 규칙성을 가지고 있다면, 파일, 네트워크, DBMS, XML, Binary, Memoery 등 어디에 있던지DB라고 부를 수 있습니다. 다시 말씀드리지만,데이터들이 규칙적으로 있는 집합이라면 DB라고 부를 수 있습니다. 그런데, 이 규칙적으로 모여있는 데이터들의 집합을 사..

[삽잡이] 모듈(module) 이란?

모듈이란, '전체를 다루는 일부'를 뜻합니다. 그리고, 일반적으로 컴퓨터 용어에서 부르는 모듈이란 '컴파일이 완료된 바이너리'입니다.또한, 이 때의 모듈에서는 기존의 모듈의 의미인 '어떤 일부'라는 의미가 들어가야겠지요. 즉, 컴퓨터 용어에서 모듈은'라이브러리'를 말하게 되는 것입니다.라이브러리는 여러가지의 타입들, 함수들을 모아둔 집합의 용어를 뜻합니다. 그렇다면 모듈과 라이브러리는 뭔 차이일까요?라이브러리라는 모듈을 사용할 때에는'어떤 것의 일부'로 사용된다는 의미가 좀더 강하게 됩니다. C#에서는 '다중 파일 어셈블리'에서 모듈이라는 용어가 존재합니다.다중 파일 어셈블리에서의 모듈이란,다중 파일을 다루는 '일부 닷넷 바이너리'를 말하는 것입니다. 만약, 다중 파일 어셈블리가 4개의 다중 파일로 이루..

[삽잡이] 직렬화 (Serialization ) & 역직렬화 (UnSerialization)

직렬화란, 말 그대로 직렬로 만들겠다는 뜻이다.그렇다면 역직렬화란? 이또한 역직렬로 만들겠다는 뜻이다. 사실 직렬화라는 단어는 '객체'에 대한 내용이 나오지 않는다면 의미가 없습니다.객체를 어떤 장치에 쓰고, 다시 객체로 복원하는지에 대한 작업이 직렬화와 역직렬화에 관련된 작업이 됩니다. 우리가 만든 객체가 하나 있다고 해봅시다.이때에 이 객체를 똑같이 복원하고 싶을 때 어떻게 할까요?객체는 어플리케이션에 만들어지는데, 프로그램이 죽는 순간 다 날라가버리지 않습니까? 마치 피x온라인에서 전설의 카드로 '베르캄프'선수를 뽑았는데,피x온라인을 종료하자마자 베르캄프가 날라간다고 해봅시다... 하... 이처럼, 어플리케이션을 다시 켰을 때 지금까지 만들어놓은 객체를 복원되게 하고싶다면?이러한 요구로부터 나온 단..

#019_자료구조와 알고리즘_Hash Table 및 의사 결정 알고리즘

안녕하세요 삽잡이입니다. 이번에는 간단하게 해시 테이블과 의사 결정 알고리즘에 대해서 알아보려고 합니다.물론... 코드는 없고... 간략하게 알아보도록 하겠습니다.사실 정리용... 하하... 해시 테이블은 해싱이라는 작업을 통해 자료를 보관하는 테이블을 말합니다.그렇다면 해싱(Hashing)이란 무엇일까요?해싱이란, 특정 알고리즘으로 자료를 보관할(한) 위치를 판단하는 과정을 말합니다.여기서 특정 알고리즘이란 해시 함수를 말하는 것입니다. 결과적으로 해시 테이블을 통해서 어떠한 자료를 집어넣었을때 보관한 자료의 인덱스를 보내줄 것이고 인덱스를 따라가면 특정 자료가 보관되어 있게 되는 것입니다. 해시 테이블에는 해시 함수를 통해 자료를 보관하려고 했지만,이미 해당 공간에 자료가 보관되어있을 때 충돌이 나서..

#018_자료구조와 알고리즘_그래프

안녕하세요 삽잡이 입니다. 이번 시간에는 그래프를 알아보려고 합니다.이전에 트리에 대해서 배웠던 적이 있습니다.트리의 특징을 살펴봤을때에 고립되있지 않고, 순환되지 않는 노드들의 연결 집합을 트리라고 했었습니다.이 외에 모든 것들을 그래프라고 말할 수 있을 것 같습니다. 그래프를 표현한다는 자체가 목적에 따라 다 다르겠지만, 가장 얘기가 많이 나오는 것중 하나가 바로, 정점과 간선의 집합체에 대해서 많이들 얘기합니다. 정점(vertex) 와 간선(edge) 이 둘로 그래프를 표현할 수있습니다.그래프로 표현할 때에 어떠한 정점에서 어떠한 정점으로 갈 수 있는 방향성이 간선에 표현된다면,출발 정점과 끝정점이 나타날 수 있을 것입니다.이런 그래프를 방향성 있는 그래프라고 할 수 있겠지요. 모든 간선이 양방향으..

#017_자료구조와 알고리즘_Heap 정렬

안녕하세요 삽잡이입니다. 이버 시간에는 Heap 정렬에 대해서 간략하게 설명하려고 합니다. Heap 정렬은 Heap 트리를 이용한 정렬입니다.Heap 트리는 완전 이진 트리로 최대 힙과 최소 힙을 가지고 있습니다.최대 힙은 당연하게도 자식보다 부모의 값이 더 크겠지요. 최소 힙은 그와 반대이겠구요...즉, 최대 힙같은 경우에 맨 상단에 있는 겂이 최대 값이 되겠습니다.반대로 가장 끝에 있는 것이 최소 값이 되겠지요... 힙 트리의 경우 완전 이진 트리인 특징을 가지고 있습니다. 또한, 배열로 표현할 수 있어야합니다.여기서 생각해볼 것은 완전 이진트리를 배열로 표현하는 것입니다. 완전 이진트리를 배열로 나타내기 위해 정규식으로 표현해보겠습니다.왼쪽 자식 노드 = 2*x + 1오른쪽 자식 노드 = 2*x +..

#016_자료구조와 알고리즘_ 균형잡힌 이진 탐색 트리?

안녕하세요 삽잡이 입니다. 이진 탐색 트리는 검색을 보다 용이하게 하기 위해 만들어진 트리입니다.그런데 만약, 이진 탐색 트리가 한쪽으로 계속 쏠리게 되면 어떠한 현상이 벌어질까요? 자... 이와 같이 한쪽으로 쏠려있는 트리의 경우 검색 성능이 현저하게 떨어집니다.균형잡힌 트리에 비해 높이가 더 높아서 심하면 검색 속도가 선형 자료구조의 검색 속도와 차이가 없어 질 수 도 있습니다. 즉, 균형이 잡혀야 이진 탐색 트리는 속도가 나온다는 것이지요... 따라서 이번 시간에는 균형잡힌 트리를 만들기 위해서 어떻게 해야할지에 대해서이미 기울어진 트리를 균형잡는 방법과, 애초에 균형 잡히게 트리를 만드는 방법을 알아보겠습니다. 자, 우선 기울어진 트리를 어떻게 하면 균형을 잡을 수 있을까요?배열을 하나 준비해두고..

#015_자료구조와 알고리즘_수식 트리

안녕하세요 삽잡이입니다. 이번 시간에는 수식 트리에 대해서 알아보려고 합니다.우선 이번 내용에는 절대적으로 코드는 없습니다... 그냥 어떻게 해야할지 정리해보는 시간이기 때문이죠... 허허... 아무튼, 시작해보도록 하겠습니다. 만약에 수식 인자를 받아서 계산하는 프로그램을 만들어본다고 하지요.4+2*3-9/2 이렇게 말입니다... 그렇다면 계산의 순서는 어떻게 진행될까요? 왼쪽부터 차례대로? 푸하하... 그렇게하면 안된다는건 너무도 당연하게 아시리라 믿습니다... 자... 그럼 우리는 어떻게 계산을 하게 해야할까요?우선 연산자 우선순위에 의해서 곱하기 및 나누기를 우선적으로 연산해줘야 하는데요, 간단하게 stack을 사용하여 우리는 이 문제를 해결할 수 있게 됩니다.스택은 순차적으로 값을 저장하고 맨 ..

#014_자료구조와 알고리즘_count sort & radix sort

안녕하세요 삽잡이 입니다. 오늘은 카운트 정렬(count sort)와 기수 정렬(radix sort)에 대해서 알아보고자 합니다. 우선, count sort는 도수들의 개수를 파악합니다.그 다음에 도수들을 배치할 수 있는 최대 범위를 구한 뒤 정렬을 진행 하는 것이지요. 우선 도수란 무엇일까요?예전 중/고등학교 시절 수학시간에 들어본 말 아닌가요? 도수 분포표에서 말입니다.도수란, 각 계급에 속하는 자료의 수라고 합니다.예를 들어보자면 말입니다... 이와 같은 배열이 있다고 가정해보겠습니다. 이때 도수의 개수는 어떻게 될까요?도수는 각 계급에 속하는 자료의 수라고 했습니다.여기서 각 계급이란 a,b,c 라는 문자들이라고 볼 수 있겠군요.그렇다면 도수의 개수는 아래와 같습니다. 자 그렇다면 count so..

#013_자료구조와 알고리즘_Map에 대한 썰

안녕하세요 삽잡이입니다. 오랜만에 포스팅을 하군요.... 사실... 좀 방황좀 하고 아주 푹~쉬웠던 것 같습니다. 하하... 뭐 어중간할 바에 바닥 한번 시원하게 찍고 높이 비상하는게 좋지 않겠습니까!? 다시 정신 부여잡고 시작해보도록 하지요! (사실 아직 정신 못잡은건 비밀입니다...) 지난 시간에 map이라는 자료구조를 잠시 알아봤었는데요, 이 시간에는 map이 어떻게 이루어져 있는지 알아보려고 합니다. 자... 우선, map은 'key'와 'value'를 쌍으로 하고 있는 pair를 보관하고있습니다. pair는 STL에서 제공하는 두개의 형을 하나로 보관할 수 있는 구조체라고 해야하나? 아무튼... pair 형태로 보관하고 있습니다. 이런식으로 생겨먹었지요... 1234567891011121314t..