오라클 토드 오류 해결법

Back-End/Problems 2019. 5. 8. 10:31

로그인시에 발생하는 오류


인터넷에서 찾아봤지만 해결이 안되서 재부팅하니 해결됨

:

홈페이지 디자인 다운받을만한 곳

개인 공부 2019. 5. 7. 21:19

 

 

출처 (무료도 있고 유료도 있음, 홈페이지에서 즉석으로 디자인 수정도 가능)

https://www.shutterstock.com/home

 

 

'개인 공부' 카테고리의 다른 글

백엔드, 프론트엔드 로드맵  (0) 2019.05.14
웹 프로그래머 포트폴리오 작성 팁  (0) 2019.05.13
공부해야될것들  (0) 2019.05.13
리눅스 공부  (0) 2019.05.02
찾아봐야 될것들( IoC 컨테이너,POJO)  (0) 2019.04.05
:

Git-Hub에서 원격 저장소 삭제하기 (Repository)

기타 프로그램/Git-Hub 2019. 5. 7. 18:20

출처

https://zzznara2.tistory.com/395

:

js(자바스크립트 파일) 만드는법

Front-End/javascript 2019. 5. 7. 17:10

자바스크립트 선언하기

HTML 태그 사이에 자바스크립트를 삽입하는 방법은 2가지가 있다.

1)  태그 사이에 직접 선언하여 자바스크립트 삽입

  * JAVA 선언은 헤드태그 또는 바디태크 영역 사이에서 한다

  * 자바 선언 태크 : <script type ="text/javascript"> </script>

  * '<sc' 입력 후 ctrl + space 누르면 자동완성 됨

2) js 파일을 작성하여 html에 삽입하기

  * [web content 폴더] - [new] - [other] - [javascript source file] - 파일명 적고 finish.

  * js파일에서는 자바스크립트 선언 없이 바로 자바코드를 작성한다.

  * 파일을 저장하면 파일명.js 파일이 생성된다.

  * HTML에 js파일 삽입 하기

    : HTML 헤드태그 사이에 자바선언 후 선언문 사이에 삽입

     <script type ="text/javascript" src="파일명.js"> </script>

 

 

 

아래 책은 제가 공부할때 활용했던 책으로 추천드리는 책이니 한번씩 읽어보시는것을 추천드립니다!! ㅎㅎ

토비의 스프링 3.1 세트:스프링의 이해와 원리 + 스프링의 기술과, 에이콘출판

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

'Front-End > javascript' 카테고리의 다른 글

JavaScript 숫자와 문자 -2  (0) 2019.05.22
JavaScript 숫자와 문자 -1  (0) 2019.05.22
sublimetext 설치  (0) 2019.05.22
JavaScript 실행 및 실습  (0) 2019.05.21
JavaScript 학습일정  (0) 2019.05.16
:

Git-Hub 주소

기타 프로그램/Git-Hub 2019. 5. 7. 09:50

내 Git-Hub 주소

https://github.com/dlgkstjq12?tab=repositories

:

Git-Hub 이클립스 연동방법

기타 프로그램/Git-Hub 2019. 5. 7. 09:48

출처

https://blog.naver.com/choseongho93/221434587826

:

19.05.06 파일 업로드

Back-End/JSP 2019. 5. 6. 22:06

-파일 업로드의 기본적인 폼-

 

HTML에서 form 태그의 속성들 중 input 태그들이 있는데 이들 중 <input type = "file"> 태그는 파일을 선택 할 수 있는 창을 호출합니다.

