자바 원형연결리스트(별도의시작노드있는것)-Circular Linked List
//CircularLinkedList Example
//시작노드를 가리키는 별도의 빈headerNode를 둠,,,
class CircularListNode {
Object data;
CircularListNode next;
}
//시작노드를 가리키는 별도의 빈headerNode를 둠,,,
class CircularListNode {
Object data;
CircularListNode next;
}
public class CircularList {
private CircularListNode headerNode;
public CircularList() {
headerNode = new CircularListNode();
headerNode.next = headerNode;
}
private CircularListNode headerNode;
public CircularList() {
headerNode = new CircularListNode();
headerNode.next = headerNode;
}
public synchronized void insert(Object data) {
CircularListNode tn = new CircularListNode();
tn.data = data;
//맨처음 insert되는 경우
if (headerNode.next == headerNode) {
tn.next = headerNode;
headerNode.next = tn;
} else {
//마지막 노드를 찾는다.(headerNode 이전의 노드)
CircularListNode p = findPrev(data);
tn.next = headerNode;
p.next = tn;
}
}
CircularListNode tn = new CircularListNode();
tn.data = data;
//맨처음 insert되는 경우
if (headerNode.next == headerNode) {
tn.next = headerNode;
headerNode.next = tn;
} else {
//마지막 노드를 찾는다.(headerNode 이전의 노드)
CircularListNode p = findPrev(data);
tn.next = headerNode;
p.next = tn;
}
}
public synchronized void delete(Object data) {
CircularListNode prev = findPrev(data);
CircularListNode p = prev.next;
CircularListNode prev = findPrev(data);
CircularListNode p = prev.next;
if (prev.data.toString().equals(p.data.toString()) && p.next == headerNode) {
headerNode.next = headerNode;
headerNode.data = null;
return;
}
prev.next = p.next;
}
headerNode.next = headerNode;
headerNode.data = null;
return;
}
prev.next = p.next;
}
private CircularListNode findPrev(Object data) {
headerNode.data = data;
CircularListNode p = headerNode.next;
do {
if (p.next.data.toString().equals(data.toString())) return p;
p = p.next;
} while (p != headerNode);
throw new IllegalArgumentException();
}
headerNode.data = data;
CircularListNode p = headerNode.next;
do {
if (p.next.data.toString().equals(data.toString())) return p;
p = p.next;
} while (p != headerNode);
throw new IllegalArgumentException();
}
public String toString() {
StringBuffer sb = new StringBuffer("[");
CircularListNode p = headerNode.next;
if (p != null) {
do {
if (p.data == null) sb.append(" ");
else sb.append(" " + p.data.toString());
p = p.next;
if (p != headerNode) sb.append(",");
} while (p != headerNode);
}
sb.append(" ]");
return sb.toString();
}
}
class Main {
public static void main(String[] args) {
CircularList names = new CircularList();
public static void main(String[] args) {
CircularList names = new CircularList();
names.insert(new String("Scott"));
names.insert(new String("Tiger"));
names.insert(new String("Swan"));
System.out.println(names);
names.insert(new String("Tiger"));
names.insert(new String("Swan"));
System.out.println(names);
// Delete item
names.delete(new String("Swan"));
System.out.println(names);
names.delete(new String("Swan"));
System.out.println(names);
names.delete(new String("Tiger"));
System.out.println(names);
System.out.println(names);
names.delete(new String("Scott"));
System.out.println(names);
}
}
System.out.println(names);
}
}
오라클자바커뮤니티 추천 실무 개발자 과정 - 개인80% 환급
SQL초보에서실전전문가까지
강좌명 | SQL초보에서실전전문가까지(주말주간(토/일)) 오라클자바커뮤니티(www.oraclejavanew.kr) 추천 실전강좌 |
---|---|
교재 | 본원 자체교재 20,000 별도 |
강좌 일정 | 09월14일(토) ~ 10월13일(일)((주말주간(토/일)) 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(분석함수) 활용 |
스프링3.X게시판&오라클힌트,SQL튜닝,사례연구
강좌명 | 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구(주말주간(토/일)) 오라클자바커뮤니티(www.oraclejavanew.kr) 추천 실전강좌 |
---|---|
교재 | 자체교재 or PDF 무료제공 |
강좌 일정 | 09월28일(토) ~ 10월20일(일)((주말주간(토/일)) 09:30~18:30, 4일) 총 32시간 |
강의 장소 | [A강의장]구로디지털단지역2번 출구-> 미니스톱끼고 우회전 -> 100m 직진 후 골목길 끝에서 이마트방향 우회전 -> 50m 직진 후 우체국 옆골목으로 길건너서 직진 -> 150미터 직진 후 JnK 타워에서 우회전 -> 50미터 직진 후 우측에 코오롱빌란트2차 803호 (구로구 구로3동 222-8 코오롱디지털타워 빌란트2차 803호) [약도보기] |
수강절차 | - 강좌내용 확인 - 전화 또는 홈페이지(www.onjprogramming.co.kr)를 통한 수강지원 및 수강료 결제(무통장입금, 온라인 카드결제) - 고용보험 가입자(재직자)인 경우 고용보험환급 관련 서류 제출 - 수강전 : 커리큘럼 및 장소에 대해 다시 한번 공지 - 교육 전 설문 작성(간단한 개발 경력, 수강 목적, 강좌진행방식 등) - 강좌 수강 - 수강후 : 교육 후 설문 작성 |
수강료 | - 760,000원 [고용주환급]대기업:12만원 전후, 중소기업:16만원 전후환급 [개인수강지원(개인환급)]정규직 608,000 ,비정규직:전액환급 대기업(상시근로자 300인 이상 대기업)은 개인환급 불가합니다. * 휴강 :법정공휴일 |
수강료 입금안내 | - 온/오프라인 카드결제, 계좌이체(수강안내->입금안내 참조) |
문의사항 | 02-851-4790 번으로 연락 부탁 드립니다. |
교육개요 | [대한민국 유일강좌] 어떠한 교육기관에서도 흉내 낼 수 없는 커리큘럼 입니다. 2008년 이래 실무커리큘럼을 만들어 낸지도 5년이 넘었습니다. 대한민국 개발자 분들이 OK할때 까지 개발자분들을 위한 개발자 전용 교육과정을 생산하겠습니다! 본 과정은 실무 개발에서 꼭 필요한 부분만 추출해서 강의하는 개발자 전용 강좌 입니다. 자바웹 개발은 해 보았지만 스프링을 안해본 개발자 or 스프링을 해 보았지만 그 개념이 모호한 개발자들을 위해 최소, 최적의 이론을 학습하고 하얀 백지위에서 게시판의 뼈대 부터 설계하면서 코딩을 하고, 기능을 하나씩 붙여감으로써 스프링 웹개발에 대해 이해할 수 있도록 했으며 실무에서 몇년 개발했지만 기본 SQL만 사용하고 힌트구문이나 SQL튜닝 대한 개념과 경험이 없어서 늘 SQL때문에 2% 부족한 개발자를 위한 최적의 과정 입니다. [주:본 과정은 실습위주의 과정 입니다] |
교육목표 | - Spring IoC, AOP, @AspectJ Annotation - Spring JDBC, MVC에 대한 이해 - 스프링 기반의 자바 웹 개발자 만들기 - 오라클 힌트 구문의 이해 - 오라클 인덱스의 이해 및 SQL튜닝의 이해 - SQL 사례연구 |
교육대상 | - JSP기반에서만 개발을 해본 자바 개발자 - 스프링에 자신이 없는 개발자 - 오라클 SQL힌트 및 튜닝에 대해 배워보고 싶은 개발자 |
선수학습 | - JAVA, JSP - SQL기본 |
최적화를 통한 스프링3.X 기본의 이해 | - Spring의 도입배경 및 아키텍처 (자바빈의 태동부터 EJB, 그리고 현재까지) - Eclipse4.3 Kepler, Tomcat7, Maven, STS 플러그인에 대한 설치 및 이해 - Spring IoC(DI, DL) 이론/실습 - Spring AOP(JoinPoint, Pointcut, Advice, Aspect, Weaving) 이론/실습 - Spring AOP @AspectJ Annotation 이론/실습 - Spring Web MVC, JDBC - Spring Controller - Spring ORM에 대한 이해 - SQLMapper MyBatis의 이해 |
---|---|
스프링 게시판 작성하기 | [개요] 백지에 그림을 그리듯 , 빈 바탕위에 하나씩 따라하면서 코딩하기 (WEB.XML, 스프링설정XML파일 등 부터 하나씩) 스프링 게시판 작성에 자신이 있다면 어떠한 Spring Framework 개발도 가능 합니다! [기술요소] Spring IoC Spring AOP, @AspectJ Annotation Spring JDBC Spring MVC Spring ORM Spring Controller Spring & MyBatis Ajax - 게시판 기능 설계 - 작성 기능 게시판 리스트보기 게시물 본문내용 미리 보기(AJAX) 게시 글 상세보기 커멘트(댓글)기능 글쓰기 글 수정하기 글 삭제하기 답변 글 DAO단 로깅 기능(Spring AOP, @AspectJ Annotation적용) MyBatis 적용(쿼리문을 XML로) |
오라클 힌트 & SQL튜닝, 사례연구 | [SQL튜닝 기본 & HINT] SQL튜닝 및 오라클 힌트소개 AUTO TRACE, Explain Plan, SQLTrace 소개 및 사용법 Oracle Optimizer란? Optimizer Mode란? Optimizer Mode변경 Hint (RULE, FIRST_ROWS, ALL_ROWS, CHOOSE) 실행계획 SQL연산의 이해 (AND-EQUAL, CONCATENATION, COUNT, FILTER, HASH ANTI_JOIN, HASH SEMI-JOIN, INDEXRANGE SCAN, INLIST ITERATOR, MERGE, MERGE SEMI_JOIN, MERGE ANTI_JOIN) 실행경로변경힌트 이론 및 실습 (FULL, ROWID, CLUSTER, HASH, INDEX, INDEX_ASC, INDEX_DESC, NO-INDEX, INDEX_FFS) 조인순서변경힌트 이론 및 실습 (ORDERED, USE_NL, USE_HASH, HASH_AJ, LEADING, USE_MERGE, DRIVING_SITE) * 위 대부분의 실습은 대량의 데이터를 테이블에 입력 후 실전과 같은 실습 예정이며 실습을 통해 결과를 확인함으로써 이론에 대해 이해할 수 있습니다. [SQL튜닝 & SQL사례연구] - SQL튜닝 연구 SQL문 작성요령 SQL TIP Where vs HAVING ORDER BY 튜닝(INDEX_ASC, INDEX_DESC를 이용한 튜닝) MAX, MIN 값의 튜닝(INDEX관련 힌트를 이용한 튜닝) MINUS를 사용한 경우의 SQL튜닝 COUNT(*) 튜닝(index_ffs를 이용한 튜닝) DISTINCT의 튜닝(EXISTS) INDEX를 이용한 튜닝 (Bitmap Index, Function Based Index) OR연산 튜닝 index_ss(SKIP SCANNING)을 이용한 튜닝 index_ffs(Fast Full Scan)를 이용한 튜닝 mview를 이용한 group by 튜닝 - SQL사례 연구 SQL작성 TIP WHERE절 작성 요령 드라이빙 테이블, 비드라이빙 테이블 선정 Oracle12c의 Top-n, 시퀀스를 이용한 default value설정 특정 조건대로 번호를 부여하는 방법 Co-relateed subquery inlineview를 with문으로 매월 1,3주 토요일은 휴무일이다 현재월의 휴무월을 출력 컬럼값이 Unique인지 확인하는 SQL SQL*Plus로 로그인막는 트리거 작성 순위 Query 컬럼에 분포하는 값의 종류 COUNT 컬럼 값의 범위를 주어 개수 세기 SQL WHERE vs HAVING 중복데이터 삭제 샘플데이터 추출하기 first, last rank function job별로 급여의 합계(부서별로)를 표시하기(Matrix Report) SQL분석 함수 순위매기기 Explicitly Named Indexes(create table안의 create index) CASE를 사용한 SQL문의 통합 |
댓글 없음:
댓글 쓰기