분류 전체보기 75

예약 게시글 업로드 1편

이번 포스트에는 예약 게시글 업로드를 구현하면서 새로 배웠던 내용을 다시 한번 정리해보겠습니다. 예약 게시글 업로드를 구현하기 위해 ThreadPoolTaskScheduler, RabbitMQ를 사용하였고, 각 기술의 특징에 대해서 설명해보겠습니다. ThreadPoolTaskScheduler먼저 ThreadPoolTaskScheduler입니다. ThreadPoolTaskScheduler는 Spring Framework에서 제공하는 스케줄링용 스레드 풀 기반의 TaskScheduler 구현체입니다. ThreadPoolTaskScheduler를 사용하기 위해 Bean으로 등록을 해주었습니다.@Configurationpublic class SchedulerConfig { @Bean public Th..

기술 회고 2025.05.30

[쉽게 배우는 운영체제] 컴퓨터의 구조와 성능 향상

컴퓨터의 구조와 성능 향상컴퓨터의 기본 구성하드웨어의 구성컴퓨터는 CPU, 메인메모리, 입력장치, 출력장치, 주변장치로 구성됩니다. 컴퓨터로 하는 작업은 대부분 CPU와 메인메모리의 협업으로 이루어지기 때문에 필수장치로 분류되고 그 외는 주변장치로 분류됩니다.. 메인메모리는 휘발성이기 때문에 영구히 보관하기 위하여 하드디스크나 USB 메모리를 사용합니다. 그래서 메인메모리를 제1저장장치라 부르고 하드디스크나 USB 메모리가 같은 메모리를 제2저장장치 또는 보조저장장치라고 부릅니다. CPU와 메인메모리CPU는 명령어를 해석하여 실행하는 장치로 메인메모리는 작업에 필요한 프로그램과 데이터를 저장하는 장소로, 바이트 단위로 분할되어 있으며 분할 공간마다 주소로 구분합니다. 입출력장치입력장치는 외부의 데이터를 ..

운영체제 2025.05.08

[쉽게 배우는 운영체제] 운영체제의 개요

운영체제에 대해 깊이있게 학습하기 위해 '쉽게 배우는 운영체제'라는 도서를 구매하였습니다. 총 챕터는 12개로 1개의 챕터를 학습할 때 마다 하나의 포스트를 작성해보겠습니다.운영체제의 개요운영체제 소개생활 속 운영체제우리는 일상에서 운영체제를 많이 경험하고 있습니다. 예를 들어 Windows와 Mac OS, Android, iOS가 있습니다. 컴퓨터는 원래 미사일 탄도를 계산하기 위해서 개발되었는데 **이를 계산기라고 부르지 않고 컴퓨터**라고 부르는 이유는 프로그래밍이 가능한 기계이기 때문입니다.범용 컴퓨터 : 웹 서핑, 문서 작성 등 다양한 작업에 사용되는 컴퓨터임베디드 컴퓨터(시스템) : 스마트 시계, 스마트 TV 등에 탑재된 컴퓨터운영체제의 정의컴퓨터는 크게 하드웨어, 소프트웨어로 구성되어지며 소..

운영체제 2025.05.03

비트마스킹

비트마스킹이번 포스트에서 정리할 주제는 비트마스킹입니다. 비트마스킹은 알고리즘 문제에서 자주 등장하는 기법 중 하나로 이진수(bit)를 활용해 여러 개의 상태를 한 개의 정수로 표현할 수 있도록 도와주며, 공간 절약과 연산 최적화 측면에서 매우 유용합니다. 예시는 다음과 같습니다.n = 5 → 101→ 0, 2번 인덱스가 켜져 있다라는 의미로 해석이 가능합니다.비트마스킹 활용 사례부분 집합을 효율적으로 순회할 때중복 방문을 피하는 DP/DFS에서 방문 여부를 저장할 때상태를 배열 대신 정수 하나로 표현하고 싶을 때메모리/성능 최적화가 필요할 때 기본 연산 정리표 연산 목적 표현식 설명 예제 입력 / 결과 예시 i번째 비트 켜기 (Set)S = S | (1 i번째 자리를 1로 설정S = 0; i = 2..

알고리즘 2025.05.02

Character, String, StringBuilder

이번 포스트에서는 Character, String, StringBuilder에 대해서 정리해보겠습니다. 해당 포스트의 카테고리를 Java, 알고리즘에서 고민을 했는데 Character, String, StringBuilder의 주요 메소드와 시간복잡도를 함께 설명할 계획이기 때문에 알고리즘 카테고리로 선정하였습니다.Character, String, StringBuilderJava에서 문자열 및 문자 데이터를 처리할 때 주로 사용하는 클래스는 다음 세 가지입니다:Character: 문자(char) 하나를 다루는 클래스String: 불변(immutable) 문자열StringBuilder: 가변(mutable) 문자열, 성능 중심Characterchar 타입을 감싸는 래퍼 클래스이며, 문자 하나를 판단하거나 ..

알고리즘 2025.05.02

HashMap vs TreeMap vs LinkedHashMap

HashMap vs TreeMap vs LinkedHashMap 항목 HashMap TreeMap LinkedHashMap 기반 자료구조Hash TableRed-Black TreeHash Table + Linked List정렬 여부❌ 없음✅ 자동 정렬 (Key 기준 오름차순)❌ 없음삽입 순서 유지❌ 없음❌ 없음 (정렬 순서로 유지됨)✅ 유지null 키 허용✅ 1개 허용❌ (NullPointerException 발생)✅ 1개 허용null 값 허용✅✅✅시간 복잡도 (삽입/삭제/조회)평균 O(1)O(log n)평균 O(1)Iterator 순회 순서예측 불가Key 정렬 순삽입 순Key 비교 방식equals() + hashCode()compareTo() 또는 Comparatorequals() + hashCode..

자료구조 2025.05.01

TreeMap - Java

TreeMapTreeMap은 Java의 Map 인터페이스를 구현한 클래스 중 하나로, 키를 자동으로 정렬하며 내부적으로 **Red-Black Tree(이진 탐색 트리)**를 사용합니다.범위 검색이나 정렬 기반의 탐색에 적합합니다.주요 특징자료구조레드-블랙 트리 (Red-Black Tree)정렬 여부✅ 자동 정렬 (Key 기준 오름차순)삽입 순서 유지❌ (정렬 순서대로 유지됨)null 허용❌ Key는 허용 X, Value는 허용 O시간 복잡도O(log n)특징Key 정렬, 범위 탐색, ceiling, floor 등 사용 가능대표 메서드package structure.map.treemap;import java.util.Map;import java.util.TreeMap;public class TreeMapC..

자료구조 2025.05.01

LinkedHashMap - Java

LinkedHashMapLinkedHashMap은 HashMap의 기능을 그대로 유지하면서, 입력 순서를 기억하는 Map입니다.내부적으로 해시 테이블 + 이중 연결 리스트를 사용하여, 순서를 보장합니다.주요 특징자료구조HashMap + 이중 연결 리스트정렬 여부❌삽입 순서 유지✅null 허용✅ (Key 1개, Value 다수 허용)시간 복잡도평균 O(1)특징순서 + 빠른 접근이 필요한 경우 (ex. 캐시 구현)대표 메서드package structure.map.linkedhashmap;import java.util.LinkedHashMap;public class LinkedHashMapClass { private final LinkedHashMap linkedHashMap; public Link..

자료구조 2025.05.01

HashMap - Java

HashMap HashMap은 Java의 가장 일반적인 Map 구현체로, 키-값 쌍(Key-Value Pair)을 저장하며, 내부적으로 해시 테이블(Hash Table) 기반으로 작동합니다.정렬 순서나 삽입 순서를 유지하지 않지만, 탐색 및 삽입 속도가 매우 빠릅니다.주요 특징자료구조해시 테이블 (HashTable)정렬 여부❌ 없음 (순서 보장 X)삽입 순서 유지❌null 허용✅ (Key 1개 + Value 여러 개 허용)시간 복잡도평균 O(1) (삽입, 삭제, 조회)특징가장 빠르며, 가장 자주 사용됨. 순서가 중요하지 않을 때 사용대표 메서드package structure.map.hashmap;import java.util.Collection;import java.util.HashMap;public c..

자료구조 2025.05.01

TreeSet vs HashSet vs LinkedHashSet

TreeSet vs HashSet vs LinkedHashSet항목 TreeSet HashSet LinkedHashSet기반 자료구조Red-Black Tree (이진 탐색 트리)Hash TableHash Table + Linked List정렬 여부✅ 자동 정렬 (오름차순)❌ 없음❌ 없음삽입 순서 유지❌ 유지되지 않음❌ 유지되지 않음✅ 유지됨중복 허용❌❌❌null 허용❌ (예외 발생)✅ 하나 가능✅ 하나 가능시간 복잡도 (삽입/삭제/탐색)O(log n)O(1) 평균O(1) 평균부분 집합(subSet), 범위 검색✅ 지원❌❌Iterator 순회 순서정렬 순예측 불가삽입 순서 유지사용 추천 상황정렬/범위 탐색이 필요한 경우빠른 삽입/탐색이 필요한 경우순서를 기억하면서 빠른 성능이 필요한 경우상황별 추천정렬된 ..

자료구조 2025.04.30