백엔드 언어2017. 3. 24. 19:21

HTTP 404 error


https://groups.google.com/forum/#!topic/springsprout/vc42-yOGrr4



PROJECT 마우스우측버튼 -> properties ...


Web Project Settings 에서


Context root : / 로 변경


또는 


이클립스에서 파일 오른클릭 - Run as - Run co... 


에서 경로 수정

Posted by EL2A
백엔드 언어2017. 3. 24. 19:20

아파치 톰캣(apache tomcat) 다운 및 설치


http://tomcat.apache.org/

에 접속합니다.


지금은 8.0 정도 다운로드가 좋음


내용출처:   <http://jun7222.tistory.com>







가.이클립스에 톰캣sever 연동

 

1. Window - Preferences 선택.


2.좌측의 Server - Runtime Envlronments 탭을 누른 후 이곳 에서 톰캣 서버를 추가 해줄수 있습니다.Add 클릭. 

 

3. 현재 톰캣 다운받은 버전 무엇인지 다들 아시죠? 저는 7.0 버전을 설치했기에 7.0 선택 후 Next 클릭했습니다.

 

4. Browse를 클릭하여 톰캣 설치한 디렉터리를 등록해줘야 합니다. name은 식별하기 위한 것 일뿐...

Name: 서버 마다 각각의 이름을 지어준 후 이름으로 구별할 수 있어야겠죠? 서버는 여러 개 생성 가능합니다.

Tomcat installation directory: 톰캣 설치했던 디렉터리 위치를 지정해 줘야 합니다. Browse 눌러 톰캣 설치한 디렉터리 찾아 등록해주세요. 

 

5.톰캣 서버 생성 완료되었습니다. 만약 서버를 더 추가하겠다 하시면 같은 방법으로 하시면 됩니다~

 

 

나.Dynamic Web Project 생성

 

1.웹 프로젝트 생성하기 위해 이클립스 메뉴바에서 File - New - Dynamic Web Project  로 하셔도 되고, 좌측 여백 아무곳이나 우측 클릭 하셔도 똑같습니다.

 

2. 다이나믹 웹 프로젝트 이름 지어주고 서버등록 되어있나 확인하시고 Next 클릭.

 

Project name: 자유롭게 프로젝트명 적으시면 되겠습니다.저는 good 으로 작명.

Use default location: 체크 되어있는데 노란박스 경로 보시면 workspace 가 있네요 이곳에다 프로젝트와 관련된 디렉터리와 파일을 만들어 저장하겠다는 것입니다.

Target runtime: 웹 어플리케이션을 실행할 때 사용할 서버 실행 환경을 선택하는 것으로 방금 만들었던 톰캣 서버가목록에 있습니다.

 

3.Next 클릭.


4.Generate web.xml deployment descriptor 체크를 해주셔야 프로젝트 생성하고 난후 web.xml 파일이 생성됩니다. 공부많이 하시다보면 web.xml 이 중요한 정보들을 정말 많이 가지고 있다는걸 알수 있습니다.

web.xml :  DD 파일 이라불리며 서블릿과 JSP를 어떻게 실행하느냐에 관한 많은 정보들이 들어 있습니다. 

 

5.드디어 Dynamic Web Project 프로젝트가 생성 되었습니다.

 

 

TIP/ 참고로 아래 화면은 이클립스 내의 내부 웹브라우저를 통해 실행 한 것입니다. 우리가 자주쓰는 익스플로러나 크롬을 통해 출력 하시고 싶으시다면 클릭 하세요.

[이클립스] 웹브라우저(크롬) 설정방법.

 

 

11. 마지막으로 server 창 이 있네요 이건 하단부분에 console 부분 쪽에 있고 이창을 통해 서버를 끄거나 다시 실행 시키거나 할수 있습니다. 혹시 이 창이 없다 하시는 분은 Window - Show View - Servers 누르시면 나와요.



출처 : http://dkatlf900.tistory.com

Posted by EL2A
백엔드 언어2017. 3. 24. 19:18

1. JDK 설치


http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


http://www.hanbit.co.kr/exam/-



컴퓨터 속성 - 고급시스템설정 - 고급 - 환경변수 - 새로만들기 (시스템 변수)

이름:  JAVA_HOME /         값 : C:\Program Files\Java\jdk1.8.0_77

