분류 전체보기 328

ENUM

1.열거형이란? 관련 상수(열거형 상수는 객체임)들을 같이 묶어 놓은 것을 말한다. java의 열겨형은 값과 타입 둘다 체크함 2. 열거형 정의하는 방법 enum 열거형 이름{ 상수명1, 상수명2, ...} enum Direction {EAST, SOUTH, WEST, NORTH} class Unit{ int x, y; Direction dir ; //열거형을 인스턴스 변수로 선언 void init(){ dir = Direction.EASE; //유닛의 방향을 EAST로 초기화(클래스의 static 변수를 참조하는 것과 동일) 열거형 상수 비교에 ==와 compareTo(비교연산자 사용 불가 대신 compareTo사용)사용가능 compareTo 같으면 0, 왼쪽이 크면 양수, 오른쪽이 크면 음수 3. 열..

정규화(Normalization)

1. 제1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다. 1) 다중 값을 가지는 경우 하나의 속성에는 하나의 값을 가져야 하고 다중 값이 들어갈 경우에는 고객 연락처라는 엔티티를 추가하여 따로 관리하자. 2) 다른 유형의 중복 데이터를 가지는 경우 중복 데이터를 분리하여 주문 상세라는 엔티티를 만들어 다른 유형의 중복 데이터 발생하지 않게 한다. 제2 정규형 : 엔티티의 일반 속성은 주 식별자 전체에 종속적이어야 한다. 여기서는 상품명이 식별자 전체가 아닌 상품 번호에만 종속되어있는 부분 종속에 해당한다. 상품명을 변경해 주어야 할 때 주문 상세에 상품명을 모두 변경해야 하고 많이 팔린 상품을 수정하는데 부하가 크게 증가한다 따라서 나누어 줘야 한다. 상품 엔티티를 추가해서 주문 상세 엔티티의..

CS/DataBase 2021.07.28

제11장 웹 공격 기술

1. HTTP에는 보안 기능이 없다. 웹사이트 대부분은 인증이나 세션 관리, 암호화 등의 보안 기능이 필요하지만 이들은 HTTP에 존재하지 않는다. SSH 프로토콜에는 프로토콜 레벨에서 인증이나 세션 관리 등의 기능이 준비되어 있지만 HTTP에는 없다. 따라서 웹 애플리케이션에서 인증이나 세션 관리 기능을 개발자가 설계하고 구현해야 한다. 2. 웹 애플리케이션에 대한 공격 1) 서버를 노리는 능동적 공격 능동적 공격은 공격자가 직접 웹 애플리케이션에 액세스 하는 공격 코드를 보내는 타입의 공격이다. 이 타입의 공격은 서버상의 리소스에 대해 직접 실행된다. 대표적인 예로는 SQL 인젝션과 OS 커맨드 인젝션 등이 있다. 2) 유저를 노리는 수동적 공격 일반적으로 a. 공격자가 설치한 함정에 유저를 유도하고..

람다식(Lamda expression)

1. 람다식이란? 자바는 람다식의 도입으로 인해 객체지향언어인 동시에 함수형 언어가 되었다. 람다식의 장점은 과거 메서드보다 간결하며 이해하기 쉽다는 것이다. 모든 메서드는 클래스에 포함되어야 해서 클래스를 새로 만들어야 했고 객체를 생성해야 메서드를 호출할 수 있었지만, 람다식은 람다식 자체로 이 모든과정을 해결할 수 있다. 람다식은 아래와 같이 표현된다. 반환타입 메서드이름(매개변수 선언){ 문장들} (매개변수 선언) -> {문장들 } //ex1) int max(int a, int b){ return a>b? a:b; } //람다식으로 변환하면 (int a, int b) ->{ return a>b? a:b;} (int a, int b) -> a>b? a : b (a,b) -> a>b? a:b //ex..

제9장. HTTP에 기능을 추가한 프로토콜/ 제10장 웹 콘텐츠에서 사용하는 기술

1. HTTP의 병목 현상 관련 HTTP에서는 서버의 정보가 갱신되었는지 확인하기 위해 클라이언트가 항상 서버 측에 확인하러 가야 한다. 만약, 서버 상의 정보가 갱신되지 않은 경우에는 불필요한 통신이 발생하게 된다. 리퀘스트는 클라이언트에서만 시작할 수 있고 리스폰스만 받는 것은 불가능하기 때문이다. (서버에서 통신을 개시하는 서버 푸시 기능은 예외) 2. 브라우저에서 양방향 통신을 하는 WebSocket WebSocket프로토콜이란 웹 서버와 클라이언트가 한번 접속을 확립하면 그 뒤의 통신을 모두 전용 프로토콜로 하는 방식으로 JSON이나 XML, HTML, 이미지 등 임의 형식의 데이터를 보내게 된다. HTTP에 의한 접속의 출발점이 클라이언트에 있다는 것은 변함이 없지만 한 번 접속을 확립하면 W..

