java
-
라우터(Router)란?Back-End 2024. 11. 20. 22:28
라우터란 무엇인가?백엔드 개발에서 라우터(router)는 클라이언트 요청을 특정 핸들러로 전달하고, URL 경로 및 HTTP 메서드를 기반으로 적절한 로직을 실행하도록 하는 중요한 컴포넌트입니다. 이는 웹 서버나 API 서버의 기본 구성 요소로, 요청을 효율적으로 분류하고 처리할 수 있도록 설계됩니다.라우터의 역할라우터는 단순히 요청을 전달하는 역할만 하지 않습니다. 현대 웹 애플리케이션에서는 라우터가 비즈니스 로직과 클라이언트 간의 인터페이스 역할을 하며, 다음과 같은 기능을 제공합니다:요청 매핑 (Routing)클라이언트의 요청 경로와 HTTP 메서드(GET, POST, PUT, DELETE 등)를 분석하고 적합한 핸들러를 호출합니다.파라미터 처리동적인 URL 경로를 파싱하여 파라미터를 추출하고 핸들..
-
byte는 왜 사용하나요? (java, golang)Back-End/Language 2024. 11. 19. 22:06
Java와 Golang 모두에서 byte 데이터를 자주 사용합니다. 다만 두 언어의 설계 철학과 활용 사례에 따라 byte의 사용 빈도와 방식이 조금 다릅니다. 이를 간략히 정리하겠습니다.Java에서 byte 사용Java는 byte를 많이 사용하는 언어 중 하나입니다. 이는 주로 Java의 저수준 I/O 처리, 네트워크 통신, 데이터 직렬화와 같은 작업에서 필요하기 때문입니다.주요 사용 사례1. 파일 입출력Java의 InputStream과 OutputStream은 데이터를 byte 단위로 처리합니다.텍스트 데이터뿐만 아니라 이미지, 영상, 바이너리 파일을 처리할 때도 필수적입니다.FileInputStream fis = new FileInputStream("example.txt");byte[] buffer..
-
자료구조: 그래프(Graph)Algorithm & Data Structure/DataStructure 2024. 11. 17. 21:24
1. 그래프란 무엇인가?그래프는 정점(Vertex)과 간선(Edge)으로 구성된 데이터 구조입니다. 각 정점은 데이터를 나타내며, 간선은 정점 간의 관계 또는 연결을 나타냅니다. 그래프는 네트워크 구조를 표현하는 데 매우 적합합니다. 예를 들어, 소셜 네트워크, 도로 지도, 인터넷의 링크 구조 등이 있습니다.그래프의 구성 요소정점(Vertex):데이터를 저장하는 노드입니다.예: 도시, 사람, 웹 페이지 등.간선(Edge):정점 간의 관계를 나타냅니다.방향이 있는 경우 유방향(Directed), 없는 경우 무방향(Undirected)입니다.가중치(Weight):간선에 추가 정보(예: 거리, 비용)를 저장하는 값입니다.2. 그래프의 종류무방향 그래프(Undirected Graph):간선에 방향이 없습니다.예..
-
자료구조: 큐(Queue)Algorithm & Data Structure/DataStructure 2024. 11. 2. 14:51
1. 개요 (Introduction)Queue는 데이터를 일렬로 저장하고 처리하는 선형 자료구조로, FIFO(First-In-First-Out) 원칙을 따릅니다. 이는 가장 먼저 추가된 요소가 가장 먼저 제거되는 방식으로, 사람 줄을 서서 차례로 처리하는 것과 유사합니다. Queue는 CPU 스케줄링, 프린터 작업 처리, 네트워크 패킷 처리 등 다양한 분야에서 활용됩니다.2. Queue의 활용 예시 (Use Cases of Queue)Queue는 특정 순서를 유지해야 하는 문제에서 유용하게 사용됩니다.작업 스케줄링: 운영체제의 작업 스케줄링에서 프로세스를 처리할 때 Queue가 사용됩니다. 먼저 들어온 작업이 먼저 처리되므로 처리 순서를 제어할 수 있습니다.프린터 작업 관리: 프린터에 여러 작업이 대기 ..
-
자료구조: 스택(Stack)Algorithm & Data Structure/DataStructure 2024. 11. 2. 14:42
1. 개요 (Introduction)Stack은 데이터가 순서대로 쌓이고 제거되는 자료구조로, LIFO(Last-In-First-Out) 원칙을 따릅니다. 이는 가장 마지막에 추가된 요소가 가장 먼저 제거되는 특성으로, 마치 접시를 쌓아 올리고 하나씩 꺼내는 방식과 유사합니다. Stack은 주로 메모리 관리, 수식 계산, 웹 브라우저의 뒤로 가기 기능 등 여러 분야에서 활용됩니다. 2. Stack의 활용 예시 (Use Cases of Stack)Stack은 일상적인 문제 해결과 알고리즘에서 자주 사용되는 자료구조입니다.함수 호출 관리: 프로그래밍 언어의 런타임 시스템은 Stack을 사용하여 함수 호출을 관리합니다. 함수가 호출될 때마다 Stack에 새로운 프레임이 쌓이며, 함수가 끝나면 Stack에서 제..
-
그리디(Greedy) 알고리즘Algorithm & Data Structure/Algorithm 2024. 10. 26. 16:06
그리디(탐욕) 알고리즘은 매 순간 최적의 선택을 함으로써 전체 최적해에 도달하려는 알고리즘입니다. 즉, 문제 해결 과정에서 지금 당장 가장 좋아 보이는 선택을 계속해서 하는 방식입니다. 이러한 선택들은 각 단계에서 부분적인 최적해를 구성하고, 최종적으로 전체 최적해를 구성하는 데 도움을 줍니다.그리디 알고리즘의 특징국소 최적 선택(Local Optimal Choice): 그리디 알고리즘은 각 단계에서의 최적해를 구하려고 합니다. 이는 전체 문제의 최적해를 보장하기보다는 각 단계의 최적해를 보장하는 접근 방식입니다.문제 분할: 큰 문제를 여러 단계의 작은 문제로 나눕니다. 매 단계에서 현재 상황에서 최적의 선택을 하고, 그 선택을 기반으로 다음 단계로 넘어갑니다.한 번의 선택: 한 번 내린 선택은 이후의 ..
-
Java: ArrayList vs LinkedListAlgorithm & Data Structure/DataStructure 2024. 7. 31. 13:31
ArrayList vs LinkedList: 차이점 및 성능 비교자바 컬렉션 프레임워크는 다양한 데이터 구조를 제공하며, 그 중 ArrayList와 LinkedList는 List 인터페이스를 구현한 대표적인 클래스들입니다. 이 글에서는 ArrayList와 LinkedList의 차이점, 장단점, 그리고 성능 비교를 다루겠습니다.List 인터페이스의 구현체List 인터페이스를 구현한 대표적인 클래스는 다음과 같습니다:ArrayListLinkedListVectorStack이 중에서 ArrayList와 LinkedList의 차이점을 중점적으로 살펴보겠습니다.ArrayList란?ArrayList는 배열을 기반으로 한 리스트로, 중복을 허용하고 순서를 유지하며 인덱스로 원소들을 관리합니다. 배열과 유사하지만, 배열..
-
하둡(Hadoop)으로 데이터 저장 추출해보기Back-End/Hadoop 2024. 7. 25. 13:28
하둡을 사용하여 데이터를 저장하고 추출하는 과정은 여러 단계로 나뉘며, 각 단계는 비교적 직관적입니다. 아래에서는 하둡을 사용하여 데이터를 저장하고 추출하는 과정을 단계별로 쉽게 설명하겠습니다.1. 데이터 저장1.1 데이터 준비먼저 저장할 데이터를 준비합니다. 예를 들어, 로컬 파일 시스템에 저장된 로그 파일이나 CSV 파일 등을 준비합니다.1.2 HDFS에 데이터 업로드하둡 분산 파일 시스템(HDFS)에 데이터를 저장하기 위해, 로컬 파일 시스템에 있는 데이터를 HDFS로 업로드합니다. 이를 위해 hdfs dfs -put 명령어를 사용합니다.# 로컬 파일 system_logs.csv를 HDFS의 /data 디렉토리에 업로드hdfs dfs -put /path/to/local/system_logs.csv ..