2013년 9월 5일 목요일

자바 객체의 레퍼런스, 포인터에 관해… 자바메소드 인자, 오라클자바커뮤니티 자바강좌

자바 객체의 레퍼런스, 포인터에 관해… 자바메소드 인자, 오라클자바커뮤니티 자바강좌


객체의 레퍼런스에 관해…

자바는 포인터를 사용하지 않으므로 객체에 대해서는 참조(Reference)로써 처리 합니다.

자바에서 메소드의 인자로 원시데이터 타입의 값이 넘어가게 되면 값이 복사되어 넘어 가게 됩니다. 아래의 예를 보죠^^

public static void mian(Stirng[] args) {
        int x=10;
        int y=20;
        swap(x, y);
        System.out.println(“x=”+x+”,y=”+y);   //x=10. y=20
}

void  swap(int x, int y) {
        int tmp = x;
        x = y;
        y = tmp;
}

이 경우 위 함수 안에서는 x, y의 값이 바뀌었지만 원래 호출한 함수에서는 값이 바뀌어 지지 않게 되는 것 입니다.

물론 다음과 같이 호출되는 함수 쪽에서 값을 수정 하더라도 원본에는 전혀 영향을 미치지 않습니다.

public static void mian(Stirng[] args) {
        int x=10;
        int y=20;
        swap(x, y);
        System.out.println(“x=”+x+”,y=”+y);   //x=10. y=20
}

void  swap(int x, int y) {
        x=20;
        y=10;
}


이번엔 객체의 경우를 볼까요?

public static void mian(Stirng[] args) {
        Point p1 = new Point(1,1);
        Point p2 = new Point(2,2);
        objSwap(p1, p2);
}
`

void objSwap(Point p1, Point p2) {
        Point tmp = p1;
        p1 = p2;
        p2 = tmp;
}

객체의 경우에도 동일한 결과를 얻을 것 입니다. 그 이유는 자바에서 객체는 참조로 처리하고 이를 인자로 넘길 때는 참조의 복사본이 넘어가므로 … 즉 레퍼런스의 복사본을 통해 원본을 참조하거나 원본 객체의 멤버 변수를 수정하는 것은 가능 하지만 원본 자체를 바꾸는 것은 불가능 하다는 것 입니다.

물론 다음의 예처럼 객체를 인자로 넘기는 경우엔 호출되는 함수 쪽에서 멤버 변수의 값을 수정하게 되면 이를 호출하는 쪽에서 바뀐 결과를 볼 수 있습니다.

public static void mian(Stirng[] args) {
        Point p1 = new Point(1,2);   //p1.x=1, p1.y=2
        Point p2 = new Point(3,4);
        objSwap(p1, p2);
        System.out.println(“p1.x=”+p1.x);  //100
        System.out.println(“p1.y=”+p1.y);  //200

}
`

void objSwap(Point p1, Point p2) {
       
        p1.x=100;
        p1.y=200;
       
}

물론 다음과 같이 null로 초기화 해 버리더라도 원본에는 전혀 영향을 미치지 않습니다.

public static void mian(Stirng[] args) {
        Point p1 = new Point(1,2);   //p1.x=1, p1.y=2
        Point p2 = new Point(3,4);
        objSwap(p1, p2);
        System.out.println(“p1.x=”+p1.x);  //1
        System.out.println(“p1.y=”+p1.y);  //2

}

void objSwap(Point p1, Point p2) {
        p1=null;
        p2=null;
}



오라클자바커뮤니티 실전 강좌 - 개인80% 환급

SQL초보에서실전전문가까지

강좌명 SQL초보에서실전전문가까지(주말주간(토/일))
교재 본원 자체교재 20,000 별도
강좌 일정 09월07일(토) ~ 10월06일(일)((주말주간(토/일)) 10:00~18:00, 8일) 총 56시간
강의 장소 [C강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호)
[약도보기]
수강절차 - 강좌내용 확인
- 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제)
- 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출
- 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지
- 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등)
- 강좌 수강
- 수강후 : 교육 후 설문 작성
수강료 - 650,000원
- 고용보험 환급(50~80% 환급)
[고용주환급]대기업:21만원 전후,중소기업:285,254원

[개인수강지원(개인환급)]정규직 520,000원 ,비정규직:전액환급
상시 근로자수 300이상 대기업 재직자는 개인환급 불가.



* 휴강 :법정공휴일 / 추석연휴 휴강
수강료
입금안내
- 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조)
문의사항 02-851-4790 번으로 연락 부탁 드립니다.
교육개요 본 과정은 프로그램 개발 시 개발자들이 흔히 겪게 되는 SQL 사용법에 중점을 둔 강좌로서 기본적인 SQL을 세분화 서 집중적으로 학습하며 개발하면서 자주 보게되는 Schema Object(Table, Index, View, Sequence, Synonym, Store Procedure/Function)들에 대해 다루며 PL/SQL을 마스터 후 오라클의 힌트(Hint, Oracle Hint를 적절히 구사하면 데이터 검색 시 수분이상 걸리는 SQL문장을 수 초안에 데이터가 검색되도록 SQL튜닝 가능하죠^^, 개발자라면 꼭 알고 있어야 합니다!), 고급 SQL 사용법, 각종 인덱스에 대한 이해, 인덱스 활용법, 조인에 대한 학습을 하게 됩니다.

본 과정을 수료함으로써 개발자로서 SQL 사용에 대한 자신감 및 SQL SKILL을 향상시킬 수 있을 것 입니다.
교육목표 ○ SQL 기본 함수에 대한 이해
○ SQL 고급한수에 대한 이해
○ Join 및 Sub Query에 대한 이해
○ DML, DDL, DCL에 대한 이해
○ Oracle Index에 대한 이해
○ Oracle Schema Object 에 대한 이해(Table, View, Index, Trigger, DataBase Link, Sequence등)
○ Oracle Stored Program에 대한 이해
○ 인덱스를 선정하는 기준에 대한 이해
○ 효율적인 인덱스 운영 및 관리
○ B*Tree 인덱스의 단점을 보완하기 위한 기타 인덱스에 대해서 이해.
○ 대용량 데이터를 효율적으로 저장을 위한 구조에 대한 이해
○ 옵티마이저의 기능과 역할을 실행계획을 통해서 정확히 이해
○ INDEX생성, DRIVING TABLE의 ACCESS 순서 변경 및 HINT, 분석함수 등을 사용하여   SQL QUERY 의 응답 속도를 크게 향상 시킬 수 있다.
○ 조인방식에 대한 이해 및 CASE별 최적의 조인메카니즘을 이해
○ 본인이 작성한 SQL문에 대하여 옵티마이저의 작동 원리를 파악하고 실행계획을 분석 할 수 있다.
○ 현실 실무에서의 튜닝 사례를 설명하고 튜닝을 위한 명확한 실무 활용기준 가이드를 제시
교육대상 초보 개발자
SQL에 관심있는 개발자
DB전문가가 되기 위한 개발자
선수학습 데이터베이스에 대한 이해
 

1. INTRODUCTION 1. 관계형 데이터베이스
2. SQL 개요
3. 객체 관계형 데이터베이스
2. SELECT 기본 1. SELECT 구문의 기본 문형
2. 정렬 순서의 지정
3. 특정행의 조건 검색
3. SQL*PLUS 1. iSQL*Plus란?
2. SQL*Plus 접속
3. SQL*Plus 명령어
4. 변수설정
4. FUNCTION 1. 함수의 종류
2. 문자형 함수
3. 숫자형 함수
4. 날짜형 함수
5. 변환형 함수
6. 기타 함수
7. 그룹 함수
5. DATA GROUPING 1. SELECT 구문의 전체 문형
2. SUBGROUP으로 데이터 분류
3. GROUP된 데이터 조건 검색
4. ROLLUP과 CUBE를 이용한 데이터 집계
6. JOIN 1. Join 이란 ?
2. ANSI Join Syntax
3. 기타 Join
4. SET 연산자
7. SUBQUERY 1. Subquery의 개념
2. Singe Row Subquery
3. Multi Row Subquery
4. Multi Column Subquery
5. Scalar Subquery
6. Correlated Subquery
8. 데이터 조작어 1. 데이터의 조작 명령어
2. DML문에서의 Subquery
3. DML에서의 Transaction 관리
9. 데이터 정의어 1. 테이블 명명 규칙
2. Oracle의 데이터 타입
3. 테이블 생성
4. Constraint 설정
5. 데이터 정의어의 종류
6. 테이블 삭제
7. 테이블 구조 변경
8. 그 외의 DDL
10. 데이터 제어어 1. Database Security
2. Privileges
3. Role
11. VIEW 1. View의 개념
2. View 에 대한 DDL
3. View에 대한 DML
4. View의 활용
12. 기타 OBJECTS 1. Object의 종류
2. Sequence
3. Synonym
4. Index
5. Stored Program
13. 기타 SQL 관련 기능 1. Dictionary
2. Partitioning
3. 객체 개념을 사용한 테이블 생성
14. PL/SQL 개요 1. PL/SQL의 개요
2. 변수 선언
3. PL/SQL에서 SQL문 사용
15. PL/SQL - Programming 1. 제어문의 종류
2. Exception
3. Cursor
16. 고급SQL 1. 집계용 함수사용 ( ROLLUP,CUBE,GROUPINGSET)
2. 분석함수(Analytical Function) 사용
3. 순환관계처리 및 병렬처리
4. Oracle 정규표현식(Regular Expression)
17. 옵티마이저 이해 1. OPTIMIZER 이해
2. OPTIMIZER MODE
3. CBO의 이해
18. SQL 실행계획 분석 1. 실행계획 보기
2. 실행계획의 유형
3. 실행계획의 제어
4. HINT(힌트) 상세 설명
19. B-Tree 인덱스 활용 1. 인덱스 매칭율
2. 옵티마이저의 선택기준
20. 인덱스의 활용 1. B-Tree 인덱스를 사용하지 못하는 경우
2. Bitmap 인덱스의 이해
3. Reverse Key 인덱스
4.Function Based 인덱스(함수기반인덱스)
5.IOT(인덱스 일체형 테이블)
21. 대용량 데이터에 유용한 물리구조 1.CLUSTER
2.PARTITION
3.PARTITION 예제
4.Merge, Multi Table Insert, 외부 테이블
22. 조인에 대한 이해 및 활용 1.조인 원리의 파악 및 활용 비교
2.NESTED LOOP JOIN 원리
3.HASH JOIN 원리
4.SORT MERGE JOIN 원리
23. 조인 드라이빙 테이블의 선정 1.드라이빙 테이블의 중요성
2.조인 실행 경로 고정 사례
24. SQL튜닝 실전사례연구 1. 현장 사례연구
2. 성능에 도움되는 Analytic Function(분석함수) 활용
 

댓글 없음:

댓글 쓰기