SyntaxHighlighter.all(); 게을러지고 싶어 부지런한 개발자 :: 게을러지고 싶어 부지런한 개발자

pom.xml에 servlet 부분 버전이 3이상인 경우, web.xml에서도 버전을 기존2.5에서 3.0으로 변경해주어야 함

 

또한, 프로젝트 우클릭>properties>project facets>Dynamic Web Module 역시 3.0으로 동일하게 맞춰주어야 함.

 

 

 

 

 

그림과 함께 다시 말하자면,,

- pom.xml의 버전을 3.1.0으로 올린 경우 (artifcatId도 servlet-api에서 javax.servlet-api로 변경)

 

 

- web.xml의 version도 3.0으로 변경

- 프로젝트 우클릭>properties>Project Facets> Dynamic Web Module도 3.0으로 

 

 

 

-추가로org.eclipse.wst.common.project.facte.core.xml에서도 3.0으로 되어있는지 체크

(ctrl + shift + R 누르고 파일명 입력하면 바로 찾을 수 있음) 

Maven Resource Filtering 사용 시에 "An error occured while filtering resources " 오류가 발생하는 경우는

실행은 잘되나 오류라고 나오는 건데요.

 

이때 프로젝트 우클릭 > Maven > Update Project를 눌러 업데이트 수행하면 에러가 사라집니다. 

 

이클립스 자체 버그인 것 같음. 

이클립스에서 스프링 MVC 프로젝트를 하나 만든 뒤 처음 기본적으로 해주어야 하는 환경설정이 있다. 

 

1) Tomcat 연결 

-현재 Tomcat9까지 나온 것으로 알고 있지만, 아직 현업에서는 7에서 8.5까지를 많이 쓰는 것 같다. 

https://tomcat.apache.org/ 에 가서 tomcat 8.5를 다운 (64비트 또는 32비트_자신의 컴퓨터에 해당하는 것으로 다운)

 

 

2) 스프링 MVC 환경설정  

기본적으로 Spring MVC 프로젝트를 만들면 Spring Framework의 버전은 3.1.1이다.

이것을 4이상으로 변경합니다

 

기본 환경

  - Spring Framework 3.1.1
  - java version 1.6

  - servlet-api 2.5
  - jsp-api 2.1

  - Maven compiler
    source 1.6
    target 1.6

 

변경 될 환경

 - Spring Framework 4.3.4
 - java version 1.8

 - servlet-api 3.0
 - jsp-api 2.2
 

 - Maven compiler (source 1.8  &  target 1.8)
 

1)pom.xml에서 스프링버전 & 자바버전 변경

 

-프로젝트 안에 pom.xml 연 뒤 아래처럼 스프링 버전과 자바 버전을 업그레이드 시켜줄 것 

 

 

2) pom.xm에서 servlet-api버전 & jsp-api 버전 변경

-artifact도 servlet-api 에서 javax.servlet-api로 변경 

 

 

2-1) Servlet 스펙이 변경 되면 web.xml의 xsd 버전도 그에 맞춰 변경해야 함 

(버전 2.0에서 3.0으로 변경)

 

 

3) pom.xml에서 maven compiler 설정의 source와 target을 1.8로 변경

 

 

4) 프로젝트 설정도 변경  (프로젝트 우클릭 > Properties 클릭)

 

4-1) 

 

4-2) Java Build Path > Libraries > JRE System Library를 JavaSE-1.8로 변경 

 

4-3) Java Compiler  클릭

-위에서 Java Build Path가 제대로 되었다면 JavaSE-1.8로 설정되어있을 것 

 

4-4) Project Facets > Dynamic Web Module은 3.0으로, Java는 1.8로 설정

 

 

5) 최종적으로 프로젝트 우클릭 > Maven > Update Project로 설정 내용을 적용 

방법 1) 

cmd창 켜서 이클립스가 깔린 경로로 간 뒤 

eclipse -clearPersistedState 입력 후 이클립스 재실행

 

 

방법 2) 

이클립스를 실행할 때 로고만 뜨고 workspace 화면이 실행되지 않고 이클립스가 종료 된다면,

최종 화면 상태를 저장하지 못했을 때 발생하는 문제이다.

이때 해결 방법은 workspace의 설정 파일을 삭제해줘야 한다.

..\workspace\.metadata\.plugins\org.eclipse.e4.workbench

위 파일을 삭제한 후 이클립스를 재실행하면 정상적으로 실행된다.

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
package programmers;
 
 
public class 완주하지못한선수1 {
 
