목록Computer Science (21)
ROKO
pass 실행할 코드가 없는 경우 의미를 나타내는 코드다. python은 조건문이나 반복문에 명령어를 작성하지 않으면 에러가 발생하므로 pass를 적어 아무것도 실행하지 않는 코드로 그저 비어있음을 의미한다. x = 10 if x>10: pass else: print(x) # 10 출력 continue 이후 아래 코드는 pass와 같이 실행되지 않고 넘어간다. 반복문의 경우 다음 loop로 넘어가게 된다. for i in range(1,6): if i
Python은 OOP이다. 객체를 이용해 프로그래밍을 한다는 뜻인데, 객체가 너무 많아지게 되면 RAM에 부하가 늘어나면서 전체적인 프로그램의 성능이 낮아지게 될 것이다. 이미 사용된 객체는 어떻게 관리해야할까? 기본적으로 python은 사용자가 직접적으로 동적할당과 해제를 할 필요가 없는 언어이다. 모든 type이 이미 객체화가 되어 있기 때문이다. 그렇다면 heap영역을 쓰지 않는 걸까? 그렇지 않다. 내부적으로 python memory manager가 존재하여 해당 객체가 사용될때 heap에 할당하여 자동적으로 메모리 관리를 해준다. 미리 할당하지 않고 사용시에 할당하는 방식은 OS heap 영역의 과부하를 막아주게 된다. 사용된 변수들은 reference counting 방법을 통해 GC(garb..

Python은 OOP를 강제하지는 않지만 방향성을 제공하는 언어이다. 객체 지향 프로그래밍이란 절차지향과 같이 순차적으로 logic을 구성하는것이 아닌 객체들간의 관계로 logic을 구성하는 것을 의미한다. 객체는 class로 부터 생성된 변수로 속성과 함수를 가지고 있는 변수이다. 파이써의 모든 구성 요소는 객체로 정의되어 사용된다. 용어 정리 객체(object) : 파이썬에서 추상화되어 표현되는 데이터 변수(variable) : 객체를 관리하기 위한 메모리 영역 (Ex x = 10, x 는 10이라는 literal을 의미하는 변수) 식별자(identifier) : entity를 구별하기 위해 사용되는 이름 (식별자가 같은 경우 변수에 값이 재할당) id,dientity : 객체 정보가 저장된 변수의 ..
Python의 특징 중 하나로 bulit-in function이 있다. 별도의 import문이 없어도 실행 가능한 내장함수들을 의미한다. C,C++만 하더라도 stdlib, iostream 등 필수 표준라이브러리가 있다고 하더라도 include를 통한 (python기준으로는 import)는 필수 불가결하다. 하지만 파이썬은 가능하다. [예시] print("hello") # hello 출력 printf("hello") # error! printf는 bulit-in 이 아님! Python bulit-in function https://docs.python.org/3/library/functions.html Built-in Functions The Python interpreter has a number of..
ML,DL을 tensorflow, pytorch로 하다보니 python을 이용해 코드를 주로 짜게 되었다. 이 과정에서 python 언어 자체에 대한 이해도가 필요하다고 느껴 파이썬을 프로그래밍 언어로써 공부하고 파이썬을 이용해 다양한 알고리즘 문제를 풀며 구현 능력을 향상 시키려고 한다. [참고자료] https://www.python.org Welcome to Python.org The official home of the Python Programming Language www.python.org https://docs.python.org/ko/3/tutorial/index.html The Python Tutorial Python is an easy to learn, powerful programmi..
Out Of Memory killer 의 약자 리눅스에서 시스템 메모리가 부족할때 커널은 사용자 실행 파일 중 메모리를 많이 쓰는 app kill 한다. 이때 kill 기준은 oom_badeness() 메서드에서 nice와 score를 기반으로 하는데 /proc/${pid}/oom_score 위 명령어를 통해 현재 점수를 알 수 있다. 만약 자신의 실행 파일이 Out Of Memory Error 와 함께 Kill 당했을때 사유를 알고 싶다면 이 명령어를 실행해보자. dmesg | grep -E -i -B100 'killed process' 어떤 pid가 어떠한 사유로 kill 당했는지의 정보가 출력된다. (stackoverflow link) OOM Killer log는 /var/log/message 에 ..

Linear list 선형적인 순서를 가진 항목들의 집합 Commonalities - Linear data structure Differences - List can add and delete item at any index ArrayList Implemenatation #include using namespace std; //Remember : array index starts at 0 ! class ArrayList{ const static int MAX_SIZE = 100; int data[MAX_SIZE]; int length; public: ArrayList(){length = 0;} void insert(int pos,int item){ if(full()) throw 'list is full'..

Deque : abbreviation of double-ended queue front 와 rear에서 양쪽에서 삽입과 삭제가 가능한 queue Necessary components front : 맨 앞 index rear : 맨 뒤 index addFront(item) deleteFront() addRear(item) deleteRear() Additional components empty() full() getFront() : 맨 앞 데이터 값 반환 gerRear() : 맨 뒤 데이터 값 반환 size() Implementaition ArrayDeque #include #include "ArrayQueue.h" using namespace std; class ArrayDeque:public Arrra..

Queue Queue 는 대기줄이라는 의미가 있다. 일상생활에서 생각했을때 대기줄은 먼저 온 사람부터 나가게 되어있는데 그 부분을 그대로 구현한 자료구조이다. FIFO (First-In First_Out) 방식을 따른다. Necessary components front : queue의 맨 앞 index rear : queue의 맨 뒤 index enqueue(item) : item을 queue의 맨 뒤에 추가 dequeue() : 맨 앞의 요소를 삭제하며 반환 Additional operations empty() :queue가 비어있는지 확인 full() : queue가 가득 차있는지 확인 peek() : 맨 앞 부분 삭제하지 않고 반환 size() : queue의 현재 크기 반환 Implementati..

Python에는 array 개념이 없어지고 list만 남아있으므로 C++기반으로 알아보자. (이후 자료구조도 동일) C++의 개념을 충분히 알고 있다는 가정하에 설명하므로 모르는 부분은 나의 블로그 페이지나(내가 정리를 해놓았다면?) 구글링을 해보자. Stack 어원은 쌓다라는 의미로 이 의미와 비슷하게 쓰인다. LIFO (Last-in First-out) 의 방식으로 작동한다. Necessary Components push() : 데이터 저장 pop() : 데이터 추출, 저장공간에서도 삭제 top : 현재 데이터 사이즈 크기, 가장 위에 있는 데이터 위치 Addition operations peek() : 가장 위에 있는 데이터 확인 empty() : stack이 비어있는지 확인 full() : sta..