2013년 11월 27일 수요일

오라클 테이블스페이스, Oracle TableSpace, DataFile, ORACLE물리적구조

오라클 테이블스페이스, Oracle TableSpace, DataFile, ORACLE물리적구조




소개
- Oracle은 논리적으로는 TableSpace에 , 물리적으로는  DataFile에  Data를 저장한다.
- Oracle DataBase는 TableSpace라는 하나 이상의 논리적인 저장 단위로 구성되며,
또한 각TableSpace는 DataFile이라는 하나 이상의 OS File로 구성된다.
- Table이나 Index 같은 Schema Object가 생성되면 DB내의 지정된 TableSpace에 해당
  Segment가 생성된다. Create Table 명령에 TableSpace Option을 사용하여 특정
  TsableSpace에 Table을 저장한다.

1. DBA는 TableSpace를 이용하여 다음과 같은 작업을 수행한다.
- DataBAse의 Data를 저장하기 위한 Disk 영역 할당제어
- DataBAse 사용자에게 특정 영역 할당
- 각 TableSpace를 Online또는 OffLine으로 설정하여 Data의 가용성 제어
- 부분적인 DataBase BackUp또는 Recovery 수행
- 성능 향상을 위해 Data 저장영역을 여러 장치에 나누어 할당

2. SYSTEM TableSpace
- DB가 생성될때 자동으로 생성되며, 전체 DB에 대한 Dictionary를 포함하고, 항상 Online
으로 유지되어야 한다.
- 크기가 작은 DB는 SYSTEM TableSpace만을 필요로 할수도 있으나 일반적으로는
적어도 하나이상의 TableSpace를 추가로 생성하여 사용자 Data를 Dictionary와 별개로
저장해야 한다.이렇게 함으로서 Dictionary Data와 Schema 개체간의 경합을 줄일수 있다.
- Procedure/Function/Package/Package Body등의 내장 PL?SQL단위로 저장된 자료는
SYSTEM TableSpace안에 저장되어야 한다.

3. DataBase 확장 방법
- 기존 TableSpace에 하나의 DataFile을 추가하는 방법
  (alter tablespace users add datafile ‘/usr2/oradata/users02.dbf’ size 500m;)
 - 새로운 TableSpace를 생성(DataFile도 당연히 추가되어야 한다.)
  (create tablespace users2 datafile ‘/usr2/oradata/users02.dbf’ size 500m
    default storage (initial 300k next 300k);
    default storage (initial 100k next 100k pctincrease 0);)
 - 추가 영역이 필요할 때 마다 DataFile의 Size를 늘여주는 방법
  (alter database datafile ‘/usr2/oradata/users01.dbf’ autoextend on next 20m
maxsize 1000m;)

4.  TableSpace의 Offline
- DBA는 DB가 Open되었을때 SYSTEM TableSpace를 제외한 다른 TableSpace에 대하여 Online
또는 OffLine으로 설정할수 있다.
OffLine으로 설정하는 이유는 다음과 같다.
a. DB의 일부분의 사용을 제한할 때
b. Offline TableSpace BackUp을 수행할때(DB가 Archive Mode로 운용중일때는 OnLine 상황
에서도 TableSpace의 BAckUp이 가능함)
c. .응용프로그램을 갱신또는 유지보수 하는 동안 응용프로그램과 해당 Table Group을 임시로
사용 못하게 함
 - TableSapce의 Offline
a. 만약 TableSpace에 사용하는 RollBack  Segment가 있다면 Offline으로 설정이 불가
 함
b. TableSpace가 Offline 상태가 되거나 다시 Online상태가 될때 이러한 상태 변화는
SYSTEM TableSpace의 Dictionary에 기록되며,DB를 종료할때 TableSpace가 OffLine
이었다면 DB를 Mount하여  Open하여도 역시 해당 TableSpace는 Offline이다.
c. DB의 DBWR는 TableSpace의 DataFile에 기록할때 오류가 발생하면 해당 
TableSpace를 Offline 시킨다.
d. 만약 Index와 Data를 서로다른 TableSpace에 분리하였을 경우
인덱스를 포함하는 TableSpace가 Offline인 경우에는 Query에서 여전히 Data를 Access할수
있다.그러나 Data를 포함하는 TableSpace가 Offline인 경우에는 Data Access불가함