    public static void main(String[] args) {
        // ex1
//        String[] participants = {"leo", "kiki", "eden"};
//        String[] completion = {"eden", "kiki"};
        
        // ex2
//        String[] participants = {"marina", "josipa", "nikola", "vinko", "filipa"};
//        String[] completion = {"josipa", "filipa", "marina", "nikola"};
//        
        // ex3
        String[] participants = {"mislav""stanko""mislav""ana"};
        String[] completion = {"stanko""ana""mislav"};
        
        System.out.println(solve(participants, completion));
        
    }
 
    public static String solve(String[] participants, String[] completion) {
        Arrays.sort(participants);  // ana , mislav, mislav, stanko
        Arrays.sort(completion);    // ana, mislav, stanko
        int i = 0;
        for (i = 0; i < completion.length; i++) {
            if(!participants[i].equals(completion[i])) {  // 다르면 반환
                return participants[i];
            }
        }
        return participants[i];
    }
}
cs

'알고리즘' 카테고리의 다른 글

[Java]백준 1120 문자열 (그리디문제)  (0) 2020.02.02
[Java]백준 10973 이전순열  (0) 2019.07.07
[Java]백준 10972 다음순열  (0) 2019.07.07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
 
    public static void main(String[] args) {
        String str = "Hello Java!!";
        System.out.println("str: " + str);
        
        StringBuilder sb = new StringBuilder();
        
        for (int j = 0; j < str.length(); j++) {
            sb.append(str.charAt(j));
        }
        
        System.out.println("sb: " + sb);
    }
}

<출력결과>

 

str: Hello Java!!

sb: Hello Java!! 

숫자 타입

1. 정수 타입 

2. 고정 소수점 타입

3. 부동 소수점 타입 

 

 

문자열 타입

1. CHAR와 VARCHAR

  • 공통점: 둘 다 문자열 데이터를 저장
  • 차이점:  CHAR은 문자열 길이 한 번 설정되면 그대로 고정. VARCHAR는 길이 고정되지 않는 가변 길이

2. BINARY와 VARBINARY

3. BLOB과 TEXT

4. ENUM

5. SET

 

 

날짜와 시간 타입 

1. DATE, DATETIME, TIMESTAMP

  • DATE: 날짜를 저장할 수 있는 타입 (YYYY-MM-DD) 
  • DATETIME: 날짜 + 시간까지 저장할 수 있는 타입(YYYY-MM-DD HH:MM:SS)
  • TIMESTAMP: 날짜와 시간을 나타내는 타임스탬프를 저장할 수 있는 타입. 사용자가 별다른 입력을 주지 않으면 데이터가 마지막으로 입력되거나 변경된 시간이 저장되므로, 최종 변경 시각을 저장하고 확인하는 데 유용

2. TIME : 시간을 저장 (HH:MM:SS) 

3. YEAR : 연도를 저장

 

YEAR(4)는 4자리의 연도를 저장할 수 있습니다.

 

1. 4자리 숫자로 저장하면, 저장할 수 있는 범위는 1901년부터 2155년까지가 됩니다.

2. 4자리 문자열로 저장하면, 저장할 수 있는 범위는 1901년부터 2155년까지가 됩니다.

3. 숫자 0을 저장하면, 2000년이 아닌 0000년으로 저장되므로, 2000년은 반드시 문자열 '0' 또는 '00'으로 입력해야 함. 

유효하지 않은 연도는 '0000'으로 저장됩니다.

 

 

패턴매칭:  1) 와일드 카드

- 문자열 내에서 임의의 문자나 문자열을 대체하기 위해 사용되는 기호

% 0개 이상의 문자를 대체함 ex) SELECT * FROM Reservation WHERE Name NOT LIKE '장%';
_ 1개의 문자를 대체함  ex) SELECT * FROM Reservation WHERE RoomNum LIKE '20__';

패턴매칭:  2) REGEXP

- LIKE 연산자보다 더욱 복잡한 패턴을 검색하고 싶을 때 사용 

- REGEXP 연산자는 정규 표현식을 토대로 하는 패턴 매칭 연산을 제공 

- 만약 해당 패턴과 불일치한 데이터 찾고자할 땐 NOT REGEXP 연산자 사용 

