반응형

객체지향(OOP - Object Oriented Programming) 이란?

  • OOP는 프로그래밍 패러다임 중 하나로 수많은 객체들간의 상호작용으로 하나의 프로그램을 완성해나가는 프로그래밍을 의미한다.
  • 현실세계에 존재하는 사물을 모델링하여 클래스 자료형 작성 후 객체(Object)를 생성한 후 객체를 이용해 프로그램을 작성하는 방법
  • 객체지향의 특성은 캡슐화, 상속, 추상화, 다형성

 

AOP(Aspect-Oriented Programming) 란?

  • AOP (Aspect-Oriented Programming) 는 관점 지향 프로그래밍으로 로그처리, 보안, 트랜젝션 관리 그리고 예외사항 처리 등의 코드를 단일 모듈로 각각 작성하고 필요한 시점에 핵심코드를 삽입하여 동작하게 하는 것

 

객체, 클래스, 메소드 란?

클래스(Class)

  • 유사한 특징을 지닌 객체들의 속성을 묶어 놓은 집합체
  • 동일한 속성과 행위를 수행하는 객체들의 집합

★ 클래스 선언 방법 ★

public class 클래스명 { 
	필드(Field); //메소드에서 필요로 하는 정보를 제공할 목적의 변수 : 변수선언 
	... 
	생성자(Constructor); //인스턴스 생성을 목적으로 하는 메소드 
	... 
	메소드(Method); //기능을 제공할 목적의 명령들의 모임 
	... 
}

 

메소드(Method)

  • 필드에 저장된 정보를 제어하기 위한 명령들의 모임 → 기능

 

오버로딩, 오버라이딩 이란?

메소드 오버로드(Method Overload)

  • 클래스에 동일한 이름의 메소드를 선언할 수 있는 방법
  • 동일한 기능을 제공하는 메소드는 같은 이름의 메소드명으로 선언하는 것을 권장
  • 같은 메소드 이름, 다른 매개변수로 다수의 메소드를 중복 정의

 

★ 오버로드 작성 규칙 ★

  • 클래스에서 동일한 메소드명으로 선언하며 메소드 파라메터의 갯수,자료형등을 다르게 선언
  • 메소드의 접근지정자, 반환형은 오버로드와 무관
  • 다형성 : 동일한 이름의 메소드를 호출해도 상태에 따라서 다른 메소드가 호출되어 기능 제공

→ 파라메터(매개변수)에 전달되는 값에 따라서 다른 메소드가 호출되서 실행

→ 메소드 오버로드, 메소드 오버라이드

→ 파라메터에 전달되는 값에 따라 다른 메소드 호출

 

메소드 오버라이딩(Method Overriding)

  • 같은 메소드 이름, 같은 매개변수로 다수의 메소드를 재정의 (덮어씌우기)

 

서블릿 생명주기

  1. init() 메소드
    → 서블릿 객체 생성 시 호출 (1번만 호출)
    서블릿에 대한 초기화 작업을 위한 메소드
    # 서블릿 클래스의 생성자는 서블릿 관련 초기화 작업에 부적절하다.

  2. service() 메소드(doGet() 또는 doPost())
    → 서블릿 객체를 이용(클라이언트 요청)시 호출되는 메소드(요청할때마다 호출)
    요청에 대한 응답처리를 하기 위한 메소드
  3. destroy() 메소드
    → 서블릿 객체 소멸 시 호출 (1번만 호출)
    서블릿에 대한 마무리 작업을 위한 메소드

 

GET 과 POST의 차이점

URL 요청 → GET 또는 POST

  • GET
    • URL에 QueryString을 사용하여 테이터 전송
    • 소용량 데이터 전송 또는 보안이 필요없는 데이터 전송
  • POST
    • http 프로토콜을 사용하여 데이터 전송
    • 대용량 데이터 전송 또는 보안이 필요한 데이터 전송

 

inner join, outer join

  • inner join
    • 두 테이블에서 특정 조건을 만족하는 결과만 반환한다. (교집합)
    • 두 테이블에서 존재하는 값만 반환한다. (null값은 포함되지 않는다.)
  • outer join
    • 두 테이블에서 기준이 되는 테이블은 모든 결과를 반환하고, 기준이 아닌 테이블은 조건에 만족하는 결과만 반환 (null 값 포함)
    • left join과 right join 으로 구분

 

DAO, DTO, VO 란?

DAO(Data Access Object)

  • DAO(Data Access Object)의 약자로 데이터베이스의 data에 접근하기 위한 객체이다.
  • DataBase 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용합니다.

DTO(Data Transfer Object)

  • DTO : DTO(Data Transfer Object)는 계층간 데이터 교환을 위한 자바빈즈를 의미한다.
  • 계층간 : Controller, View, Business Layer, Persistent Layer 등을 말하며 각 계층간 데이터 교환을 위한 객체를 의미한다.
  • DTO는 로직을 가지지 않는 순수한 데이터 객체이고 getter, setter 메소드만 가진 클래스를 의미합니다.

