
정의 옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. 이와 관련된 객체지향의 개념 느슨한 결합(인터페이스를 통한 구현) Subject는 특정 인터페이스를 구현한다는 사실만 알고 특정 클래스에 대해서는 몰라도 되게끔 구현하는 것이 느슨한 결합 쉽게 정의하자면 어떠한 클래스에 멤버변수를 정의할 때 특정 클래스로 정의하지 않고 인터페이스로 정의함으로써 다양한 클래스들이 참여할 수 있는 환경을 구성하는 것을 의미한다. 느슨하게 결합하는 디자인을 사용하면 변경 사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축할 수 있다. 객체 사이의 상호의존성을 최소화하는 작업이기 때문이다..

정의 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 정의만 봐서는 바로 이해가 되지 않을 것이다. 책을 읽으면서 제가 재정의한 Strategy Pattern은 다음과 같다. 어떠한 한 객체가 동작하는 데 있어서 여러 동작을 할 수가 있는데, 이를 유동적으로 변환하는 패턴 이 또한 바로 봐서는 "무슨 소리지?" 라고 할 수 있다. 우선 전략패턴을 사용하지 않았을 때 좋지 않은 케이스를 보도록 하겠다. 상속 현재 Person 이라는 클래스를 만들고 이에 대하여 하위 세 개의 클래스는 상속을 통해 구현한 모습을 볼 수 있습니다. public class Person { public void e..

WIKI 끼어듦, 또는 가로막기란, 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력하드웨어등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것. 일하고 싶은 자가 일하고 싶다고 관리인에게 말하는 행위 소프트웨어적 인터럽트 리눅스 커널과 같은 운영체제에서 응용 프로그램의 저수준 입출력 함수가 실행되면, 해당 실시간 라이브러리 함수에 의해 소프트웨어 인터럽트가 실행된다. 적절한 서비스 루틴으로 제어를 전달 인터럽트 정보를 조사하는 일반적인 루틴을 호출 -> 인터럽트의 고유한 핸들러 호출 빠르게 처리되어야 하므로 루틴의 테이블 이용 테이블을 통하여 이용할 수 있음 (테이블은 하위 메모리에 저장) 인터럽트와 트랩의 차이점 인터럽트 트랩 주체 하..

번외 글 해당 아래 링크들은 각 단계에 대해서 어떻게 준비했는 지 상세히 적어낸 글이므로 도움을 얻고자 하는 분들께 필히 읽으셨으면 합니다 나는 코딩테스트를 이렇게 준비했다 나는 이력서를 이렇게 준비했다 나는 면접을 이렇게 준비했다 라인 코딩테스트 코딩 테스트는 3월 26일에 봤습니다. 총 문제는 기억이 잘 안나지만, 1~2개 정도 못풀고 다 풀었습니다. 코딩테스트 준비는 다음과 같이 준비했습니다. 평상시에 이틀에 한 문제씩 풀었으며, 풀었던 문제는 하루 뒤, 3일 뒤, 일주일 뒤, 한달 뒤 미리 플래너에 기록한 뒤 다시 푸는 습관을 가지고 진행했습니다. 이렇게 한 진행한 이유는 제 자신을 믿지 않아서가 가장 컸습니다. 비록 제가 풀었던 문제였지만 다시 보면 어떻게 풀어야 할 지 막막할 때가 많았는데, ..
정적 타입 지정 언어 코틀린은 자바와 마찬가지로 정적 타입 지정 언어다. 추가적으로 코틀린은 변수의 타입을 자동으로 알아내는 경우가 있는데 이를 타입추론 이라고 한다. 정적 타입 지정의 장점 성능: 실행 시점에 어떤 메서드를 호출할 지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠르다. 신뢰성: 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어진다. 유지 보수성: 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다. 도구 지원: 정적 타입 지정을 활용하면 더 안전하게 리팩토링 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE의 다른 지원 기능도 더 잘 만들 수 있다. Pyth..
만들게 된 계기 장고에서는 기본적으로 모델 필드에서 사용할 수 있는 enum은 choice 라는 것이 있다. 하지만 필자가 다양한 프레임워크를 사용하면서 느낀 가장 불편한 점은 다음과 같다. IDE에서 제공해주는 hint들을 사용할 수 없다. (Python에서도 Enum이 존재하는 데 이 때 '.'을 찍으면 해당 Enum에 존재하는 값들에 대한 힌트들을 얻을 수 있는데 TextChoice의 경우에는 튜플로 되어 있어서 이러한 힌트들을 사용할 수 없다.) 명시적이지 않다. (밑의 글을 읽어보면 제가 만든 EnumField가 TextChoice Field 보다 더 보기 좋다는 것을 느낄 것이다.) 사용하기 더 편하다. 구현 방법 from django.db.models import CharField class..
ORM ORM의 장점 쿼리를 객체 관점으로 작성함으로써 재사용성을 높일 수 있다. 반복되는 코드를 줄일 수 있다. 특정 데이터베이스가 아닌 범용적으로 작성할 수 있다. 생산성을 높일 수 있다. ORM의 단점 ORM 관련 메소드를 모르면 문제를 해결하기 힘들다 잘못 사용할 경우 N+1 문제 등 다양한 문제를 겪을 수 있다. 연관관계를 잘못 맺을 경우 원하는 흐름으로 작성되지 않을 수 있다 Django ORM의 장점 동적으로 처리하기 좋다. 예를 들어 특정 필드의 결과값만 가져오고 싶으면 values 혹은 values_list를 사용하면 된다. 조건절에 대해서 다양한 Lookup 필드를 제공해줘서 해당 lookup 필드를 알고 있다면 쉽게 사용할 수 있다. 모든 결과는 lazy해서 실제로 사용하기 전까지 쿼..

getConnection public Connection getConnection(final long hardTimeout) throws SQLException { suspendResumeLock.acquire(); final long startTime = currentTime(); try { long timeout = hardTimeout; do { PoolEntry poolEntry = connectionBag.borrow(timeout, MILLISECONDS); if (poolEntry == null) { break; // We timed out... break and throw exception } final long now = currentTime(); if (poolEntry.isMarked..
- Total
- Today
- Yesterday
- Linux
- 카카오
- Python
- Command Line
- postgres
- env
- PostgreSQL
- 프로그래머스
- 백준
- 면접
- setattr
- dockerignore
- ubuntu
- django
- Collections
- BFS
- 그래프
- 자바
- docker
- Celery
- headers
- thread
- Java
- docker-compose
- Pattern
- 파이썬
- DRF
- Spring
- 2021 KAKAO BLIND RECRUITMENT
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |