💡동시성과 병렬성에 대하여 학습한 내용을 기록하였습니다.동시성(Concurrency)여러 작업을 실행할 수 있는 능력을 의미하며, 실제로는 한 번의 하나의 작업을 수행하더라도 작업 간 빠르게 전환함으로써 동시에 여러 작업이 진행되는 것처럼 보이게 합니다.CPU가 여러 작업을 짧은 시간 간격으로 번갈아가며 실행하기 때문에, 마치 여러 작업이 동시에 수행되는 것처럼 보입니다.특징프로세스 간 빠른 전환으로 CPU 자원을 최대한 활용할 수 있습니다.하지만 여러 작업이 같은 자원에 접근할 때 데이터 경합 문제 발생이 있을 수 있으며, 이를 해결하기 위한 동기화가 필요합니다.단일 코어동시성은 하드웨어적으로 병렬 처리가 지원되지 않는 단일 코어에서도 구현 가능합니다.[Core] : CPU에 내장된 처리회로로 명령어..
💡동기, 비동기의 차이에 대해서 이해하고 안드로이드에서 Thread와 Handler가 어떻게 동작하는지 정리하였습니다. Synchronous vs Asynchronous동기와 비동기는 작업의 처리 방식을 나타내는 개념으로, 작업의 실행 순서와 대기 방식에서 차이가 있습니다.동기(Synchronous)동기적 처리는 작업이 직렬적으로 처리되며, 하나의 작업이 끝날 때까지 다음 작업을 기다리는 방식입니다.현재 실행 중인 작업이 완료될 때까지 다른 작업을 수행할 수 없으며, 결과가 즉시 반환됩니다.호출한 코드가 끝날 때까지 대기 상태가 되며, 순차적인 처리로 로직이 단순합니다.fun synchronousExample() { println("작업 시작") // 동기적으로 데이터를 가져옴 (예:..
💡 가장 자주 접했던 객체 지향 설계에 대하여 학습하였습니다. 객체 지향 프로그래밍(OOP)프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법입니다.명령형 프로그래밍인 절차지향 프로그래밍의 단점을 보완하기 위하여 등장하였습니다.절차지향 프로그래밍무엇을 어떤 절차로 할 것인가를 중점으로 두고 있으며, 순차적인 처리를 중요시 하는 프로그래밍 기법입니다.프로그램 전체가 유기적으로 연결되도록 하며, 대표적으로 C언어가 있습니다.실행속도가 빠르지만, 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다는 단점이 있습니다.절차지향 프로그래밍에서 개선점절차지향 프로그래밍은 모듈을 재활용하기 어렵기 때문에 대규모 프로젝트..
💡 함수형 프로그래밍의 개념과 장점을 이해하고 다른 프로그래밍 방식과 차이를 이해하였습니다 ! 함수형 프로그래밍함수형 프로그래밍은 대부분의 문제를 순수 함수로 나누어 해결하는 기법입니다.작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해줍니다.클린 코드의 저자 Robert C.Martin은 함수형 프로그래밍을 대입문이 없는 프로그래밍으로 정의하였습니다.명령형 프로그래밍 기반으로 개발할 때 소프트웨어의 크기가 커짐에 따라 발생하는 스파게티 코드의 유지보수 어려움을 해결하기 위해 사용되었습니다.선언형 프로그래밍의 방식입니다.명령형 프로그래밍무엇(What)을 할 것인지 나타내기보다 어떻게(How)를 할 것인지 설명하는 방식입니다.아래 두 가지로 구분 됩니다.절차지향 프로그래밍:..
💡 우아한테크코스 과정에서 학습했던 점진적 리팩터링에 대해 복습하였습니다! 레거시 코드 리팩토링레거시 코드 리팩토링은 기존의 코드베이스를 개선하는 과정입니다.주된 목적은 코드의 기능을 변경하지 않으면서 코드의 구조를 더 깔끔하게하고 유지보수가 용이하게 만드는 것입니다.보통 오래된 시스템에서 작성된 코드에 필요합니다.레거시 코드읽기 어려움코드가 복잡하거나 문서화가 부족하여 이해하기 어렵다유지보수 어려움코드의 수정이나 기능 추가가 힘들고 버그가 발생하기 쉽다테스트 부족충분한 테스트가 없어서 코드 변경 시 예상치 못한 문제를 일으킬 수 있다점진적인 리팩터링한 번에 많은 코드를 바꾸는 것이 아닌, 여러 작은 단계로 나누어 변경하는 방법입니다.기존의 테스트 코드가 깨지지 않는 상태로 리팩터링을 실행합니다.컴파일..
💡 리뷰 활동을 하면서 디미터의 법칙을 상기시켜보라는 리뷰를 받게 되었습니다. 객체 지향 프로그래밍에서 중요하게 적용되는 디미터의 법칙에 대하여 학습하였습니다. 디미터의 법칙?Law of Demeter어떤 객체가 다른 객체에 대해 지나치게 많이 알다보니, 결합도가 높아지고 좋지 못한 설계가 발생합니다.이를 개선하고자 객체에게 내부 값을 숨기는 대신 함수를 공개하도록 하는 것이 디미터의 법칙입니다.다른 객체가 어떠한 내부 값을 가지고 있는지 속사정을 몰라아 햔다는 뜻으로, 아래와 같이 불리기도 합니다.Don’t Talk to Stranger (낯선 이에게 말하지 마라)Principle of lesat knowledge (최소 지식 원칙)또한 직관적인 이해를 위해서 여러 개의 .(도트)를 사용하지 않도록 ..