• Home
  • About
    • 2Z photo

      2Z

      .

    • Learn More
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

[취준] 웹개발 필기테스트 정리

30 Oct 2018

Reading time ~4 minutes

목차

  • 세션과 쿠키의 차이
  • encryption과 hashing의 차이
  • clustered index와 Non clustered index
  • 스택, 큐, 덱의 차이
  • outer join
  • GROUP BY
  • JavaScript
    • undefined와 null의 비교
    • === 연산
    • 전위증가, 후위증가 연산
  • 정렬 알고리즘

session과 cookie

HTTP 연결은 stateless하다는 특징을 갖고 있는데,
session과 cookie를 사용함으로써 클라이언트와 서버가 연결을 유지하고 있는 효과를 볼 수 있다.

1. session ?

  • 클라이언트와의 연결 상태를 지속적으로 서버측에 저장하는 객체
  • 웹 브라우저마다 다른 세션을 사용 (session ID로 구분)
  • 세션 : 브라우저 = 1 : 1
  • 생성 - jsp의 기본객체 중 하나로 별도의 설정을 안했다면 자동 생성됨
    <%@ page session = "true" %>
    // 이렇게 페이지 디렉티브에서 설정할 수도 있음, true가 기본값
    
  • 종료 - 유효시간이 지나면 삭제되고, 다음 요청 때 새로 생성 / 만약 유효시간을 0 또는 음수로 지정했다면 유효시간을 갖지 않게 되므로 반드시 종료를 명시해 주어야 함
    session.invalidate(); // 세션 종료 메서드
    
  • request 객체를 이용한 session 생성
    <%@ page session = "false" %>
    <%
    // session이 존재하면 해당 객체를 리턴, 존재하지 않으면 생성 후 리턴함
    HttpSession httpSession = request.getSession();
    %>
    
  • session을 이용한 로그인
    1. 로그인에 성공하면 session에 특정 속성을 저장한다.
    2. 이후 세션 객체에 특정 속성이 저장되어 있으면 로그인 상태로 간주한다.
    3. 로그아웃시 session.invalidate()를 호출하여 세션 객체를 삭제한다.
      // session에 속성 저장, setAttribute(키, 값);
      session.setAttribute("MemberId",id);
      

2. cookie ?

  • "웹 브라우저에서 보관하는 데이터"로 웹 서버에 요청을 보낼 때 함께 전송
  • 이름, 값, 유효시간, 도메인, 경로 로 구성
  • 이름, 값 이 가장 중요!
  • 하나의 브라우저는 여러 개의 쿠키를 저장할 수 있는데 “이름”으로 쿠키를 구분
  • “값”은 인코딩 처리 되어 저장
  • 유효시간을 별도로 설정하지 않으면 브라우저 종료시 쿠키 삭제
  • JSP에서 쿠키 생성 (Cookie 클래스 사용)
    <%
    Cookie cookie = new Cookie("Name","value"); //쿠키 객체 생성
    response.addCookie(cookie); // 브라우저에 쿠키 정보 전송
    %>
    

3. 차이점 정리

  • 쿠키는 웹 브라우저에 세션은 웹 서버에 저장되는 데이터이다.
  • 브라우저 : 쿠키 = 1 : 多
  • 브라우저 : 세션 = 1 : 1

encryption과 hashing

1. encryption ?

[암호화]

  • '키'를 사용하여 암호화와 복호화를 수행(양방향)
  • 대칭형 암호화와 비대칭형 암호화가 있음

대칭형 암호화

  • 암호화와 복호화에서 동일한 키(=대칭키)를 공유하는 방법
  • 안전하지 않다는 단점이 있음

비대칭형 암호화

  • 공개키와 비밀키 두개를 사용하는 방법
  • 대칭형에 비해 안전하지만, 속도가 느림