이름 : PATH /                 값 : C:\Program Files\Java\jdk1.8.0_77\bin (기존 변수에 편집으로 ; 를 붙이고 뒤에다 이어서 쓴다)

이름 : CLASSPATH /         값 : C:\Program Files\Java\jdk1.8.0_77\jre\lib


javac 정상적 설치여부 확인

       cmd - cd C:\Program Files\Java\jdk1.8.0_71\bin

       치고 이후에

       

       javac

       영어로 무언가가 쭈르륵 올라가면 실행이 가능한 상태이다.

       

       버전확인

               java -version



2. 이클립스 설치


http://www.eclipse.org/downloads 


Eclipse IDE for Java EE Developers 다운 (bit 확인)

'백엔드 언어' 카테고리의 다른 글

HTTP 404 error  (0) 2017.03.24
톰캣 설치 및 연동  (0) 2017.03.24
Code Convention for the java Programmer  (0) 2017.03.24
자바 기본개념 정리  (0) 2017.03.23
데이터베이스 연동 테스트  (0) 2017.03.23
Posted by EL2A
백엔드 언어2017. 3. 24. 19:11

Code Convention for the java Programmer 

This Code Convention for the Java Programming Language document contains the standard convention that we at Sun follow and recommend that others follow. iT covers filenames, file organization, comments, declaration, statements, white space, naming conventions, programming practice and include a code example

1. 80% of the lifetime cost of a piece of software goes to maintenance.
2. Hardly any software is maintained for its whole life by the original author.
3. Code Conventions improve the readability of the software. allowing engineers to understand new code more quickly and thoroughly

The Code Conventions for the Java programming language document was revised and updated on April 20, 1999


1. 소프트웨어를 개발하는 일련의 모든 과정에 들어가는 비용중 80%가 유지보수에 쓰인다.
2. 소프트웨어의 유지보스를 그 소프트웨어를 직접 개발한 개발자가 담당하는 경우 거의 보기 힘들다.
3. 코드 규칙을 지키면 다른 개발자가 그 소스코드를 처음 보았을 때, 더 빠른 시간안에 완벽하게 이해 할 수 잇도록 도와주기 때문에, 소프트웨어의 가독성이 높아진다.



'백엔드 언어' 카테고리의 다른 글

톰캣 설치 및 연동  (0) 2017.03.24
JDK 설치 및 이클립스 설치  (0) 2017.03.24
자바 기본개념 정리  (0) 2017.03.23
데이터베이스 연동 테스트  (0) 2017.03.23
모바일 접속 체크 코드  (0) 2017.03.23
Posted by EL2A
백엔드 언어2017. 3. 23. 19:46

1. JAVA

JAVA는 네트워크상에서 쓸 수 있도록 미국의 선 마이크로 시스템즈가 개발한 객체 지향 프로그래밍 언어

JAVA의 특징

a. 자바가상머신(JVM)만 설치하면 컴퓨터의 운영체제에 상관없이 작동한다.(즉, 운영체제에 독립적)

b. 기본 자료형을 제외한 모든 요소들이 객체로 표현

c. 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어

d. Garbage Collector를 통한 자동적인 메모리 관리

e. 멀티쓰레드(Multi-thread)를 지원



2. OOP(객체지향 프로그래밍)

OOP란 Object-Oriented Programming의 약어로써 객체지향 프로그래밍을 의미

데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의 것들과는

다르게 객체와 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다.

OOP 특징

a. 객체지향 프로그래밍은 코드의 재사용성이 높다.

b. 코드의 변경이 용이

c. 직관적인 코드분석

d. 개발속도 향상

e. 상속을 통한 장점 극대화



3. Object

Object(객체)는 OOP에서 데이터(변수)와 그 데이터에 관련되는 동작(함수). 즉 절차, 방법, 기능을 모두 포함한 개념

예)기차역에서 승차권을 발매하는 경우, 실체인 '손님'과 동작인 '승차권 주문'은 하나의 객체이며, 실체인 '역무원'과

동작인 '승차권 발매'도 하나의 객체이다.

같은 성질, 같은 구조와 형태를 가지는 객체는 등급으로 정의하고 등급에 속하는 객체는 그 등급의 인스턴스라고 한다.



4. Overloading vs Overriding ( 한번공부할때 확실히 차이를 알아둘 것, 평소에 알고 있어도 헷갈림)

Overloading(오버로딩)

