전체 글
-
데이터베이스 설계에서 중요한점Database 2024. 4. 2. 15:11
데이터베이스의 확장 DB에 저장되는 데이터의 양은 지속해서 추가되니 시스템 운영에 영향을 주지 않게 설계되어야 함. 호율성 응답시간 단축, 저장 공간 최적화 등을 통해 빠르게 구동할 수 있어야 함 회복 시스템에 장애가 발생 시 장애 발생 직전의 상태로 복구할 수 있어야 함 보안 인가되지 않은 사용자로부터 데이터의 수정 및 삭제를 막아야 함 무결성 삽입, 삭제, 갱신 등의 작업 이후에도 데이터베이스의 데이터들은 정해진 제약 조건을 유지해야 함 일관성 자료 검색을 요청받으면(질의어, SQL 등) 항상 동일한 응답(결과)를 보여야 함
-
private 메서드에 @Transactional이 적용될까?Spring 2024. 4. 2. 15:08
Spring은 AOP를 사용해서 @Transactional 애너테이션을 처리하고, 이 과정에서 동적으로 프록시 객체를 생성한다. 생성된 프록시 객체는 원래의 Bean 객체를 대신해서 호출된다. private 메서드나 private 필드는 해당 클래스에서만 접근 가능하기 때문에 외부에서 접근해서 프록시 객체를 생성할 수 없게 되는 것이다. 그래서 @Transactional 애너테이션을 가지고 있는 private 메서드에 접근하려고 해도 프록시 객체를 생성할 수 없기 때문에 해당 애너테이션을 무시하게 된다. 하지만 @Transactional 애너테이션이 적용된 public 메서드에서 private 메서드를 호출하면 해당 private 메서드에도 Transaction이 적용된다. @Transactional S..
-
쿠키란 무엇인가?CS 지식 2024. 4. 2. 14:41
쿠키 Cookie HTTP의 일종으로 웹사이트 방문시, 그 사이트가 사용하고 있는 서버에서 사용자의 클라리언트에 저장하는 기록 데이터 파일 HTTP에서 클라이언트의 상태정보를 클라이언트에 저장해두었다가 필요시 정보를 참조, 재사용 한다. 쿠키 특징 이름, 값, 만료일, 경로정보 로 구성 클라이언트에 총 300개의 쿠기 저장 가능 하나의 도메인다 20개의 쿠키를 가질 수 있다. 하나의 쿠키는 4KB까지 저장 가능 쿠키 동작순서 1. 클라이언트 요청 (사용자가 웹사이트 접근) 2. 웹 서버는 쿠키 생성 3. 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄때 같이 클라이언트에 넘긴다. 4. 넘겨받은 쿠키는 클라이언트가 가지고 있다가 다시 서버에 요청 시, 쿠키를 함께 전송 5. 동일 사이트 재방문시 클라이언..
-
Session이란 무엇인가CS 지식 2024. 4. 2. 14:37
세션이란? - 클라이언트로 부터 오는 일련의 요청을 하나의 상태로 보고 그 상태를 일정하게 유지하는 기술 - 클라이언트가 웹 서버에 접속해있는 상태가 하나의 단위 세션은 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장합니다. 브라우저를 닫거나 서버에서 세션을 삭제하면 세션이 삭제됩니다. 세션은 각 클라이언트의 고유세션 ID를 부여하는데, 이것을 클라이언트를 구분하여 각 클라이언트의 요구에 맞는 응답을 반환합니다. 세션 특징 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보 저장 웹 서버에 저장되는 쿠키 (=세션쿠키) 브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제되므로, 쿠키보다 보안이 좋다. 저장 데이터에 제한이 없다. 각 클라이언트의 고유 세션ID를 부여한다. 세션ID로 클라이언트를 ..
-
HTTPS란?CS 지식 2024. 4. 2. 13:45
HTTPS(Hyper Text Transfer Protocol Secure)란? HTTP에 데이터 암호화가 추가된 프로토콜이다. HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다. HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작한다. [참고] TLS Transport Layer Security의 줄임말. 과거 SSL에서 발전하며 이름이 변경 된 것이다. 하지만 아직도 SSL이란 명칭이 많이 사용되고 있다. 대칭키 암호화와 비대칭키 암호화 HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있..
-
HTTP란 무엇인가?CS 지식 2024. 4. 2. 13:23
HTTP (HyperText Transfer Protocol) 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다. HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다. HTTP 동작 클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다. HTML 문서만이 HTTP 통신을 위한 유일한 정보 문서는 아니다. Plain text로 부터 JSON 데이터 및 XML과 같..
-
REST란 RESTful란CS 지식 2024. 3. 25. 21:20
REST란 - 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미 - URI를 통해 자원을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 행위를 나타낸다. REST 구성 요소 1. 자원 : URI - 클라이언트는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다. 2. 행위 : HTTP Method - HTTP Method를 사용하여 자원에 대한 행위를 표현한다. - POST, GET, PUT, DELETE REST API란? - REST 아키텍쳐 스타일에 부합하는 API - 6가지 중 Uniform Interface에 초점을 두어 작성 1. 자원의 식별 => 자원..
-
Clean Code - 6장 객체와 자료 구조주니어 개발자 2022. 4. 10. 11:27
변수를 비공개(private)로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 조회(get) 함수와 설정(set) 함수를 당연하게 공개(public)해 비공개 변수를 외부에 노출할까? 자료 추상화(119.p) 구현을 감추려면 추상화가 필요하다! 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. 자료/객체 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조는 자료를 그대로 공개하여 별다른 함수는 제공하지 않는다.