분류 전체보기
-
멀티 프로세스 vs 멀티 스레드TIL 2024. 1. 2. 16:22
멀티 프로세스와 멀티 스레드는 한 애플리케이션에 대한 처리방식이다. 단순히 프로그램을 여러개 띄워놓는 것이 아니라, 언제 어느 때에 어느 방식으로 애플리케이션을 처리하느냐에 따라 다른 것으로 이해해야 한다. 단일이 아닌 여러 개의 프로세스, 스레드가 다중으로 돌아감으로써 성능 향상 등 여러가지 효과를 얻을 수 있다. 하지만 이로 인한 여러 부가적인 문제점도 발생하게 된다. 멀티 프로세스 운영체제에서 하나의 응용 프로그램에 대해서 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술이다. 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러 개의 프로세스를 생성하는 것이다. 멀티 프로세스 내부를 보면, 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성한다. ..
-
리트코드 - 724. Find Pivot Index코딩테스트 2023. 12. 31. 16:30
https://leetcode.com/problems/find-pivot-index/description/ Find Pivot Index - LeetCode Can you solve this real interview question? Find Pivot Index - Given an array of integers nums, calculate the pivot index of this array. The pivot index is the index where the sum of all the numbers strictly to the left of the index is equal to the sum of leetcode.com 정수의 배열이 주어지면 이 배열의 피벗 인덱스를 계산한다. 피벗 인덱스는 ..
-
[PROJECT] 부하테스트 도구 선택프로젝트/Movie-Ticketing 2023. 12. 28. 21:53
부하 테스트 부하 테스트는 시스템이나 애플리케이션의 성능을 측정하고 한계를 파악하는 데 필수적이다. 영화 예매 시스템과 같은 경우에는 다음과 같은 지점에서 부하 테스트가 필요하다: 테스트 필요 지점: 사용자 인증: 사용자 로그인 요청의 동시 처리 능력을 확인하기 위해. 영화 검색 및 목록 조회: 대량의 읽기 요청에 대한 데이터베이스 응답 시간과 캐시 성능을 측정하기 위해. 좌석 선택 및 예매: 트랜잭션 처리 능력과 동시성 관리를 검증하기 위해. 결제 시스템 통합: 결제 서비스와의 통합이 병목 현상을 일으키지 않도록 하기 위해. jmeter 아파치에서 제공하는 어플리케이션으로, java로 이루어진 오픈소스의 성능테스트 도구 다른 테스트 도구들 보다 좀 더 웹서버 성능테스트에 특화 되어져 있다. 테스트케이스..
-
[PROJECT] MySQL, PostgreSQL프로젝트/Movie-Ticketing 2023. 12. 28. 21:42
PostgreSQL과 MySQL의 유사점 PostgreSQL과 MySQL은 모두 관계형 데이터베이스 관리 시스템이다. 공통 열 값을 통해 서로 관련된 테이블에 데이터를 저장할 수 있다. 또한 SQL를 인터페이스로 사용하여 데이터를 읽고 편집 가능하다. 그리고 오픈 소스이며 강력한 개발자 커뮤니티 지원 제공하고, 두 제품 모두 데이터 백업, 복제 및 액세스 제어 기능이 내장되어 있다. 차이점 ACID 규정 준수 원자성, 일관성, 격리성, 지속성(ACID)은 예상치 못한 오류가 발생한 후에도 데이터베이스를 유효한 상태로 유지하는 데이터베이스 속성이다. 예를 들어, 많은 수의 행을 업데이트했는데 중간에 시스템이 실패하는 경우 행을 수정해서는 안된다. MySQL은 InnoDB 및 NDB 클러스터 스토리지 엔진과..
-
[PROJECT] Django vs FastAPI프로젝트/Movie-Ticketing 2023. 12. 28. 18:54
Django와 FastAPI는 둘 다 백엔드 웹 개발에 널리 사용되는 프레임워크다. 그러나 그들의 설계 철학, 사용 사례, 그리고 기능적인 측면에서 상당한 차이가 있다. Django 배터리 포함 접근 방식 Django는 "배터리가 포함된" 접근 방식을 취한다. 대부분의 일반적인 웹 개발 요구사항을 충족하기 위해 필요한 도구와 기능이 프레임워크에 내장되어 있다는 것을 의미한다. ⇒ 프레임워크가 많은 기본 기능들을 내장하고 있어서, 복잡한 웹 애플리케이션을 개발할 때 필요한 대부분의 기능들을 즉시 사용할 수 있다. FastAPI에서는 이러한 "배터리 포함" 접근 방식이 덜 두드러진다. FastAPI는 가벼운 프레임워크이며, 개발자가 필요에 따라 추가적인 도구나 라이브러리를 선택하여 통합해야 한다. 예를 들어..
-
리트코드 - 2215. Find the Difference of Two Arrays코딩테스트 2023. 12. 28. 02:25
https://leetcode.com/problems/find-the-difference-of-two-arrays/description/ Find the Difference of Two Arrays - LeetCode Can you solve this real interview question? Find the Difference of Two Arrays - Given two 0-indexed integer arrays nums1 and nums2, return a list answer of size 2 where: * answer[0] is a list of all distinct integers in nums1 which are not present in nums2 leetcode.com 두 개의 0..
-
Thread & Process - 2TIL 2023. 12. 28. 01:45
프로세스 & 스레드의 생명 주기 프로세스와 스레드는 각각의 생명 주기를 가진다. 운영체제는 이 생명 주기를 관리하고 프로세스와 스레드를 조정해서 시스템 자원을 효율적으로 사용할 수 있게 된다. 프로세스 스케쥴링 운영체제에서 CPU를 사용할 수 있는 프로세스를 선택하고, CPU를 할당하는 작업이다. 프로세스의 우선순위, 작업량 등을 고려해서 효율적으로 배치한다. 이를 통해 운영체제는 효율적으로 CPU를 사용해서 시스템 전반적인 성능을 향상시킨다. 스케쥴링은 운영체제의 특징과 시스템 요구사항에 따라 여러 알고리즘 방식으로 동작된다. FCFC(First-Come, First-Served), SJF(Shortest-Job-First)등이 있다. 프로세스 상태 프로세스의 상태는 프로세스가 실행되는 동안 변경되는 ..
-
Docker로 개발환경을 구축하는 이유TIL 2023. 12. 27. 11:13
프로젝트를 제작하면서 개인 로컬 환경에서 모든 플랫폼을 직접 설치해 코드 작성 및 테스트를 진행하고 문제가 없어 외부 서버에 배포를 하게 된다고 가정해보자. 배포 환경과 개발 환경의 차이로 인해 발생할 수 있는 문제점은 개발 환경에서 제어할 수 없고 예측하기 힘들다. 이러한 문제를 해결하기 위해서는 어플리케이션 구성을 위한 여러 플랫폼의 종류나 버전이 항상 동일하게 유지되고 수정될 수 있도록 독립적인 개발 및 배포 환경이 필요하다. 1. 일관된 개발 환경 한 컴퓨터에서 여러가지 개발 환경을 구축하다 보면 해당 개발 환경끼리 충돌하는 경우가 생길 수 있음. ex) 어떤 프로젝트 A는 python 3.8을 사용하고 어떤 프로젝트는 python 3.11 버전을 사용할 수 있다. 이렇게 되면 프로젝트 별로 py..