Fundamentals 23

[운영체제] 자바의 스레드와 멀티스레드 기본 개념

01 서론운영체제에 대해 공부하며 CPU 성능과 자원 활용에 관심을 가지게 되었습니다.특히, 기술의 발전으로 코어가 여러 개인 프로세서 환경에서 CPU의 활용에 따라 프로그램 성능이 달라질 수 있다는 점에 주목했습니다.자바에서 스레드와 멀티스레드는 프로그램의 성능을 향상시키고, 효율적인 작업 처리를 가능하게 하는 중요한 개념입니다.이 글에서는 자바의 스레드와 멀티스레드의 기본 개념을 정리하고 실제로 이를 어떻게 활용하는지 예시 코드를 작성해보았습니다.02 스레드와 멀티스레드의 기본 개념1. 프로세스란 무엇인가?먼저, 프로세스란 CPU에 의해 메모리에 올려져 실행중인 프로그램을 의미하고 독립적인 실행 환경을 가진다는 특징이 있습니다.자바 JVM은 하나의 프로세스로 실행이 되지만, 여러 작업을 동시에 처리..

[컴퓨터구조] 자바는 컴파일 언어일까 인터프리터 언어일까?

프로그래밍 언어는 컴파일 언어와 인터프리터 언어로 분류할 수 있습니다.현재 백엔드 개발을 위해 사용하고 있는 자바는 둘 중 어디에 해당하는지 궁금해졌습니다.이 글에서는 컴파일 언어와 인터프리터 언어의 차이를 살펴보고, 자바를 이 관점에서 어떻게 이해할 수 있는지 정리해보았습니다.01 프로그래밍 언어의 분류1. 컴파일 언어란?컴파일 언어는 소스 코드를 기계어로 변환하는 컴파일러를 사용하여 프로그램을 실행합니다.컴파일 언어의 특징은 다음과 같습니다.컴파일 과정: 전체 소스 코드를 한 번에 번역하여 실행 가능한 파일을 생성합니다.빠른 실행 속도: 기계어로 변환된 실행 파일을 사용하기 때문에 실행 속도가 빠릅니다.플랫폼 의존성: 컴파일된 파일은 특정 운영 체제와 하드웨어에서만 실행됩니다.대표적인 컴파일 언어로는..

[네트워크] 로드밸런싱의 정의와 알고리즘

네트워크 스터디를 진행하며 마지막 챕터인 네트워크 심화를 주제로 공부를 하며로드밸런싱의 정의와 필요성, 관련 알고리즘에 대해 정리해보았습니다.1. 로드밸런싱이란로드밸런싱은 여러 서버를 두고 트래픽을 고르게 분산시켜 시스템의 성능과 안정성을 높이는 기술입니다.하나의 서버에 요청이 몰리지 않도록 하여 서버 과부하를 막습니다.2. 로드 밸런싱의 필요성과거에는 한 대의 서버만으로도 클라이언트 요청을 처리하는데 문제가 없었습니다.하지만 현대의 애플리케이션에서는 사용자 요구가 증가하고 비즈니스가 복잡해져 서버 부하가 증가했습니다.동시에 많은 사용자들이 요청을 보내는 대용량 트래픽 상황에서 서버의 부하를 줄이기 위한 분산 처리 시스템 구현을 위해 로드 밸런싱을 채택할 수 있습니다.로드 밸런싱을 통해 서버 과부하를 방..

[네트워크] HTTP의 정의와 HTTP 메서드의 속성

웹 개발에서 HTTP는 클라이언트와 서버 간 데이터를 주고받는 가장 기본적이고 중요한 프로토콜입니다.하지만 HTTP 메서드의 속성과 올바른 활용 방안을 충분히 이해하지 못하면, 예상치 못한 오류가 발생할 수 있습니다.특히, 안전성, 멱등성, 그리고 캐시 가능성과 같은 HTTP 메서드의 속성은 RESTful API 설계와 성능 최적화에서 핵심적인 역할을 합니다.이 글에서는 HTTP 메서드와 그 속성을 살펴보고, 각 속성을 기반으로 메서드를 어떻게 활용할 수 있는지 정리해보겠습니다.01 HTTP란1. HTTP의 정의HTTP(HyperText Transfer Protocol)는 클라이언트-서버 모델을 기반으로 동작하는 웹 통신 프로토콜입니다.클라이언트가 요청(Request)을 보내면 서버가 응답(Respons..

[네트워크] TCP 기반 웹소켓 기술

최근 네트워크 계층에 대해 공부하면서,데이터를 안정적이고 효율적으로 주고받는 데 중요한 역할을 하는 전송 계층에 대해 깊이 이해하게 되었습니다.특히, 전송 계층에서 제공하는 TCP 기반의 통신 방식을 활용한 기술 중 하나인웹소켓(WebSocket)은 실시간 애플리케이션에서 필수적인 도구로 자리 잡고 있습니다.이번 글에서는 전송 계층의 기본 개념을 바탕으로, 제가 최근 프로젝트에서 직접 활용했던 웹소켓 기술에 대해 정리해보고자 합니다.1. 전송 계층이란?1.1 네트워크 계층 vs전송 계층네트워크 계층은 데이터를 목적지에 전달하기 위해 경로를 결정하는 역할을 합니다.반면, 전송 계층은 이 데이터를 애플리케이션 계층에 적절히 전달하며 신뢰성을 보장합니다.네트워크 계층의 주요 기능: 패킷 포워딩, 라우팅전송 계..

[네트워크] 네트워크 계층에서의 QoS 관리

1. QoS란?Quality of Service. 네트워크 트래픽의 우선순위를 관리하여 서비스 품질을 보장하는 기술QoS는 네트워크에서 데이터 흐름의 우선순위를 정하고,이를 바탕으로 트래픽을 제어하여 성능을 보장하는 기술입니다.한국어로 번역하면 서비스 품질이라는 뜻으로, 다양한 데이터 유형의 요구사항을 충족하기 위해 사용됩니다.QoS는 특히 실시간 서비스와 비실시간 서비스의 차이를 맞추고트래픽이 원활히 전달되도록 우선순위를 보장하는데 초점을 맞춥니다.2. QoS의 주요 요소QoS를 이해하기 위해 네트워크 성능에 영향을 미치는 주요 요소 4가지를 알아봅시다.1) 대역폭(Bandwidth)데이터 전송을 위해 사용할 수 있는 네트워크 용량입니다.QoS는 특정 데이터 흐름에 필요한 대역폭을 보장하여 혼잡 상태에..