5. 읽기 전용 TableSpace
- 기본목적은 DB의 정적부분의 백업 및 복구를 수행하지 않기위해
- 새로운 TableSpace를 생성하면 항상 읽기/쓰기 가능모드로 생성되면, 읽기 전용으로 설정할
경우에는 read only Option을 이용한다. 물론 이후에 read write Option을 사용하여 다시
쓸수있게 만들수 있다.

- Offline된 DataFile은 Access할수 없으며 읽기전용 TableSpace의 DataFile을 Online으로
설정하면 file을 읽을수 있게 되며, 연관된 TableSpace가 read write Option으로 설정되어야만
기록할수 있다. 읽기전용 TableSpace의 DataFile은 alter database 명령어에 datafile Option을
사용하여 독립적으로 onlin이나 Offline될수 있다.

- TableSpace를 Offlin으로 설정한 경우에도 읽기전용 TableSpace에 DataFile을 추가할수
없습니다. 즉 읽기전용 TableSpace를 갱신하려면 먼저 TableSpace를 read write로 만들어야
합니다.그런후 다시 read only로 설정합니다.

[스프링3.X 인터셉터]Spring3 MVC Interceptor, 스프링인터셉터, HandlerInterceptor, postHandle,preHandle

[스프링3.X 인터셉터]Spring3 MVC Interceptor, 스프링인터셉터,  HandlerInterceptor, postHandle,preHandle



Spring3 MVC는 서블릿 필터와 유사하게 HTTP Request(요청)를 앞단/뒤단에서 가로챌 수 있는 메커니즘을 제공한다.(org.springframework.web.servlet.HandlerInterceptor )
 
인터셉터가 되기 위해서는 HandlerInterceptor를 구현해야 하는데 preHandle(), postHandle(), afterCompletion() 세개의 메소드를 구현해야 한다.
 
  preHandle() : 컨트롤러가 실행되기 전에 실행되며 bool형 리턴 한다. 실행체인에서 계속 실행할지 중단할지를 true, false로 전달한다. false가 리턴되면 디스패처 서블릿은 핸들러가 직접 요청을 처리하여, 뷰를 직접 다룬다고 생각하고 다른 인터셉터나 핸들러의 실행을 중단한다.
 
 postHandle() : 컨트롤러 실행 후
 
afterCompletion() : 모든 요청 처리 후에 실행
 
 xml 설정 파일에는 구현한 인터셉터를 정의해야 한다.
 
<mvc:interceptors>
    <bean class=“onj.edu.interceptor.HelloWorldInterceptor" />
</mvc:interceptors>
 
1. spring mvc 프로젝트를 만들자.
 
top-lovel package명의 마지막을 interceptor로 줘서 웹사이트 context명이 interceptor이다.

pom.xml
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
</dependency>
<dependency>      
   <groupId>org.springframework</groupId>      
   <artifactId>spring-webmvc</artifactId>      
   <version>3.2.3.RELEASE</version>  
</dependency>

2. HelloController.java
 
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HelloController {
   @RequestMapping(value = "/hello", method = RequestMethod.GET)
   public String sayHello() {
      System.out.println("여긴 컨트롤러...");
      //hello가 리턴되어 view가 /jsp/hello.jsp가 된다.
      return "hello";
   }
}
 
3. HelloInterceptor.java

package interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class HelloInterceptor implements HandlerInterceptor {
 public boolean preHandle(HttpServletRequest req,
                    HttpServletResponse res,
                    Object handler) {
  System.out.println("preHandle~~~");
  return true;
 }

 public void postHandle(HttpServletRequest req,
                           HttpServletResponse res,
                           Object handler,
                           ModelAndView mv) {
  System.out.println("postHAndle~~~");
 }

 public void afterCompletion(HttpServletRequest req,
                                HttpServletResponse res,
                                Object handler,
                                Exception ex) {
  System.out.println("afterCompletion~~~");
 }

}
 
4. webapps/jsp/hello.jsp
 
<html>
<head>
<title>OnJProgramming, OracleJava Community</title>
</head>
<body>
<h1>Hello!!</h1>
</body>
</html>
 
5. /WEB-INF/web.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>onj</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>onj</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-app>

6. /WEB-INF/onj-servlet.xml
 
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 <context:annotation-config />
 <context:component-scan base-package="controller" />

 <mvc:interceptors>
  <bean class="interceptor.HelloInterceptor" />
 </mvc:interceptors>

 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/jsp/" />
  <property name="suffix" value=".jsp" />
 </bean>
