Dev
-
@Async와 스레드 풀 - ThreadPoolTaskExecutor가 기본 설정이다!Dev/Java 2023. 12. 12. 23:55
회사에서 프로젝트를 진행하며 @Async를 사용할 일이 있었다. 기존 프로젝트의 설정이 완료된 상태였기 때문에 비동기로 동작해야 하는 메소드 위에 @Async만 붙이기만 하면 간단하게 지나갈 수 있었지만 의문이 생겼다. 비동기로 메소드가 실행되면 스레드의 개수는 누가 관리하는 거지? 자바 커뮤니티에서 유명한 baeldung의 글을 포함해서 여러 블로그들을 찾을 수 있었다. 기본적으로 SimpleAsyncTaskExecutor을 사용하기 때문에 ThreadPoolTaskExecutor을 사용하도록 하는 추가적인 설정을 하지 않으면 스레드의 개수가 무한대로 늘어날 수 있다. 결론부터 말하면 이것은 틀렸다. 1. @Async 적용하기 우선 Spring에서 @Async 어노테이션을 이용한 비동기 처리 방법은 매..
-
[JavaScript]호이스팅이란? var, let, const의 차이Dev/JavaScript 2022. 11. 30. 20:22
1. 호이스팅 자바스크립트에서 변수는 선언 → 초기화 단게를 거친다. 선언 단계에서는 변수명을 등록하여 자바스크립트 엔진에게 변수의 존재를 알린다. 초기화 단계에서는 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefinde를 할당한다. 변수 선언은 런타임에서 되는 것이 아니라 그 이전에 먼저 수행된다. 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문을 먼저 실행한다. 이를 호이스팅이라고 한다. (var, let, const, function, function*, class 키워드를 사용해 선언한 모든 식별자는 호이스팅된다.) 이러한 점에서 함수 선언문과 함수 표현식에는 차이가 있다. 함수 선언문은 함수 자체가 호이스팅 되고, 함수 표현식은 undefined로 초기화 된다. // 함수 참..
-
해시 충돌이 위험한 이유와 암호화 알고리즘Dev 2022. 11. 8. 20:43
해시 충돌이 위험한 이유? 해시는 무한한 입력값을 받고, 유한한 출력값을 내므로 근본적으로 충돌을 피할 수 없다.(비둘기집의 원리) 해시 함수에서 중요한 것은 계산을 통한 임의의 충돌을 찾아내는 것이 불가능해야 한다는 점이다. 해시의 출력값은 파일의 위변조 여부를 가리는 수단이므로 임의의 충돌을 찾아내는 것은 문제가 된다. 암호화 알고리즘 단방향 암호화인 해싱은 데이터의 변조와 무결성을 확인하기 위해 사용된다. 양방향 암호화는 데이터를 교환할 때 노출을 막기 위해 사용된다. 1. 양방향 암호화 알고리즘 (암호화 / 복호화) 양방향 암호는 대칭형 암호와 비대칭형 암호로 나눌 수 있다. 이는 암호화에 사용하는 키와 복호화에 사용하는 키가 같은지 다른지를 기준으로 구분한다. 일반적으로 대칭형 암호는 비공개키 ..
-
비트코인 트레이딩 봇 만들기 (2) - 로컬 환경에서 자동 매매 실행Dev/Python 2022. 9. 1. 21:00
자동매매 실행하기 1. 로컬 환경에서 실행 클라우드에서 24시간 자동 매매를 실행하기 전 로컬 환경에서 테스트를 해보자. # main.py import os import pyupbit import time, datetime import pandas as pd import numpy as np ACCESS_KEY = os.environ['ACCESS_KEY'] SECRET_KEY = os.environ['SECRET_KEY'] upbit=pyupbit.Upbit(ACCESS_KEY, SECRET_KEY) #K 30일마다 갱신해주자 def GET_TARGET_PRICE(K): df = pyupbit.get_ohlcv("KRW-BTC", count=2) gap = df['high'][0] - df['low']..
-
비트코인 트레이딩 봇 만들기 (1) - pyupbit로 잔고 불러오기 및 백테스트Dev/Python 2022. 7. 29. 20:11
지난 글에서는 Upbit API 공식 문서에서 잔고와 마켓에 대한 정보를 불러오는 법을 알아봤다. 이번 글에서 부터는 python 라이브러리인 pyupbit를 통해 더욱 쉽고 간편하게 다양한 정보와 자동 매매를 위한 코드를 작성해보자. 1. pyupbit 라이브러리 사용하기 1.1 pyupbit 라이브러리 설치 및 사용 pip install pyupbit 2.1 라이브러리 이용하여 잔고 및 티커 불러오기 https://github.com/sharebook-kr/pyupbit # main.py # market.py, account.py 등 필요없다. import os import pyupbit access_key = os.environ['ACCESS_KEY'] secret_key = os.environ['..
-
비트코인 트레이딩 봇 만들기(0) - Upbit APIDev/Python 2022. 7. 28. 17:59
Upbit API를 간단하게 알아보는 글이다. pyupbit를 활용한 매매는 다음 글에서 다룬다. Upbit Open API 사용하기 1. 업비트 회원가입 → 마이페이지 → Open API 관리 https://upbit.com/mypage/open_api_management 자산조회, 주문조회, 주문하기 체크, 특정IP에서만 실행 체크 후 Open API Key 발급받기 Access Key와 Secret Key 발급 완료, 따로 저장해두기. 2. 고객센터 → Open API 안내 → 업비트 개발자 센터 → API Reference 개발자 센터에서 샘플 코드를 얻을 수 있다. 업비트에서 거래 가능한 마켓 목록을 불러오자. python의 requests 라이브러리가 필요하다. 맥환경에서 개발 중이므로 pyt..