같은 이름의 메소드를 여러개 정의하는 것

매개변수의 타입이 다르거나 개수가 달라야 한다.

* return type과 접근 제어자는 영향을 주지 않음.


Overriding(오버라이딩)

- 상속에서 나온 개념

상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의



5. Servlet, JSP

Servlet - Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것(Html in JAVA)

JSP(Java Server Page) - html기반에 JAVA코드를 블록화하여 삽입한 것(JAVA in Html)


6. JDBC

Java Data Base Connection의 약자로 JAVA 언어를 통해 데이터 베이스에 접근 할 수 있는 프로그래밍을 의미



7. Get과 Post 방식

Get 방식

- 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 "이름"과 "값"이 결합된 스트링 형태로 전달

- 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.

길이에 제한이 있다.(=전송 데이터의 한계가 있다.)

Post방식보다 상대적으로 전송 속도가 빠르다.



Post 방식

- 일정 크기 이상의 데이터를 보내야 할 때 사용한다.

- 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.

- 주소창에 전송하는 데이터의 정보가 노출되지 않아 Get방식에 비해 보안성이 높다.

속도가 Get방식보다 느리다.

- 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 같은 객체들의 값도 전송가능.


Get과 Post 차이점

- Get은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용

- Post는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용.

- Get을 사용하면 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩되어 URL에 붙는다.

- Post방식은 전달되는 데이터가 보이지 않는다.

- Get방식은 전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.

- 웹서버에 많은 데이터를 전달하기 위해서는 Post 방식을 사용하는 것이 바람직하다.



8. Session과 Cookie

Session과 Cookie 사용 이유

- 현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다

 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다. 이에 따라 HTTP프로토콜을 이용하게 되는 

 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

Session

- 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.

- Session에 관련된 데이터는 Server에 저장된다.

- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.

- Cookie에 비해 보안성이 좋다.


Cookie

- 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법

- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.

- Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써,

  Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.

- Cookie는 Client PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.(정보 유출 가능, Session보다 보안성이 낮은 이유)

Q. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?

A. 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감



9. MVC 패턴

MVC란?

- 객체지향프로그래밍에서, MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나이다. MVC방식은 자바, Smalltalk,

- MVC 패턴은 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다.

MVC 구성요소

Model - 소프트웨어 응용과 그와 관련된 고급 클래스 내의 논리적 데이터 기반 구조를 표현. 이 목적 모형은 사용자 인터페이스에 관한 어떠한 정보도 가지고 있지 않다.

View - 사용자 인터페이스 내의 구성요소들을 표현(사용자에게 보여지는 화면)

Controller - Model과 View를 연결하고 있는 클래스를 대표, Model과 View 내의 클래스들 간 정보 교환하는데 사용.



10. Interface, Abstract

Interface

일종의 추상 클래스

- 오직 추상메서드와 상수만을 멤버로 갖는다.

Implements 키워드를 사용

- 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.

- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.

Abstract

추상메서드를 하나 이상 가진 클래스

자신의 생성자로 객체 생성 불가능

- 하위 클래스를 참조하여 상위 클래스의 객체를 생성

- 하위 클래스를 제어하기 위해 사용

Interface vs Abstract

공통점 

- new 연산자로 인스턴스 생성 불가능.

- 프로토타입만 있는 메서드를 갖는다.

- 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다.

차이점

- 사용하는 키워드가 다르다.

- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.



11. Call by Reference, Call by Value

Call by Reference - 매개 변수의 원래 주소에 값을 저장하는 방식. 클래스 객체를 인수로 전달한 경우

Call by Value - 인수로 기본 데이터형을 사용. 주어진 값을 복사하여 처리하는 방식. 메서드 내의 처리 결과는 메서드 밖의 변수에 영향을 미치지 않는다.



12. Static의 의미 

- 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미

- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드)



13. Framework

- 특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스프레임과 인터페이스 프레임의 집합

- 특정한 틀을 만들어놓고 거기에 살을 붙여 놓음으로써 프로그램을 만들어 작업시간을 줄여주는 것이다. 

  스켈레톤 코드라고도 하는데, 뼈대가 이미 만들어져 있어서 거기에 살(기능)만, 덧붙이면 완성이 되도록 공통된 함수 또는 클래스를 미리 만들어 놓는 것을 이야기한다.

- 프레임워크는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.

- 프레임워크는 이렇게 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.

- 프레임워크 컴포넌트 들은 재사용이 가능하다.

- 프레임워크는 좀 더 높은 수준에서 패턴을 조작한다.

* 프레임워크가 중요한 이유는 객체지향 개발을 하게 되면서 개발자의 취향에 따라 다양한 프로그램이 나오게 되었다.

 프로그램 개발에 투입되는 개발자도 점점 늘어남에 따라 전체 시스템의 통합성, 일관성이 부족하게 되었기 때문이다. 

 그래서 개발자의 자유를 제한하기 위해 프레임워크를 도입했다.

프레임워크가 가져야할 특징

a. 개발자들이 따라야할 가이드라인을 가진다.

b. 개발할 수 있는 범위가 정해져 있다.

c. 개발자를 위한 다양한 도구들이 지원된다.

프레임워크의 장/단점

장점 - 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.

단점 - 프레임워크에 너무 의존하면 개발 능력이 떨어져서 프레임워크 없이 개발하는 것이 불가능해지는 점이다.


14. Garbage Collection(가비지 컬렉션)

시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 

시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다.


15. Primitive type과 Reference type

Primitive type - 변수에 값 자체를 저장 

정수형 byte, short, int, long

실수형 float, double

문자형 char

논리형 boolean

Primitive type은 Wrapper Class를 통해 객체로 변형할 수 있다.

예) int→Integer, char→Character(int와 char를 제외한 Primitive type의 다른 자료형들은 맨 앞 알파벳을 대문자로 바꿔주면 된다. float→Float)

Reference type - 메모리상에 객체가 있는 위치를 저장

종류 - Class, Interface, Array 등


16. Wrapper Class

Primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한 기능을 지원하는 클래스



17. Spring Framework(스프링 프레임워크)

자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 애플리케이션 프레임워크(Framework)

자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크

자바 개발을 위한 프레임워크로 종속 객체를 생성해주고,  조립해주는 도구

자바로 된 프레임워크로 자바SE로 된 자바 객체(POJO)를 자바EE에 의존적이지 않게 연결해주는 역할

스프링 특징 간단히

- 크기와 부하의 측면에서 경량.

- 제어 역행(IoC)이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모

- 관점지향 프로그래밍(AOP)을 위한 풍부한 지원

- 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너(Container)라고 할 수 있음

- 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음

스프링 특징 자세히

a. 경량 컨테이너로서 자바 객체를 직접 관리.

   각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.

b. 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크.

   일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 

   존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.

c. 스프링은 제어의 역행(IoC : Inversion of Control)을 지원.

   컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.

d. 스프링은 의존성 주입(DI : Dependency Injection)을 지원

   각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.

e. 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원

   따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.

f. 스프링은 영속성과 관련된 다양한 서비스를 지원

   iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

g. 스프링은 확장성이 높음.

   스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 

   이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.


18. Thread

Thread(쓰레드) - 프로세스내에서 동시에 실행되는 독립적인 실행 단위를 말함, 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다

Process(프로세스) 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함한다.)

Thread 장점

- 빠른 프로세스 생성

- 적은 메모리 사용

- 쉬운 정보 공유

Thread 단점

교착상태에 빠질 수 있다.

* 교착상태 - 다중프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행 할 수 없는 어떤 특정시간을 기다리고 있는 상태.

Thread와 Process 차이

여러 분야에서 '과정' 또는 '처리'라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는 '실행중인 프로그램'이라는 뜻으로 쓰인다. 

이 프로세스 내에서 실행되는 각각의 일을 스레드라고 한다. 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 되는 것이다.


19. 접근제한자(public > protected > default > private)

public 접근 제한이 없다.(같은 프로젝트 내에 어디서든 사용가능)

protected 같은 패키지 내다른 패키지에서 상속받아 자손클래스에서 접근 가능 

default 같은 패키지 내에서만 접근 가능

private 같은 클래스 내에서만 접근 가능


20. 소켓 통신(TCP/UDP)

TCP(Transmission Control Protocol)

연결형 서비스 제공

높은 신뢰성 보장

- 연결의 설정(3-way handshaking)

- 연결의 해제(4-way handshaking)

데이터 흐름 제어, 혼잡 제어

- 전이중, 점대점 서비스(양방향 송수신 서비스)

UDP(User Datagram Protocol)

비연결형 서비스 제공

신뢰성이 낮음

데이터의 전송 순서가 바뀔 수 있음

- 데이터 수신 여부 확인 안함(3-way handshaking과 같은 과정 X)

- TCP보다 전송속도가 빠름


21. Stack, Queue

STACK

LIFO(Last In First Out)의 후입선출 구조

- push();를 이용한 데이터 입력, pop();을 이용한 데이터 출력

- 예) 시스템 스택 : 함수의 호출과 복귀 순서는 스택의 구조를 응용하여 관리

- 역순 문자열 만들기, 수식의 괄호 검사, 수식의 후위 표기법 변환

QUEUE

FIFO(First In First Out)의 선입선출 구조

- enQueue();를 이용한 데이터 입력, deQueue();를 이용한 데이터 출력

- 예) 우선순위가 같은 작업 예약(인쇄 대기열), 선입선출이 필요한 대기열(티켓 카운터)

* Linear Queue(선형큐)는 메모리 재사용이 불가능 이러한 문제점을 보완하여 Circular Queue(원형 큐)가 나옴



22. Singleton Design Patter(싱글톤 디자인 패턴, 싱글톤 패턴)

- 클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공한다.



23. Database에서 Index란?

인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다.

인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.

고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다.

인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다.


데이터베이스에서 테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유하고 있는 객체(object)이다. 

사용자는 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위하여 인덱스를 생성하고 사용한다. 


DB에서 자료를 검색하는 두 가지 방법

FTS(Full Table Scan) : 테이블을 처음 부터 끝까지 검색하는 방법

Index Scan : 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법.



출처 : http://hahahoho5915.tistory.com/16

'백엔드 언어' 카테고리의 다른 글

JDK 설치 및 이클립스 설치  (0) 2017.03.24
Code Convention for the java Programmer  (0) 2017.03.24
데이터베이스 연동 테스트  (0) 2017.03.23
모바일 접속 체크 코드  (0) 2017.03.23
세션 예제  (0) 2017.03.23
Posted by EL2A
백엔드 언어2017. 3. 23. 19:40


1. MYSQL JDBC 다운로드 : http://dev.mysql.com/downloads/connector/j/

밑에서 Platform Independent (Architecture Independent), ZIP Archive 다운로드!


2. 압축풀고 mysql-connector-java-5.1.38-bin 파일을 

C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib 이곳에 넣는다.



3. DB에서 테이블을 간단하게 만든다



CREATE DATABASE TEST;

USE TEST;

CREATE TABLE PERSON
(PID INT(4) PRIMARY KEY,
NAME VARCHAR(10)
);

INSERT INTO PERSON VALUE(0001, 'SEOKHO');
INSERT INTO PERSON VALUE(0002, 'ILWOO');
INSERT INTO PERSON VALUE(0003, 'JAEDO');
INSERT INTO PERSON VALUE(0004, 'JAEOK');
INSERT INTO PERSON VALUE(0005, 'HYEWON');







4. JSP 소스 작성



끝. 결과물 실행해서 확인


'백엔드 언어' 카테고리의 다른 글

Code Convention for the java Programmer  (0) 2017.03.24
자바 기본개념 정리  (0) 2017.03.23
모바일 접속 체크 코드  (0) 2017.03.23
세션 예제  (0) 2017.03.23
문자열을 날짜시간 Date 포맷으로 변경  (0) 2017.03.23
Posted by EL2A
백엔드 언어2017. 3. 23. 19:38


모바일 접속 체크 코드





'백엔드 언어' 카테고리의 다른 글

자바 기본개념 정리  (0) 2017.03.23
데이터베이스 연동 테스트  (0) 2017.03.23
세션 예제  (0) 2017.03.23
문자열을 날짜시간 Date 포맷으로 변경  (0) 2017.03.23
문자열 관련 함수 모음  (0) 2017.03.23
Posted by EL2A
백엔드 언어2017. 3. 23. 19:37

login.php

 ID와 암호를 입력받아 process.php로 전달하는 소스입니다.