제 8장 누가 액세스하고 있는지를 확인하는 인증

1. 인증이란? 특정 웹사이트에 들어가기 위해 로그인하는 과정이라고 생각하면 됨. 인증을 위한 수단으로는 아래의 것들이 있다. a. 패스워드 : 본인만 알고 있는 문자열 정보 b. 원타임 토큰 : 본인만이 가지고 있는 기기 등에 표시되는 한 번 쓰고 버리는 패스워드 등의 정보 c. 전자 증명서 : 본인(단말기)만이 가지고 있는 정보 d. 바이오 매트릭스 : 지문이나 홍채 등 본인의 신체 정보 e. IC 카드 등 : 본인 만이 가지고 있는 정보 HTTP에서 사용하는 인증 방법은 BASIC인증, DIGEST인증, SSL클라이언트 인증, 폼 베이스 인증 등이 있다. 구체적인 내용은 아래에서 살펴본다. 2. BASIC 인증 1) BASIC 인증이 필요한 리소스에 리퀘스트가 있을 경우 서버는 401 상태 코드와 ..

2. TDD(TestDrivenDevelopment) 시작

1. 암호 검사기능 구현하기 TDD는 처음에 테스트 코드를 작성하고 테스트 코드를 통과시키기 위한 메인 클래스를 작성하고 그 클래스를 중간중간에 리팩터링 한 뒤 다시 한번 테스트하는 과정을 거친다. 리팩터링을 하는 모습을 보면서 왜 코딩 테스트를 기업에서 필수적으로 채용과정에 포함시키는지 조금은 알 것 같다. 인터넷 상에서 누군가 코딩 테스트는 단순 문제풀이에 불과하다고 비판하는 모습을 본 적이 있다. 그런데 계속 코딩을 하고 리팩터링을 하면서 알고리즘 문제 푸는 것이 코딩의 근본 바탕인 것 같다는 생각이 들었다. 2. 테스트 코드 작성 순서 1) 초반에 쉬운 경우에서 어려운 경우로 진행 초반부터 다양한 조합을 검사하는 복잡한 상황을 테스트로 추가하면 해당 테스트를 통과시키기 위해 한 번에 구현해야 할 ..

테스트 주도 개발 시작하기 (TDD)

지금까지 최범균 님 책 Spring 4.0, 5.0, 객체지향과 디자인 패턴 등을 봐왔다. 최범균 님 책은 너무 좋은 것 같다. TDD를 공부시작하기 위해 '최범균저'라는 사실만 보고 이 책을 구매했다. 1. TestDrivenDevelopment 공부 계기 TDD를 공부하게 된 계기는 1) 남들이 흔히 말하길 개발을 할 때 정석은 테스트 코드를 짜한다 그래야 안정적인 프로그램을 만들 수 있다고 해서 2) 코드를 수정하고 재 컴파일을 하기 위해서 톰캣 서버를 계속 껐다 켰다 하는데 시간이 많이 들고 번거로웠다. 3) 데이테베이스를 미리 설계해서 데이터를 집어넣어 놓지 않아도 내가 작성한 코드가 의도한 바대로 잘 작동되는지 확인할 수 있어서 위와 같은 이유로 TDD공부의 필요성을 느끼고 공부를 시작한다.

6장 HTTP 헤더

1. 메시지 헤더 : HTTP 프로토콜의 리퀘스트와 리스폰스에는 반드시 메시지 헤더가 포함되어 있다. 메시지 헤더에는 클라이언트나 서버가 리퀘스트 리스폰스를 처리하기 위한 정보가 들어있다. 그리고 메시지 바디의 크기나 사용하고 있는 언어, 인증 정보 등을 브라우저나 서버에 제공하기 위해 사용된다. 예를 들어 Content-Type:text/html이라는 메시지 바디의 오브젝트 타입을 가리키는 헤더 필드가 있다. 2. Keep-Alive에 관하여 Http는 state less이며 connection less이다. 따라서 데이터를 주고받을 때마다 열고 닫고를 반복하는데 Keep-Alive를 설정하면 데이터를 지정한 시간 내에 지정한 횟수 내에서 데이터를 빈번하게 주고받을 수 있다. 1) Keep-Alive의..