ARC란 ? 인스턴스들의 참조 카운트 (Reference Count)를 계산해서 적절한 시점에 인스턴스를 자동으로 해제하도록 도와주는 도구 ARC의 역할 class의 인스턴스를 생성하게 되면 인스턴스는 Heap 메모리에 생성하게 된다. 인스턴스가 더 이상 사용하
프로그래머스 - 프로세스운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.예를 들어 프로세스 4개 A, B, C, D가
테스트 코드를 작성하기 전에 UnitTest가 무엇인지 TDD 개발 프로세스는 무엇인지에 대해 정리해보았다.테스트 코드를 작성하면서 개발하는 테스트 주도 개발이다.개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과
NewsAPI를 활용하여 본격적으로 프로젝트를 진행하기 전에 필요한 모델과 구조를 그려보았다.먼저 가져올 데이터의 형식은 https://newsapi.org/v2/everything?\*\*q=apple\*\*&\*\*from=2023-05-14\*\*&\*\
일반적으로 운영체제에서 다루는 스레드는 CPU를 할당 받을 수 있는 작업의 단위이다. 그렇다면 흔히 PC를 구매할때 CPU의 스펙에 나오는 8코어 / 16스레드 와는 어떻게 다른 것일까 ? 하드웨어 스레드와 소프트웨어 스레드 우리가 흔히 운영체제에서 공부하는 프
이번 5월 iOS 원티드 프리 온보딩을 들으면서 CustomDebugStringConvertible 프로토콜에 대해 알게 되었는데생각보다 활용도가 높고 debugPrint 라는 함수도 알게되어 정리를 하게 되었다.우리가 기존에 쓰던 print문은 print문 내의 우리
최근 사이드 프로젝트를 하던 중에네트워크 통신을 하기 전 임시로 Dummy.json 파일을 만들어서 관련된 정제함수를 만들기 위한 작업을 진행했었다.그러나 Bundle에 있는 Json파일을 아예 읽지 못하는 오류가 있었다.아래처럼 맞는 경로에 들어가있는데 대체 왜 읽지
요구사항 정의 앱을 만들기에 앞서 필요한 기능들을 대략적으로 정리해보았다. 약 복용 체크 화면 단순한 디자인이지만 확실히 눈에 띄면 좋을 것 같다. 무조건 크기는 크게 한 화면에 여러 가지를 넣지 말아야 할 것 같다. >큰 알약 버튼으로 약 복용했는지 스스로 체
완전 이진 트리부모와 자식간의 대소관계가 명확하다힙에는 최대힙과 최소힙이 있다.최소힙은 부모노드의 키 값이 자식 노드보다 큰 힙이고 따라서 루트 노드가 가장 큰 값을 갖는다.최대힙은 부모노드의 키 값이 자식노드보다 작거나 같은 힙이다. 따라서 루트 노드가 가장 작은 값
BruteForce ( 완전 탐색 ) 완전 탐색이란 ? Brute : 무식한 Force: 힘 말 그대로 모든 경우의 수를 탐색하여 해를 찾아내는 방법이다. 구현하기 쉽고 완벽한 해를 찾을 수 있다는 장점이 있지만 실행시간, 시간복잡도 면에서 매우 비효율적이라
흔히 UIKit 에서 사용하는 MVC 패턴은 Model - ViewController 로 ViewController러 내부에 모든 비즈니스 로직과 뷰가 들어가게 된다.이 경우에 ViewController의 코드가 굉장히 지저분해지고 뷰의 재사용성이 없다. 또한 View
앱의 실행/종료 및 Foreground/Background 상태에 있을 때, 시스템이 발생시키는 이벤트에 의해 앱의 상태가 전환되는 과정을 의미한다.앱의 현재 상태에 따라서 수행할 수 있는 작업과 수행할 수 없는 작업이 결정된다.예를 들어 foreground 상태에서는
먼저 들어온 데이터가 가장 먼저 나가는 특징을 가진 자료구조📌 FIFO 구조 : ( 선입선출 ) 먼저 들어간 것이 먼저 나온다.배열로 구현 후에 가장 마지막 인덱스부터 dequeue 해준다.queue에 새로운 데이터를 삽입한다.enqueue 는 기존 queue의 마지
Stack은 가장 마지막에 들어간 값이 가장 먼저 나오는 자료구조이다.📌 LIFO : Last-in, First-out 선입선출 구조, 마지막에 들어온 값이 먼저 나가는 구조push로 배열의 마지막에 데이터가 추가되고 pop으로 배열의 마지막 데이터가 삭제된다.Sta
프로세스가 CPU를 사용하여 실행하고 있을 때 하드웨어 장치에서 비동기적으로 신호( I/O 같은 )가 발생하여 처리가 필요한 경우에 커널에게 처리를 요청하는 것이다.CPU는 명령을 가져와서 실행을 한다.연산 처리 및 데이터 접근 등등의 일을 하며 하나의 명령 실행이 끝
서로 다른 두 프로세스가 동시에 공유 자원을 쓰지 않도록 하는 기법공유 자원을 Critical Section (임계구역) 이라고 하며 각 프로세스의 사용자 모드에서는 로컬 메모리를 가지므로 Critical Section이 따로 존재하지 않는다.그러나 커널 모드 안에서는
접근 제어란 코드 간의 접근을 소스파일이나 모듈 단위 등으로 제한하는 것을 의미한다.이렇게 코드 접근을 제한하여 특정 코드의 세부적인 부분을 감추거나 필요한 부분만을 사용할 수 있도록 제어할 수 있다.접근 제어를 구현할 수 있도록 해주는 것이 접근 레벨이다.Swift에
CPU를 사용하기 위한 작업들을 관리하는 것스케줄러가 Dispatch 함으로써 프로세스가 CPU를 할당 받아 작업을 수행한다.이때 스케줄링은 CPU를 할당하기 위해 결정하는 과정이라고 생각하면될 것 같다.작업에 할당하는 CPU의 사용시간Time Slice가 0이 된다면
PCB는 담긴 meta data들이 많기 때문에 메모리에서 큰 용량을 차지할 수 있다.따라서 Parent 에서 Child를 fork() 하는 과정에서 PCB가 복사되고 이때 많은 오버헤드가 발생하는데 이를 줄이기 위해서 PCB 구조체 전체를 복사하는 것이 아닌 포인터를
문맥교환이라고도 한다.CPU를 사용하는 프로세스가 변경될 때 발생하는 CPU 교환 작업이라고 생각하면 될 것 같다.Context Switch가 발생할때 수행되는 커널의 함수SystemCall 과는 다르게 외부에서 호출할 수 없으며 커널 내에서만 호출이 가능하다.이때 s