![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bpKFGz/btrp7RkitwJ/8H9ZEbIiov4YOvkYbSsWs1/img.png)
공부하면서 json field을 쓰는 것을 보고 과연 join과 비교했을 때 얼마나 성능에 대한 이점이 있을까 고민을 하다가 한 번 실험해보기로 했습니다. framework: django database: postgresql 13 python version : 3.9 computer: macbook-pro 16inch m1 max 제가 테스트한 환경입니다. 1. Account class Account(BaseModel): name = models.CharField(max_length=25) objects = models.Manager() def __repr__(self): return f'id : {self.id}, name: {self.name}' 정규화 모델로 쓸 유저 모델입니다. 단순하게 이름 필드..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/DSSya/btrp2DUQZvv/ecMDsKJvU88XuugpkEr1RK/img.png)
우리는 항상 ArrayList가 thread safe하지 않다는 것을 들어봤을 것이다. 저도 항상 인지만 했지 왜 thread safe 하지 않다는 것이지? 우선 synchroinzed 제어자를 사용하면서 해당 메소드 또는 크래스 단위에서 락을 걸어서 멀티 스레드에 대해서 안전성을 보장하는 것은 대표적으로 Vector 가 있다. 하지만 ArrayList의 경우에는 이러한 제어자가 없다. 그러면 ArrayList에서 thread에 대한 체크를 하지 않는다는 것인가? 체크를 한다면 어떻게 체크를 하지? 그러면 에러가 날까? 이렇게 생각을 하다 ArrayList에 대해서 자세히 볼려고 한다. 우선 공통적으로 Collection 프레임 워크에서 modCount라는 것을 통해 값이 추가되거나 삭제 될 때 modC..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/H2lFy/btroT5DvDaY/sEHLcnEvKytSyAtYCVEDAK/img.png)
코드를 짜면서 종종 이중 배열을 초기화하는 경우가 있다. 이때 조심해야할 부분을 알려줄려고 이렇게 글을 적고자 한다. 보통 초기화하는 방법은 3가지 정도 있습니다. 1. [['-'] *3 for _ in range(3)] 이러한 케이스는 어떨까요? 확인해볼까요? 지금 2번째 사진을 보고 어? 뭐지 왜 id가 다 같지? 라고 생각이 문득 들 수가 있습니다. 하지만 안심하세요. 파이썬에서는 스트링에 대해서 모두 공유를 하는 성격을 가지고 있어서 id가 같은 것입니다. 그렇죠? 우리는 하나의 요소가 아닌 row의 id가 같은 지 확인 해봐야 합니다. 결과를 보면 다르는 것을 볼 수가 있습니다. 쉽게 설명하기 위해서 알아보기 쉽게 변환해보도록 해봅시다. xbox1 = [] for _ in range(3): ro..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vrdsr/btroWmYWUJN/l8RkYp2YbVPjUN6jPCToYK/img.png)
파이썬 하면서 가장 많이 쓰이는 것 중 하나가 decorator 인 것 같다. 그래서 한 번 정리해볼려고 한다. 우선 데코레이터가 작동하는 원리를 보여줄려고 한다. 1. 데코레이터 시작은 어떻게 할까? def sum_with_plus_decorator(arg): def inner(func): def core(values): return reduce(func, values, power) return core if callable(arg): power = 0 return inner(arg) else: power = arg return inner @sum_with_plus_decorator def add_together(a, b): return a + b print(add_together([1, 3, 11, ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/LoQP3/btroKzq9lpl/ITbPhGrNAcBwAKaZcRpokk/img.png)
싱글톤 인스턴스에서 가장 조심해야 할 것은 자원을 공유하는 것이다. 우선 싱글톤에 대해서 모르시면 이 글을 참고해주시길 바랍니다. https://vixxcode.tistory.com/190 [Pattern][Java][Python] Singleton 생성 패턴에 대하여 1. GoF 디자인 패턴 의도 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공 활용성 1. 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점 vixxcode.tistory.com 싱글톤 인스턴스에서 자원을 공유하면 어떤 일이 일어날까? 그림대로 손님1과 손님2 두 클라이언트가 있다고 하자. 그리고 Shop이란 클래스는 싱글톤으로 관리되고 있으며 price라는 변수를 공유하여 쓰고 있는..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cpqyi8/btroxNXsf0j/cdQPvj3CRxToRRC9ElwBkk/img.png)
회사업무를 하면서 celery 작업 중 날짜로 argument를 받는 작업이 많다. 근데 여기서 귀찮은 점은 기본 celery serializer가 json으로 되어 있어서 이를 받았을 때 다시 변환하는 작업을 해줘야 하는데 이 과정에서 휴먼 에러가 너무 발생한 것을 많이 느낀 나는 python 객체로 그냥 넘기는 방법이 뭐가 있을까? 하고 고민을 하게 되었습니다. https://docs.celeryproject.org/projects/kombu/en/stable/userguide/serialization.html Serialization — Kombu 5.2.2 documentation This document is for Kombu's development version, which can be si..
- Total
- Today
- Yesterday
- Command Line
- 면접
- 백준
- docker
- Collections
- Pattern
- 프로그래머스
- dockerignore
- 카카오
- env
- 자바
- django
- 그래프
- Spring
- ubuntu
- Linux
- thread
- PostgreSQL
- postgres
- Celery
- 알고리즘
- setattr
- headers
- Java
- docker-compose
- 2021 KAKAO BLIND RECRUITMENT
- DRF
- 파이썬
- Python
- BFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |