목록바슈라마 (39)
시다바리
설명1 : Query Optimizer가 SQL 해석할 때 Where절에 여러 조건이 있고, 해당 조건 컬럼들에 Index가 각각 생성되어 있을 경우 Btree Index를 Bitmap으로 conversion하여 PLAN을 수립하여 실행함. 이럴경우 TYPE이나 Code성 컬럼의 경우 Btree Index range scan으로 해석되는 경우보다 성능이 나을수 있으나 일반적으로 성능이 저하되는 경우가 더 많음. (필수적용사항) 설명2 : BTree Index에 대해 Bitmap Conversion을 수행하는 실행 계획을 고려할 지의 여부를 지정한다. Bitmap Conversion이 발생하면 Oracle은 다음과 같은 방식으로 BTree Index를 Bitmap으로 변환해서 처리한다. BTree Inde..
내가 알고 있는 SQL SELECT a.sid, a.serial#, a.username, a.process, substr(a.MACHINE,1,20), to_char(a.LOGON_TIME, 'yyyymmddhh24miss' ), b.object_name, decode(c.lmode, 2, 'RS', 3, 'RX', 4, 'S', 5, 'SRX', 8, 'X', 'NO') TABLE_LOCK, decode(a.command, 2, 'INSERT',3, 'SELECT',6, 'UPDATE', 7, 'DELETE', 12, 'DROP',6, 'LOCK', 'unknown') SQL, decode(a.lockwait, NULL, 'No Wait', 'Wait') STATUS FROM V$SESSION a, D..
▒ 첫번째 방법 SQL*Plus에서 SET DEFINE OFF나 SET SCAN OFF를 실행하여 Substitution Variable(&)을 Turn Off시킨다. SQL> SET DEFINE OFF SQL> INSERT INTO test_str VALUES('Q&A'); 1 개의 행이 만들어졌습니다. SQL>SELECT * FROM test_str; VAL ------ Q&A ▒ 두번째 방법 SET DEFINE ON 상태로 유지 시키면서 Substitution Variable을 다른 Non-Alphanumeric 문자나 Non-White Space 문자(*, % 등등)로 대체시킨다. SQL> SET DEFINE % SQL> INSERT INTO test_str VALUES('Q&A'); 1 개의 행..
/** * Java로 오라클 접속하는 예제 * Myoung-Geun Jang(jangsalt@nextelecom.co.kr) * 2008. 5. 9 */ import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.sql.SQLException; public class OracleConnection { private static Driver JDBC_DRIVER = null; Connection connection = null; ResultSet rs = null; Statement stmt = nul..
/** * 한글 UniCode 를 한글로 변환 시키는 소스 * Myoung-Geun Jang(jangsalt@nextelecom.co.kr) * 2008. 5. 9 */ public class UnicodeToChar { public static void main(String[] arg) { String uniCodeStr = String.format("\uD14C\uC2A4\uD2B8"); String[] rawUnicode = uniCodeStr.split(""); int intVal = 0; char[] chVal; for( int i = 0; i < rawUnicode.length; i++ ) { chVal = rawUnicode[i].toCharArray(); for( int j = 0; j <..
출처 : http://blog.naver.com/endfirst가.가변 인수 함수여기서는 가변 인수 함수에 대해서 알아 본다. 가변 인수의 함수를 만드는 방법에 대해서는 물론이고 가변 인수 함수가 동작하는 원리에 대해서도 자세하게 분석해 볼 것이다. 조금 어렵기는 하지만 포인터를 적절하게 활용하는 예를 볼 수 있으며 포인터로 어떤 일이 가능한지를 경험할 수 있는 좋은 기회가 될 것이다. 가변 인수 함수가 어떻게 동작하는지를 설명할 수 있다면 포인터를 정복했다고 생각해도 좋다.가변 인수란 말 뜻 그대로 인수의 개수와 타입이 미리 정해져 있지 않다는 뜻이며 그런 인수를 사용하는 함수를 가변 인수 함수라고 한다. 가변 인수 함수의 가장 좋은 예는 C언어의 가장 기초 함수인 printf이다. C언어를 배우는 사..
출처 : http://cafe.daum.net/ITdreamHACKER/4J9G/25 1.1.1 fork() 함수는 어떤 일을 하는가? #include #include pid_t fork(void); `fork()' 함수는 존제하는 프로세스가 새로운 프로세스를 생성하고자 할때 사용된다. 이때 새로 생성되는 프로세스를 자식 프로세스라고 부르고, 신규 프로세스를 생성하는 프로세스를 부모 프로세스라고 부른다. 또한 프로세스 생성이 성공적으로 이루어지면 부모 프로세스쪽으로는 자식 프로세스의 Process ID가 넘어오고, 자식 프로세스로는 0이 넘어온다. 이 간단한 코드가 이 기본원리를 설명한다 pid_t pid; switch (pid = fork()) { case -1: /* 여기서 pid는 -1이고, for..
세션(session) : 프로세스 그룹들의 모임, 프로세스 그룹을 일종의 작업이라 하고, 세션은 일종의 작업공간. setsid() : 새로운 세션을 하나 만드는 함수. 다만 현재 프로세스 그룹 리더인 프로세스가 호출할 수는 없다. 함수원형 #include #include pid_t setsid(void); 세션 생성과정 1) setsid()를 호출한 프로세스는 새로운 하나의 세션을 생성하고, 그 세션의 세션리더가 된다. 2) setsid()를 호출한 프로세스는 새로운 프로세스그룹을 생성하게 되고, 그 프로세스 그룹의 프로세스 그룹리더가 된다. 3) setsid()를 호출한 프로세스는 새로운 세션을 만들었으므로 이전 세션의 제어 터미널을 사용할 수 없다. 따라서 setsid()를 호출하여 새롭게 만든 세션..
참고문헌 : 1. 마이크로소프트웨어 (1997년 1월호) MFC의 메시지 처리, 매크로가 해결한다 2. Visual C++ 6 완벽가이드 (영진출판사, p157~170) 출처 : http://blog.naver.com/loosai/120023259835 메시지맵은 일종의 매크로인데, 파생클래스의 메시지 핸들러 함수를 여기에 등록하면 기반 클래스의 함수를 무시하고, 파생클래스의 함수를 호출해 줍니다. 즉 메시지맵에 등록된 함수에 대해서만 가상함수처럼 바인딩을 해주는 것입니다. 그리고 메시지맵은 BEGIN_MESSAGE_MAP 이라는 매크로로 시작해서, END_MESSAGE_MAP 이라는 매크로로 끝납니다. 참고로 알아보자면 이 매크로는 afxwin.h 파일에 다음처럼 정의되어 있습니다. 꽤 복잡하네요. #..