[네트워크] 데이터 링크 계층의 하위 계층 MAC vs LLC

컴퓨터 네트워크에서 데이터가 신뢰성 있게 전달되기 위해,OSI 7계층 모델은 계층별로 명확한 역할을 부여합니다. 그중 데이터 링크 계층은 네트워크에서 안정적으로 데이터를 전송하는 데 핵심적인 역할을 합니다.이 계층은 물리 계층에서 전달된 데이터를 상위 계층으로 올리고,데이터 프레임의 전송, 오류 제어, 흐름 제어와 같은 중요한 작업을 담당합니다. 데이터 링크 계층은 다시 MAC 계층과 LLC 계층이라는 하위 계층으로 나뉩니다.이 두 계층은 서로 협력하여 네트워크 데이터가 올바른 목적지에 정확히 도달하도록 만듭니다.이 글에서는 MAC 계층과 LLC 계층의 역할과 주요 기능, 그리고 차이점을 비교하며 자세히 알아보겠습니다.  1. MAC 계층 (Media Access Control)MAC 계층은 네트워크의 ..

[이산수학] Graph Theory 그래프이론 1주차

학습목표 1. 그래프 정의하기 2. 그래프 그리는 방법 연습하기 3. 그래프 클래스 구분하기 Warm-up 문제) 과리니의 퍼즐 : 흰색/검은색 체스 나이트의 위치 바꾸기 문제) 한붓그리기 - 쾨니히스베르크 다리 한 번 씩만 건너기 해설) 오일러의 길 : 시작점과 끝점 가운데 있는 지점들을 빼고 모든 지점이 짝수여야 함 그래프 ex. 항공 그래프, 페이스북 그래프, 인용 그래프, 링크드 오픈 데이터, 생물학, 생화학 분야 등 -> 네비게이션(두 지점 사이의 최단 거리 찾는 알고리즘) -> 구글 검색(PageRank 페이지에 점수와 순위를 부여해 관련 링크만 보도록 함) -> 게임, 게놈, GSM, 컴퓨터 칩 An isolated vertex forms a component 분리된 꼭짓점이 구성요소를 형성..

[이산수학] Combinatorics and Probability 조합론과 확률 수료증

코세라에서 받은 두번째 수료증! 조합론과 확률은 앞서 공부한 수학적사고보다 훨씬 어려웠다. 고등학생 때 배운 내용들을 다시 복습하기 위해 수학의 정석을 꺼냈다. 고등학생 때 배우지 않은 내용들을 새로 학습하느라 애먹었다. 이제 다음 강의는 3개 남았다. 하나하나 완료할 때마다 뿌듯한 느낌이 든다. 앞으로 남은 강의를 모두 이수하면 알고리즘의 기초는 쌓을 수 있는 걸까? 혹시 내 공부의 방향이 잘못된 것은 아닐까 두려운 마음도 있지만 언젠가 개발자가 되었을 때 컴퓨터공학과 전공생처럼 이산수학을 공부했다는 기록이 있는, 그런 지식이 있는 개발자가 되었으면 좋겠다.

[이산수학] Combinatorics and Probability 조합론과 확률 5주차

학습 목표 - 선형성을 이용하여 기댓값을 계산하기 - 기댓값을 이용하여 확률을 추측하기 - 확률 실험에서의 확률 변수 구별하기 - 확률 변수의 기댓값 계산하기 확률 변수와 기댓값 확률 변수 : 무작위 실험의 수치적 특성을 연구하기 위한 수학적 모델 평균 from statistics import mean print(mean([1, 2, 3, 4, 5, 6])) print(mean([7, 7, 7])) print(mean([9.5, 10.5])) 평균은 최댓값보다 작거나 같고 최솟값보다 크거나 같다. 기댓값 기댓값의 선형성 마르코프 부등식 coursera Introduction to Discrete Mathematics for Computer Science 과정 중 Combinatorics and Proba..