2. hashing ?

  • 데이터를 ‘고정된’길이의 데이터로 매핑하는 방법
  • 해시 알고리즘마다 매핑하는 데이터의 길이, 매핑하는 방법이 다양
  • 단방향성 - 암호화만 가능하며 한번 암호화 되면 복호화 불가
  • 복호화가 필요없는 비밀번호 등에 사용되며, 입력 값에 대해 ‘해시 값’이 일치하는지에 대한 확인을 수행
  • 해싱의 문제점 - 충돌(Collision): 서로 다른 입력 값에 대해 같은 해시 값이 나오는 경우

3. 차이점 정리

Encryption은 ‘키’를 사용하며 ‘양방향’암호화 방식이고,
Hashing은 ‘키’를 사용하지 않으며 ‘단방향’암호화 방식이다.


ClusteredIndex와 NonClusteredIndex

[인덱스]

  • 책의 맨뒤에 ‘찾아보기’와 같은 역할
  • RDBMS에서 검색 성능을 향상시키기 위해 사용하는 기술
  • Tree 구조로 색인화
  • Primary Key 를 생성하면 자동으로 그에 대응하는 인덱스가 생성됨
  • SELECT 문의 WHERE절 등에 사용되며, UPDATE, DELETE, INSERT에는 사용되지 않음

[clustered index VS non clustered index]

  Clustered Index NonClustered Index
테이블 당 최대개수 1개 249개
정렬 행을 물리적으로 재배열한 결과 저장 물리적으로 재배열 하지 않음
인덱스 페이지 용량 non clustered 보다 작음 clustered 보다 큼

[행을 재배열?]
clustered index가 생성된 컬럼을 기준으로 정렬된 결과가 DB에 저장된다.
따라서 데이터를 추가한 순서대로 조회되지 않고 정렬된 결과가 조회된다.


Stack

  • LIFO (후입선출) 자료 구조
  • 주요 연산 : 삽입 - push(), 제거 - pop()
  • 콜 스택, 자동 메모리 스택

Queue

  • FIFO (선입선출) 자료 구조
  • 주요 연산 : Enqueue(Rear에서 수행) , Dequeue(Front에서 수행)
  • 자바에서 제공하는 큐 인터페이스, 주로 링크드리스트 객체로 생성하여 사용
  • 메소드: offer(), peek() - 제거X , poll() - 제거O
  • 버퍼

Deque(덱)

  • Double-ended Queue
  • 양쪽 끝에서 삽입, 삭제 모두 가능한 자료구조
  • 스택과 큐를 합친 형태
  • 스케줄링

undefined와 null

1. undefined

자바 스크립트의 자료형 중 하나로 선언하지 않은 변수 또는 선언 했지만 초기화 하지 않은 변수를 undifined 자료형 이라고 함

alert(typeof (variable));

위와 같은 코드가 실행되면, undefined 라고 출력

  • typeof(): 숫자, 문자열, bool 과 같은 자료형을 확인하는 함수

  • 자바스크립트에서 Boolean(undefined) 는 false

2. undefined와 null의 비교

  • 공통점: 둘다 boolean 값이 false이다.
  • javascript에서 false 인 자료형에는 undefined / null / 0 / NaN / ““(빈 문자) 가 있다.
var a;
var b = null;

alert(a); // undefined
alert(b); // null

alert(typeof(a)); // undefined
alert(typeof(b)); // object

alert(Boolean(a));  // false
alert(Boolean(b));  // false

alert(a == b);   // true, "false == false → true"
alert(typeof(a) == typeof(b));  // false, "undefined == object → false"

alert(a === b); // false, a==b → true, typeof(a) == typeof(b) → false 이기 때문에

일치 연산자

[자바스크립트의 일치 연산자]
자료형을 확실하게 구분하고자 할 때 사용.

자료형과 값이 모두 일치하는지 확인
=== : 양쪽 자료형과 값이 일치하는지 확인
!== : 양쪽 자료형과 값이 불일치하는지 확인
  alert(0 == false);  //true 출력
  alert(0 === false); //false 출력 (좌변은 숫자 자료형, 우변은 bool 자료형)


취준 Share Tweet +1