VO(Value Object)

  • VO : VO(Value Object)는 DTO와 혼용해서 쓰이긴 하지만 미묘한 차이가 있습니다.
  • VO는 값 오브젝트로써 값을 위해 쓰인다. 자바는 값 타입을 표현하기 위해 불변 클래스를 만들어서 사용하는데 불변이라는 것은 readOnly 특징을 가진다.
  • 이러한 클래스는 중간에 값을 바꿀 수 없고 새로 만들어야 한다는 특징이 있다.
반응형

 

젠킨스(Jenkins)란?

  • 빌드를 자동화 해주는 툴이다.
  • 빌드 : 서버에 올릴 수 있는 상태로 만드는 것
  • 기능 1 : 대쉬보드 기능 제공 - 여러가지 배포 작업의 상황을 모니터링 할 수 있음
  • 기능 2 : 배포 스크립트를 개발자 로컬에서도 실행할 수 있는데 젠킨스 프로그램을 띄워놓으면 스케줄링을 해준다.
  • 셋팅이 어렵고 잘 안되고 힘들어서 잘 안 쓰게 된다.

 

재귀

  • 재귀함수 : 자기자신을 호출하는 함수
  • 자신의 복사본을 호출하여 더 작은 문제를 풀게함으로써 문제를 해결한다.

 

로우 레벨 지식

  • 로우 레벨 프로그래밍 언어는 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어로, 일반적으로 기계어와 어셈블리어를 말한다.
  • 실행속도가 매우 빠르지만 배우기가 어려우며 유지보수가 힘들다.
  • 기계어 : 0과 1의 이진수로 프로그램을 하는 기계어는 컴퓨터가 바로 읽을 수 있다
  • 어셈블리어 : 기계어를 보완하기 위해 나온 언어. 기계어와 명령어가 1:1로 대응되는 단어들로 구성되어 있다.
    1. 명령 실행 속도가 가장 빠르다.
    2. 매우 세밀하게 프로그램 해야한다.
    3. 어셈블리어는 하드웨어 특성을 탄다.
  • 어셈블리어 장점
    1. 프로그램의 실행 속도가 매우 빠르다.
    2. 프로그램의 크기가 매우 작다.
    3. 어떤 프로그램이라도 만들 수 있다.
    4. 어떤 기계에서도 사용 가능
  • 어셈블리어 단점
    1. 배우기가 어렵다.
    2. 큰 프로그램을 만들기 어렵다.
    3. 프로그래밍 시간이 오래 걸리고 디버깅이 어렵다.
    4. 제작된 프로그램이 하드웨어별 특성을 탄다.

 

멀티 스레드 지식

  • 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩이라고 한다.
  • 하나의 프로그램이 동시에 여러개의 일을 수행할 수 있도록 해주는 것이다.

문제점

  • 멀티 프로세스 기반으로 프로그래밍을 할 때는 프로세스 간 공유하는 자원이 없기 때문에 동일한 자원에 동시에 접근하는 일이 없었지만 멀티 스레딩을 기반으로 프로그래밍할 때는 이 부분을 신경써줘야 한다.
  • 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다.
  • 그렇기 때문에 멀티 스레딩 환경에서는 동기화 작업이 필요하다.
  • 동기화를 통해 작업 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 컨트롤 하는 것이다.
  • 하지만 이로 인해 병목 현상이 발생하여 성능이 저하될 가능성이 높다.
  • 그러므로 과도한 락(lock)으로 인핸 병목 현상을 줄여야 한다.
  • 공유 자원이 아닌 부분은 동기화 처리를 할 필요가 없다. 즉, 동기화 처리가 필요한 부분에만 synchronized 키워드를 통해 동기화하는 것이다.
  • 불필요한 부분까지 동기화를 할 경우 현재 쓰레드는 락(lock)을 획득한 쓰레드가 종료하기 전까지 대기해야한다. 그렇게 되면 전체 성능에 영향을 미치게 된다.
  • 즉 동기화를 하고자 할 때는 메소드 전체를 동기화 할 것인가 아니면 특정 부분만 동기화할 것인지 고민해야 한다.

 

스레드와 프로세스 차이

  • 멀티 프로세스 : [데이터영역, 힙, 스택] 영역 모두를 비공유
  • 멀티 스레드 : [데이터영역, 힙, 스택] 영역 중 스택 영역만 비공유
  • 프로세스는 메모리에 적재(load)되어 실행되고 있는 프로그램을 말한다. 정적인 프로그램과 달리 프로세스는 실제 실행 중인 프로그램을 일컫기 때문에 동적이라고 표현하기도 한다.
  • 스레드는 프로세스 내에서 실행되는 흐름이다.
반응형

+ Recent posts