Computer Science
-
[CS] DTO EntityComputer Science/CS 2024. 5. 6. 12:32
DTO : 클라이언트와 서버 간 데이터 전송을 위해 설계된 객체Entity : 데이터베이스에 저장되는 데이터 객체로, 데이터베이스와 직접적으로 연결 DTOData Transfer Object 데이터 전송 객체프로세스 간에 데이터를 전달하는 객체이다.원격 인터페이스로 작업을 할 때 호출에 따른 비용이 비싸기 때문에 요청의 횟수를 줄여야 하고, 이를 위해 한 번의 요청에 더 많은 데이터를 전송해야 한다.외부와 통신하는 프로그램에게 호출은 큰 비용이며, 이를 줄이고 더욱 효과적으로 값을 전달할 필요가 있다.이를 위해 데이터를 모아 한 번에 전달하는 클래스를 DTO라고 한다. API 사용을 할 때 DTO를 만들어서 작업API스펙에 맞춰서 @ResponseBody Entity를 사용하는 것이 아니라 DTO를 만..
-
[CS] DispatcherServlet, filter, interceptorComputer Science/CS 2024. 4. 29. 15:54
Servlet서블릿은 자바 언어를 웹 애플리케이션에서 개발하기 쉽게 하기 위해 만든 API이다.자바 웹 페이지를 접근하기 위한 API를 제공한다. DispatcherServletDispatcher는 "급파자", "보내다" 라는 의미이다.→ 가장 먼저 요청 받고, 처리할 컨트롤러를 찾아서 정해주는 역할이다. 클라이언트로부터 어떠한 요청이 오면 톰캣과 같은 서블릿 컨테이너가 요청을 받게 된다.그리고 이 모든 요청을 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 된다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야하는 컨트롤러를 찾아서 작업을 위임한다. FrontController는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리..
-
[CS] Load balancingComputer Science/CS 2024. 4. 10. 10:42
로드 밸런싱 부하분산 트래픽을 분산시켜주는 컴퓨터 네트워크 기법 여러 서버가 분산 처리하는 것 사용자가 많아져 트래픽이 하나의 서버로 몰리지 않도록 적절하게 분배시키는 역할 로드 밸런싱의 종류 ● L4 Transport계층을 사용, IP주소와 포트 번호 부하 분산이 가능 ▷장점 - 패킷의 내용을 확인하지 않고 로드를 분산하므로 속도가 빠르고 효율이 높음 - 데이터의 내용을 복호화할 필요가 없기에 안전 - L7 로드 밸런서보다 가격이 저렴 ▷ 단점 - 패킷의 내용을 살펴볼 수 없으므로, 섬세한 라우팅 불가 - 사용자의 IP가 수시로 바뀌는 경우라면, 연속적인 서비스를 제공하기 어려움 ● L7 Application계층을 사용, URL 또는 HTTP헤더에서 부하 분산이 가능 - L4로드밸런서의 기능을 더하여,..
-
[CS] Proxy PatternComputer Science/CS 2024. 4. 9. 16:07
프로그래밍에서 프록시 패턴은 소프트웨어 설계 패턴이다. 프록시 패턴은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다. 객체 지향 프로그래밍에 접목해보면 클라이언트가 대상 객체를 직접 쓰는 것이 아니라 프록시(대리인)을 거쳐서 쓰는 코드 패턴이라고 보면 된다. 따라서 대상 객체(subject)의 메소드를 직접 실행하는 것이 아닌, 대상 객체에 접근하기 전에 프록시 객체의 메서드를 접근한 후 추가적인 로직을 처리한뒤 접근하게 된다. 구체적으로 인터페이스를 사용하고 실행시킬 클래스에 대한 객체가 들어갈 자리에 대리자 객체를 대신 투입한다. 클라이언트 쪽에서 실제 실행시킬 클래스에 대한 객체를 통해 메서드를 호출하고 반환 값을 받는지, 대리자 객체를 통해 메서드를 호출하..
-
[CS] polling push pullComputer Science/CS 2024. 4. 2. 15:04
방식 Pull ex) http request 클라이언트가 서버에게 데이터를 요청하는 것 Polling ex) ajax 하나의 장치(프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식 (주기적으로 서버에 연산을 요청) Loop 및 while문 내에서 반복적으로 외부 입력을 감시하는 문법으로 구현된다. Real-Time 웹을 위한 기법으로, 일정한 주기를 가지고 서버와 응답을 주고 받는 방식 (RealTime : 사용자가 즉시라고 느낄 정도로 충분히 빠르거나, 컴퓨터 외부에서 진행되는 처리에 빠르게 동작하는 컴퓨터 반응 수준) polling은 http의 단점을 보완하기 위해 고안된 기법이다. 웹이..
-
[CS] Design PatternComputer Science/CS 2024. 3. 20. 16:03
디자인 패턴 디자인 패턴은 개발하면서 발생하는 반복적인 문제들을 어떻게 해결할 것인지에 대한 해결방안으로 실제 현업에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이 인정한 모범 사례(Best Practive)다. 디자인 패턴의 장점 재사용성 : 반복적인 문제에 대한 일반적인 해결책을 제공하므로, 이를 재사용하여 유사한 상황에서 코드를 더 쉽게 작성할 수 있다. 가독성 : 일정한 구조로 정리하고 명확하게 작성하여 개발자가 코드를 이해하고 유지보수하기 쉽게 만든다. 유지보수성 : 코드를 쉽게 모듈화 할 수 있으며, 변경이 필요한 경우 해당 모듈만 수정하여 유지보수가 쉬워진다. 확장성 : 새로운 기능을 추가하거나 변경할 때 디자인 패턴을 활용하여 기존 코드를 변경..
-
[CS] 해시 충돌, Chaining, Open AddressingComputer Science/CS 2024. 3. 20. 14:35
해시 충돌을 알기 위해서는 - 해시 - 해시 테이블 - 해시 함수 을 알아야 하고, -해시 충돌 해소 기법에 대해서도 알아보자. 해시 Hash ● 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것 ● 키에 대한 해시값을 사용하여 값을 저장하고 key-value쌍의 갯수에 따라 동적으로 크기가 증가하는 associate array이다. ● 키에 대한 해시값을 구하는 과정을 hashing(해싱)이라고 하며 이 때 사용하는 함수(알고리즘)을 해시함수라고 한다. ● 해시 값 자체를 index로 하기 때문에 평균 시간복잡도가 O(1)로 매우 빠르다. 해시 테이블 Hash Table, Tash Map Key와 Value를 갖는 자료구조, 주로 효율적인 검색에 활용. 해시..