</beans>
 
7. 실행
 

10월 24, 2013 11:14:59 오후 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
10월 24, 2013 11:14:59 오후 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
10월 24, 2013 11:14:59 오후 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2062 ms
preHandle~~~
여긴 컨트롤러...
postHAndle~~~
afterCompletion~~~
 
 

[자바8교육,JAVA8,자바8]JDK1.8 특징,기능,달라지는점(Jigsaw,Lambda람다식)

 [자바8교육,JAVA8,자바8]JDK1.8 특징,기능,달라지는점(Jigsaw,Lambda람다식)
 
2013년 여름이후로 출시가 연기된 자바8(JAVA8)은 오라클의 첫번째 자바 버전이라고 할 수 있다.
자바8에는 모듈화(jigsaw Project), 람다식(Lambda)지원등의 내용이 포함된다고 한다.
 
 1. Jigsaw Project

    - Java 응용프로그램과 Java 플랫폼을 위한 모듈 시스템
    - 효율성 있는 Java 프로젝트 환경을 만들기 위해서
    - 동일한 라이브러리를 중복으로 사용하거나, 두 개의 라이브러리 에서 공통으로 사용하는 다른 라이브러리가 있는데 서로 다른 버전을 필요로 하는 등의 이유로 JAR Hell
        (Windows의 DLL Hell에서 파생됨)이 발생하게 되는데 이는 Jigsaw 프로젝트에서 제공하는 모듈 지정과 해당 모듈 별 버전 관리 기능 등으로 해결될 수 있다.
    - Java Platform 크기와 성능 최적화
   
 
 2. Lambda Project

    - 닷넷 처럼 람다식 지원
    - Java 언어에서 멀티 코어 용 응용프로그램을 작성할 때 보다 쉽고 간결하게 작성할 수 있는 람다(λ) 식 표현과 함께 벌크 패러럴 작업과 관련된 Java Collections API를 포함한다.
   
   
    [예1]
   
    [람다식 사용전]

    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
        ......
        ......
    }
   
    [사용후]

    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(
          event -> System.out.println("Hello World!")
        );
       
        ......
        ......
    }
   
   
   
   
    [예2]
   
    public class Calculator {
 
    interface IntegerMath {
        int operation(int a, int b);  
    }
 
    public int operateBinary(int a, int b, IntegerMath op) {
        return op.operation(a, b);
    }

    public static void main(String... args) {
   
        Calculator myApp = new Calculator();
        IntegerMath addition = (a, b) -> a + b;
        IntegerMath subtraction = (a, b) -> a - b;
        System.out.println("40 + 2 = " +
            myApp.operateBinary(40, 2, addition));
        System.out.println("20 - 10 = " +
            myApp.operateBinary(20, 10, subtraction));   
    }
   }

[JAVA Throwable, Error]자바예외클래스종류(Java Exception Class),사용자정의오류

[JAVA Throwable, Error]자바예외클래스종류(Java Exception Class),사용자정의오류,Throwable




 
[그림-자바에서의 예외 및 오류]
 
-Throwable

  -- Error

    심각한 오류, JVM 스스로가 시스템을 보호하기 위해 에러를 발생 시킴
    언제나 발생 가능 하므로 처리하지 않아도 되는 예외(Unchecked exception, try/catch로 잡아내지 못하므로 컴파일시 처리 안해도 된다, 즉 try - catch로 싸거나 throws 안해도 된다는 이야기임) 

    ArrayIndexOutOfBoundsException, AWTError, LinkageError, ThreadDeath, VirtualMachineError, StackOverflow…
 
[예]
 
//아래 ArrayIndexOutOfBoundsException 예외는 런타임 예외이므로 컴파일시에는 check안함(unchecked exception)
class Test
{
    public static void main(String[] args)
    {
        System.out.println(args[5]);
    }
}
 
C:> java Test
java.lang.ArrayIndexOutOfBoundsException: 5
        at UncaughtExceptTest.main(Test.java:5)
 

- Exception
 
-- RuntimeException
 
ArithmeticException ...
프로그램 오류, 컴파일시에는 검사하지 못한다.
자주 발생 가능 하므로 처리하지 않아도 되는 예외(Unchecked exception)
 
-- IOException ...

RunTimeException을 제외한 Exception을 상속하는 예외들을 의미하며 반드시 try/catch 구문을 이용하여 예외를 초리하는 형식을 취해 줘야 한다.
Checked Exception(컴파일시 처리해 줘야 한다.)

