기술면접 정리

      1. 자바의 특징을 말하시오...
        1. 객체지향언어
        2. 함수적 스타일 코딩을 지원
        3. JVM(Java Virtual Machine)위에서 돌아가기 때문에 이식성이 좋다(OS 상관 X)
        4. Garbage Collector 인해 메모리를 자동으로 관리
        5. 동적로딩
        6. 오픈소스 언어
      2. JAVA 만든 사람?
        • 제임스 고슬링
      3. 변수란?
        • 하나의 값을 저장할 있는 메모리 공간
      4. 객체와 클래스의 차이점?
        1. Class : 객체를 만들어 내기 위한 설계도(or ), 연관된 변수와 메소드의 집합
        2. Object : SW세계에 구현할 대상, 클래스의 인스턴스라고도
        3. Instane : 객체를 실체화 한것, 실체화된 인스턴스는 메모리가 할당됨.
      5. JAVA 메모리 영역
        1. Method 영역 : 스태틱 변수, 전역 변수, 코드에 사용되는 클래스 정보
        2. Stack 영역 : 지역변수, 함수 등이 할당됨, Last In First Out(리포 방식)
        3. Heap 영역 : new 연산자를 통해 동작할당된 객체들이 저장, 가비지 콜렉션이 메모리를 관리
      6. Abstarct Method, Abstract Class
        1. 추상 메소드 : 정의부만 있고 구현부는 비어있는 메소드
        2. 추상 클래스. : 추상 메소드를 적어도 1 이상 보유하고 있는 클래스, 자식 클래스에서 오버라이딩이 필요.
      7. JDBC : 자바에서 데이터베이스에 접속할 있도록 해주는 자바 API, 자료를 쿼리하거나 업데이트 하는 방법
      8. 직렬화 : 객체를 스트림을 통해 인풋,아웃풋하기위해 배열로 변환하는
      9. 리플렉션 : 다이나믹 랭귀지의 특징, 프레임워크에서 유연성이 있는 동작을 위해 주로 사용, 컴파일러를 무시하고 런타임시 메모리에 올라간 클래스나 메소드 정의를 동적으로 찾아서 조작 가능할 있는 일련의 행위
      10. 서블릿, JSP 차이
        1. 서블릿은 자바소스에 html코드가 삽입
        2. JSP html코드에 자바코드가 삽입
        3. 서블릿 클래스는 컴파일 과정, 등록과정이 필요, JSP 필요X
      11. request 객체 : 클라이언트에서 서버로 넘어오는 데이터를 전달받기위한 객체
        response 객체 : 서버에서 클라이언트로 데이터를 전달하기위한 객체
      12. 쿠기 : 클라이언트에서 데이터를 저장, 보안은 취약하나 속도가 빠름
        세션
        : SID 식별자로 서버에 데이터를 저장, 보안 강력, 로그인 인증에 사용
      13. XML
        1. W3C(월드와이드웹 컨소시엄)에서 권장되는 다목적 마크업 언어
      14. REQUEST 전송 방식
        1. GET : URL 쿼리 문자열에 데이터를 같이 전달하는 방식, 보안에 취약
        2. POST : 헤더에 데이터를 넣어 보내는 방법, 길이 제한이 없고, GET보다는 느림
        3. DELETE : restful에서 삭제 기능할 사용
        4. PUSH(PUT) : restful에서 수정 작업할 사용.
      15. RESTFUL : URL 보고 어떤 작업을 하는지 있게끔 데이터하나당 URL 갖도록 작업하는 방식
      16. MVC :  영역간의 결합도를 최소화한 디자인 패턴, 분업화가 쉬워지고 유지보수가 용이함.
        1. Model : 데이터 처리 접근을 담당
        2. View : 클라이언트에 보여지는 화면을 담당
        3. Controller : 모델과 뷰를 제어
      17. okky, stackoverflow : 개발자 커뮤니티 사이트
      18. react
        1. UI 위한 JS라이브러리
        2. Facebook 만든 Javascript 라이브러리
        3. 프레임워크 ㄴㄴ 라이브러리 ㅇㅋ?
        4. 특징3
          1. Component : UI 구성하는 개별적인 단위
          2. JSX : react 위한 자바스크립트 문법
          3. Vital DOM : 가상돔 기존 돔의 비효율적인면을 고려하여 개발됨
      19. aop
        • 기능을 핵심 비지니스와 공통 모듈로 구분
        • 애플리케이션 전반에 걸쳐 사용되는 기능을 재사용하도록 지원
        • 관점 지향 프로그래밍
          • 어드바이스 : 실지적으로 부가기능을 담은 구현체
          • 포인트컷 : 부가기느잉 적용될 메소드를 선정하는 방법
          • 조인 포인트 : 어드바이스가 적용될 있는 위치
          • 프록시 : 타겟을 감싸고 타겟의 요청을 대신 받아주는 랩핑 오브젝트
          • 인트로덕션 : 타겟 클래스에 코드 변경없이 신규 메소드나 멤버변수를 추가하는 기능
          • 위빙 : 지정된 객체에 애스팩트를 적용해서 새로운 프록시 객체를 생성하는 과정
        • 사용되는 경우 : 간당한 메소드 성능 검사, 트랜잭션 처리, 등등..
      20. di : 의존성 주입
        • 의존성 주입은 스프링에서 지원해주는 기능이다.
        • 객체가 아니라 프레임워크에 의해 객체의 의존서잉 주입되는 설계 패턴
        • 프레임워크에 의해 동적으로 주입되므로 객체들 간의 결합이 줄어듬
        • 종속성 감소, 재사용상 증가, 가독성 증가 등의 장점이 있다.

 

 

[OpenCV + Cpp] Testing Code(Show image)

[OpenCV + Cpp] Testing Code(Show image)


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
/**
  @file videocapture_basic.cpp
  @brief A very basic sample for using VideoCapture and VideoWriter
  @author PkLab.net
  @date Aug 24, 2016
*/
 
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <stdio.h>
 
using namespace cv;
using namespace std;
 
int main(intchar**)
{
    Mat frame;
    //--- INITIALIZE VIDEOCAPTURE
    VideoCapture cap;
    // open the default camera using default API
    // cap.open(0);
    // OR advance usage: select any API backend
    int deviceID = 0;             // 0 = open default camera
    int apiID = cv::CAP_ANY;      // 0 = autodetect default API
    // open selected camera using selected API
    cap.open(deviceID + apiID);
    // check if we succeeded
    if (!cap.isOpened()) {
        cerr << "ERROR! Unable to open camera\n";
        return -1;
    }
 
    //--- GRAB AND WRITE LOOP
    cout << "Start grabbing" << endl
        << "Press any key to terminate" << endl;
    for (;;)
    {
        // wait for a new frame from camera and store it into 'frame'
        cap.read(frame);
        // check if we succeeded
        if (frame.empty()) {
            cerr << "ERROR! blank frame grabbed\n";
            break;
        }
        // show live and wait for a key with timeout long enough to show images
        imshow("Live", frame);
        if (waitKey(5>= 0)
            break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}
 
cs



[Spring + Mybatis + Oracle]게시판 만들기 setting

[Spring + Mybatis + Oracle]게시판 만들기.


               




  안녕하세요:) 블로그 관리가 많이 소홀하네요ㅎ; Java계열 공부하다보니 Web부분(Html, Jsp, Js ...)까지 하고 Oracle찍고 이제 Spring을 시작하게 되었는데 되게 진도만 쭉 뺀거같아서 포만감이라해야되나 아무튼 전반적으로 해야될 것들이 많네요. 이전 Jsp MVC2 pattern도 올려야되는데 Spring MVC부터 올리게 되네요. 일단 간략하게 설명드리자면 MVC2패턴을 알고 계실 꺼라고 믿고(다음에
MVC2[Jsp, Oracle]공략 올리겠습니다.) Spring MVC pattern은 기존의 MVC2패턴의 게시판에서 하나의 파일을 수정하게되면 연관된 다른 파일들도 수정해야되는 단점이 있지만 스프링에서는 객체간의 의존성을 낮춰서(느슨한 결합) 각각의 객체의 재사용성을 높이는 등 여러가지 장점들이 많다고합니다(저도 아직 스프링에 대한 이해도가 높은 편이 아니라서 추후에 스프링에대해 자세히 올리겠습니다ㅠ)


이제부터 길어질꺼같아서 음슴체로...


 SPRING 개발 환경으로는 크게 두가지가 있는 것으로 알고있음.

1번. 이클립스 MARKET PLACES에서 STS 검색후 이클립스 툴에 스프링 설치

2번. 구글에서 STS SPRING 검색후 사이트에서 툴 설치하기

필자는 위 1번과 2번 둘다 해봤음. 처음에는 귀찮은데 그냥 이클립스에서 다해야지하고 설치후 프로젝트 생성하고 TEST해보니 이클립스가 너무 뚱뚱해졌다. 삭제하면 큰일 날 것 같다. 기존 프로젝트들도 많고, 기존(JAVA OR DYNAMIC WEB ...)프로젝트들도 많아서 구분하기도 어렵고 아무튼 이클립스가 너무 살쪘다. 그래서 2번을 설치했다. 이클립스에서 설치할때 보였던 마크(나뭇잎 마크) 사이트(아래 글에서 자세히 설명함)에서 설치해보니 기존 이클립스는 DEFAULT가 JAVA지만 STS는 SPRING으로 되어있다. 그리고 다운시 300MB정도하였고, 스프링 프로젝트는 STS 툴에만 하면되니 약간의 분류가되어 현재는 스프링 공부 및 개발은 이 툴로만 한다. 필자는 추천하며 둘 다 괜찮은 것 같음. 너무 오랜만에 블로그하다보니 서론이 길어졌는데 앞으로 스프링, 마이바티스(는 이후에 자세히 설명하겠음)+데이터베이스(ORACLE)로 만든 게시판 만들기를 길~게 작성하려고함. 



  

  Spring Project 생성 시 다른 프로젝트들과는 다르게 엄청난 디렉토리들이 있다. 각각의 디렉토리는 툴에서 자동으로 만들어 주는 만큼 이유가 있으니 만들어 놓은 것이기에 각각의 디렉토리에대한 설명부터해서 나도 아직 학생이고 어디서 개소리일수도 Spring은 설정이 반이라는 말이 있던데 처음 환경설정 할 것도 많아 차근차근 설명하겠음.


프로젝트 각각 파트별 설명

 

 

Src/main/java

Java code(Controller, Model, Service

Src/main/resources

sqlMapConfig.xml, Mybatis's mapper (Java code에서 참조하는 리소스 파일들)

Src/test/java

Test 관련 code

Src/test/resources

Test 관련 code에서 참조하는 리소스 파일들

Src/main/webapp

Web Service root directory(외부에서 접근이 가능함!)

Src/main/webapp/resources

Js, Css, Image 등의 리소스 파일

Src/main/webapp/WEB-INF/classes

컴파일된 클래스

Src/main/webapp/WEB-INF/spring

Spring 환경설정 파일

src/main/webapp/WEB-INF/root-context.xml

Servlet 관련되지 않은 모든 리소스에 대한 설정

src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml

서블릿과 관련된 리소스에 대한 설정

src/main/WEB-INF/views

HTML, jsp 페이지

src/main/webapp/WEB-INF

외부에서 접근 불가능(보안), Controller 통한 경유로 접근 가능

pom.xml

Maven에서 참조하는 설정 파일

 

 

프로젝트 각각 파트별 세부 설명

 

Service :  기존 MVC2 pattern에서의 순서(Controller Model View)에서 Controller Service Model View 서비스 기능을 컨트롤러와 모델 사이에 추가해준다. Service 기능은 예로 들자면 게시판에 작성후 포인트를 부여(애매함ㅎ;)

 

Src/test/java : 개발완료(가정) TEST 납품 검수. 순서로 하는데  TEST에서는 프로그램(게시판) 테스팅하는데 있어서 자동화 과정을 "Junit"이라는 툴을 이용하여 작성할 것임.

 

※기존 MVC2에서의 content library 스프링에서는 사용하지 않고 Maven이라는 Build Tool 사용.

Maven : 자동 배포

 

<<<SETTING IS SPRING'S HALF>>>

 





SPRING 주요 특징

 

  1. POJO(Plain Old Java Object) : 별도의 API 필요하지 않은 일반적인 자바 코드를 이용하여 개발 가능.
  2. DI(의존성 주입) 통한 객체 간의 관계 구성
    • 객체 간의 의존성을 개발자가 설정하는 것이아니 스프링 컨테이너가 주입시켜 주는 기능
    • 객체를 쉽게 확장하고 재사용할 있음
  3. AOP(Aspect Oriented Programming) 지원 : 반복적인 코드를 줄이고 개발자가 비즈니스 로직에만 집중할 있도록 지원함.
  4. MVC pattern
  1. WAS(Web Application Server, <ex>Tomcat) 종속적이지 않은 개발 환경
  2. IoC(Inversion of Control, 제어의 역전) : 객체에 대한 제어권
    • 기본에는 개발자에게 제어권이 있었음(new 연산자)
    • 객체의 제어권을 스프링에게 넘김(
    • 인스턴스의 Life Cycle(생성~소멸)을 개발자가 아닌 Spring Frame Work 담당

 

의존

B 코드가 변경되면  A 코드도 변경되는 경우 A B 의존관계가 있다. 기존 MVC2에서 BoardDao.java MemberDao.java같은 경우 코드 내용이 변경될 경우 관련 파일도 변경되어야 된다. 경우를 강한 결합이며, 유지

보수의 경우에 손이 많이 가게됨.






Do SPRING Projects

 

  Eclipse에서 Market Places에서 스프링을 다운로드해서 사용해도되지만, 저는 STS Spring(이클립스랑 동일한데 설치할때부터 스프링 환경이 설정되어있는 툴을 사용하겠습니다(Site url : https://spring.io/tools/sts/all).

 

  스프링 프로젝트 생성시 new Spring Legacy Project Set Project Name & Spring MVC Project set Package → finish





이번 포스팅은 여기까지만 하겠습니다. 저도 아직 학생이라 막히던 부분도 많았고 앞으로도 많을 것이고 그때문에 막히던 부분은 다른사람들은 안 헤매었으면 하는 작은 바램이 있기에 친절히 작성하고싶지만 최근 개인적인 일들이 많아서 여기까지만 포스팅하고 빠른 시일 내에 CONTINUE 하겠슴.  

 

 


[DATABASE] 객체의 종류와 TABLE

  • 데이터베이스 객체
    • 종류

DATABASE OBJECT???

 

데이터베이스 객체로는 데이터를 저장해 놓고 꺼내 쓰는 가장 기본적인 객체인 테이블 부터 , 인덱스, 시노님, 시퀀스 등이 있는데, 대표적인 데이터베이스 객체들을 정리하면 아래 표와 같음.

 

DataBase's Object

EXPLAIN

TABLE

데이터 담고 있는 객체.

VIEW

하나 이상의 테이블 연결해서 마치 테이블인 것처럼 사요하는 객체.

INDEX

테이블에 있는 데이터를 바르게 찾기 위한 객체.

SYNONYM(동의어)

데이터베이스 객체에 대한 별칭을 부여한 객체.

SEQUENCE

일련번호 채번을

  사용되는 객체.

FUNCTION

특정 연산을 하고 값을 반환하는 객체.

PROCEDURE

함수와 비슷하지만 값을 반환하지 않는 객체.

PACKAGE

용도에 맞게 함수나 프로시저 하나로 묶어 놓은 객체.

  • 테이블
    • 테이블 생성[CREATE]

Ex)  CREATE TABLE 테이블명(

컬럼1   컬럼1_데이터타입   [NULL, NOT NULL],

컬럼2   컬럼2_데이터타입   [NULL, NOT NULL],

 . . .

컬럼3   컬럼3_데이터타입   [NULL, NOT NULL]

);

 

구성

LOW(), COLUMN()

생략가능

스키마, 테이블스페이스

 

  • 데이터 넣고 수정하고 삭제하는 데이터를 담고 있는 객체가 테이블 .
  • DBMS상에서 가장 기본적인 개체로 로우() 칼럼()으로 구성된 2차원 형태() 객체로 우리가 자주 사용하는 엑셀과 구조가 같다고 보면 이해하기 쉬울 것이다.
  • SQL 필요해 데이터를 조회, 삭제, 입력, 수정할 대상이며 결과를 담고 있는 .
  • 테이블을 설계하는 작업은 데이터베이스를 사용할 가장 기초적이고 중요한 단계임.

 

@TABLE 생성

@TABLE 생성 규칙

  1. 테이블명, 컬럼명의 최대 크기는 30BYTE.
  2. 트이블명, 컬럼명으로 예약어는 사용 불가능.
  3. 테이블명, 칼럼명으로 문자, 숫자, _ , $ , # 가능하며, 글자는 문자만 가능.
  4. 테이블에 사용 가능한 컬럼은 최대 255개임.

 

  • 데이터 타입 : column 저장되는 데이터의 타입을 가르키는 .

타입의 종류        

기본 타입(Oracle에서 제공하는 타입들)

사용자 정의 데이터 타입

 

문자 데이터 타입

설명

기본

CHAR(크기[BYTE  |  CHAR])

고정길이 문자, 최대 이천바이트

1BYTE

VARCARCHAR2(크기[BYTE  |  CHAR])

가변길이 문자, 최대 사천바이트

1BYTE

NCHAR(크기)

고정길이 유니코드 문자(다국어지원) 최대 이천바이트

1BYTE

NVARCARCHAR2(크기)

가변길이 유니코드 문자(다국어지원) 최대 사천바이트

1BYTE

LONG

최대 2기가 크기의 가변길이 문자형, 사용빈도 낮음

-

 

숫자 데이터 타입

설명

기본

NUMBER[(P, [S])]

가변숫자, P(1~38) S(-84~127) 십진수 기준, 최대 22BYTE

P=38, S=0

FLOAT[(P)]

NUMBER 하위 타입, P 1~128, 이진수 기준, 최대 22BYTE

128

BINARY_FLOAT

32BIT 부동소수점 , 최대 4BYTE

-

BINARY_DOUBLE

64BIT 부동소수점 , 최대 8BYTE

-

LONG

최대 2기가 크기의 가변길이 문자형, 사용빈도 낮음

-


 

 

 

  • 테이블 생성



 

  • 테이블 삽입

 

 

  • 파티션 테이블

@PARITION TABLE

 

테이블 내의 특정 칼럼값을 기준으로 데이터를 분할해서(파티션) 테이블을 생성하는 방법. 논리적으로는 하나의 테이블이지만 물리적으로는 분할한 만큼 파티션이 만들어져 입력되는 컬러맚에 따라 분할된 파티셧별로 데이터가 저장됨.

 

목적 : 대용량 테이블의 경우 관리 조회시 효율성과 성능을 높이기 위해.

 

Ex)

 판매회사의 대용량(100만건이라 가정) 매출정보가 담겨있는 SALES 라는 테이블이 있다. SALES에서 특정 데이터를 찾으려면 100만건을 모두 조회해봐야 한다. 인덱스를 사용하면 조금 수월해지겠지만, 그렇다하더라도 100만건을 조회하는건은 같다. 이때 판매일, 판매월과 같은 특정 칼럼들을 이용해 분할하게되면 전체를 조회하지않아도 된다.

 

 

 

 

[Example]

  • Card  테이블에 연도 (CreationTime) 컬럼을 추가하고 파티셔닝함.

 

1

2

3

4

5

6

7

8

 

create table businessCard(

ID INT NoT Null,

 Name varchar(255),

 Address varchar(255) ,

 Telephone varchar(255) , 

CreateTime DATE

) 

PARTITION BY RANGE(YEAR(CreationTime)) (

PARTITION p0 VALUES LESS THAN(2013),

PARTITION p1 VALUES LESS THAN(2014),

PARTITION p2 VALUES LESS THAN(2015),

PARTITION p3 VALUES LESS THAN MAXVALUE);  

 

Colored by Color Scripter

cs

 

 

  • 파티션 추가 와 삭제 

 

1

2

3

4

 추가

ALTER TABLE Card ADD PARTITION(PARTITION p4 VALUES LESS THAN(2005));

 삭제

ALTER TABLE Card DROP PARTOTION p4;

Colored by Color Scripter

cs

 

  • 파티션 분할 / 병합

 

1

2

3

ALTER TABLE CardREORGANIZE

 PARTITION p3 INTO(PARTITION p3 VALUES LESS THAN(2015),

PARTITION p4 VALUES LESS THAN MAXVALUE);

cs

▶ 파시션을 하여 정보를 나누웠는데도 P3에 데이터가 많은 경우 P3 P3 ,P4로 더욱 분할하는 경우

 

1

2

3

ALTER TABLE Card

REORGANIZE PARTITION p2,p3

 INTO(PATITION p23 VALUES LESS THAN(2014));

cs

▶파티션을 P2 , P3으로 만들었지만 데이터가 적어서 P23으로 병합하는 경우

 

 


[SVN, Eclipse] Subversive SVN connectors Install & SVN TEST

[SVN, Eclipse] Subversive SVN connectors Install & SVN TEST


Subclipse 설치 : 2018/04/15 - [분류 전체보기] - [SVN, Eclipse]Subclipse 4.2.3 Install

Subversive 설치 : 2018/04/15 - [분류 전체보기] - [SVN, Eclipse]Subversive - SVN Team Provider 4.0.5 Install

Visual SVN Server Install 설치 : 2018/04/15 - [분류 전체보기] - [SVN]Visual SVN Server Install


이전까지의 준비물들을 다운 받았으면 이제 제대로 연동해보자.

이번에는 마지막으로 " Subversive SVN connectors " 설치후 

프로젝트가 제대로 서버에 올라가지는지, 내려받아서 수정되는지

보여줄꺼임. 그럼


START!!




1. eclipse → Help → Install new software...

2. 하면 아래 창 뜸.




1. Work with에 " http://Subversive - http://community.polarion.com/projects/subversive/download/eclipse/3.0/update-site/ " 입력후

2. Add.

3. 목록에 subversive svn connectors, 와 subversive svn connectors Sources 두개가 뜸.

4. 둘다 체크 하고 NEXT!





1. 확인 후 next






1. NEXT




이로써 모든 재료는 준비되었음...




T  E  S  T
















































이렇게 테스트 까지 완료했다. 조금 부족한 부분이 있는거 같은데 추후에 올리겠음.

부족한 글이긴한데 이거 보고 많은 분들이 스겜했으면 좋겠다. 난 이거 5시간 넘게 걸렸다. 

◀ PREV 123 NEXT ▶