본문 바로가기

전체 글

(1184)
python hash && cache hash 우리가 흔히 사용하는 캐시는 두가지의 값이 필요합니다. Key / value , 즉 dictionary의 한 형태를 가지고 있습니다. 그렇다면 key는 어떻게 만들어질까요? 아시는 바와 같이 hash값으로 만들어집니다. 즉 특정한 연산을 통해( 특정 모듈러연산) 특정값으로 변환한 값입니다. ( 해시 고유값 분포 및 재연산은 이번 글에서 제외 합니다. ) 그렇다면 모든값을 hash로 만들수 있을까요? python에서 제공하는 hash 함수를 사용할 수 있을까요? 정답은 “NO”입니다. hash()를 사용 할 수 있는 데이터는 immutable 객체만 가능합니다. 즉 mutable은 해시가 불가능 하단 말이 됩니다. immutable / mutable Immutable과 mutable의 객체는 다음..
python에서 pow(n, n) 와 n**n 중 어느게 빠를까? 제곱근 계산을 위한 함수인 pow(n, n)와 n**n 중 어느 게 더 빠를까? 결론부터 말하면 pow() 함수와 **는 "거의" 동일 합니다. 네 "거의"요 **의 경우 bignum을 통해 연산을 합니다, 반면 pow()는 부동소수점으로 변환되어 이 변환되는 과정이 있어 시간이 조금 더 소요된다고 합니다. 하지만 결국 power() 연산은 같은 함수를 하기 때문에 거의 비슷합니다. 여기 까지가 동작 과정의 대한 이야기인데... 실제 어떻게 구현되어 있는지 살짝만 보겠습니다. https://github.com/python/cpython/blob/667b91a5e210e20946ad41f1796c544a1becf1b6/Objects/longobject.c#L4022 cpython의 pow 계산하는 일부분만..
심야카페 시간은 기다려 주지 않는다. 할 수 있는 일은 잘 보고, 기억하는 일 뿐이다. - 꼭 두번 이상 보시는걸 추천 한다. 두번째 볼때가 더 재미있다. 타임 패러독스를 이용한 오랜만의 좋은 작품.
파이썬 백엔드 면접 질문들 (장고+시스템+디비 포함) 동기와 비동기 파이썬 클로져 브라우져에서 서버와 통신 상세히 쿠키와 세션 세션의 저장방식은? 딕셔너리 구현방법 충돌이 일어났을때는? 리스트와 튜플의 차이 @staticMethod, @classMethod, @property 디버깅 툴은 어떤걸 썼는지? 메모리 효율은 어떻게 했는지? 파이썬 메모리 관련 테스트 하는 이유 테스트를 어디까지 진행했는지 테스트관련 목킹 테스트 커버리지를 어떻게 지켰는지 코드리뷰를 어떻게 하는지 사람과의 충돌은? Fib 재귀(손코딩) 메모리 제이션 구현 + LRU 구현 fib에서 10만번째는 어떻게 되는가? 어떻게 수정할수 있는가? 장고 모델 쿼리 (손코딩) Dict 탐색시간, inset 시간 해쉬 충돌 조건 클로져 함수 동작 방식 에어플로우 왜 사용했는지, 어떻게 관리 했는지 ..
django query 기초2 일반 ORM 모델 정의 class Country(models.Model): name = models.CharField(max_length=30) class City(models.Model): name = models.CharField(max_length=30) country = models.ForeignKey(Country, on_delete=models.CASCADE, relatec[ame='cities') population = models.PositiveIntegerField() 데이터 추가 >>> temp = ["Brazil","Turkey","Italy","Bangladesh","Canada","France","Peru","Argentina","Nigeria","Australia","Iran",..
django query 기초1 모델 정의 class Product(models.Model): name = models.CharField(max_length=30) price = models.IntegerField(default=0) stock = models.IntegerField(default=0) Create >>> from polls.models import Product >>> p = Product(name="coffee", price=4000, stock=1) >>> p.save() >>> p = Product(name=“water", price=1000, stock=10) >>> p.save() >>> p = Product(name=“chocolate", price=5000, stock=20) >>> p.save() bul..
[django] 데이터베이스 여러개 사용하기 (django multi db) 기존 MSA 형태로 구축되어 API를 호출하던 방식을 직접 디비에 붙어서 수행하는 형식으로 바꾸기 위해 django에서 두개 이상의 디비를 바라보도록 하는 과정에서 글을 씁니다. (..왜 MSA에서 모놀리스로 가냐고 물으신다면.... 한시간에 1만개의 내부 API 콜을 견뎌야 하는데....돈이 없습니다. ㅜㅡㅜ) 1. settings에 디비 정보 추가 settings에 기존 디비 설정이 있는 DATABASES에 추가로 이용할 디비의 정보를 넣어줍니다. 저의 경우 predict라는 이름으로 추가정보를 넣었습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', ..
python은 GIL때문에 스레드가 효율적이지 않으면서 왜 multithreading 모듈이 있을까? 멀티스레딩 하위 문제 중 하나의 다른 작업이 완료되는 동안 기다려야 하는 경우 싱글 스레드보다 멀티 스레딩이 좋다. (Ex : I/O 과중한 작업) The interpreter will reacquire this lock for every 100 bytecodes of Python instructions and around (potentially) blocking I/O operations. 같은 프로세스 안에서 동작하므로 자원 공유가 가능 (queue, pickle 사용) 멀티 프로세스 하위 문제가 동시에 발생하는 경우 하지만 코어수보다 많은 수를 사용하면 성능 저하가 올 수 있다. (https://stackoverflow.com/questions/40217873/multiprocessing-use-o..