[사용자 정의오류]
 
 자신을 호출한 메소드로 예외를 전달하지 않고 자신의 메소드안에서 예외를 처리하는것은 바람직하지 않다. (오류가 난후라도 호출한 메소드로 돌아가서 정상적인 작업을 수행한다.)  




[그림-자바 사용자정의오류] 


[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/05]자바초보에서안드로이드까지
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터




[JAVA Throwable, Error]자바예외클래스종류(Java Exception Class),사용자정의오류,Throwable

[JAVA Throwable, Error]자바예외클래스종류(Java Exception Class),사용자정의오류,Throwable




 
[그림-자바에서의 예외 및 오류]
 
-Throwable

  -- Error

    심각한 오류, JVM 스스로가 시스템을 보호하기 위해 에러를 발생 시킴
    언제나 발생 가능 하므로 처리하지 않아도 되는 예외(Unchecked exception, try/catch로 잡아내지 못하므로 컴파일시 처리 안해도 된다, 즉 try - catch로 싸거나 throws 안해도 된다는 이야기임) 

    ArrayIndexOutOfBoundsException, AWTError, LinkageError, ThreadDeath, VirtualMachineError, StackOverflow…
 
[예]
 
//아래 ArrayIndexOutOfBoundsException 예외는 런타임 예외이므로 컴파일시에는 check안함(unchecked exception)
class Test
{
    public static void main(String[] args)
    {
        System.out.println(args[5]);
    }
}
 
C:> java Test
java.lang.ArrayIndexOutOfBoundsException: 5
        at UncaughtExceptTest.main(Test.java:5)
 

- Exception
 
-- RuntimeException
 
ArithmeticException ...
프로그램 오류, 컴파일시에는 검사하지 못한다.
자주 발생 가능 하므로 처리하지 않아도 되는 예외(Unchecked exception)
 
-- IOException ...

RunTimeException을 제외한 Exception을 상속하는 예외들을 의미하며 반드시 try/catch 구문을 이용하여 예외를 초리하는 형식을 취해 줘야 한다.
Checked Exception(컴파일시 처리해 줘야 한다.)

[사용자 정의오류]
 
 자신을 호출한 메소드로 예외를 전달하지 않고 자신의 메소드안에서 예외를 처리하는것은 바람직하지 않다. (오류가 난후라도 호출한 메소드로 돌아가서 정상적인 작업을 수행한다.)  




[그림-자바 사용자정의오류] 


[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/05]자바초보에서안드로이드까지
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터




[안드로이드설치강좌,android setup]안드로이드개발환경설치

[안드로이드설치강좌,android setup]안드로이드개발환경설치

일단은 자바가 먼저 설치되어있어야 합니다.
 
http://developer.android.com/sdk/index.html 여기 가시면 아래와 같은 화면이 나오는데
 

가운데 파란색 버튼 클릭
 
보시면 아시겠지만 이클립스+안드로이드 SDK 입니다. 
 
초창기에는 이클립스에다가 안드로이드 플러그인을 추가했어야 했는데 이제는 그냥 한방에 끝납니다.
 
 
 
약관 체크하시고
본인 PC의 운영체제 비트 수 확인(시작->컴퓨터->우클릭->속성->시스템종류확인, 만약 시스템 종류확인이 없으면 32비트입니다.) 하시고 다운로드 받으시면 됩니다.
간혹 SDK 경로 잘못 잡혀서 물어보는 경우가 있는데 그럴때는 제대로된 경로를 알려주면 됩니다.
 
 
 
 
 
맨 먼저 할일은 밑의 그림처럼 SDK매니저를 실행 시켜서 필요한 것을 다운 받는 것인데
처음에는 굳이 할 필요 없습니다. 개발에 필요한 최소한의 것들은 이미 갖고 있는 상태니까요
또 일부러 OS가 낮은 버젼을 타겟을로 잡지 않은 이상 낮은 버젼을 받을 필요도 없죠
전부다 체크하고 하루종일 기다리는 것이 능사가 아니란 거죠
 
 
 
 
 
 

다음은 시뮬레이터를 만들고 실행하는 방법입니다.
이제부터 자신의 PC는 안드로이드 앱을 만들어서 시뮬레이터에 넣어 주는 역할만 하고 앱의 동작은 시뮬레이터라는 가상 안드로드에서 동작하게 됩니다.
 
