본문 바로가기

전체 글95

Filter, Interceptor, AOP란 Filter, Interceptor, AOP는 모두 소프트웨어에서 프로그램의 동작을 제어하기 위한 기법이다. Filter 웹 애플리케이션에서 HTTP 요청과 응답을 처리하기 위한 기법 Servlet 컨테이너에서 요청과 응답에 대한 처리를 가로채어 필터링하는 역할을 한다. Filter는 일종의 체인 형태로 구성되어 있어 여러 개의 Filter를 연속적으로 실행할 수 있다. 특징으로는, 요청과 응답의 전/후 처리 Filter는 클라이언트로부터 요청이 들어오기 전에 또는 응답이 클라이언트로 보내지기 전에 처리를 수행할 수 있습니다. 예를 들어, 인증, 인가, 로깅, 캐싱 등의 공통적인 처리를 필터로 분리하여 중복 코드를 방지하고 요청과 응답을 처리할 수 있다. 필터 체인 여러 개의 Filter를 연속적으로 실.. 2023. 4. 6.
병렬프로그래밍이란 하나의 작업을 여러 개의 작은 작업으로 분할하고, 이 작은 작업들을 동시에 실행하여 전체적으로 더 빠른 처리를 가능하게 하는 프로그래밍 기법 병렬프로그램은 멀티코어 프로세서가 등장하면서 매우 중요해졌다. 병렬 프로그래밍은 다양한 방법으로 구현할 수 있다. 그 중 가장 기본적인 방법은 프로세스(Process)와 스레드(Thread)를 사용하는 것입니다. 프로세스는 독립적인 메모리 공간을 갖고 실행되는 프로그램 단위이며, 스레드는 프로세스 내에서 실행되는 실행 단위이다. 스레드는 프로세스 내에서 메모리 공간을 공유하기 때문에, 스레드 간의 통신이 더욱 효율적으로 이루어진다. 데이터를 분할하여 병렬로 처리하기 때문에 큰 데이터를 처리할 때 빠른 속도를 보인다. 이 방식을 사용하면 대량의 데이터를 더 빠르게 처.. 2023. 4. 6.
RDB와 NoSQL 정규화, ACID / 다른 점 대규모 확장이 가능한 점 조인이 필요없다. RDB(Relational Database)와 NoSQL(Not only SQL)은 데이터 저장 및 관리 방식에서 차이가 있다. RDB는 관계형 데이터 모델을 사용하며, 데이터를 테이블 형태로 저장합니다. 반면 NoSQL은 관계형 데이터 모델을 사용하지 않으며, 키-값(Key-Value), 문서(Document), 그래프(Graph) 등의 형태로 데이터를 저장합니다. RDB는 SQL(Structured Query Language)을 사용하여 데이터에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행NoSQL 데이터베이스는 SQL이 아닌 특정 API를 통해 데이터에 접근 RDB는 데이터 일관성과 안정성을.. 2023. 4. 6.
오버로딩과 오버라이딩의 차이점 오버로딩(Overloading) 함수나 연산자 등의 이름을 동일하게 사용하면서 매개변수의 종류, 개수, 순서 등을 다르게 정의하는 것. 이는 프로그래머가 함수의 사용 방법을 좀 더 직관적으로 이해할 수 있도록 하며, 함수의 이름을 기억하고 호출하는 데 드는 어려움을 줄일 수 있다. 자바 컴파일러는 메소드를 호출할 때, 메소드의 이름과 전달하는 인자의 개수와 타입으로 어떤 메소드를 호출할지 결정하므로 같은 이름의 메소드라도 전달하는 인자의 개수와 타입에 따라 다른 메소드가 호출될 수 있다. public class Calculator { // int형 매개변수를 받는 함수 public int add(int a, int b) { return a + b; } // double형 매개변수를 받는 함수 public.. 2023. 4. 5.
알고리즘에서 '시간복잡도'와 '공간복잡도'란 시간복잡도 해당 알고리즘이 실행되는 데 걸리는 시간의 총량을 나타낸다. '빅오(Big-O)' 표기법을 사용하여 표현되며 알고리즘의 실행 시간이 입력 크기에 따라 어떻게 증가하는지를 나타내는 수학적인 표기법으로, 알고리즘의 최악의 실행 시간을 나타낸다. 예를 들어, 배열에서 항목을 검색하는 선형 검색 알고리즘의 시간복잡도는 O(n)이며, n은 배열의 크기이다. 이는 최악의 경우에는 배열의 모든 항목을 한 번씩 검색해야 하므로, 입력 크기 n에 비례하여 실행 시간이 증가한다는 것을 의미한다. 반면에, 이진 검색 알고리즘의 시간복잡도는 O(log n)이며, 이는 최악의 경우에도 배열을 계속 절반으로 나누면서 검색을 수행하기 때문에, 입력 크기 n에 비례하여 실행 시간이 더욱 적게 증가한다는 것을 의미한다. 공.. 2023. 4. 5.
절차지향 / 객체지향 / 함수형 프로그래밍 컴퓨터 프로그래밍 패러다임 중 절차지향 / 객체지향 / 함수형 프로그래밍에 대해 알아보자! 절차지향 프로그래밍 프로그램을 처리할 일련의 절차로 나누고 각각의 절차를 순차적으로 실행하여 원하는 결과를 얻는 방식 프로그램을 작성하기 위해 절차와 데이터를 따로 구분하여 설계하는 것이 특징 데이터와 함수를 분리하여 설계하며, 함수는 데이터를 처리하는 데 필요한 일련의 절차를 포함한다. 함수는 매개변수를 통해 입력값을 받고, 반환값을 통해 출력값을 반환한다. 이러한 함수는 순서대로 호출되어 실행되며, 함수 호출의 결과로 처리된 데이터가 메모리에 저장된다. 절차지향 프로그래밍의 장점 프로그램의 구현이 상대적으로 간단 프로그램의 실행 속도가 빠름 대용량 데이터 처리에 적합 절차지향 프로그래밍의 단점 프로그램이 복잡해.. 2023. 4. 4.
Stack과 Queue 그리고 Array와 Linked List Stack과 Queue 그리고 Array와 Linked List는 자료구조 중에서 가장 기본적이면서도 중요한 구조체이다. Stack LIFO(Last-In-First-Out) 구조로, 가장 최근에 추가된 항목이 가장 먼저 제거됨. push(추가)와 pop(제거) 연산을 지원 예시: 브라우저의 이전 버튼, 실행 취소 기능 등 Queue FIFO(First-In-First-Out) 구조로, 가장 먼저 추가된 항목이 가장 먼저 제거됨. (순서가 있다) enqueue(추가)와 dequeue(제거) 연산을 지원 예시: 대기열(Queue) 시스템, 메시지 큐 등 Array 같은 종류의 데이터를 연속된 메모리 공간에 저장하는 자료구조 인덱스를 사용하여 특정 항목에 접근할 수 있다. 크기를 미리 정해야 하며, 크기가 .. 2023. 4. 4.
웹 서버와 WAS의 차이 웹 서버(Web Server) 인터넷 상에서 HTTP를 사용하여 클라이언트(웹 브라우저) 요청에 대한 응답을 제공하는 소프트웨어 웹 서버는 클라이언트로부터 요청된 웹 페이지나 파일을 찾아서 전송하며, 이를 위해 정적인 컨텐츠를 제공한다. *정적인 컨텐츠(HTML, CSS, 이미지 등) 웹 서버의 주요 기능 HTTP 프로토콜 지원 웹 서버는 클라이언트와 서버 간 통신에 사용되는 HTTP 프로토콜을 지원한다. 정적 파일 제공 웹 서버는 클라이언트가 요청한 정적인 컨텐츠를 제공합니다. 예를 들어, HTML 파일, 이미지, CSS 파일 등을 제공한다. MIME 타입 처리 웹 서버는 MIME(Multipurpose Internet Mail Extensions) 타입을 처리하여 클라이언트에게 올바른 파일 형식으로 .. 2023. 4. 4.