CS37 [CS] 프로그램, 프로세스, 쓰레드 서론오늘은 프로그램, 프로세스, 쓰레드의 차이점에 대해서 알아보도록 하겠습니다.본론프로그램과 프로세스의 차이프로그램이란 저장장치에 저장되어 있어 언제든지 실행 가능한 파일을 말합니다. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해줘야 실행될 수 있는데, 프로그램은 아직 메모리에 올라가 있지는 않은 상태입니다.반면, 프로세스란 컴퓨터에서 실행되고 있는 컴퓨터 프로그램을 말합니다. 이는 프로그램과는 다르게, 메모리에 올라와 있는 상태입니다. 즉, 프로세스란 메모리에 올라와 있는 프로그램을 말합니다.프로세스와 쓰레드의 차이과거에는 프로그램을 실행할 때 실행 시작부터 실행 끝까지 프로세스 하나만을 사용해서 진행했다고 합니다. 그러나 프로그램이 더이상 하나의 작업 만을 수행하지 않게 되면서, 프로.. CS 2025. 1. 8. [Algorithm] 코딩테스트에서 자주 쓰이는 파이썬 수학 내장함수 1. 기본 내장 함수1.1 abs()절댓값을 반환합니다.print(abs(-7)) # Output: 71.2 max() / min()리스트나 튜플에서 최대값 또는 최소값을 구합니다.numbers = [3, 5, 2, 9]print(max(numbers)) # Output: 9print(min(numbers)) # Output: 21.3 sum()리스트나 튜플의 합계를 구합니다.numbers = [1, 2, 3, 4]print(sum(numbers)) # Output: 101.4 pow()거듭제곱 계산.print(pow(2, 3)) # Output: 81.5 round()반올림을 수행합니다. 두 번째 인자로 소수점 자리수 설정 가능.print(round(3.14159, 2)) # Output:.. CS/알고리즘 2025. 1. 4. [Algorithm] 코딩테스트를 위한 기본 알고리즘 정리 구현/시뮬레이션특징알고리즘 문제의 80%는 구현이다. 문제 풀 때, 대부분 구현 문제라고 접근해도 무방하다.접근방법모든 경우의 수를 따져야 함.주어진 범위 내에 모든 수를 탐색해보면서 조건에 맞으면 탐색한다.예시 1) 2503번: 숫자 야구세 자리 수의 동일한 자리에 위치하면 스트라이크 한 번으로 센다. 숫자가 세 자리 수에 있긴 하나 다른 자리에 위치하면 볼 한 번으로 센다.주어진 범위 → 세자리수스트라이크&볼 → 조건순회 → 모든 수 탐색민혁: 123 영수: 1 스트라이크 1 볼.민혁: 356 영수: 1 스트라이크 0 볼.민혁: 327 영수: 2 스트라이크 0 볼.민혁: 489 영수: 0 스트라이크 1 볼.이때 가능한 답은 324와 328, 이렇게 두 가지이다. import sysfrom iterto.. CS/알고리즘 2025. 1. 4. [소프트웨어 공학] 유스케이스 분석 소개유스케이스 분석이란 무엇일까?유즈케이스 분석, 어떻게 해야 할까?유즈케이스 분석, 왜 해야 할까?유스케이스 다이어그램의 활용유스케이스와 객체지향유즈케이스 분석, 왜 해야 할까?애자일 방법론과 유즈케이스 분석애자일 방법론과 유즈케이스 분석의 연관성은 유연한 요구사항 관리와 고객 중심 개발이라는 공통 목표를 갖는다는 점에서 공통 분모가 존재합니다. 두 가지 모두 사용자에게 가치를 제공하는 데 초점을 맞추고, 지속적인 피드백을 통해 요구사항을 반영하고 발전시키는 과정에서 강력한 시너지를 냅니다.고객 중심 개발유즈케이스 분석은 고객이나 사용자 관점에서 시스템이 제공해야 하는 기능을 명확하게 정의하도록 도와줍니다. 이를 통해, 개발 팀이 실질적으로 고객이 원하는 것을 제공하는 데 집중할 수 있습니다. 애자일의.. CS 2024. 9. 7. [대규모 시스템 설계 기초 2] 11장. 결제 시스템 파헤치기 오늘은 가상면접사례로 배우는 대규모 시스템 설계 기초 2의 11장 결제시스템의 내용을 어제에 이어 읽고 정리해봤습니다. 본 설계안에서는 하루 총 100만 건의 트랜잭션과 초당 10건의 트랜잭션(TPS)가 처리되며 결제 트랜잭션의 정확한 처리에 초점을 맞췄다.문제 이해 및 설계 범위 확정아마존닷컴과 같은 전자상거래 애플리케이션을 위한 결제 백엔드를 구축한다고 가정한다. 전 세계적으로 사용될 수 있는 애플리케이션이며, 하나의 통화만 사용한다고 가정한다.기능 요구사항대금 수신 : 결제 시스템이 판매자를 대신하여 고객으로부터 대금을 수령한다.대금 정산 : 결제 시스템이 전 세계의 판매자에게 제품 판매 대금을 송금한다.비기능 요구사항신뢰성 및 내결함성 : 결제 실패는 신중하게 처리해야 한다.내부 서비스와 외부 서.. CS/기타 2024. 4. 26. [대규모 시스템 설계 기초 2] 7장. 호텔 예약 시스템 파헤치기 이론들어가기 앞서오늘은 가상면접사례로 배우는 대규모 시스템 설계 기초 2의 7장 호텔 예약 시스템의 내용을 읽고 정리해봤습니다. 호텔 예약 시스템은 해당 내용을 바탕으로 회사 강의 결제 시스템 에 녹여낼 수 있는 부분이 많아보였습니다. 또한 사내 운영 개선 업무를 하면서 적용했던 부분과 연관되는 부분들이 많아 흥미로웠습니다.요구사항 분석5000개의 호텔에 100만 개 객실을 갖춘 호텔 체인을 위한 웹사이트를 구축하라.결제는 예약 시, 전부 진행한다.결제는 호텔 웹사이트 혹은 앱에서만 가능하다.10% 초과 예약이 가능해야 한다.객실 가격은 그날 상황에 따라 유동적이어야 한다.비기능 요구사항높은 수준의 동시성 지원 : 성수기, 대규모 이벤트 기간에 고객이 많이 몰릴 때, 동시성 이슈를.. CS/기타 2024. 4. 23. Redis에 대해 알아보자 (자료구조, Cache) 개요 쿠팡에서 모든 상품이 품절 표시되는 문제가 발생하였다. 레디스 DB 때문이란 발표가 있었다. https://www.digitaltoday.co.kr/news/articleView.html?idxno=212904 Redis(Remote Dictionary Server) Remote : 외부 Dictionary : Key-Value 형태 값 저장소 Server : 서버 Database, Cache, Message Broker로도 사용할 수 있다. In-memory Data Structure Store Supports rich data structures Redis 자료구조 비교군인 Memcached에선 Collection을 제공함. String, Lists, Sets, Sorted Sets, Hashe.. CS/기타 2024. 4. 14. [소프트웨어 아키텍처 101] 챕터 12. 마이크로커널 아키텍처 스타일 마이크로커널 아키텍처 스타일 이미 수십 년 전에 만들어진 마이크로커널 아키텍처(microkernel architecture, 플러그인 아키텍처라고도 함)는 오늘날에도 널리 쓰이고 있다. 이 아키텍처 스타일은 (단일 모놀리식 배포 단위로 패키징해서 다운로드 및 설치가 가능하며, 보통 고객 사이트에서 서드파티 제품으로 설치되는) 제품 기반 애플리케이션에 적합하며, 비제품 고객 비지니스 애플리케이션에도 많이 사용된다. 12.1 토폴로지 마이크로커널 아키텍처 스타일은 코어 시스템(core system)과 플러그인 컴포넌트(plug-in component)라는 두 가지 아키텍처 요소로 구성된 비교적 단순한 모놀리식 아키텍처이다. 애플리케이션 로직은 독립적인 플러그인 컴포넌트와 기본 코어 시스템에 골고루 분산되어 .. CS/기타 2024. 2. 12. [소프트웨어 아키텍처 101] 챕터 11. 파이프라인 아키텍처 스타일 파이프라인 아키텍처 파이프라인 아키텍처(pipeline architecture, 파이프와 필터 아키텍처라고도 함)는 소프트웨어 아키텍처에서 끊임없이 등장하는 기본적인 아키텍처 스타일입니다. 개발자와 아키텍트가 기능을 개별 파트로 분리하기로 결정하는 순간부터 이 패턴이 수반된다. 함수형 언어 개발자는 언어 구조와 이 아키텍처 요소가 유사하다고 생각할 것이다. 사실, 맵리듀스(MapReduce) 프로그래밍 모델을 응용한 많은 도구가 이 기본 토폴로지를 따릅니다. 이처럼 파이프라인 아키텍처 스타일은 저수준에서 구현할 수도 있고 고수준의 비지니스 애플리케이션에도 적용할 수 있다. 11.1 토폴로지 파이프라인 아키텍처는 다수의 파이프와 필터로 구성된다. 파이프와 필터는 특정한 방식으로 조정되며, 보통 필터 간 단.. CS/기타 2024. 2. 12. [소프트웨어 아키텍처 101] 챕터 10. 레이어드 아키텍처 스타일 레이어드 아키텍처 스타일 레이어드 아키텍처(layered architecture, n티어(n-tiered) 아키텍처)는 가장 흔한 아키텍처 스타일 중 하나이다. 단순하고 대중적이면서 비용도 적게 들어 모든 애플리케이션의 사실상 표준 아키텍처이다. 시스템을 설계하는 조직은 그 조직의 소통 구조를 그대로 복제한 듯 설계할 수밖에 없다는 **콘웨이의 법칙**을 떠올려보면, 레이어드 아키텍처는 애플리케이션을 개발하는 아주 자연스러운 방법이다. 그러나 레이어드 아키텍처 스타일은 묵시적 아키텍처 안티패턴, 우발적 아키텍처 안티패턴 등의 몇몇 아키텍처 안티패턴의 범주에 속한다. 10.1 토폴로지 레이어드 아키텍처에서 내부 컴포넌트는 논리적으로 수평한 레이어들로 구성되며, 각 레이어는 애플리케이션에서 주어진 역할을 수.. CS/기타 2024. 2. 12. [마이크로서비스 아키텍처 구축] 챕터2. 마이크로서비스 모델링 방법 2.4 딱 도메인 주도 설계만큼 마이크로서비스 경계를 찾는 데 사용되는 기본 메커니즘은 도메인 주도 설계(DDD)이며, 이는 도메인 자체를 중심으로 진행한다. DDD는 프로그램에서 문제 영역을 더 잘 표현하는 중요하는 개념들을 제시했다. 보편 언어 의사소통을 돕기 위해 코드와 도메인 설명에 사용할 공통 언어를 정의하고 채택한다. 애그리거트 객체들의 집합이며 일반적으로 실제 세계 개념과 관련된 하나의 개체로 관리된다. 경계 콘텍스트 더 큰 범위의 시스템에 대한 기능을 제공하지만 복잡성을 숨기는 비즈니스 도메인 내부의 명시적인 경계. 2.4.1 보편 언어 보편 언어란 사용자가 쓰는 용어를 코드에서 동일하게 사용하려고 노력해야 한다는 것이다. 용어가 통용되는 곳? 코드! 코드에는 동일하게 사용되는 용어가 없기.. CS/기타 2024. 2. 2. [마이크로서비스 아키텍처 구축] 챕터1. 마이크로서비스란? (MSA 도입 전에 고려해야 하는 것들) 들어가기에 앞서 사람들이 MSA에 열광하는 이유 왜 사람들은 MSA로 전환하려고 할까? 전환의 이유로 꼽는 Tech 팀들의 글에는 공통적인 이야기가 있다. "모놀리식 구조의 코드 베이스"가 커지면 문제가 발생된다는 점이다. 배포 시, 예상치 못한 버그가 발생하기도 하고 배포하는 데에도 시간이 오래 걸린다. "하나의 코드 베이스를 여러 인원이 함께 작업하다보니, 서로의 작업 영역의 충돌이 잦다"는 점이다. 이로 인해, 개발 생산성이 낮아지게 된다. 이에 반해, MSA로 도입하면 아래와 같은 장점이 있다고 말한다. 비즈니스 도메인에 따라 서버를 구분함로써 독립적으로 배포 가능한 환경 구축이 가능하다. 독립적으로 배포 가능하면, 빠른 업데이트가 가능해진다. 또 모놀리식 아키텍처 배포에 비해, 배포 단위가 작아.. CS/기타 2024. 1. 19. 이전 1 2 3 4 다음 반응형