Devuce Definitions->적당한 모델 선택->Create AVD 로 하시는게 New Device로 만드는 것 보다 정신건강에 좋습니다. 
 

Create가 끝나고 Android Virtaul Devices 탭으로 돌아가면 자신이 만든 시뮬레이터가 있습니다.
선택하고 start 하시면 됩니다.
 
시뮬레이터는 부팅하는데 시간이 꽤 걸리니까 한번키면 작업 다 할때까지 끄지 마세요
 
 
 
이제 테스트만 해보면 됩니다.
이클립스에서 File->New->Android Application Project 하시고 적당히 프로젝트 이름 쓰신 다음에 Next연타 하시면 됩니다.
 
 
 
실행 하실 때는 Run as -> Android Application으로 실행하시면 됩니다.
시뮬레이터가 꺼져 있을 경우 시뮬레이터가 부팅되고 그다음 앱이 설치되는데 꽤 오래 걸리기 때문에 항상 시뮬레이터를 켜놓고 시작하시는 것이 좋습니다.
 
 
 
 
아래 그림처럼 나오면 개발환경 세팅 끝

[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/05]자바초보에서안드로이드까지
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터

[안드로이드설치강좌,android setup]안드로이드개발환경설치

[안드로이드설치강좌,android setup]안드로이드개발환경설치

일단은 자바가 먼저 설치되어있어야 합니다.
 
http://developer.android.com/sdk/index.html 여기 가시면 아래와 같은 화면이 나오는데
 

가운데 파란색 버튼 클릭
 
보시면 아시겠지만 이클립스+안드로이드 SDK 입니다. 
 
초창기에는 이클립스에다가 안드로이드 플러그인을 추가했어야 했는데 이제는 그냥 한방에 끝납니다.
 
 
 
약관 체크하시고
본인 PC의 운영체제 비트 수 확인(시작->컴퓨터->우클릭->속성->시스템종류확인, 만약 시스템 종류확인이 없으면 32비트입니다.) 하시고 다운로드 받으시면 됩니다.
간혹 SDK 경로 잘못 잡혀서 물어보는 경우가 있는데 그럴때는 제대로된 경로를 알려주면 됩니다.
 
 
 
 
 
맨 먼저 할일은 밑의 그림처럼 SDK매니저를 실행 시켜서 필요한 것을 다운 받는 것인데
처음에는 굳이 할 필요 없습니다. 개발에 필요한 최소한의 것들은 이미 갖고 있는 상태니까요
또 일부러 OS가 낮은 버젼을 타겟을로 잡지 않은 이상 낮은 버젼을 받을 필요도 없죠
전부다 체크하고 하루종일 기다리는 것이 능사가 아니란 거죠
 
 
 
 
 
 

다음은 시뮬레이터를 만들고 실행하는 방법입니다.
이제부터 자신의 PC는 안드로이드 앱을 만들어서 시뮬레이터에 넣어 주는 역할만 하고 앱의 동작은 시뮬레이터라는 가상 안드로드에서 동작하게 됩니다.
 
Devuce Definitions->적당한 모델 선택->Create AVD 로 하시는게 New Device로 만드는 것 보다 정신건강에 좋습니다. 
 

Create가 끝나고 Android Virtaul Devices 탭으로 돌아가면 자신이 만든 시뮬레이터가 있습니다.
선택하고 start 하시면 됩니다.
 
시뮬레이터는 부팅하는데 시간이 꽤 걸리니까 한번키면 작업 다 할때까지 끄지 마세요
 
 
 
이제 테스트만 해보면 됩니다.
이클립스에서 File->New->Android Application Project 하시고 적당히 프로젝트 이름 쓰신 다음에 Next연타 하시면 됩니다.
 
 
 
실행 하실 때는 Run as -> Android Application으로 실행하시면 됩니다.
시뮬레이터가 꺼져 있을 경우 시뮬레이터가 부팅되고 그다음 앱이 설치되는데 꽤 오래 걸리기 때문에 항상 시뮬레이터를 켜놓고 시작하시는 것이 좋습니다.
 
 
 
 
아래 그림처럼 나오면 개발환경 세팅 끝

[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/05]자바초보에서안드로이드까지
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터

2013년 11월 26일 화요일

Oracle Optimizer Mode Setting 방법 (Oracle CBO, RBD 오라클 옵티마이저 모드)


