본문 바로가기

Language76

[Java] 유데미(Udemy) Java 멀티스레딩, 병행성 및 성능 최적화(feat. 유데미 X 글또) 강의 링크: https://www.udemy.com/course/java-multi-threading/?couponCode=GENAISALE24 0. 서론 애플리케이션 서비스에서 멀티스레드를 사용하곤 하는데, 멀티스레드를 이용하면서 사용방법은 익혔지만, 좀 더 세밀하게 분석해봐야겠다 생각하였고 이를 위해 글또를 통해 유데미 강의를 신청하였습니다. 1. 강의 내용 정리 컨텍스트 스위치 하나의 스레드 실행을 멈추고 다른 스레드를 스케줄링한 다음 다시 실행하는 것이 컨텍스트 스위치입니다. 스레드 스케줄링 정적 우선순위 + 보너스 정적 우선순위는 개발자가 미리 설정 보너스는 운영 체제가 각각의 에포크마다 조절 멀티 스레드 하나의 프로세스가 여러 개의 스레드를 사용하도록 프로그램을 작성하는 방법 스레드 스레드 그.. 2024. 3. 27.
[Java] BigDecimal 사용하기 0. 서론 회사에서 결제와 관련된 도메인을 맡아서 작업하고 있습니다. 특히나 해외 결제에는 환율 적용, 화폐 단위(달러, 엔화 등)으로 인해 많은 소수점 처리를 하게 되는 것 같습니다. 본 포스팅을 통해 BigDecimal을 사용하는 이유와 개념, 사용법, 사용하다 겪은 주의사항을 간단하게 소개하고자 합니다. 1. double의 문제점 환율을 적용해서 가격을 계산하다보면 소수점이 굉장히 긴 연산을 하는 케이스가 많다. 아래 테스트 케이스처럼 굉장히 긴 소수점을 계산하는 케이스가 있는 경우도 생길 수 있다. 아래 테스트 코드는 통과를 할까? @Test @DisplayName("Double 계산") void double_test(){ double a = 100.0000000003; double b = 90... 2023. 12. 21.
[Python] refactoring - 02. 캡슐화, DI를 통한 리팩토링 목적 리팩토링할 코드를 가지고, 여러 번의 단계에 걸쳐 리팩토링을 진행한다. As-is에서 나온 개선해야할 부분을 To-be를 통해 개선한다. 리팩토링 전 문제점 파악 class Store(ABC): @abstractclassmethod def __init__(self): self.money = 0 self.name = "" self.products = {} @abstractclassmethod def set_money(self, money): pass @abstractclassmethod def set_products(self, products): pass @abstractclassmethod def get_money(self): pass @abstractclassmethod def get_produc.. 2022. 4. 20.
[Python] refactoring - 01. 추상화, 생성자주입을 통한 리팩토링 목적 리팩토링할 코드를 가지고, 여러 번의 단계에 걸쳐 리팩토링을 진행한다. As-is에서 나온 개선해야할 부분을 To-be를 통해 개선한다. 리팩토링 전 문제점 파악 As-is class EricStore: def __init__(self) -> None: self.money = 0 self.name = "에릭상점" self.products = { 1: {"name": "키보드", "price": 30000}, 2: {"name": "모니터", "price": 50000}, } def set_money(self, money): self.money = money def set_products(self, products): self.products = products def get_money(self): .. 2022. 4. 20.