(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...탑크리에듀(구로디지털단지역3번출구 2분거리)
(개발시 SQL튜닝은 기본 입니다.)서브쿼리튜닝, 쿼리 변환(Query Transformation)에 대한 이해는 SQL튜닝의 핵심입니다. 서브쿼리 푸시 및 서브쿼리의 드라이빙을 제어할 수 있는 push_subq, no_push_subq 힌트에 대해 알아보고 실행방법에 따른 서브쿼리의 종류도 설명한 영상 입니다. SQL튜닝 교육은 탑크리에듀(www.topcredu.co.kr)에서 해결해 드리겠습니다.
SQL튜닝을 위한 도구중 하나인 "오라클의 10053 이벤트" 간단히 소개하고 오라클 함수를 만들어 간단히 테스트 후 옵티마이저의 Query Transformation, Optimization 과정(조인방법 결정, 드라이빙테이블 선정), 실행계획 생성등을 Trace 파일을 만들어 확인하는 PPT 강좌 입니다.
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...탑크리에듀(구로디지털단지역3번출구 2분거리)
(개발시 SQL튜닝은 기본 입니다.)서브쿼리튜닝, 쿼리 변환(Query Transformation)에 대한 이해는 SQL튜닝의 핵심입니다. 서브쿼리 푸시 및 서브쿼리의 드라이빙을 제어할 수 있는 push_subq, no_push_subq 힌트에 대해 알아보고 실행방법에 따른 서브쿼리의 종류도 설명한 영상 입니다. SQL튜닝 교육은 탑크리에듀(www.topcredu.co.kr)에서 해결해 드리겠습니다.
SQL튜닝을 위한 도구중 하나인 "오라클의 10053 이벤트" 간단히 소개하고 오라클 함수를 만들어 간단히 테스트 후 옵티마이저의 Query Transformation, Optimization 과정(조인방법 결정, 드라이빙테이블 선정), 실행계획 생성등을 Trace 파일을 만들어 확인하는 PPT 강좌 입니다.
(오라클 SQL튜닝을 위한 쿼리문 작성법 강좌)오라클 SQL/쿼리 튜닝은 간단한 SQL구문 최적화 부터 시작을 하게되죠, SQL을 처음 사용할 때 부터 최적화 하는 방법에 주의해서 공부하시면 저절로 튜닝 됩니다. 본 PPT 강좌는 탑크리에듀(www.topcredu.co.kr), 오라클자바커뮤니티(ojc.asia)에서 제공하는 교육강좌 입니다.
boost라이브러리 중에서 가장 많이 사용하는 기능인 BOOST_FOREACH()와 shared_ptr의 내부 구조를 분석합니다. 그리고 boost의 내부 구현에 사용된 이 기능을 프로그래밍에 응용하는 방법을 제시합니다.
* BOOST_FOREACH 구조 분석 및 응용
* shared_ptr 구조 분석 및 응용
Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
탑크리에듀에서 제공하는 SQL기초강좌(상관서브쿼리) 입니다.
서브 쿼리와 메인쿼리간에 서로 상관 참조 작용하는 쿼리로 Inner Query에서 Outer Query의 어떤 컬럼을 이용하는 경우다. 일반적인 Query의 경우 서브 쿼리의 결과를 메인에서는 단순히 이용만 하지만 상관 서브 쿼리에서는 서브 쿼리가 메인 쿼리의 값을 이용하여 값을 구하면 그 값을 다시 메인 쿼리에서 이용하는 구조이므로 서브쿼리는 값을 확인하는 확인자 역할을 하게된다. 예를 들어 서브 쿼리 에서 10번 부서에서 가장 많은 급여를 받는 사람, 20번 부서에서 가장 많은 급여를 받는 사람, 30번 부서에서 같은 결과를 구하고자 한다면 부서만 다르고 같은 내용을 입력 시켜야 하므로 이 경우 상관 쿼리로 만들어 처리하면 편리 하다.
(오라클 SQL튜닝을 위한 쿼리문 작성법 강좌)오라클 SQL/쿼리 튜닝은 간단한 SQL구문 최적화 부터 시작을 하게되죠, SQL을 처음 사용할 때 부터 최적화 하는 방법에 주의해서 공부하시면 저절로 튜닝 됩니다. 본 PPT 강좌는 탑크리에듀(www.topcredu.co.kr), 오라클자바커뮤니티(ojc.asia)에서 제공하는 교육강좌 입니다.
boost라이브러리 중에서 가장 많이 사용하는 기능인 BOOST_FOREACH()와 shared_ptr의 내부 구조를 분석합니다. 그리고 boost의 내부 구현에 사용된 이 기능을 프로그래밍에 응용하는 방법을 제시합니다.
* BOOST_FOREACH 구조 분석 및 응용
* shared_ptr 구조 분석 및 응용
Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
탑크리에듀에서 제공하는 SQL기초강좌(상관서브쿼리) 입니다.
서브 쿼리와 메인쿼리간에 서로 상관 참조 작용하는 쿼리로 Inner Query에서 Outer Query의 어떤 컬럼을 이용하는 경우다. 일반적인 Query의 경우 서브 쿼리의 결과를 메인에서는 단순히 이용만 하지만 상관 서브 쿼리에서는 서브 쿼리가 메인 쿼리의 값을 이용하여 값을 구하면 그 값을 다시 메인 쿼리에서 이용하는 구조이므로 서브쿼리는 값을 확인하는 확인자 역할을 하게된다. 예를 들어 서브 쿼리 에서 10번 부서에서 가장 많은 급여를 받는 사람, 20번 부서에서 가장 많은 급여를 받는 사람, 30번 부서에서 같은 결과를 구하고자 한다면 부서만 다르고 같은 내용을 입력 시켜야 하므로 이 경우 상관 쿼리로 만들어 처리하면 편리 하다.
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이GangSeok Lee
2012 CodeEngn Conference 07
데프콘은 매년 라스베이거스에서 열리는 세계적으로 가장 권위 있는 보안 컨퍼런스 중 하나로 CTF 대회를 진행하고 있다. 올해 데프콘은 특히 20주년을 맞아서 20개팀이 본선에 참가하였으며, 다양한 문제들이 출제되었다. 보통 해킹대회에서의 예선전 풀이는 많지만 본선문제에 관한 정보는 많이 부족하기 때문에 CTF에 출제된 문제중 몇문제를 선정하여 풀이한다.
http://codeengn.com/conference/07
-- 먼저 EMP에 테이블에 생성되어 있는 인덱스 및 칼럼을 확인하자.
SQL> SELECT a.index_name, a.column_name, b.visibility
FROM user_ind_columns a, user_indexes b
WHERE a.table_name = 'EMP'
AND a.index_name = b.index_name ;
-- 인덱스가 없다면 생성, 있으면 SKIP
SQL> CREATE INDEX idx_emp_job ON EMP(job);
SQL> CREATE INDEX idx_emp_deptno ON EMP(deptno);
탑크리에듀교육센터(www.topcredu.co.kr)제공
스프링프레임워크 & 마이바티스(Spring Framework, MyBatis)
20번째 자료입니다. 참고하시어 많은 도움되셨길 바랍니다.
교육 및 수강문의/기타문의사항은 홈페이지(www.topcredu.co.kr)를 통하여 하실 수 있습니다.^^
1. Function Calling Convention
함수를 호출하기 위해서는 실행할 함수의 주소 값 그리고 그 주소 값을 가져올 수
있는 함수 이름, 현재 처리되고 있는 함수의 정보를 저장할 공간, 함수의 실행이 끝
난 뒤 리턴 받을 공간, 함수의 실행에 필요한 인자를 넘겨줄 공간이 등이 필요 할
것이다.
main 함수에서 다른 함수로 실행이 넘어간 뒤에 다시 원래의 main 함수로 돌아오
려면 호출자가 사용하던 데이터를 복구할 필요가 있다. 함수를 연달아서 호출한 경
우 나중에 호출된 함수의 데이터는 항상 호출한 함수의 데이터보다 먼저 제거된다.
함수 호출에 관련된 데이터의 이런 특성이 스택이 갖는 속성들과 맞기 때문에 함수
호출 과정에서 현재 함수에서 사용 하는 로컬 변수나 호출될 함수에게 전달한 인자
를 저장하기 위한 데이터 구조에서 스택(Stack)을 주로 사용 한다.
함수 호출 규약은 함수를 호출할 때 인자를 넘겨주는 방식과 함수를 다사용한 후에
스택에 있던 인자를 제거하는 방식으로 나눌 수 있다.
하수 호출 규약을 위 방법대로 나누면 5가지 __cdecl, __stdcall, __fastcall,
thiscall, naked 가 있다.
호출 규약 인수 전달 스택 정리 이름 규칙
__cdecl 오른쪽부터 호출원 _함수명
__stdcall 오른쪽부터 함수 _함수명@인수크기
ECX, EDX에 처음
__fastcall 2개 전달, 나머지는 함수 @함수명@인수크기
오른쪽 먼저
오른쪽부터, this를 C++ 이름 규칙을
thiscall 함수
ECX에 저장 따름
naked 오른쪽부터 함수 없음
표출처:winapi
자주 쓰이는 cdecl방식과 stdcall방식을 실제로 코딩하여 디버깅 해서 확인해 보겠
습니다.
2. cdecl
3: int add(int a, int b)
0040B4F0 push ebp <--add() 시작
0040B4F1 mov ebp,esp
0040B4F3 sub esp,40h
0040B4F6 push ebx
0040B4F7 push esi
0040B4F8 push edi
9: int main(int argc, char* argv[])
00401050 push ebp <--main() 시작
00401051 mov ebp,esp
00401053 sub esp,40h
00401056 push ebx
00401057 push esi
00401058 push edi
11: add(1,2);
00401068 push 2
0040106A push 1
0040106C call @ILT+0(add) (00401005) <--add() 호출
00401071 add esp,8 <--Stack 정리
12: return 0;
00401074 xor eax,eax
00401071주소를 보면 8byte만큼 ESP를 보정해 줍니다. -->(add(1,2))
cdecl 방식의 장점은 printf() 함수와 같이 가변길이 파라미터를 전달 할 수 있다는
것입니다.(ex>printf 같은 함수가 가변 인수가 전달되는 경우인데, printf는 몇 개의 인수가
전달되는 정해져 있지 않습니다. 몇 개의 인수가 전달되는지 알 수가 없기 때에
호출하는 쪽에서 판단하는 편이 유용합니다.)
3. stdcall
3: int _stdcall add(int a, int b) <-- add() 시작
0040B7D0 push ebp
0040B7D1 mov ebp,esp
0040B7D3 sub esp,40h
0040B7D6 push ebx
0040B7D7 push esi
0040B7D8 push edi
.
.
0040B80D pop ebp
0040B80E ret 8 <-- 스택정리
9: int main(int argc, char* argv[]) <-- main() 시작
00401050 push ebp
00401051 mov ebp,esp
00401053 sub esp,40h
00401056 push ebx
00401057 push esi
00401058 push edi
11: add(1,2); <-- add() 호출
00401068 push 2
0040106A push 1
0040106C call @ILT+10(add) (0040100f)
.
.
00401082 pop ebp
00401083 ret
스택의 정리는 add() 0040B80E 주소에서 RET 8 명령에서 수행됩니다.
RET 8 명령의 의미는 RET + POP 입니다. 즉, 리턴 후 지정된 크기만큼 ESP
를 증가시키는 것입니다.
stdcall 방식의 장점은 호출되는 함수(Callee) 내부에 스택 정리 코드가 존재하므로
함수 호출할 때마다 ADD ESP, XXX 명령을 써줘야 하는 cdecl 방식에 비해서 코
드 크기가 작아집니다.
참고한 사이트:http://www.reversecore.com,http://beforu.egloos.com/2117375
Copyright ⓒ 2011. 육승찬. All rights Reserved