Oracle Optimizer Mode Setting 방법 (Oracle CBO, RBD 오라클 옵티마이저 모드)

 --------------------------
1.        Instance 수준의 셋팅 방법
--------------------------
-        DB의 설정 파일(initSID.ora or spfileSID.ora)에 전체적으로 적용이 되도록 정의하는 방법이며 다음과 같이 기술하며 OPTIMIZER MODE는 REUL, CHOOSE, ALL_ROOWS, FIRST_ROWS와 같은 종류가 있습니다. CHOOSE인 경우 한테이블이라도 Analyzed되어 있는 경우엔 비용기반 접근 방식을 이용하는 것이며 RULE인 경우 규칙기반 접근 방식을 사용, ALL_ROWS인 경우 비용기반 옵티마이저의 한 방법이며 모든 ROW들을 처리한다고 할 때 그 비용을 최소화 하는 방법으로 실행계획을 수립하며,  FIRST_ROWS인 경우엔 최초 ROW를 추출하는데 드는 비용을 최소화 하도록 실행 계획을 구성하는 것입니다.

-        예) OPTIMIZER_MODE=FIRST_ROWS

-        만약 initSID or spfileSID.ora에 아무 내용도 정의하지 않은 경우 기본적으로 CHOOSE 방식이 됩니다.

-------------------------
2.        Session 수준의 셋팅 방법
-------------------------

-        alter session이라는 명령을 이용하면 현재 접속된 세션 레벨에서 옵티마이저 모드를 정의할 수 있습니다.

-        예) alter session set optimizer_goal=rule 앞과 같이 정의하면 해당 세션이 끝나기 전까지는 규칙 기반(,RULE-BASED) 옵티마이저 모드를 이용하게 됩니다.

--------------------------
3.        Statement 수준의 셋팅 방법
--------------------------

-        힌트(Hint) 구문을 이용한다면 매 SQL 문장마다 서로 다른 옵티마이저 모드를 적용할 수 있습니다.

-        예) SELECT /*+ FIRST_ROWS */
                          ENAME,
                          SAL,
                          JOB
              FROM EMP
              WHERE SAL > (SELECT MAX(SAL)
                                    FROM  EMP
                                    WHERE DEPTNO = 10)


