목록2016/06 (9)
따..딱히 공부하려고 포스팅하는 건 아니니까..!
재귀함수란 자기 자신을 호출하는 함수를 말합니다. 코드가 짧아져 가독성을 높일 수 있다는 장점이 있지만, 스택 오버 플로우를 일으킬 수 있는 엄청난 위험성도 내재하고 있습니다. 함수를 호출할 때 함수의 입력 값(매개변수), 리턴값, 그리고 리턴됐을 때 돌아갈 위치값 등을 스택에 저장합니다. 재귀함수를 사용하면 함수가 끝나지 않은 채 연속적으로 함수를 호출하므로 스택에 메모리가 쌓이게 됩니다. 이 때문에 스택의 최대 크기 이상의 메모리가 쌓이게 되면 스택 오버 플로우가 일어나게 됩니다. 또한, 잦은 점프의 반복으로 성능이 저하될 위험도 가지고 있습니다. 이런 재귀의 특징을 정리하자면 다음과 같습니다.- 무한 루프에 빠지지 않기 위해 일정한 탈출 조건이 있어야 한다.- 코드를 단순화 할 수 있다.- 재귀 함..
퍼올때 제목이 프로그래머 암걸리는 만화였는데이거보고 아~ 그렇구나하고 이해하게됨... 출처는 http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=5045&MAEULNo=28&no=3562&page=1
1) OCP : 확장에 대해서는 열려있고, 변경에 대해서는 닫혀있어야 한다 (인터페이스를 이용하여 변경되지 않는 부분을 분리)2) SRP : 하나의 클래스는 하나의 책임만 가져야 한다(높은 응집도) 3) ISP : 클라이언트에서 사용하지 않는 메서드는 사용해선 안된다. 여러개의 인터페이스로 분리하는게 나을수도 있다 4) DIP : 클래스간의 의존관계는 추상클래스나 인터페이스에 의한 의존이어야 한다 5) LSP : 자식클래스는 부모클래스의 자리에 대체될 수 있어야 한다
C#은 전역 메소드와 변수를 지원하지 않음 C++은 헤더파일, C#은 메타데이터 C#은 지역변수를 초기화하지 않으면 사용못함 C#은 가비지 수집 언어 C#의 as는 C++의 static_cast와 같음 C++은 bool형은 정수였지만 C#의 bool은 아예 새로운 형으로 정의됨C#의 Array는 메모리공간이 아닌 객체가 됨, array.Length이 그 증거이다 (C++ STL vs C# Generic)list, vector -> ArrayListmap -> Hashtable, DictionaryPair -> KeyValuePairC#에서 이러한 자료구조들은 Collection을 인클루드 해야함 C#에서는 템플릿 대신 제너릭 사용 private, public, protected 구분이 엄격해짐 new은 ..
가상 메모리(페이징 파일)은 물리적인 메모리 공간(RAM)외에 하드 디스크에 파일 형태로 따로 준비하는 가상의 메모리 공간이다. 한마디로, 부족한 시스템 메모리를 보조해주는 역할을 하는 메모리 공간이다. 사용되지 않는 내용들을 하드 디스크의 페이징 파일(가상메모리)로 옮겨 실제 메모리에 여유 공간을 확보한다. (실제 메모리와 가상 메모리 사이에서 데이터를 스왑) 자세한 내용은 직접 정리하는 것보다 더 좋은 글이 있어서 링크를 걸어둡니다 http://egloos.zum.com/sweeper/v/2988689
쓰레드는 프로세스 내에 존재하는 실행 단위이다. 즉, 프로세스의 메모리 구조와 비슷하거나 같다. 이를 토대로 쓰레드의 최대 개수에 대해 알아보고자 한다.스택과 힙의 최대크기에 대해 안다는 전제하로 진행하겠다. 스택과 힙에 대한 자세한 내용은 링크를 참고하도록 하자.http://bozeury.tistory.com/entry/%ED%9E%99Heap%EA%B3%BC-%EC%8A%A4%ED%83%9DStack%EC%9D%98-%EC%B5%9C%EB%8C%80-%ED%81%AC%EA%B8%B0 우선 쓰레드 하나를 생성해봤다.스택의 최대 크기를 1MB로 지정한 후에, 쓰레드 하나에 char를 1MB 이상 할당해봤다.(참고로 스택의 최대 크기를 200MB 정도로 크게 하면 abort()한다. 이는 다른 문제이므로 ..
프로그래밍을 하면서 스택 영역, 힙 영역이라는 말을 많이 들어봤을 것이다.스택이나 힙은 한 프로세스 내에 존재하는 메모리 영역인데, 이 스택과 힙 메모리 공간을 얼마나 할당할 수 있는지 알아보고자 한다. 위 그림은 번지에 따른 메모리 구조이다. 즉, 위에 있을 수록 주소가 높고(High Address) 밑에 있을 수록 주소가 낮다(Low Address).크게 코드 영역, 데이터 영역으로 나뉘고, 작게는 데이터 영역 내에서 힙, 스택으로 나뉜다. 하지만 처음부터 모든 메모리 공간을 사용하지는 않는다. 보통 힙과 스택 사이가 비어있는데, 이는 미사용 공간으로 처음부터 힙과 스택이 할당되어 있는게 아니라는 의미이다. 이들은 메모리 공간이 필요할 때 할당이 된다. 스택이라면 함수가 호출될 때, 힙이라면 동적으로..
역동적인 애니메이션 Ik from KyeongWon Koo