Java Programming - (4)

kangking·2024년 5월 31일

Java

목록 보기
4/10
post-thumbnail

스레드

프로세스

프로세스는 실행 중인 프로그램을 구분하는 단위

스레드

프로세스 내에서의 실질적인 동작 단위로 하나의 프로그램은 여러개의 스레드에서 동작한다.

  • 톰캣도 기본적으로 스레드로 동작한다(그렇지 않으면 요청을 선착순으로 처리해야하기 때문)

스레드의 문제

  • 동시성 제어

    동시성 문제는 하나의 코드를 여러개의 스레드가 동시에 실행시켰을 때 발생한다.

  • 스레드 세이프

    동시성 문제가 해결된 상태로, 각각의 스레드가 순차적으로 작업을 수행했을 때와 동시에 작업을 수행했을 때 결과가 같은 것

  • synchronized

    동시성 문제를 해결하는 대표적인 방법으로, 해당 키워드를 붙은 코드를 실행할때에는 다른 스레드의 접근을 못하게 일종의 잠금을 걸어 동시성 문제를 해결한다.


네트워크

단방향 통신

  • WebBrowser
  • WebServer

양방향 통신

  • 채팅 서버

DTO(Data Transfer Object)

데이터 송수신에 사용하는 전용객체(직접 정의하여 사용)

DAO(Data Access Object)

DB 접속해서 SQL 작업만 하는 전용객체

Servlet

HTTP요청을 처리하는 객체


CP(Connection Pool)

웹 애플리케이션이 실행될 때 미리 대상과의 Connection을 만들어두고 요청에 따라 이를 사용, 반환하는 방식

CP이전의 DB Connection문제?

  • DB 연결만 할때

    새로고침할 때마다 DB연결이 생성, 연결이 계속 쌓임

  • DB 연결 후 끊기

    새로고침할 때마다 DB연결이 하나 생성, 다 사용하면 연결 종료

    연결이 몰리게 될 경우 MAX Connection을 넘을 위험이 있음

  • DBCP 적용(싱글톤X)

    새로고침할 때마다 DB 연결이 10개 생성, 연결이 계속 쌓임

  • DBCP 연결 후 끊기

    새로고침할 때마다 DB 연결이 10개 생성, 연결이 계속 쌓임

  • DBCP 적용(싱글톤O)

    처음 실행될 때만 DB연결이 10개 생성, 10개의 연결을 다 쓰면 다음 사용자는 접속X

  • DBCP 연결 후 끊기(싱글톤O)

    처음 실행될 때만 DB 연결이 10개 생성, 다른 사용자가 반납한 연결을 돌려서 사용


상태 저장

Stateful

서버가 클라이언트의 상태를 저장함

Stateless

서버가 클라이언트의 상태를 저장하지 않음

상태를 저장하기 위한 방법

  • 세션

    서버 프로그램에 특정 데이터를 저장해두는 것

  • 쿠키

    클라이언트 프로그램에 특정 데이터를 저장해두는 것

  • 쿠키와 세션의 사용

    최초 로그인시 클라이언트 정보를 세션에 저장 후 해당 클라이언트에 쿠키값 저장
    이후 요청시 쿠키값으로 세션을 확인하여 로그인 완료

입력값 검증

개발자가 반드시 해줘야하는 작업으로, 사용자가 입력하는 모든 값들을 검증해야한다.


보안

SQL injection

SQL이 정상적으로 동작하지 않도록, SQL에서 사용하는 특수문자 등을 포함한 값을 넘겨주는 기법

이를 방어하기 위해서 Statement를 개선한 PreparedStatement를 사용한다

XSS

html의 스크립트 형태로 DB에 저장시켜서 나중에 이를 불러올 때 해당 스크립트 태그 안에 있는 java script코드를 실행시키는 기법

profile
하루하루 의미있게

0개의 댓글