호출된 창에서 파일을 전송하기 위해서 반드시 form 태그의 속성들 중 method와 enctype을 다음과 같이 지정해야 합니다.

 

 <form name = "frmName" method = "post" enctype = "multipart/form-data">

 

 <input type = "file" name = "selectFile">

 

 

  enctype : 자료 전송 방법, 이 속성은 세가지의 값으로 지정될 수 있다.

 

  1. application / www-form-urlencoded

 

  디폴트 값이다. enctype를 따로 설정하지 않으면 이 값이 설정된다.

  폼데이터는 서버로 전송되기 전에 URL-Encode 된다.

 

  2. multipart / form-data

 

  파일이나 이미지를 서버로 전송할 경우 사용하는 방식

  이 방식을 사용하지 않으면 웹 서버로 데이터를 넘길때 파일의 경로명만 전송되고

  파일 내용이 전송되지 않기 때문, 그리고 이때 메소드는 post 값으로 지정해줘야 한다.

 

  3.text / plain

 

  이 형식은 인코딩을 하지 않은 문자 상태로 전송한다.

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
    <form name="frmName" method="post" enctype="multipart/form-data"
        action="viewPage.jsp">
        <!-- 파일을 전송해서 업로드하기 위해 필요한 form 태그와 input 태그를 지정 -->
        user<br /> <input name="user"><br /> title<br /> <input
            name="title"><br /> file<br /> <input type="file"
            name="uploadFile"><br />
        <!-- 파일을 업로드하기 위해 input type을 file로 지정 -->
        <input type="submit" value="UPLOAD"><br />
    </form>
</body>
</html>
cs

 

 

 

Method Summary

java.lang.String

 

getContentType(java.lang.String name) - 업로드 된 파일의 컨텐츠 타입을 반환하고 업로드 된 파일이 없으면 null을 반환합니다. 

 

java.io.File 

 

getFile(java.lang.String name) - 서버 상에 업로드된 파일의 객체를 반환하고 업로드 된 파일이 없으면 null을 반환합니다.

 

java.util.Enumeration

 

getFileName() - 폼 요소 중 input 태그 속성이 file로 된 파라미터의 이름들을 반환하고 업로드된 파일이 없으면

비어있는 Enumeration 객체를 반환합니다.

 

java.lang.String

 

getFilesystemName(java.lang.String name) - 사용자가 지정해서 서버에 실제로 업로드된 파일명을 반환 합니다. 

 

java.lang.String

 

getOriginalFileName(java.lang.String name) - 사용자가 지정해서 서버에 업로드된 파일명을 반환하고

이때의 파일명은 파일 중복을 고려한 파일명 변경 전의 이름을 반환합니다.

 

java.lang.String

 

getParameter(java.lang.String name) - 스트링으로 주어진 이름에 대한 값을 반환하고 값 없이 파라미터가 전송되었거나

해당되는 이름의 파라미터가 전송이 안 되었을 경우 null 값을 반환합니다. 

 

java.util.Enumeration

 

getParameterNames() - 모든 파라미터의 이름을 Enumeration 객체로 반환합니다.

 

java.lang.String

 

getParameterValues(java.lang.String name) - 주어진 이름에 대한 값을 스트링 배열로 반환하고

파라미터가 전송되지 않았을 때는 null 값을 반환합니다. 

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
    <form name="frmName" method="post" enctype="multipart/form-data"
        action="viewPage.jsp">
        <!-- 파일을 전송해서 업로드하기 위해 필요한 form 태그와 input 태그를 지정 -->
        user<br /> <input name="user"><br /> title<br /> <input
            name="title"><br /> file<br /> <input type="file"
            name="uploadFile"><br />
        <!-- 파일을 업로드하기 위해 input type을 file로 지정 -->
        <input type="submit" value="UPLOAD"><br />
    </form>
