목록분류 전체보기 (40)
#dokydoky
연결리스트의 추가 적인 함수 3개의 구현 연결리스트를 활용한 다항식의 표현
1. 배열 리스트와 연결 리스트의 장점과 단점을 비교. -> 배열리스트는 구현이 비교적 간단하고 탐색시간(원소에 접근시간)이 빠르나, 배열의 크기가 정해져 있으며 원소의 추가, 삭제시 다른 원소들까지 이동시켜야 한다는 단점이 있다. 이와 반대로, 연결 리스트는 비교적 구현이 복잡하고 탐색시간이 오래걸리지만, 원소의 추가/삭제가 간단하다.(단, 메모리를 좀 더 먹음) 결론적으로, 크기가 정해지지 않고 검색이 적으며, 원소의 추가/삭제가 빈번한 곳에는 연결리스트의 구현이 적당.. 2. 단순연결리스트, 원형 연결리스트, 이중연결리스트의 차이점 -> 세가지 리스트의 차이점은 노드의 링크차이다. 단순 연결리스트는 한쪽으로만 링크가 되어있고 마지막 원소의 링크는 NULL, 원형 연결리스트는 단순연결리스트와 비슷하나..
ArrayList, LinkedList, CircularList, DoublyList 소스는 첨부파일 참고. 학교에서 배울 때는 별로 재미없었는데. . . 지금 해보니까 할만하군뇨! 시간은 걸리더라두 하나씩 구현해보면서 익혀야겠다.
ms visual studio 6.0에서 간단한 bof 코드를 컴파일해보고 분석해보자. #include h4ck(void){ int i, *p; p=&i; p+=2; *p+=13; } main(void){ h4ck(); printf("H4cking\n"); printf("Cr4cking\n"); } 우선 알아야 할 것이. 1. 메모리구조는 Text, Data, Heap, Stack 영역으로 나뉜다. 2. Stack영역은 다른영역과는 달리 높은주소->낮은주소로 변수가 쌓인다.(변수 내부에서는 낮은주소->높은주소) 3. 함수를 호출하면 우선 스택에 ret(retrun 주소), SFP(Stack Frame Pointer), 매개변수, 지역변수 순서대로 쌓인다. 이 때, Stack BOF는 ret주소를 의도적으..
내 경험.. 얼마 전, 프로그래밍을 하다가 오류가 발생했다. 아무리 봐도 오류날 이유가 없었는데, 하나하나 디버깅 해봐도 도저히 모르겠음. 그러다가 free() 함수를 주석처리 해보니 오류가 안나는 거다.. 당시 문제있던 코드를 재현해보면 #include #include int main(){int i;int m, n;char** dp; printf("m, n 입력 : ");scanf("%d %d", &m, &n); dp = (char**)malloc( sizeof(char) * n );if( dp == NULL ){printf("dp 메모리할당 실패 \n");return 1;} for(i=0; i
출력 결과가 다음과 같게.. 먼저, C언어 처음 배울 때 본 'C언어는 함수다' 라는 말이 딱 떠올랐다. 그리고 얼마전 훈련용프로그램 만들 때도 그렇고 함수의 중요성.. 신머시기도 한 말도 있고.. main은 최대한 깔끔하고 적게.. 헤더/함수.. 모듈프로그래밍에 익숙해져야지 소스파일:
MTU ( Maximum Transmit Unit) - 특정 장비에서 한 번에 보낼수 있는 IP데이터 그램의 최대 크기 - 이더넷 네트워크 에서 보통 1500 바이트 단편화의 발생 시기 - 특정 장비의 MTU 보다 큰 패킷이 들어왔을 때 Packet Fragment 패킷 단편화를 보기위해 두 가지 경우를 비교해보자. ① ping 6.1.3.68 우선 일반적으로 ping을 보낸 경우이다. 그러면 패킷 크기는 74byte(Ethernet header 14byte + IP header 20byte + ICMP header 8byte + DATA 32byte) 이다. 참고로 그림에서 확인되듯이 data는 abcdefg...........순서대로 의미없는 값이 채워진다. 이 경우는 총 크기 74byte이므로 fr..
케이블은 네트워크 기기들을 연결해줄 때 사용한다. 케이블의 종류에는 동축케이블, TP(Twisted-Pair), 광섬유케이블 등이 있다. 요즘 많이 사용하는 UTP와 광섬유 케이블에 대해 공부한 내용을 정리해보자. 1. TP TP는 UTP와 STP로 나뉜다. 대부분의 케이블에서 사용되는 것이 UTP (Unshieled TP) 케이블이다. STP는 (Shieled TP) UTP와는 달리 전자방해로부터 보호하기위해 절연체로 감싸져 있다. STP는 토큰링쪽에 많이 쓰인다.( 우린 대부분 이더넷방식을 사용함 ) UTP는 총 4페어(8가닥)으로 구성되어 있으며, 쓰임새에 따라 Straight(Direct), Cross, Rollover(console) cable 등으로 나뉜다. UTP케이블은 RJ-45커넥터를 사..
● 데이터링크 층 데이터 링크층의 프로토콜에는 이터넷, 토큰링, PPP등이 있다. 이 프로토콜들은 같은 데이터링크내에서의 로컬규칙을 처리한다. 가장 많이 쓰는 이더넷에 대해서 알아보자 이더넷은 CSMA/CD라는 프로토콜을 이용한다. CSMA/CD라는 프로토콜은 쉽게 설명하면 통신을 하기전에 네트워크 상에서 통신이 일어나고 있는지 먼저 확인 한 후에 통신을 하고 있지 않거나 통신이 끝나면 그 때 통신을 시작하는 방식을 말한다. 만약 두 개의 PC가 서로 동시에 통신을 시작하면 collision이 발생하는데 collision이 발생하면 랜덤한 시간 후에 다시 동신을 시작한다. 참고) 데이터 링크층에서는 데이터의 단위를 프레임(Frame)이라고 한다. ( cf. 네트워크층 - 데이터그램, 트랜스포트층 - 세그..
네트워크 배우는 첫 날에 배운 OSI와 TCP/IP, OSI와 TCP/IP를 간단히 말하면 둘 다 통신을 위한 프로토콜군중에 하나이다. 프로토콜이란 쉽게 말해서 통신을 원활하게 하기 위해 정해진 절차라고 할 수 있고, 프로토콜군은 이러한 프로토콜들이 여러개 모여있는 것을 말한다. 프로토콜을 라면 끓이는 것에 비유해보면, 1. 물을 끓인다. 2. 라면 봉지를 뜯고 스프를 넣는다. 3. 면을 삶는다. 4. 계란을 넣는다. 이런 각각의 과정이 프로토콜이고 전체를 묶어서 프로토콜군이라고 한다. OSI와 TCP/IP 등과 같이 프로토콜을 표준화 시킨 이유는 개발자를 위해서다. 만약 프로토콜이 표준화 되어있지 않다면, 개발자는 네트워크에서 통신프로토콜과 발생하는 모든 일을 생각하여 프로그램에 포함시켜야 한다, 하지..