자바 기초편 1

Program_Language/Java 2011. 8. 24. 18:27 Posted by Request

1.list와 vector 차이점
1)벡터는 임의 접근 가능, 리스트는 불가능
2)삽입과 삭제 시 리스트는 물리적 X, 벡터는 물리적 이동 함.
3)링크 구조로 인해 리스트의 메모리 소모량은 벡터보다 더 많고 삽입, 삭제 시 노드 할당, 제거 과정 반복해서 메모리 관리에 좋지 않다.
4)삽입, 삭제 시 벡터는 반복자 무효화, 리스트는 반복자 무효화 x

벡터는 읽기에 강하고 리스트는 쓰기에 강하다.

2.jsp 내장 객체 종류
-JSP 내에서 선언하지 않고 사용 할수 있는 객체
1)request : HTML FORM 요소 선택 값과 같은 사용자 입력 정보를 읽어 올때 사용.
2)response : 사용자 요청에 대한 응답을 처리할때 사용
3)session : 클라이언트 세션 정보를 처리하기 위해 사용
4)application : 웹서버의 애플리케이션 처리와 관련된 정보를 참조하기 위해 사용(javax.servlet.ServletContext)
5)out : 사용자에게 전달하기 위한 output 스트림 처리하기 위해 사용
6)config : 현재 jsp에 대한 초기화 환경을 처리하기 위해 사용
7)page : 현재 JSP 페이지에 대한 클래스 정보
8)exception : 예외 처리 사용

3. 싱글톤패턴이란?
-프로젝트 진행시 전 영역에 걸쳐 하나의 클래스의 단 하나의 인스턴스만을 생성하는 것을 말합니다.

4.string 과 stringBuffer 차이점
-string은 내용을 변경 할수 없기 때문에
String에서 + 연산자를 사용하면 내부적으로 stringBuffer를 생성하여 append()를 이용해서 문자열을 결합합니다.


5.J쿼리와 프로퍼티 설명


 

List의 크기를 반복해서 구할 필요가 없다.

위에서 1번으로 제시된 것처럼 get(int index) 를 쓰는 방법을 쓸 때도 아래와 같은 코드를 많이 보게 됩니다.

 

for( int i = 0; i < list.size(); i++){

//일하기

}

 

흔하게 보는 코드죠? 그런데 위 코드에도 굳이 필요없는 성능의 손실이 있습니다. 바로 list의 크기를 구하는 size() 메서드가 매번 반복해서 호출된다는 것입니다. 반복문 내에서 list의 크기가 변하는 경우가 아니라면 for문의 초기화 때 한번으로 충분합니다.

for(int i = 0, n = list.size(); i < n; i++){

//일하기

}

[출처 : http://benelog.egloos.com/1382604]
include 선언
define 정의
typedef 정의
using 정의

 
Class Name{
<멤버 변수, 멤버 함수 선언 부>
private:
public:
생성자, 소멸자
<구현부>
};




C++ 레퍼런스 선언이란?

Program_Language/C++ 2011. 8. 6. 02:43 Posted by Request
레퍼런스 선언이란?

이름이 존재하는 메모리 공간에 하나의 이름을 더 부여 하는 행위

ex)

int function(void)
{
int val;
val =20;
int &ref=val;
return val;
}



int function(void)
{
   int val;
  val=20;
  int &ref=val;
return ref;
}

레퍼런스는 선언과 동시에 반드시 초기화되어야 한다.

int main(void)
{
   int  &ref1;    // Error!    초기화 선언 안함
   int &ref2=10;   //Error!   상수값이 올수 없다.
}

C++ 객체 생성자의 필요성

Program_Language/C++ 2011. 8. 4. 01:30 Posted by Request

1. 객체의 생성자를 선언과 동시에 초기화 하는 것이 좋다.


2.객체의 생성 과정
  1) 메모리 할당
  2) 생성자의 호출 (클래스 100개 호출 하면 생성자도 100개 호출된다.)


생성자란?
-클래스명과 동일한 함수명을 가지며, 리턴타입과 리턴값도 없다.

 

C++ Encapsultion (캡슐화)

Program_Language/C++ 2011. 8. 4. 01:19 Posted by Request

인캡슐레이션이란?
-관련 있는 데이터와 함수를 하나로 묶는다는 것.
struct
접근 제한 기본값 : public

class
접근 제한 기본값 : private



인스턴스화란?
구현된 클래스를 활용하여 선언된 변수 또는 함수를 초기화 하는 것이라고 나 나름대로 간단하게 정리한다.

ex) 

class Account{
public:
char accID[20];
char secID[20];
char name[20];
int balance;
void Deposit(int money){ balance+=money;}
};

int main(void)
{
Account yoon ={"1234","1234","1234",1000};     // yoon 이라는 Account클래스의 인스턴스 or 객체 선언
}

C++구조체와 클래스 차이점?

Program_Language/C++ 2011. 7. 31. 00:25 Posted by Request
구조체는
하나이상의 변수를 그룹 지어서 새로운 자료형을 정의 한것.
C++에서는 함수 삽입이 가능하다.

클래스는
 멤버 변수(==객체)  +  멤버 함수

프로그램 생성의 접근 방법

1.현실)비디오 <-(대여)- 고객
2.프로그램) 비디오Item 객체 <---(대여 함수)--- 고객 객체




메모리 할당은 왜 할까?
-프로그램이 실행 되면 필요한 저장 공간을 운영 체제를 통해 공간을 할당 받는다.

데이터 영역 : 전역 변수와 static 변수의 이해하기.

1.전역(Global) 변수
-전역 변수는 함수 외부에서 선언되는 변수로 프로그램이 종료 될때 메모리에서 사라진다.
-전역 변수는 모든 함수에서 접근이 가능하므로 어떤 함수든 간에 접근하여 값을 변경 할수 있다.


2.정적(static) 변수
-비록 특정함수에 포함되어 있더라도 함수가 종료되도 메모리상에 그 값이 존재하고 프로그램이 종료될때 전역변수와 같이 비로서 메모리에서 사라진다.


-차이점 : 정적변수는 맨 처음 초기화되면 그 이후로는 값을 변경 할수 없다.

추가 설명 :
함수 내 static 변수(프로그램이 실행 될때 공간만 할당되고, 그 함수가 실행 될때 초기화 된다.)
전역 변수 + static  선언(프로그램이 실행 될때 공간이 이미 할당되고, 선언한 함수가 호출 될때 초기화 한다.)

3. stack 메모리 영역의 용도 및 특징 :
지역 변수, 매개 변수들의 공간
컴파일 타임에 메모리 공간 크기 결정.
프로그램 처음 시작 하는 main 함수 내의 변수 공간 컴파일 타임에 결정된다.


4.힙(heap) 메모리 영역은 어떤 용도로 사용 되는 메모리 공간은 무엇인가?
-런타임에 크기가 결정 되는 메모리 공간
하지만 지역 변수는 컴파일 타임에 스택 영역에 할당 되게 되어 있고,
런타임에 공간 할당은 힙에 할당 되게 되어 있다.

여기서 이러한 런타임에 할당 하기 위해서는
malloc(), free() 를 사용하여 힙 영역에 공간이 할당 되게 하여야 한다.