2013년 9월 29일 일요일

[자바8, JDK1.8,특징새기능>JAVA8 람다식(Lambda) 닷넷에서 제공하는 람다식(닷넷에서는 이름없는 함수를 정의할 때 람다식을 쓰죠)을 JDK1.8에서는 지원한다고 하네요 예제를보시죠.

[자바8, JDK1.8,특징새기능>JAVA8 람다식(Lambda)
닷넷에서 제공하는 람다식(닷넷에서는 이름없는 함수를 정의할 때 람다식을 쓰죠)을 JDK1.8에서는 지원한다고 하네요
예제를보시죠.
 
보통 AWT, SWING에서 이벤트 처리할 때 익명 클래스를 많이 이용하죠.
btn.setOnAction(new EventHandler<ActionEvent>() { 
    @Override 
    public void handle(ActionEvent event) { 
        System.out.println("Hello OnJOracleJava!"); 
    } 
});

==> 람다식을 적용하면
btn.setOnAction( 
    event -> System.out.println("Hello OnJOracleJava!") 
);


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


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  


[자바JSP서블릿>JSP주석문 HTML 주석문 : JSP 컨테이너에 의해 해석되지 않고 그대로 웹서버로 전송되어

[자바JSP서블릿>JSP주석문
 HTML 주석문 : JSP 컨테이너에 의해 해석되지 않고 그대로 웹서버로 전송되어 Client에 전송  
 <!-- ~~~ 
 JSP 주석문 : JSP 컨테이너에서 JSP주석으로 인식, JSP 컨테이너에서 웹서버로 전달 시 버려지므로 Client에 전송되지 않는다.  
 <%-- ~~~ --%>
 scriptlet안의 주석문 : JSP 컨테이너에 의해 사라지며, Client에 전송되지 않는다.
     <% //~~~~ %>
    <% %>
 
<%@ page contentType="text/html; charset=euc-kr" %>
<html><head><title>주석예제</title></head>
<body>
<!-- 이건 html 주석입니다. Client의 브라우저로 전송되지만 브라우저에서
     보이지 않고 소스보기를 하면 보일겁니다... -->
<%!
   //Class변수 i를 선언, 이건 script lanaguage 주석입니다.
   int i=0;
%>
<%-- 이건 JSP의 주석문 입니다. Client브라우저에서 전송되는지 소스보기 해보세요--%>
<h2>주석문 예제 JSP 파일입니다.(comment.jsp)</h2>
</body>
</html>

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


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  




[자바JSP서블릿>JSP 스크립틀릿(scriptlet), <% ... %> 요청처리시점에 처리될 하나의 자바코드 블록

[자바JSP서블릿>JSP 스크립틀릿(scriptlet), <% ... %>   요청처리시점에 처리될 하나의 자바코드 블록

 
요청처리시점에 처리될 하나의 자바코드 블록,<% 와 %>로 둘러 쌓인다.

여러 개의 스크립틀릿은 JSP Page안에 나타나는 순서대로 그대로 컴파일된 클래스 안에 삽입된다.

서블릿으로 보면 service() 메소드 안에서 수행되는 코드의 블록들이라고 할 수 있다.

JSP Page가 요청 될 때 마다 수행된다.

[예제]
<%-- scriptlet.jsp --%>
<%@ page contentType="text/html; charset=euc-kr" %>
<html>
<body>
<h1> 스크립틀릿 예제</h1>
<%
   int sum=0;
   for (int i=0;i<5;i++) {
     sum += i;
     out.println("<b>Loop Test...." + i + "</b><br>" );   
   }
   out.println("<b>sum = " + sum);   
%>
</body>
</html>
 
서블릿으로 컴파일된 이후의 파일
// Generated by JRun, do not edit
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import allaire.jrun.jsp.JRunJSPStaticHelpers;
public class jrun__jsp__scriptlet2ejsp12 extends allaire.jrun.jsp.HttpJSPServlet implements allaire.jrun.jsp.JRunJspPage

    private ServletConfig config;
    private ServletContext application;  
    private Object page = this;
    private JspFactory __jspFactory = JspFactory.getDefaultFactory();
    public void _jspService(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, java.io.IOException
    {
        if(config == null) {
            config = getServletConfig();
            application = config.getServletContext();
        }
         response.setContentType("text/html; charset=euc-kr");
         PageContext pageContext = __jspFactory.getPageContext(this, request, response,  null, true, 8192, true);
        JspWriter out = pageContext.getOut();
        HttpSession session = pageContext.getSession();
 int sum = 0;
        try {
    out.print("\r\n<html>\r\n<body>\r\n<h1> \uc774\uac74 \uc2a4\ud06c\ub9bd\ud2c0\ub9bf \uc608\uc81c\uc785\ub2c8\ub2e4. </h1>\r\n");
      for (int i=0;i<5;i++) {
         sum += i;
         out.println("<b>Loop Test...." + i + "</b><br>" );   
       }
       out.println("<b>sum = " + sum);
      out.print("\r\n</body>\r\n</html>\r\n");
       } catch(Throwable t) {
            if(t instanceof ServletException)
                throw (ServletException) t;
            if(t instanceof java.io.IOException)
                throw (java.io.IOException) t;
            if(t instanceof RuntimeException)
                throw (RuntimeException) t;
            throw JRunJSPStaticHelpers.handleException(t, pageContext);   
        }
finally {
            __jspFactory.releasePageContext(pageContext);
        }
   }
     private static final String[] __dependencies__ = {"/jsp/scriptlet.jsp",null};
    private static final long[] __times__ = {984926063107L,0L};
    public String[] __getDependencies()
    {
        return __dependencies__;
    }
    public long[] __getLastModifiedTimes()
    {
        return __times__;
    }
    public int __getTranslationVersion()
    {
        return 13;
    }
}

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


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  


[오라클힌트]Append, Oracle11g Hint, Append HWM(오라클힌트강좌,힌트강의)

[오라클힌트]Append, Oracle11g Hint, Append HWM(오라클힌트강좌,힌트강의)

Oracle의 Append Hint는 옵티마이저에게 direct-path insert를 실행하라는 의미이다. 당연히 데이터베이스 버퍼를 통하지 않고 직접 데이터파일에 insert하니 성능이 좋을 듯

데이터 역시 해당 테이블안의 free space에 저장는 것이 아니라 테이블의 뒤쪽에 append 된다.

입력되는 데이터는 database  buffer cache를 스킵하여 직접 데이터파일에 저장되며 테이블에 정의 된 참조 무결성은 무시된다.

- HWM(hign Water Mark)와 Append Hint

테이블의 뒤쪽에 direct-path insert로 Append를 하게 되면 테이블안에 어느 정도의 빈공간이 있더라도 HWM은 증가한다,
일반적인 삭제등이 일어나는 대용량의 데이블에 대해 direct-path insert로 Append를 하게 되면 큰 테이블안의 공간이 조각나게 되는데 다음과 같이( shrink operation) 해 줌으로서 이를 해결할 수 있다.

1. Export the data, truncate the table and import the data.
2. Use a "CREATE TABLE ... AS SELECT"


[형식]

INSERT /*+ APPEND */ INTO ... ... 



오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)