
가비지 컬렉션이란? 모든 언어에서 변수를 등록하면 변수에 메모리가 메모리의 주소값이 할당된다. 그리고 변수의 크기만큼 메모리를 쓰게되는데 이 메모리는 우리가 알고있는 RAM을 의미한다. RAM은 휘발성 저장공간이다. 용량이 적지만 컴퓨터를 끄면 사라지는 데이터 공간이다. 대신에 빠르다. 만약 이 메모리 공간을 비효율적으로 사용하여 사용자의 메모리를 많이 잡아먹는다면 흔히 렉이 걸린다고 하듯 프로그램이 느려질 수 있다. 따라서 이 공간을 효율적으로 관리하는것이 프로그램을 빠르게 돌리는데에 있어서 중요하다. 가비지 컬렉션은 쓰지않는 값을 모아서 소멸시킨다. 레퍼런스 카운트 레퍼런스(reference) = 참조 파이썬은 변수의 레퍼런스 카운트가 0이 되었을때 그 변수는 소멸 되상이 되고 일정 규칙에 의해 가비..

가끔 파이썬 코딩을 할 때 다음과 같은 경우가 있다. answer = [] for i in arr: if i % 3 == 0: answer.append(i) flag = True break if not flag: answer.append(0) 원래는 위와 같이 flag를 쓰거나 함수를 만들어서 값을 return 해주는 방법으로 바꿔줬는데 더 좋은 방법이 있다. 파이썬에는 다음과 같이 for-else문이 가능하다. answer = [] for i in arr: if i % 3 == 0: answer.append(i) break else: answer.append(0)

보통 코딩테스트를 풀때 sys.stdout.write가 print보다 속도가 빠른 이유로 쓰는 경우가 있습니다. 하지만 sys.stdout.write를 쓸 때 주의해야할 점이 있습니다. import time import sys for i in range(10): sys.stdout.write(str(i)) time.sleep(1) 위와 같은 코드를 실행할 때 어떻게 출력이 될거 같으신가요? 1초마다 0, 1, 2, 3 .. 순서대로 출력이 될 거 같습니다. 하지만 출력해보면 10초 후 0,1,2,3.. 이 한꺼번에 출력됨을 볼 수 있습니다. 위 현상을 해결하려면 sys.stdout.write를 호출 한 후 바로 sys.stdout.flush()를 호출해주거나 print로 변경하면 됩니다. print는 내..

클래스의 개념 class는 객체지향 언어에 있는 개념이다. 객체를 만들기 위한 틀로 보면 쉽다. 클래스로 만든 객체에는 중요한 특징이 있다. 바로 객체마다 고유한 성격을 가진다는 것이다. 과자 틀로 만든 과자에 구멍을 뚫거나 조금 베어 먹더라도 다른 과자에는 아무 영향이 없는 것과 마찬가지로 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다. 클래스는 다음과 같이 선언 할 수 있다. class Car(): """ this is Car class """ # 클래스 변수 car_count = 0 def __init__(self, company, details): self._company = company self._details = details Car.car_count += 1 def detai..

동시성 : 싱글 스레드에서 여러가지 작업을 번갈아가면 동작 시킴 병렬성 : 멀티 스레드에서 여러가지 작업을 동시에 동작 시킴 데이터 레이스 : 여러 프로세스/스레드가 공유된 데이터를 읽고 쓰는 작업을 할 때 실행 순서에 따라서 잘못된 값을 읽거나 쓰게 되는 상황. 병렬 처리를 하는 경우에 아주 흔하게 발생하므로 뮤텍스, 세마포어 등으로 처리해준다. 간단하게 동시성은 1개의 코어로 여러 일을 번갈아 가면서 동시에 하는것 처럼 실행 시키는것 이고 병렬성은 여러개의 코어로 여러 일을 동시에 실행 시키는것 이다. 싱글 스레드를 쓰는 언어는 Python, Javascript 등이 있고 멀티 스레드를 쓰는 언어는 Go, Java, Rust 등이 있습니다. 간단한 예제 (javascript) var v = 0 set..

Go 컨텍스트 Context 타입은 여러 Go 루틴에서 동시에 안전하게 사용할 수 있는, 요청 범위 데이터에 접근하기 위한 안전한 방법을 구현한다. Context 패키지의 주 목적은 Context타입을 정의하고 취소 기능을 지원하는 것이다. 하나의 문맥 으로 해석할 수 있는 context는 http 1개의 요청이 들어와서 응답이 나갈때까지 한개의 문맥이나 맥락으로 볼 수 있듯 함수가 동작함에 있어서 문맥을 넣어서 진행 상황을 파악 할 수 있게 해준다. 특히 go루틴 같은경우 go루틴이 끝나는 시점이 필수적이기 때문에 context를 넣어서 끝날 시점을 정해 줄 수도 있다. 개념적으로는 하나의 무전기라고 볼 수 있다. 일꾼 하나를 보내면서 context라는 무전기 하나 들려 보내고, 그리고 만약 필요하다면..

map은 리스트의 요소를 지정된 함수로 처리해주는 함수입니다. 반복문을 쓰지 않고 map(함수, 리스트) 형태로 사용할 수 있습니다. 이때 list요소에 한개 이상의 함수를 쓰고 싶다면 직접 함수를 만들어서 쓰면 됩니다.. 😉 # Return cube of n def cube(n): return n**3 # Taking list as iterator evennum = [2,4,6,8] res = map(cube,evennum) print(list(res))

GOROOT & GOPATH GOROOT : GOROOT은 이름이 암시하듯이 Go의 본거지입니다. 이 폴더에는 컴파일러를 비롯해서 인스톨러로 설치한 것들이 모두 들어있습니다. 보통은 mac, linux에서 /usr/local/go에 위치하는데 Go를 설치하면 Go관련된 실행파일, SDK 등이 위치하는 곳입니다. GOPATH : Go는 python 이나 nodejs와는 다르게 자기가 원하는 디렉터리에서 작업을 진행할 수 없습니다. GOPATH로 지정되어 있는 공간에서만 작업이 가능합니다. 대부분 username/go 의 경로에 있습니다. 이 경로 안에는 bin, pkg, src가 있는데 src안에는 github.com, golang.org 등이 있는데 npm ,pypi와 같이 패키지를 다운로드 받았을때 u..
- Total
- Today
- Yesterday
- query
- 소프트웨어 장인
- 문자열 뒤집기
- ManyToMany
- 방금그곡
- django
- go context
- taggit
- 팰린드롬수
- conTeXt
- gunicorn
- sql lite
- go
- 의대 신경학 강의
- 백준
- 파이썬
- Python
- 독후감
- Two Scoops of Django
- leetcode
- 프로그래머스
- dfs
- for-else
- stdout
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |