목록Computer Science (20)
세상에 나쁜 코드는 없다
Generic Programming이란? Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful software. 제너릭 프로그래밍이란 구체적인 알고리즘, 로직, 혹은 행동을 서로 다른 데이터 타입에 대해 적용하기 위해 하나의 일반화된 알고리즘, 로직, 혹은 행동으로 추상화하는 프로그래밍 방법입니다. 이는 추상화의 한 방법이기에, 소프트웨어 문제를 어떻게 추상화하고자 하는가에 ..
상속이 안티패턴이라고? 항간에는 상속이 안티패턴이며, 사용을 하지 않아야 한다는 얘기도 들리는 것으로 보입니다. 이러한 말은 어떤 상황에서 나왔을까요? Is Inheritance That Evil? Why inheritance is considered as a pillar of OOP when so many developers criticize it? We'll see where inheritance comes from and what problems it solves. thevaluable.dev Do Not Use Inheritance | Simple Code 2020.11.06 - 2021.02.14 petozoltan.gitbook.io InstrumentedHashSet 예제로 알아보는 상속의 ..
Process개념Program In ExecutionThe Unit of Work프로세스란 프로그램이 수행되는 작업단위를 의미하며, 운영체제에 의하여 관리됩니다. 운영체제의 가장 큰 임무 중 하나는 디스크의 프로그램이 수행될 수 있도록 메모리로 가져오고, CPU가 어떤 프로세스의 명령어들을 수행하게 할지 결정하는 것입니다. 또한 모든 명령어가 수행되면 프로세스를 종료시키고 프로세스가 사용중이던 메모리와 자원들을 반환하는 작업도 수행합니다.프로세스가 무엇인지 정확하게 이해하기 위해서는 우리가 생성한 프로그램이 어떻게 실제로 동작하는지 그 원리를 알아야할 필요가 있습니다. 아래부터는 프로그램을 수행시키기 위해 운영체제가 수행하는 일들을 살펴보고 그 과정에서 프로세스가 무엇인지 이해도를 높인다음, 프로세스와 ..
개요Memory Management RequirementsRelocationProtectionSharingLogical OrganizationPhysical OrganizationMemory PartitioningFixed PartitioningPartition SizesPlacement AlgorithmDynamic PartitioningPlacement AlgorithmReplacement AlgorithmBuddy SystemRelocationPagingSegmentationSummary개요단일 프로세스 프로그래밍uniprogramming 시스템에서 메인 메모리는 OS의 kernel이 차지하고 있는 영역과 User Program이 차지하고 있는 영역으로 나뉘어 있다. Multiprogramming ..
정의 회문(Palindrome)은 똑바로 읽어도 거꾸로 읽어도 같은 문자열을 의미한다.ex. 기러기, 토마토, 스위스, 인도인, 별똥별 … 회문 판별 알고리즘 회문 판별을 위한 가장 직관적인 방법은 첫 문자와 끝 문자부터 시작하여 안쪽으로 차례차례 비교하는 것이다. bool isPalindrome(string s) { int size = s.size(); for(int i = 0; i< size/2; i++) { if(s[i] != s[size-1-i]) return false; } return true; }이 경우 문자열이 회문인 경우 N/2 번의 반복문이 실행되므로 O(N)O(N)O(N) 의 시간복잡도를 갖는다. 부분 문자열 회문 찾기 알고리즘 주어진 문자열이 있을 때, 부분 문자열 중 회문인 문자..
Generics 지네릭스 Generics 란 ? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하면 객체의 타입 안정성을 높일 수 있고 형변환의 번거로움을 줄일 수 있다. 객체의 타입 안정성을 높인다 의도치 않은 타입의 객체가 저장되는 것을 막는다. 원래 의도와 다르게 잘못 형변환되는 경우를 막는다. 형변환의 번거로움을 줄인다 컬렉션 클래스의 경우 보통 한 종류의 객체만을 담는 경우가 많은데, 그럼에도 불구하고 꺼낼 때마다 타입체크를 해야하고 형변환을 하는 것은 불편하다. // 지네릭스가 사용되지 않는다면.. Class ArrayList { private Object a..