전체 글
-
[운영체제] 세마포어(Semaphore)와 뮤텍스(Mutex)카테고리 없음 2026. 1. 1. 00:05
여러 프로세스나 쓰레드가 공유 자원에 접근할 때, 동시에 접근할 수 있는 주체를 제어하지 않으면 Race Condition과 같은 문제가 발생할 수 있다.이를 제어하기 위한 대표적인 동기화 도구로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있다.세마포어란?세마포어는 정수 카운터 기반의 동기화 도구로, 카운터 값만큼의 동시 접근을 허용할 수 있다.특징wait(P) : 자원 요청 (카운터 감소)signal(V) : 자원 반납 (카운터 증가)세마포어는 소유 개념이 없기 때문에, 자원을 획득한 쓰레드가 아니더라도 signal()을 호출할 수 있다 (단, 카운터 제한에 걸리지 않는 경우).뮤텍스란?뮤텍스는 Mutual Exclusion(상호 배제)의 약자로, 오직 하나의 프로세스 또는 쓰레드만 공유 자원..
-
[네트워크] TCP 3 way handshake & 4 way handshake & 흐름제어까지카테고리 없음 2025. 12. 31. 02:21
TCP는 OSI 7계층 중 데이터 전달을 담당하는 전송계층 에서 동작하는 대표적인 프로토콜이다.구분내용주요 프로토콜TCP데이터 단위Segment핵심 개념Port📌 OCI 7계층 중 전송계층 [TCP] 3 way handshake & 4 way handshakeTCP 연결을 성립하고 해제하는 과정을 의미한다.3 way handshake — 연결 성립TCP는 신뢰성 있는 데이터 전송을 보장해야 한다. 이를 위해 통신을 시작하기 전, 논리적인 연결을 먼저 수립하는 과정이 필요하다. TCP 세그먼트 구조TCP Header 주요 필드- Source Port- Destination PortSequence NumberFlags (SYN, ACK, FIN 등)클라이언트 → 서버 SYN 전송 (sequence ..
-
BigDecimal에 대해 아시나요? Double은요? 설명해주세요.카테고리 없음 2025. 12. 24. 20:19
토스에서 어시로 근무하며 외화 정산 로직을 다룰 때, 가장 많이 신경 썼던 숫자 타입이 BigDecimal이었다.이번 글에서는 “왜 BigDecimal이 존재하는가”를 설계 관점에서 정리해본다.우리는 보통 이런 기준으로 숫자 타입을 선택한다.소수면 Double정수인데 크면 Double하지만 이런 추상적인 잣대는 백엔드 개발자로 성장하는 데 분명한 한계가 있다.숫자는 단순한 값이 아니라, 도메인의 규칙과 계약을 담는 표현이기 때문이다.Double에 대해 정확히 아시나요?DoubleIEEE 754 부동소수점부동소수점(Floating-Point)이란?제한된 비트로 매우 크거나 작은 실수를 표현하기 위한 방식이다.고정 소수점:123.45과학적 표기법:1.2345 × 10²👉 값 = 가수 × 기준지수👉 지수에..
-
[네트워크] 주니어 백엔드(준비생)이라면 꼭 알아야 하는 네트워크 이야기🛜카테고리 없음 2025. 12. 23. 01:43
네트워크 관련한 면접 예상 질문에 항상 첫번째로 등장하는사용자로부터 www.example.com 으로 요청이 들어오는 과정에 대해 설명해주세요.라는 단골 질문을 다들 알 것 같다.이 질문이 전통적인 네트워크 관련 단골 질문이 되기까진, 이 질문 하나만으로 네트워크에 대한 모든 이야기를 할 수 있어서라고 볼 수 있을것 같다.오늘은 이 질문을 바탕으로 하나하나 찾아가면서 어떤식으로 동작하고, 백엔드 개발자로서 어느정도의 네트워크 레이어까지 알아야하는지를 고민해보고 조사해보기로 했다.0️⃣ HTTP 요청 만들기 (L7: 응용계층)가장 첫번째로 발생하는 액티비티는 사용자로부터 발생할 것이다.사용자가 실제로 하는 일버튼 클릭화면 이동앱에서 API 호출이 시점에서는브라우저 / 앱이 HTTP 요청을 생성URL, Me..
-
[데이터통신] 컴퓨터 네트워크카테고리 없음 2023. 9. 26. 13:50
컴퓨터 네트워크란? 단일 기술로 상호 연결된 자율 컴퓨터 집합을 의미 상호연결: 두 대의 컴퓨터가 정보를 교환할 수 있는 상태 연결은 다양한 방식을 사용 ( 구리선 광섬유 마이크로파 적외선 및 통신 위성등) 메인프레임에 연결된 다수의 터미널은 자율적이지 않기 때문에 컴퓨터 네트워크가 아니다. 단일 기술로 상호연결되어있기 때문에 동일한 네트워크에 있는 모든 기계와 대화하거나 통신이 가능하다. 분산 시스템과 네트워크의 차이점 분산시스템: 독립적인 컴퓨터의 집합이 사용자에게 하나의 일관된 시스템으로 나타난다. == 하나의 컴퓨터로 보여진다. middleware등 컴퓨터 네트워크의 모든 세부 사항을 숨기는 소프트웨어가 필요 분산시스템의 예시 : WWW, cloud(fog) computing, GRID 분산 시스..
-
[알고리즘] 삽입정렬(Insertion Sort)카테고리 없음 2023. 9. 12. 16:29
삽입정렬이란 앞부분 데이터는 정렬이 되어 있다고 가정하고, 뒷부분 데이터가 정렬된 데이터중 어느 곳에 있어야 적절한지를 판단하여 절렬하는 정렬방식이다. A[0]에는 dummy데이터 (마이너스 무한대),가 있다고 가정한다. (매번 첫번째 데이터인지 확인하지 않아서 더 효율적이다. 이때 컴퓨터에는 마이너스 무한대라는 것이 없기 때문에 정수 최대값을 사용한다. void InsertionSort(int A[],int n){ // 입력 : A[0:n],n:원소의 개수, A[0]:dummy // 출력 : A[0:n] : A[0]:dummy , A[1:n]은 정렬된 배열 int i, j, value; for (i = 2; i Value){ A[j] = A[j-1]; j--; } A[j]=value; } } 제자리성 ..
-
[SWIFT] 비트연산자카테고리 없음 2023. 6. 7. 20:45
메모리 비트 단위로 직접적인 논리연산을 하거나, 비트 단위 이동시에 사용하는 연산 장점) 연산속도가 빠름 - 직접적으로 메모리의 실제 비트를 컨트롤 --> 게임과 같은 빠른 처리를 요구할 때 사용 짧은 코드로 복잡한 로직을 구현 가능한 경우가 있음 스위프트 비트연산자 6가지 (비트 논리 연산자) ~ : Bitwise NOT Operator(비트와이즈 낫 연산자) == 비트논리부정연산자, 단항연산자의 형태로 사용 (~a) 0은 1으로 , 1은 0으로 & : Bitwise AND Operator(비트와이즈 앤드 연산자) == 비트논리곱연산자, 이항연산자의 형태로 사용 (a&b) 두개의 메모리 비트 모두가 1일때만 1을 반환 | : Bitwise OR Operator(비트와이즈 오어 연산자) 비트 논리합연산자..
-
[SWIFT] 단락 평가(Short-circuit Evaluation)카테고리 없음 2023. 6. 7. 20:21
스위프트의 논리 평가식은 "단락 평가"방식을 사용 단락평가? 논리 평가식에서 결과 도출에 필요한 최소한의 논리식인 평가 ( 참을 찾을 때 까지만 실행, 참을 찾으면 나머지 표현식은 평가하지 않음) === 최소한의 코드만 실행 - Short-circuit evaluation 논리연산자 우선순위 1) && 2) || 단락평가에서 주의할 점 사이드 이펙트 - 함수 내에서 일부 외부 변수의 값을 변경 시키는 것 단락평가시, 사이드 이펙트가 발생하면 의도치 않은 결과가 나타날 수 있기 때문에 조심해야한다