</body>
</html>
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<!-- 파일 업로드를 위한 클래스 import -->
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<!-- 파일 업로드 시 덮어쓰기 방지를 위해 임포트한 클래스 -->
<%@ page import="java.util.*, java.io.*"%>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
    <%
        String saveFolder = "C:/Tom"//로드 파일의 실제경로
        String encType = "EUC-KR"//인코딩 타입
        int maxSize = 5 * 1024 * 1024//파일의 최대 크기 지정
 
        try {
            MultipartRequest multi = null//NULL을 초기값으로 선언
            multi = new MultipartRequest(request, saveFolder, maxSize, encType, new DefaultFileRenamePolicy());//객체 생성
            Enumeration params = multi.getParameterNames(); //Enumeration은 여러 요소들이 배열형태로 구성되어 있는 클래스(파라미터의 이름들을 반환받는 변수)
 
            while (params.hasMoreElements()) //params.hasMoreElements()메소드를 사용해 포함된 요소들이 있는지 검사하고 요소들이 포함되어 있는 동안만 반복
            {
                String name = (String) params.nextElement();
                String value = multi.getParameter(name);
                out.println(name + "=" + value + "<br/>"); //name, value 변수에 담긴값을 브라우저 출력
            }
 
            Enumeration files = multi.getFileNames();
 
            while (files.hasMoreElements()) //java.util.Enumeration 인터페이스에 있는 메소드. 요소가 있는지 없는지 체크함
            {
                String name = (String) files.nextElement(); //Enumeration에 요소가 있을 때 요소를 추출하는 메소드. 오브젝트 타입으로 반환하기 때문에 
                                                            //String 타입으로 변환후 변수에 저장한다.
 
                String filename = multi.getFilesystemName(name);
                String original = multi.getFilesystemName(name);
                String type = multi.getContentType(name);
                File f = multi.getFile(name); //File메소드의 반환값은 File타입이다. 얻어진 File 객체를 통해서 업로드된 파일의 정보를 알수있다.
 
                out.println("파라미터 이름 : " + name + "</br>"); //반복수행이 되면서 변수에 담긴 값들을 하나씩 출력
                out.println("실제 파일 이름 : " + original + "</br>");
                out.println("저장된 파일 이름 : " + filename + "</br>");
                out.println("파일 타입 : " + type + "</br>");
 
                if (f != null) {
                    out.println("크기 : " + f.length() + "바이트");
                    out.println("<br>");
                }
 
            }
 
        } catch (IOException ioe) //업로드 할 파일이 지정한 최대 크기보다 크거나 페이지를 읽을 때 문제가 발생할 경우 처리하는 예외처리
        {
            System.out.println(ioe);
        } catch (Exception ex) //그 외에 발생하는 예외처리
        {
            System.out.println(ex);
        }
    %>
cs

 

 

:

19.05.05 데이터베이스 성능

Back-End/Data Base 2019. 5. 5. 20:39

-성능이란?-

 

성능은 기본적으로 '빠르기' 를 중심으로 한 개념입니다.

성능은 2가지 지표 (매트릭스)에 의해 측정됩니다.

한 가지는 '처리 시간' 또는 '응답 시간' 이라고 불리는 지표이고, 다른 한가지는 '처리율' 입니다.

 

 

 

-처리시간-

 

이들은 어떤 특정 처리의 시작부터 종료까지 걸린 시간을 나타냅니다.

 

 

 

-처리율-

 

시스템에서는 '특정 처리(트랜잭션)를 단위 시간에 몇 건 처리가 가능한가' 에 대한

측정 단위를 나타냅니다.

시스템의 자원용량을 결정하는 요인

 

 

 

-버틀넥 포인트(병목)-

 

동시 실행 처리수가 증가 할수록 준비해야 할 자원도 증가하며 한 가지 자원이라도 한계에 이른 시점에서 성능이 나빠지기 시작합니다.

즉, 응답 시간이 상승하기 시작하고, 반대로 처리율이 떨어지기 시작합니다. 이때 최초로 한계에 이른 자원을 '버틀넥포인트' 또는 '병목' 이라고 합니다.

 

 

 

-데이터베이스가 병목되는 이유-

 

 

  1. 취급하는 데이터양이 가장 많다.

 

  2. 자원 증가를 통한 해결이 어렵다

 

 

 

 

-테이블에 대한 액세스 방법-

 

 

  풀 스캔 (ALL) : 테이블에 포함된 레코드를 처음부터 끝까지 전부 잃어 들이는 방법으로, '테이블 풀 스캔'이라고 합니다.

 

  레인지 스캔(rangd) : 테이블의 일부 레코드에만 액세스하는 방법

 

 

 

 

-데이터베이스가 결과를 통지하는 과정-

 

 

  1. 구문 오류가 없는지를 보는 파스

 

  2. 실행계획 (어떤 경로로 접근할까? 하는 계획) 과 옵티마이저 (실행계획을 결정하는 내부 프로그램),

     통계정보 (옵티마이저가 실행계획을 세울 때 참조하는 정보)

 

 

 

 

-인덱스의 구조-

 

인덱스는 데이터베이스의 성능 향상 수단으로 가장 일반적인 방법입니다.

응답 시간이 늦은 SQL이 발견되면 우선 인덱스로 해결할 수 없는지를 검사하는 것이 튜닝의 제1선택입니다.

