객체의 레퍼런스에 관해…
자바는 포인터를 사용하지 않으므로 객체에 대해서는 참조(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(분석함수) 활용 |
댓글 없음:
댓글 쓰기