. 줄 바꿈 문자(\n)를 제외한 임의의 한 문자를 의미함.
* 해당 문자 패턴이 0번 이상 반복됨.
+ 해당 문자 패턴이 1번 이상 반복됨.
^ 문자열의 처음을 의미함.
$ 문자열의 끝을 의미함.
| 선택을 의미함.(OR)
[...] 괄호([]) 안에 있는 어떠한 문자를 의미함.
[^...] 괄호([]) 안에 있지 않은 어떠한 문자를 의미함.
{n} 반복되는 횟수를 지정함.
{m,n} 반복되는 횟수의 최솟값과 최댓값을 지정함.

ex) Name 필드(속성)의 값이 '홍'으로 시작하거나, '산'으로 끝나는 레코드(행)를 선택

SELECT * FROM Reservation WHERE Name REGEXP '^홍|산$';

데이터베이스(Database)란? 

: 특정 조직이 업무 수행에 필요한 관련성 있는 통합, 저장, 운영, 공유된 데이터 집합 (ISOS)

 

통합데이터(Integrated Data): 자료의 중복을 배제/최소화한 데이터 집합

저장데이터(Stored Data): 컴퓨터가 접근가능한 저장매체에 저장된 데이터 집합

운영데이터(Operational Data): 조직의 업무 수행에 반드시 필요한 데이터 집합

공유데이터(Shared Data): 여러 응용 시스템이 동시/공동으로 사용 가능한 데이터 집합

 

- 이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리되며, 데이터베이스는 DBMS(Database Management System)이 관리. (DBMS 종류 : 오라클, Mysql, MariaDB, 등등) 

 

 

데이터베이스의 특징 

-실시간 접근성(real Time Accessibility): 내가 원할 때마다 언제든 바로 접근해서 자료 처리

-계속적인 진화(Continuous Evolution): 삽입, 삭제, 갱신 --> 항상 최신의 데이터를 유지해야 함 

-동시공유(Concurrent Sharing): 여러 명 같이 쓸 수 있어야 함 

-내용에 의한 참조(Content Reference): 주소가 아닌 데이터의 내용, 값에 따라 참조할 수.

 

 

DBMS (Database Management System)

: 사용자-데이터베이스 간 인터페이스 역할 (중간역할)

 

- 필수기능 : DB내용에 대한 정의기능(Definition Facility), 조작기능(Manipulation), 제어기능(Control)

장단점: 데이터 중복성 종속성 최소화; 일관성&무결성 유지; 사용자 간 데이터 공유 가능

 

 

SQL (Structured Query Language)

- 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어 

속성 설명 주요 명령어

DDL (Data Definision Language)

데이터베이스의 구조를 정의, 수정, 삭제 등 위해 사용되는 언어 CREATE, ALTER, DROP 
DML (Data Manipulation Language) 데이터베이스 내의 자료를 검색, 삽입, 갱신, 삭제 위해 사용되는 언어 SELECT, DELETE, INSERT, UPDATE
DCL (Data Control Language)  데이터베이스 데이터의 대해 무결성 유지, 병행 수행 제어, 보호와 관리 COMMIT, ROLLBACK, GRANT, REVOKE 

 

 

관계형 데이터베이스(relational database) 

- 테이블(=릴레이션)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타냄

 

<< 특징 >>

- 데이터의 분류, 정렬, 탐색 속도가 빠름

- 데이터의 무결성 보장

- 기존에 작성된 스키마를 수정하기 어려움

 

- 아래는 테이블 예시며, 관계형 데이터베이스는 아래와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있음

 

1) 행(row): 관계된 데이터의 묶음 (= 튜플 또는 레코드)

2) 열(column): 각각의 유일한 이름, 자신만의 타입을 가짐 (= 속성 또는 필드) 

3) 값(value): 각각의 행과 열에 대응하는 값 

4) 키(key) : 행의 식별자로 이용되는 열을 기본키(primary)라고 함 

즉, 테이블에 저장된 행을 고유하게 식별하는 후보키(candidate key) 중에서 설계자가 지정한 속성 

5) 관계: 테이블 간의 관계는 관계를 맺는 테이블의 수에 따라 다음과 같이 나눌 수 있음

(일대일, 일대다, 다대다  -->>> 이러한 관계를 나타내기 위해 외래키(foreign key)를 사용. 외래키는 한 테이블의 키 중에서 다른 테이블의 행을 식별할 수 있는 키 

6) 스키마 

: 테이블을 디자인하기 위한 청사진.

- 스키마는 개체-관계 다이어그램(entity-relationship diagram)이나 문자열로 표현할 수 있음

 

 

 

+ Recent posts