오라클 11g : 읽기전용 테이블 (Oracle11g readonly Table이란),ALTER TABLE table_name READ ONLY 이전 버전의 오라클에서는 테이블은 다른 사용자에게 SELECT 오브젝트 권한을 주는 경우에만 읽기전용이 가능했고 해당 Owner는 테이블에 Read/Write 둘 다 가능했으며 읽기전용으로 만드는 것은 불가능 했다. 오라클 11g에서부터 alter table 테이블명 read only 명령으로 읽기전용으로 변경이 가능하다, [형식] ALTER TABLE table_name READ ONLY; ALTER TABLE table_name READ WRITE; SQL>reate table readtest as select rownum id, '홍길동'||rownum name from dual; SQL>select * from readtest; SQL> alter table readtest read only; 테이블이 변경되었습니다. SQL> insert into readtest values (2, '김길동'); insert into readtest values (2, '김길동') * 1행에 오류: ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다 SQL> delete from readtest; delete from readtest * 1행에 오류: ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다 SQL> truncate table readtest; truncate table readtest * 1행에 오류: ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다 SQL> alter table readtest read write; 테이블이 변경되었습니다. SQL> truncate table readtest; 테이블이 잘렸습니다. [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecOracle&wr_id=219 [오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.] 오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr) [주간] [12/02]안드로이드개발자과정 [12/02]iPhone 하이브리드 앱 개발 실무과정 [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정 [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 [12/23][기업100%환급]SQL기초에서 Schema Object까지 [평일야간] [12/03]웹퍼블리싱 마스터 [12/03]iPhone하이브리드앱개발실무과정 [12/04]SQL초보에서실전전문가까지 [12/05]Spring3.X, MyBatis, Hibernate실무과정 [12/09]C#,ASP.NET마스터 [12/09]JAVA&WEB프레임워크실무과정 [12/12]자바초보에서안드로이드까지 [주말] [11/30]SQL초보에서전문가까지 [11/30]C#,ASP.NET마스터 [12/07]Spring3.X,MyBatis,Hibernate실무과정 [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 [12/14]자바초보에서안드로이드까지 [12/14]웹퍼블리싱 마스터

오라클 11g : 읽기전용 테이블 (Oracle11g readonly Table이란),ALTER TABLE table_name READ ONLY


이전 버전의 오라클에서는 테이블은 다른 사용자에게 SELECT 오브젝트 권한을 주는 경우에만 읽기전용이 가능했고 해당 Owner는 테이블에 Read/Write 둘 다 가능했으며 읽기전용으로 만드는 것은 불가능 했다.

오라클 11g에서부터 alter table 테이블명 read only 명령으로 읽기전용으로 변경이 가능하다,

[형식]
ALTER TABLE table_name READ ONLY;
ALTER TABLE table_name READ WRITE;


SQL>reate table readtest
as
select rownum id, '홍길동'||rownum name from dual;

SQL>select * from readtest;

SQL> alter table readtest read only;

테이블이 변경되었습니다.

SQL> insert into readtest values (2, '김길동');
insert into readtest values (2, '김길동')
            *
1행에 오류:
ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다


SQL> delete from readtest;
delete from readtest
            *
1행에 오류:
ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다


SQL> truncate table readtest;
truncate table readtest
               *
1행에 오류:
ORA-12081: "SCOTT"."READTEST" 테이블에 작업을 갱신하는 것이 허용되지 않습니다


SQL> alter table readtest read write;

테이블이 변경되었습니다.

SQL> truncate table readtest;

테이블이 잘렸습니다.

 

[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정
  [12/12]자바초보에서안드로이드까지

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터

Java Server page(JSP)/Servlet redirect, forward(서블릿리다이렉트, 포워드) , JAVA/JSP/SERVL:ET학원실무개발자교육


 Java Server page(JSP)/Servlet redirect, forward(서블릿리다이렉트, 포워드) , JAVA/JSP/SERVL:ET학원실무개발자교육


1. Redirect
 
Redirection인 경우 클라이언트에서 서버로 요청을 보내면 클라이언트 요청을 처리 후 리다이렉트 메소드가 호출되면 Client 브라우저에 응답을 보내며 이 응답에는 브라우저가 웹 컨테이너의 응답을 받은 후  location 에 새롭게 Redirection 될곳의 주소를 넣어서 보낸다.

여기에서 하나의 요청이 종결되고, 새로부여받은 URL로 Client 브라우저에서 새롭게 요청하기 때문에 이전 요청 스코프에 저장되어 있던 request 객체는 소멸된다.

클라이언트 브라우저 상단의 URL 창에도 새로운 요청이 만들어져 넘어가므로 리다이렉션되는 곳으로 URL 주소가 바뀐다.

요청객체를 지우고 다시 만드므로 시간이 소요됨.
 
2. Forward
 
요청이 포워딩 될때는 해당 요청이 서버의 다른자원(서블릿, JSP)에 전달된다.(Request 객체 재활용), 이때 이 요청을 처리하는것을 클라이언트(브라우저)에게 알리지 않고, 이런방식의 처리는 웹 컨테이너 내부에서만 일어나므로 클라이언트는 알수없게 된다.

서블릿컨테이너에서 이를 해석하여,  즉 컨테이너 안에서 해석을 한다는 의미. 그래서 forward한 곳으로 자원을 이용하여 응답을 만들어 보내게 된다.

클라이언트는 이 사실(포워드된 사실)을 전혀 알지 못하고 그래서 URL 창의 주소가 처음 요청했던 주소 그대로 있게 되는 것이다.

요청 객체를 재성성 하지 않으므로 Redirect보다 빠르다.

포워딩은 클라이언트와 통신없이 서버에서만 처리되기 때문에 리다이렉트보다 빠르다.

자바 템플릿 메소드 예제(Java Template Method), JAVA Template, JAVA교육/자바교육/자바jspjdbc교육

자바 템플릿 메소드 예제(Java Template Method), JAVA Template, JAVA교육/자바교육
 
/*
 * Template Method를 구현하고, Template Method에서
 * 사용되는 추상메소드를 선언
*/
public abstract class AbstractDisplay { 
    public abstract void open();       
    public abstract void print();       
    public abstract void close();       
    public final void display() {      
        open();                            
        for (int i = 0; i < 5; i++) {      
            print();                    
        }
        close();                           
    }
}



/*
 * 추상클래스인 AbstractDisplay 클래스의 
 * open, print, close 메소드를 구현
*/
public class GreetingDisplay extends AbstractDisplay { 
    private String s;                               
    public GreetingDisplay(String s) {                  
        this.s = s;                              
    }
    public void open() {                          
        System.out.println("hello " + s);                 
    }
    public void print() {                           
        System.out.println("your name is " + s);                     
    }
    public void close() {                         
        System.out.println("bye~ " + s);                
    }
}



/*
 * open, print, close 메소드 구현
*/
public class StringDisplay extends AbstractDisplay {   
    private String string;                              
    private int width;                                 
    public StringDisplay(String string) {              
        this.string = string;                          
        this.width = string.getBytes().length;         
    }
    public void open() {                                
        printLine();                                    
    }
    public void print() {                              
        System.out.println("|" + string + "|");    
    }
    public void close() {                               
        printLine();                                    
    }
    private void printLine() {                   
        System.out.print("+");                   
        for (int i = 0; i < width; i++) {       
            System.out.print("-");               
        }
        System.out.println("+");                
    }
}




public class Main {
    public static void main(String[] args) {
        AbstractDisplay d1 = new GreetingDisplay("이종철");                  
        AbstractDisplay d2 = new StringDisplay("Hello, world.");   
        AbstractDisplay d3 = new StringDisplay("안녕하세요~");    
        d1.display();                                               
        d2.display();                                               
        d3.display();                                               
    }
}

 
[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정
  [12/12]자바초보에서안드로이드까지

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터

 

자바 템플릿 메소드 예제(Java Template Method), JAVA Template, JAVA교육/자바교육/자바jspjdbc교육

자바 템플릿 메소드 예제(Java Template Method), JAVA Template, JAVA교육/자바교육
 
/*
 * Template Method를 구현하고, Template Method에서
 * 사용되는 추상메소드를 선언
*/
public abstract class AbstractDisplay { 
    public abstract void open();       
    public abstract void print();       
    public abstract void close();       
    public final void display() {      
        open();                            
        for (int i = 0; i < 5; i++) {      
            print();                    
        }
        close();                           
    }
}



/*
 * 추상클래스인 AbstractDisplay 클래스의 
 * open, print, close 메소드를 구현
*/
public class GreetingDisplay extends AbstractDisplay { 
    private String s;                               
    public GreetingDisplay(String s) {                  
        this.s = s;                              
    }
    public void open() {                          
        System.out.println("hello " + s);                 
    }
    public void print() {                           
        System.out.println("your name is " + s);                     
    }
    public void close() {                         
        System.out.println("bye~ " + s);                
    }
}



/*
 * open, print, close 메소드 구현
*/
public class StringDisplay extends AbstractDisplay {   
    private String string;                              
    private int width;                                 
    public StringDisplay(String string) {              
        this.string = string;                          
        this.width = string.getBytes().length;         
    }
    public void open() {                                
        printLine();                                    
    }
    public void print() {                              
        System.out.println("|" + string + "|");    
    }
    public void close() {                               
        printLine();                                    
    }
    private void printLine() {                   
        System.out.print("+");                   
        for (int i = 0; i < width; i++) {       
            System.out.print("-");               
        }
        System.out.println("+");                
    }
}




public class Main {
    public static void main(String[] args) {
        AbstractDisplay d1 = new GreetingDisplay("이종철");                  
        AbstractDisplay d2 = new StringDisplay("Hello, world.");   
        AbstractDisplay d3 = new StringDisplay("안녕하세요~");    
        d1.display();                                               
        d2.display();                                               
        d3.display();                                               
    }
}

 
[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]

오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(
www.onjprogramming.co.kr)

[주간]
  [12/02]안드로이드개발자과정
  [12/02]iPhone 하이브리드 앱 개발 실무과정
  [12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
  [12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
  [12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
  [12/23][기업100%환급]SQL기초에서 Schema Object까지

[평일야간]
  [12/03]웹퍼블리싱 마스터
  [12/03]iPhone하이브리드앱개발실무과정
  [12/04]SQL초보에서실전전문가까지
  [12/05]Spring3.X, MyBatis, Hibernate실무과정
  [12/09]C#,ASP.NET마스터
  [12/09]JAVA&WEB프레임워크실무과정
  [12/12]자바초보에서안드로이드까지

[주말]
  [11/30]SQL초보에서전문가까지
  [11/30]C#,ASP.NET마스터
  [12/07]Spring3.X,MyBatis,Hibernate실무과정
  [12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
  [12/14]자바초보에서안드로이드까지
  [12/14]웹퍼블리싱 마스터