본문 바로가기

분류 전체보기342

GCD : Grand Central Dispatch 공룡책을 보는 중 암묵적 스레드 부분에서 macOS 와 iOS 의 예시로 GCD 가 나와있어 따로 정리했다. GCD 란 Grand Central Dispatch 는 macOS 및 iOS 운영체제를 위해 Apple 에서 개발한 기술 개발자가 병렬로 실행될 코드 섹션(태스크)을 식별할 수 있도록 하는 runtime library + API + 언어 확장 의 조합이다. OpemMP와 마찬가지로 GCD는 스레딩에 대한 대부분의 세부 사항을 관리한다. 특징 실행시간 수행을 위해 태스크를 디스패치 큐에 넣어서 스케줄 한다. Queue에서 태스크를 제거할 때 관리하는 스레드 풀에서 가용 스레드를 선택하여 태스크를 할당한다. GCD는 직렬(serial)과 병행(concurrent) 두 가지의 유형의 디스패치 큐를 유지.. 2020. 6. 16.
🥓Thread 스레드란 : CPU 사용의 기본 단위를 나타내며 동일한 프로세스에 속하는 스레드는 코드 및 데이터를 포함하여 많은 프로세스 자원을 공유한다. 멀티 스레드 응용 프로그램의 이점 응답정 자원공유 경제성 확장성 병행성과 병렬성 병행성: 단일 CPU가 있는 시스템에서 여러 스레드가 진행 중일 경우 병렬성: 멀티 코어 시스템에서 여러 스레드가 동시에 진행 중인 경우 다중 스레드 응용 프로그램 설계 도전과제 작업 분할: 스레드별 작업을 분할하는 기준 모호 균형 조정: 스레드간 작업량이 균등해야함 서로 다른 스레드 간 데이터 분할 데이터 종속성 식별 테스트 및 디버깅 어려움 데이터 병렬 처리 vs 작업 병렬 처리 데이터 병렬 처리: 동일한 데이터 부분 집합을 다른 컴퓨팅 코어에 분산시키고 각 코어에서는 동일한 연산 .. 2020. 6. 16.
🚀CPU 스케줄링 알고리즘 CPU 스케줄링이란? 준비큐에서 대기 프로세스를 선택하고 CPU를 할당하는 작업 디스패처에 의해 선택된 CPU가 프로세스에 할당된다. 선점 vs 비선점 기법 선점 : CPU를 프로세스로 부터 뺏을 수 있는 경우 비선점: 프로세스가 자발적으로 CPU 제어를 포기하는 경우 거의 모든 최신 운영체제가 선점적이다. 스케줄링 알고리즘의 평가기준 CPU 이용률 처리량 총 처리시간 대기 시간 응답 시간 스케줄링 알고리즘 선입 선처리 스케줄링(FCFS) + 가장 간단한 스케줄링 알고리즘이다. - 매우 긴 프로세스를 기다리게 할 수 있다. 최단 작업 우선 스케줄링(SJF) + 최적이며 평균 대기시간이 가장 짧다. - 다음 CPU 버스트의 길이를 예측하기 어려워 구현하는게 어렵다. 라운드 로빈 스케줄링(RR) : CPU를.. 2020. 6. 16.
CA & CO Chapter 20 practice problem 20.2 Show the micro-operations and control signals in the same fashion as Table 20.1 for the processor in figure 20.5 for the following instructions: Load Accumulator t1: MAR 2020. 6. 11.
01. 배열과 문자열 Hash table 효율적인 탐색을 위한 자료구조 key-value 방식 구현방법 키의 해시 코드를 계산한다. (키의 개수는 무한한데 int 의 개수는 유한하기 때문에 서로다른 두 개의 키가 같은 해시코드를 가리킬 수 있다.) hash(key) % array_length 같은 방식으로 해시코드를 이용해 배열의 인덱스를 구한다. (서로다른 두개의 해시 코드가 같은 인덱스를 가리킬 수 있다.) 배열의 각 인덱스에는 키와 값으로 이루어진 연결 리스트가 존재한다. 키와 값을 해당 인덱스에 저장한다. 충돌에 대비하여 반드시 연결 리스트를 이용한다. (충돌 : 서로다른 두 개의 키가 같은 해시 코드를 가리킬때, 서로다른 두 개의 해시 코드가 같은 인덱스를 가리킬때) 값을 찾을 때 주어진 키로부터 해시 코드를 계산하.. 2020. 6. 9.
🎓졸업과제 - 착수 보고서 주제 : 질의응답 시스템을 위한 테이블 데이터 임베딩 및 어텐션 시각화 과제 목표 기계독해를 통해 사용자의 질문에 대해서 가장 알맞는 정답을 제시하는 질의응답 시스템을 개발한다. 위키피디아에 존재하는 모든 문서 중에서 일반 텍스트가 아닌 테이블 데이터에서 질문에 대한 정답을 찾나내는 것을 목표로 한다. 입력 : 정답을 포함하고 있는 위키피디아 문서 정답을 찾는 과정 위키피디아에 있는 여러 개의 문서 중에 어느 테이블에 정답이 존재하는지 결정한다. 해당 테이블에서 정답이 있는 셀을 결정한다. 셀에서 최종 정답을 추출한다. 대표적으로 사용될 기술 BERT Memory Network 참고논문 http://koreascience.kr/article/CFKO201832073078709.page TabQA : Qu.. 2020. 6. 3.
RxSwift를 사용한 비동기 프로그래밍 #4 [마지막] https://github.com/iamchiwon iamchiwon - Overview https://iamchiwon.github.io http://www.makecube.in - iamchiwon github.com 자 서버가 개발되고 JSON 이 온다! 이제 서버에 맞게 바꿔야한다. 서버의 데이터를 ViewModel 에 맞게 컨버팅 해주는 작업이 필요하다. fetching 하는 레거시 코드를 가지고 있다. class APIService { static func fetchAllMenus(onComplete: @escaping (Result) -> Void) { URLSession.shared.dataTask(with: URL(string: MenuUrl)!) { data, res, err in if.. 2020. 6. 3.
LeetCode - 994. Rotting Oranges Rotting Oranges - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 In a given grid, each cell can have one of three values: the value 0 representing an empty cell; the value 1 representing a fresh orange; the value 2 representing a rotten orange. Every minute, any fresh orange th.. 2020. 6. 1.
LeetCode - 15. 3Sum 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. Ex.. 2020. 6. 1.
🎓졸업과제 - 착수 보고서 준비와 설계부분 자료조사 주제 : 구문 정보를 이용한 인공신경망 기반 문서 검색 기법 오픈 도메인 질의응답 시스템에서는 입력된 문서에서 정답을 잘 찾아주는 것뿐만 아니라 다양한 지식 문서에서 정답을 포함하고 있을 법한 문서를 잘 골라내어 기계 독해 시스템의 입력으로 주는 것 또한 매우 중요한 작업이다. 문서 추출 작업에 신경망 기법을 적용한다면 정확도가 더 상승할 수 있지만 수많은 문서에 대해서 신경망 모델을 적용한다면 매우 오랜 시간이 걸릴 것이다. 이러한 문제를 극복하기 위해, 본 주제에서는 지식 문서인 위키피디아 문서와 사용자의 질문을 잘 표현하는 임베딩을 학습시키고 LSH를 이용하여 질문과 유사한 임베딩을 가지는 문서를 빠르게 검색할 수 있는 시스템을 개발하고자 한다. 필요 기술 키워드 오픈 도메인 질의응답 시스템 [22.. 2020. 5. 31.
RxSwift를 사용한 비동기 프로그래밍 #3 https://github.com/iamchiwon iamchiwon - Overview https://iamchiwon.github.io http://www.makecube.in - iamchiwon github.com 기획서만 나오고 디자인과 백엔드가 나오기 전에 개발해보자 [기획내용] 메뉴 + - count 요소 메뉴에는 이름과 가격이 있다. clear 로 전부 취소할 수 있다. 전체 가격을 표시할 수 있다. 등등 1. ViewModel 을 만든다. import Foundation // View를 위한 모델 : ViewModel struct Menu { var name : String var price : Int var count : Int } 2. TableVIew 에 ViewModel 을 집어넣.. 2020. 5. 29.
Programmers - 폰켓몬 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. � programmers.co.kr 문제 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬.. 2020. 5. 29.
Programmers - 스킬트리 코딩테스트 연습 - 스킬트리 programmers.co.kr 문제 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return.. 2020. 5. 29.
Programmers - 땅따먹기 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟�� programmers.co.kr 문제 문제 설명 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | .. 2020. 5. 29.
DSC PNU #4 - 4주차 iOS 세션 노트 DSC PNU 2기 iOS 세션 계획 부산대학교 - 지원하기 DSC Pusan National 멤버 지원하기 "대학 생활을 Google 개발자 프로그램과 함께!" sites.google.com 대상 : iOS 를 배우고 싶은 전공, 비전공학생들 조건 : 맥 필요 스터디원 아무도 없�� haningya.tistory.com DSC PNU #1 - iOS 세션 시작전 준비 (preparation before iOS Study) Xcode 설치 // Install Xcode 용량이 꽤 커서 (7~8GB) 미리 설치를 해야 될 것 같습니다. 이미 설치하신 분들은 고대로 토욜 오전 10시에 뵙겠습니다. I think we should install xcode inadvacne of sesseion cau.. ha.. 2020. 5. 29.
문제해결 전략 - 30. 최단 경로 알고리즘 최단경로 문제 주어진 그래프에서 주어진 두 정점을 연결하는 가장 짧은 경로의 길이를 찾는 문제 가중치가 있는 그래프에서의 최단 경로를 찾는 알고리즘을 다룬다. 최단 경로를 구성하는 정점들의 목록을 구해주는 것이 아니기 때문에 실제 경로를 계산하기 위해서는 별도의 정보를 저장해야 한다. 다양한 그래프의 종류와 특성에 따라 최적화된 많은 최단 경로 알고리즘이 존재한다 음수 간선의 중요성 음수 간선을 지나가면 전체 경로의 길이가 짧아진다. 음수 사이클이 있을 경우 경로의 길이는 음의 무한대로 발산 할 수 있다. 그래서 최단 경로를 찾을 수 없으며 음수 사이클이 존재한다는 것만 확인할 수 있다. 단일 시작점과 모든 쌍의 알고리즘 단일 시작점 알고리즘 : 너비 우선 탐색과 비슷하게, 하나의 시작점에서 다른 모든 .. 2020. 5. 29.
RxSwift를 사용한 비동기 프로그래밍 #2 iamchiwon/RxSwift_In_4_Hours RxSwift, 4시간 안에 빠르게 익혀 실무에 사용하기. Contribute to iamchiwon/RxSwift_In_4_Hours development by creating an account on GitHub. github.com [2교시] RxSwift 활용하기 - 쓰레드의 활용과 메모리 관리 Stream의 분리 및 병합 [merge] ReactiveX - Merge operator RxScala implements this operator as flatten, flattenDelayError, merge, and mergeDelayError. merge takes a second Observable as a parameter and merge.. 2020. 5. 28.
LeetCode - 3. Longest Substring Without Repeating Characters Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. .. 2020. 5. 28.
LeetCode - 53. Maximum Subarray Maximum Subarray - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] .. 2020. 5. 28.
RxSwift를 사용한 비동기 프로그래밍 #1 iamchiwon/RxSwift_In_4_Hours RxSwift, 4시간 안에 빠르게 익혀 실무에 사용하기. Contribute to iamchiwon/RxSwift_In_4_Hours development by creating an account on GitHub. github.com [1교시] 개념잡기 - RxSwift를 사용한 비동기 프로그래밍 textview 에 json 데이터를 띄우는 함수 버튼을 누르면 animation이 실행된다. @IBAction func onLoad() { editView.text = "" setVisibleWithAnimation(activityIndicator, true) let url = URL(string: MEMBER_LIST_URL)! let data = tr.. 2020. 5. 27.
LeetCode - 5. Longest Palindromic Substring Longest Palindromic Substring - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example.. 2020. 5. 27.