process.php

 ID와 암호를 비교하여 로그인 성공 여부를 판별합니다.

 POST 방식으로 전달된 파라미터를 읽을 때는 $_POST["변수명"]을 사용하고, GET 방식으로 전달된 파라미터를 읽을 때는$_GET["변수명"]을 사용합니다. GET, POST 구분 없이 어떤 파라미터를 읽을 때는 $_REQUEST["변수명"]을 사용합니다.

 login.php에서 전달받은 ID와 암호를 저장된 내용과 비교하여 일치하면 로그인 성공 및 세션 생성. PHP에서 세션을 사용하는 페이지는 항상 사용 전 session_start(); 함수를 호출하여야 하며 이는 새로운 세션을 생성하거나 기존 세션을 불러오는 역할을 합니다. 이 session_start는 소스 코드의 가장 첫 줄에서 호출되어야 합니다. 줄바꿈도 허용되지 않습니다.

 만일 1줄에 session_start();를 호출하도록 적었는데도 "Cannot send session cookie - headers already sent" 오류가 뜬다면 소스 파일 첫 글자에 이 텍스트 파일이 UTF-8인지 UTF-16 LE/BE인지를 식별하는 BOM(Byte Order Mark)문자가 들어있는 문제로서 Windows 메모장으로는 해결할 수 없으므로 EditPlus 등의 편집기로 열어 BOM이 없는 텍스트 파일로 다시 저장해야 합니다.

 세션에 저장된 값을 가져오거나 설정하려면 $_SESSION["변수명"]을 사용하면 됩니다.





logout.php

 세션을 삭제하여 로그아웃 처리합니다.

 session_start();을 사용하여 기존 세션을 불러오고 session_destroy();을 호출하여 불러온 세션을 파괴합니다.


Posted by EL2A
백엔드 언어2017. 3. 23. 19:34

PHP에서 문자열 날짜시간을 Date 포맷으로 변경하기 


이를테면 "20130813110133" 과 같이 "년월일시분초" 형식을 "년-월-일"형식으로

변경하고 싶다면 어떻게 해야 할까요?

$str_date = "20130813110133";$date = date("Y-m-d", strtotime( $str_date ) );
로 구현하면 됩니다.

핵심은 strtotime 함수 입니다.


출처 : http://ttorr.blogspot.kr/2013/08/php-date.html

'백엔드 언어' 카테고리의 다른 글

모바일 접속 체크 코드  (0) 2017.03.23
세션 예제  (0) 2017.03.23
문자열 관련 함수 모음  (0) 2017.03.23
숫자 또는 문자만 추출  (0) 2017.03.23
데이터베이스 필요없는 방문자 카운터  (0) 2017.03.23
Posted by EL2A
백엔드 언어2017. 3. 23. 19:32

1. 먼저 문자열을 정리하는 함수입니다.

$result = trim($string) - 문자열 앞,뒤 에있는 공백문자를 지웁니다.

$result = ltrim($string) - 문자열 앞에 들어가는 공백문자를 지웁니다.

$result = chop($string) - 문자열 뒤에 들어가는 공백문자를 지웁니다.

공백문자 - 줄바꿈 개행문자, 탭문자, 스페이스 등의 안보이는 문자

$result = nl2br($string) - 문자열에 포함된 줄바꿈(\r,\n) 문자를 <br> 태그로 변환합니다. (php 버전이 4.0.6 보다 낮을경우 <br> 높을경우 <br/>)


2. 대소문자 변경

$result = strtoupper($string) - 문자열을 대문자로 모두 바꿔줍니다.

$result = strtolower($string) - 문자열을 소문자로 모두 바꿔줍니다.

$result = ucfirst($string) - 문자열의 첫단어가 영문자이면 그것만 대문자로 바꿔줍니다.

$result = ucword($string) - 문자열 각단어의 첫 영문자를 대문자로 바꿔줍니다.


3. 문자열 길이

$result = strlen($string) - 문자열의 길이값이 $result 에 저장됩니다. (결과값:정수형)


4. 문자열 대체

$result = str_replace($str1, $str2, $원본문자열) - 원본문자열에서 $str1 을 찾아 $str2 로 바꿔서 $result 에 저장합니다. 문자 or 문자열 다 가능합니다.

$result = substr_replace($원본문자열, $str1, $위치) - 원본문자열의 $위치 에 있는 문자를 $str1 로 바꿔서 $result 에 저장합니다.

예제) $result = str_reaplce("가나다","ABC","가나다라마바사"); 결과값 $result = "ABC라마바사"

$result = substr_reaplce("ABCDEF","XYZ",2); 결과값 $result = "ABXYZDEF" , 인덱스 2의 단어(0부터시작) C -> XYZ 로 바뀝니다.