인덱스의 인기가 높은 이유는 다음 3가지 입니다.

 

 

  1. SQL 문을 변경하지 않아도 성능을 개선할 수 있다.

 

  2. 테이블의 데이터에 영향을 주지 않는다.

 

  3. 일정한 (때로는 극적인) 효과를 기대할 수 있다.

 

 

쉽게 말하는 인덱스는 비용 대비 성능이 높은 방법입니다.

인덱스가 나무 형태를 하고 있는 것을 일반적으로 'B-tree' 라고 합니다.

B-tree는 관계형 데이터베이스에서 튜닝의 기본이 되는 인덱스 입니다.

 

 

 

-B-tree의 구조-

 

그림에서 원으로 표시된 한개의 데이터를 '노드' 라고 합니다.

가장 위의 노드를 '루트 노드' 라고 하는데, '뿌리' 라는 의미입니다.

가장 아래 노드를 '리프 노드' 라고 하고, '잎' 이라는 의미입니다.

중간 노드는 가지라는 뜻에서 '브랜치 노드' 로 부릅니다.

 

 

 

 

 

-B-tree의 장점-

 

장점 한 가지는 어떤 값에 대해서도 같은 시간에 결과를 얻을 수 있다. (균일성)

데이터양에 증가할수록 우수한 개선 효과를 발휘한다.

 

 

 

-인덱스 작성이 역효과가 날때-

 

 

  * 인덱스 갱신의 오버헤드로 갱신 처리의 성능이 떨어진다.

 

  인덱스는 테이블에 새로운 데이터가 추가되거나 기존의 데이터에  대해 갱신, 제거가 실행되면

  자동으로 인덱스 자신도 갱신하는 기능을 갖추고 있습니다. 테이블을 책이라고 했을 때

  본문이 변경되면 거기에 대응해서 색인도 자동으로 갱신되는 것입니다.

  이것 자체는 매우 우수한 기능이지만, 그 대가로 인덱스가 존재하지 않는 때와 비교하면

  갱신할 때마다 인덱스 갱신도 부수적으로 발생합니다.

  이것도 오버헤드의 일종입니다.

 

 

  * 의도한 것과 다른 인덱스가 사용된다.

 

  이것은 한 개의 테이블에 복수의 인덱스를 작성한 경우에 발생하는 문제입니다.

  업무의 중심이 되는 테이블은 다양한 SQL 문에서 이용되며, 거기에 대응해 작성된

  인덱스 수도 많아지게 됩니다.

  앞에서 예로 든 모든 열에 인덱스를 만든다는 것은 너무 극단적이라고 하더라도,

  10~20개 정도의 인덱스가 1개의 테이블에 만들어져 있는 것도 드물지는 않습니다.

  더 빠른 인덱스가 있을 텐데 의도한 것과는 다른 인덱스가 사용되어 오히려

  느려진 예입니다.

 

 

  * 트레이드오프

 

  인덱스를 만들면 그만큼 저장소 용량을 소비한다.

 

 

 

 

-인덱스를 만들 때 기준-

 

 

  * 크기가 큰 테이블만 만든다.

 

  크기가 작은 테이블에는 애초에 인덱스도 풀 스캔도 큰 차이가 없기 때문.

 

 

  * 기본키 제약이나 유일성 제약이 부여된 열에는 불필요하다.

 

  기본키 제약이 부여된 열에는 자동으로 인덱스가 작성되어 있기 때문

 

  * Cardinality 가 높은 열에 만든다.

 

  'Cardinality' 란 값의 분산도를 나타내는 단어로, 특정 열에 대해 많은 종류의 값을 가지고 있다면 높고, 값의 종류가 적으면

  낮다는 의미입니다.

  'Cardinality' 가 낮은 열에 인덱스 효과를 기대할 수 없는 것은 인덱스 트리를 따라가는 조작이 증가할수록

  오버헤드가 증가해 인덱스를 작성한 혜택을 받지 못하기 때문입니다.

 

 

 

'Back-End > Data Base' 카테고리의 다른 글

무결성이란?  (0) 2019.06.27
오라클 SQL Develope 다운로드 및 설치  (0) 2019.05.28
19.05.04 백업과 복구  (0) 2019.05.04
19.05.03 테이블의 개념과 정규형  (0) 2019.05.03
19.05.03 트랜잭션과 동시성 제어  (0) 2019.05.03
: