본문 바로가기
반응형

전체 글347

C 포인터, 확실히 알자(3) - 문자열과 포인터 서론 C 언어에서는 기본적인 자료형인 배열(Array)과 문자열(Stirng)을 다루는 것 조차도 포인터를 이해하지 않으면 안될만큼, 언어차원에서 포인터의 개념이 뿌리깊게 자리잡고 있습니다. 때문에 포인터를 이해하는 것은 곧 C 언어 그 자체를 이해하는 것과도 통하는 것이 있습니다. 이때문에 C가 어렵게 느껴지는 것이기도 하겠지요. 제 나름대로 C를 쉽게 정의 내려본다면, "왠만한건 다 포인터로 처리한다" 라고 말하겠습니다. 정말 C에서는 포인터로 못하게는게 거의 없습니다. 물론 그만큼 강력하지만 잘못다루면 심각한 에러를 만들어 낼 수 있고, 또 C를 이해하기 어렵게 만드는 요인이기도 합니다. 그 때문에 JAVA나 C# 같은 언어에서는 C++을 확장한 언어임에도 불구하고 포인터라는 것을 과감하게 없애버렸.. 2009. 3. 31.
C 포인터, 확실히 알자(2) - 배열과 포인터 시작 포인터를 얘기할 때, 꼭 배열이란 것을 다시 언급하게 됩니다. 사실 C에서 포인터(Pointer)와 배열(Array)은 꽤 닮은 점이 있습니다. 결론부터 말하면, 배열이 내부적으로 포인터로 구현되어 있기 때문입니다. 1. 배열(Array) 배열이란 동일한 타입을 가지는 일련의 변수군을 정의한 겁니다. 가령 int A[5]; 이라고 선언하면 정수(int)형 변수 5개를 만들고 그것을 A 라는 하나의 이름으로 통합해서 관리하게 됩니다. 그러면 메모리상에서 배열은 어떤 모습일까요? 일단 배열의 각 원소가 할당받는 어드레스를 살펴봅니다. ──────────────────────────────────────── #include void main() { int A[5]; printf("%d %d %d %d %.. 2009. 3. 31.
C 포인터, 확실히 알자(1) - 변수와 포인터 서론 C Language를 공부하면서 가장 이해하기 어려운 것이 무어냐고 물어본다면, 아마도 거의 대부분 "바로 포인터(Pointer)라는 녀석이다!" 라고 말할 것입니다. C에서 다른 건 다 이해가 되어도 "포인터 만큼은 죽어도 모르겠다" 라고 말하는 경우를 제 주변에서도 심심치 않게 봐왔습니다. 사실 C는 어려울 수밖에 없습니다. C를 그저 프로그래밍의 기초 과정에서 배우는 옛날 언어라고 생각하고 가볍게 볼만큼 만만한 녀석이 전혀 아닙니다. C는 어셈블리(Assembly)의 사촌입니다. 다시 말하면, C는 하드웨어 - 특히 마이크로프로세서(CPU)와 친한 녀석입니다. 때문에 하드웨어에 대한 기반 지식없이는 C를 제대로 이해할 수가 없습니다. 포인터라는 녀석이 특히 그렇습니다. C를 강력하게 만드는 무.. 2009. 3. 31.
헝가리안표기법 NAME DESCRIPTION b----BOOL c----char by---byte (unsigned char) n----short i-----int l-----LONG f----FLOAT d----double s----string sz---Null로 종료되는 문자열(string) = ( LPSTR : char* ) str--CString 형, char 배열 u----UNIT (unsigned int)형 변수 w---WORD (unsigned short)형 변수 (= USHORT ) dw--DWORD (unsigned long)형 변수 a----Array 배열 h----handle p----pointer lp----long 포인터 변수 x, y--x축이나 y축으로 사용되는 정수 cx, cy---x,y 길.. 2009. 3. 31.
JVM 메소드 영역(Method area) ü메소드와 클래스 변수를 저장하기 위한 공간 ü모든 프로그램에 의해 공유 힙 영역(Heap area) ü동적으로 할당하여 사용할 수 있는 메모리 ü주로 실행시간에 생성되는 객체를 저장 스택 영역(Stack area) ü메소드 호출 시 메소드의 매개변수, 지역변수, 임시변수등을 저장하기 위한 스택 구조의 메모리 ü실행중인 프로그램에 따라 스택 프레임 할당 PC 레지스터 üJVM이 현재 수행할 명령어의 주소를 저장 Native 메소드 스택 üNative 메소드를 호출할 때 native 메소드의 매개변수, 지역변수 등을 저장 2009. 3. 23.
자바, 클래스 정리 * 자바에서의 자료 구조는 클래스로 표현된다. 실세계를 표현하기 위해 서로 다른 자료형을 묶어 놓은 추상화 기법을 사용한다. * main() 메소드를 가지고 있는 클래스만 실행할 수 있다. * 캡슐화(Encapsulation) : 객체에게 넘겨주는 정보와 메소드를 실행한 결과를 알 수 있지만 내부 구조에 대해서는 알 수 없다. * 정보 은닉(Information Hiding) 객체 사용자가 사용하길 원하는 정보를 선택하고 그 정보는 구현한 부분의 비밀을 유지할 수 있다. 따라서 일부 메소드는 공개하지만 공개된 메소드에서 접근하는 내부메소드에 대해서는 숨긴다. * Get/Set 메소드 : 직접 속성에 접근하는 방법과 달리 자료의 유효성을 검사할 수 있으며, 어떤 값을 읽기 전용으로 사용할 수 있다. * 생.. 2009. 3. 23.
재귀와 반복 (Recursion vs Iteration) * 재귀 메소드 - 메소드는 특정한 문제를 해결하기 위해 다른 메소드를 호출할 수 있으며, 자신을 직접 호출하는 것을 재귀라고 한다. - 재귀적인 방법을 사용함에 있어 주의할 점은 종료하는 지점을 정의하는 것이다. 그렇지 않으면 재귀는 무한 반복되기 때문이다. * 재귀와 반복 - 재귀와 반복은 같은 문제를 해결하는 두가지 방법이지만, 재귀 방법이 적은 코드를 사용해 효율적으로 처리할 수 있다. * 반복 - 메소드의 호출은 매개변수 리스트를 보관할 메모리 영역과 (메소드가 static이 아니라면) 메소드를 실행할 수 있는 복사 공간이 필요하다. - 반복적인 메소드 호출을 위한 메모리는 한번만 필요하기 때문에 반복 프로그래밍이 성능적인 면에서 유리하다. * 재귀 - 세련된 방법. 코드를 이해하고 유지하는 것.. 2009. 3. 23.
현실 2009. 3. 19.
Axis 웹서비스 등록 및 배포 방법 #다음 과정 중엔 항상 Tomcat 이 구동되어 있어야함. 1. Java Class 생성 2. Interface 생성 3. Axis Java2WSDL을 이용하여 Interface Class를 WSDL File로 변환 4. Axis WSDL2Java를 이용하여 WSDL File을 Java 및 WSDD File로 변환 5. WSDD File의 Class 부분을 처음 작성했던 Java Class로 수정 6. Axis AdminClient를 이용하여 서비스 등록(deploy.wsdd) 및 삭제 (undeploy.wsdd) 2009. 3. 19.
반응형