5. 문자열 비교

$result = strcmp($str1,$str2) - $str1 과 $str2 두 문자열을 비교합니다. 각 문자열의 인덱스 순서대로 비교하는데 정확히 일치하면 0 을 반환하고

$str1 이 더 길거나 ASCII 값이 더 크다면 양수(+), $str2 가 더 길거나 ASCII 값이 더 크다면 음수(-)를 반환합니다.

$result = strcasecmp($str1,$str2) - strcmp와 기능은 같은데 차이점은 대소문자 구분을 하지않는다는 것입니다.

일반적으로 소문자가 ASCII 값이 더 큰데, 그걸 따지지않고 같은 레벨로 비교합니다.


6. 문자열찾기

$result = strstr($원본문자열, $찾을문자열) - $원본문자열 에서 $찾을문자열을 찾는 함수입니다.

찾는 문자열이 있을경우 결과값 $result 에는 찾는 문자열을 포함해서 그 뒤의 문자열이 저장됩니다.

찾는 문자열이 없을경우 결과값 $result 에는 false (boolean) 값이 저장됩니다. 논리연산(!== , ===) 필요.

예제) $result = strstr("가나다라마바사", "다라"); 결과값 $result = "다라마바사"

$result = stristr($원본문자열, $찾을문자열) - strstr 함수와 기능이 같습니다. 단, 대소문자 구분을 하지않습니다.

$result = strchr(($원본문자열, $찾을문자) - $원본문자열 에서 $찾을문자를 찾는 함수입니다. 결과값은 strstr 과같습니다.

$result = strrchr(($원본문자열, $찾을문자) - $원본문자열의 뒷부분 부터 $찾을문자를 찾는 함수입니다. 결과값은 strstr과 같습니다.


7. 문자열 내의 위치찾기

$result = strpos($원본문자열, $찾을문자열) - $원본문자열 에서 $찾을문자열을 찾는 함수입니다.

strstr 과 기능은 같으나 결과값이 $원본문자열의 정수형 인덱스입니다.(0 부터시작)

찾을문자열이 없는경우 false 를 리턴합니다.

찾을문자열이 원본문자열의 맨처음에 있는경우 결과값은 0 입니다.

단순비교연산자를 쓰면 0 , false 모두 같은값으로 간주하기때문에 주의하셔야됩니다. (아래 주의 참고)

주의) strpos 등의 문자나 문자열을 찾는 함수의 경우 , 찾지 못했을때 결과값은 false입니다.

PHP 에서 == 등의 비교연산은 0 , false 모두 0 으로 간주하기때문에 이때는 논리비교연산(=== , !==)을 써야됩니다.

$result === false (0) , $result == false (X)

$result !== false (0) , $result != false (X)

예제) $result = strpos("가나다라마바사","라"); 결과값 $result = 3

$result = strrpos($원본문자열, $찾을문자) - $원본문자열의 뒷부분 부터 $찾을문자를 찾는 함수입니다.

strrpos는 찾을문자열 대신 찾을문자만 써야됩니다. 결과값은 strpos와 같습니다.


8. 문자열 자르기

$result = substr($원본문자열, $찾을위치, $갯수) - $원본문자열에서 $찾을위치의 인덱스로부터 $갯수만큼의 문자열을 잘라서 반환합니다.

다양한 방법으로 활용할 수 있습니다.

예제)

$original_str "It's hard to be in other's shoes.";

$result = substr($original_str, 5) -> $result = "hard to be in other's shoes." , 맨앞(0)의 5번 위치부터

$result = substr($original_str, -2) -> $result = "s." , 맨뒤에서부터의 인덱스 2 만큼

$result = substr($original_str, 5, 4) -> $result = "hard" , 5번 위치부터 4개

$result = substr($original_str, 5, -8) -> $result = "hard to be in other's" , 5번 위치부터 뒤에서 8번째 까지 문자열 함수 리스트입니다.


출처 : http://naiyumie.tistory.com/557

'백엔드 언어' 카테고리의 다른 글

세션 예제  (0) 2017.03.23
문자열을 날짜시간 Date 포맷으로 변경  (0) 2017.03.23
숫자 또는 문자만 추출  (0) 2017.03.23
데이터베이스 필요없는 방문자 카운터  (0) 2017.03.23
텍스트 \n 줄바꿈 처리  (0) 2017.03.23
Posted by EL2A