분류 전체보기124 객체지향적으로 개발해야 하는 이유 객체지향 프로그래밍이란 절차지향적인 개발 방법에서 발생하던 여러가지 문제점들을 해결하기 위해 등장한 패러다임 객체지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용합니다. 레고 블럭 조립하듯이 키보드, 마우스 갈아 끼우듯이 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 객체지향 프로그래밍은 컴퓨터의 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것입니다. 객체는 메시지를 주고 받고, 데이터를 처리할 수 있습니다(협력) 실세계와 객체 지향을 1:1로 매칭 x 그래도 실세계의 비유로 이해하기에는 좋음 역할과 구현으로 세상을 분리 캡슐화는 데이터(변수)와.. 2023. 12. 11. 동시성 이슈 동시성 이슈는 여러 스레드나 프로세스가 동시에 실행될 때 발생하는 문제입니다. 이러한 문제는 주로 공유 자원에 대한 동시 접근, 경쟁 조건, 데드락 등과 관련이 있습니다. 1. 공유 자원에 대한 동시 접근 : 여러 스레드가 동시에 같은 자원(변수, 객체, 데이터)에 접근하려고 할 때 발생합니다. 이로 인해 예상치 못한 결과나 데이터의 무결성 문제가 발생할 수 있습니다. 2. 경재조건 (Race Condition) : 두 개 이상의 스레드가 특정 연산의 순서에 따라 결과가 달라지는 상황을 의미합니다. 예를 들어 두 스레드가 동시에 같은 변수를 증가 시키려고 할 때, 예상 값 보다 다른 값이 저장 될 수 있습니다. 3. 데드락 (Deadlock) : 두 개 이상의 스레드가 서로 다른 자원을 기다리며 무한히 .. 2023. 12. 11. Pub&Sub Pub&Sub 패턴 메시징 모델중의 하나로 발행과 구독 으로 개념화한 형태 발행자와 구독자는 서로에 대한 정보 없이 특정 주제(토픽, 채널)를 매개로 송수신 Pub&Sub ( 발생과 구독 ) 메시징 미들웨어의 장점 비동기 : 통신의 비동기 처리 낮은 결합도 : 송신자와 수신자가 직접 의존하지 않고 공통 미들웨어에 의존 탄력성 : 구성원들간의 느슨한 연결로 인해 일부 장애가 생겨도 영향을 최소화 함 메시징 미들웨어 제품 종류 : Kafka, RabbitMQ, ActiveMQ ... Redis&Pub 의 특징 메시지가 큐에 저장되지 않음 Kafka 컨슈머 그룹 같은 분산 처리 개념이 없음 메시지 발행시 push 방식으로 subscriber에게 전송 메시지 구독이 늘어날 수록 성능 저하 발생& 구독의 특징 R.. 2023. 12. 11. Redis 리더보드 만들기 리더보드의 동작 API 빠른 업데이트 / 빠른 조회가 필요 점수 생성 / 업데이트 -> ex : setScore(userId, score) 상위 랭크 조회 (범위 기반 조회) -> ex : getRange(1~10) 특정 대상 순위 조회 (값 기반 조회) -> ex : getRank(userId) RDB를 사용했을 경우의 성능 문제 UserId Score UserA 1000 UserB 900 UserC 950 ... ... 업데이트 측면 한 row만 접근하여 update 하므로 빠름 ex : update ranking set score = 990 where userId = 'UserA'; 랭킹 범위나 특정 대상의 순위 조회 랭킹 범위나 특정 대상의 순위를 조회 할 경우 db에 순위 컬럼이 없으며, 만약 .. 2023. 12. 11. 이전 1 ··· 25 26 27 28 29 30 31 다음