개발/Spring

    데이터베이스

    DBMS : 데이터베이스를 관리해주는 시스템 (오라클, MySQL과 같은 데이터베이스 관리 프로그램) 데이터베이스 : 데이터를 저장할 공간 DBMS 클라이언트 : 데이터베이스를 사용하는 어플리케이션. DB 데이터를 저장하려면 데이터를 저장할 공간인 데이터베이스를 만들어줘야 한다. GRANT 쿼리 -> MySQL, DBMS 계정에 권한을 부여할 때 사용하는 명령어, all privilieges이면 모든 권한을 부여한다. SQL기초 Sturected Query Lanaguage 데이터베이스로부터 데이터를 조회하고 삭제하는 등의 작업을 수행할 때 사용하는 언어 CHAR 확정 길이의 문자열을 저장한다. 표준의 경우 255글자까지만 저장 VARCHAR 가변 길이의 문자열을 저장함. 표준의 경우 255글자까지만 저..

    자바 HashSet

    충돌 해결 어떻게 하는지 thread-safe 구현 방식 HashSet의 중복 해결 방법 public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable 중복된 원소를 허용하지 않고 순서 역시 고려되지 않음. 객체를 저장하기 전에 먼저 객체의 hashCode() 메서드를 호출하여 해시코드를 얻고 이미 저장되어 있는 객체들의 해시코드와 비교한다. 만약 동일한 해시코드가 있다면 다시 equals()로 두 객체를 비교해 참이면 저장 안함. 이미 키에 매핑된 값이 있으면 그전의 값을 덮어씌운다고 명시되어 있다. /** * Associates the specified value with the specified key ..

    필터

    JSP/서블릿 등을 실행하기 이전에 요청이 올바른지 또는 자원에 접근할 수 있는 권한ㅇ르 가졌는지의 여부를 미리 처리할 수 있다. 생성한 응답 데이터를 변경하거나 취소할 수 있는 기능을 구현할 수도 있다. 필터란 : HTTP 요청과 응답을 변경할 수 있는 재사용 가능한 클래스이다. 필터는 객체의 형태로 존재하고,중간에 존재하며, 최종 자원의 요청 결과를 알맞게 변경할 수도 있다. 여러 개의 필터가 모여 체인을 형성할 수도 있다. 필터는 정보 변경 뿐만 아니라 흐름도 변경 가능함. 클라이언트의 요청을 다음 단계로 보내는 것이 아니라, 다른 자원의 결과를 클라이언트에 전송할 수 있다. 이러한 기능은 인증이나 권한 검사와 같은 기능을 구현할 때 용이하게 사용할 수 있다. 필터 설정하기 web.xml 또는 어노..

    MVC 패턴 구현

    JSP 웹앱 구조는 크게 모델 1 구조와 모델 2 구조로 나뉜다. JSP에서 모든 로직과 출력을 처리하느냐 아니면 출력만 처리하느냐에 따라서 모델 1, 모델 2 구조로 나뉜다. 모델 2 구조 웹브라우저의 요청을 하나의 서블릿이 받는ㅇ다. 서블릿은 웹브라우저의 요청을 알맞게 처리한 후 그 결과를 보여줄 JSP페이지로 포워딩하낟. 포워딩을 통해 요청 흐름을 받은 JSP페이지는 결과 화면을 클라이언트에 전송한다. 이 구조의 특징은 모든 요청을 단일 진입점 = 하나의 서블릿에서 처리한다는 점 하나의 서블릿이 웹 브라우저의 모든 요청을 받기 때문에 서블릿은 웹브라우저의 요청을 구분하는 방법이 필요하다. 웹브라우저의 요청을 처리한 후 웹브라우저에 보이게 될 응답 화면을 생성한 JSP를 선택한다. 모델 : 비지니스 ..

    서블릿이란

    클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해주는 자바 프로그램. 서블릿 개발과정 서블릿 규약에 따라 자바 코드 작성 자바 코드를 컴파일 하여 클래스 파일 생성 클래스 파일을 /WEB-INF/classess 폴더에 패키지에 알맞게 위치시킨다. web.xml파일에 서블릿 클래스를 설정한다. 톰캣 등 컨테이너를 실행한다. 웹브라우저에서 확인한다. 서블릿 클래스를 구현하려면 먼저 HttpServlet 클래스를 상속받은 클래스를 작성해야 한다. 처리하고자 하는 HTTP방식에 따라 알맞은 메서드를 재정의 해서 구현해야 한다. 예를 들어 서블릿이 GET 방식의 요청을 처리해야 하면, doGet 메서드를 오버라이드 하면 된다. doGet() 메서드는 HttpServletRequest, HttpServ..

    데이터베이스

    데이터베이스란? 데이터베이스(DB: Database)는 통합하여 관리되는 데이터의 집합체를 의미합니다. 이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리됩니다. 이러한 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리됩니다. 데이터베이스를 관리하는 이러한 미들웨어를 데이터베이스 관리 시스템(DBMS: Database Management System)이라고 부릅니다. 다수의 웹 어플리케이션이 회원정보, 게시글, 컨텐츠 등을 저장하기 위해 데이터베이스를 사용한다. 데이터의 손실이 발생하면 안되기 때문에 트랜잭션을 보장하여 데이터의 신뢰성을 높여주기도 한다. 테이블과 레코드 RDBMS에서 데이터를 저장하는 장소를 테이블이라고 한다. 테이블은 어떤 데이터를 저..

    자바 ConcurrentHashmap

    Thread-Safe 함을 보장하면서도 높은 성능을 보장하는 HashMap 이다. 즉 해쉬맵을 쓰레드 세이프하도록 만든 클래스. 하지만 HashMap과는 다르게 key, value에 null을 허용하지 않는다. ConcurrentHashMap은 concurrent multi-trhead환경에서 안정적으로 동작하고, HashTable과 synchorined map보다 더 나은 성능을 가지고 있다. 이유는 ConcurrentHashmap은 map의 일부에만 lock을 거는 반면 앞의 두가지는 map 전체에 lock을 건다 HashMap, Hashtable과 동일한 스펙을 제공한다. 그러나 차이점은 모든 작업이 쓰레드 세이프 임에도 불구하고 검색 작업에는 Lock이 수반되지 않으며 전체 테이블을 잠궈야 하는 ..

    자바 Hashtable, HashMap

    HashMap과 HashTable을 정의한다면, '키에 대한 해시 값을 사용하여 값을 저장하고 조회하며, 키-값 쌍의 개수에 따라 동적으로 크기가 증가하는 associate array이다 (Hashtable = 쓰레드 세이프함, HashMap = 쓰레드 세이프 하지 않음) HashMap은 각 객체에 기본적으로 hashCode() 메서드가 반환하는 값을 사용하는데 결과 자료형은 32int이다. 논리적으로 생성 가능한 객체의 수가 2^32보다 많을 수 있다. 따라서 많은 해시 함수를 이용하는 associative array구현에서는 메모리를 절약하기 위해서 실제 해시 함수 표현 정수 보다 작은 원소가 있는 배열만을 사용한다. int index = X.hashCode() % M; Open Addressing ..

    JSP의 동작 원리

    WAS는 JSP 페이지에 대한 요청이 들어오면 다음과 같이 처리한다.; JSP에 해당하는 서블릿이 존재하지 않을 경우 JSP 페이지로부터 자바 코드를 생성한다.(변환 translation 단계) 자바 코드를 컴파일 하여 서블릿 클래스를 생성한다. (컴파일 단계) 서블릿에 클라이언트 요청을 전달한다 서블릿이 요청을 처리한 결과를 응답으로 생성한다. 응답을 웹브라우저로 전송한다. JSP에 해당하는 서블릿이 존재하는 경우 서블릿에 클라이언트 요청을전달 서블릿이 처리한 결과를 응답으로 생성 응답을 브라우저로 전송 JSP 페이지를 요청하는 경우 직접 실행하는 것이 아니라 , JSP를 자바 소스 코드로 변환한 뒤 컴파일 해서 생성한 서블릿을 실행하는 것이다. 이를 변화 ㄴ단계라고 하며, 자바 코드를 서블릿 클래스로..

    프로세스, 쓰레드란(자바, OS)

    파일 : 하나의 단위로 취급되는 연관된 레코드의 모음. 자기테이프, 디스크 등의 주기억 장치에 존재함 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일 프로세스 : 프로그램을 메모리 상에서 실행중인 작업. 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스, 운영체제로부터 시스템 자원을 할당받는 작업의 단위, 스레드 : 프로세스 안에서 실행되는 여러 흐름의 단위 기본적으로 프로세스마다 최소 1개의 스레드를 보유하고 있다 Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령) Data : 전역변수, 정적변수, 배열 등 초기화된 데이터 (초기화된 데이터) Heap : 동적 할당시 사용 (new(), mallock()) Statck : 지역변수, ..