프로그래밍(29)
-
[Spring/MagicCrypto] 매직크립토 버전 2.0 > 2.3 버전업 배포 가이드
현재 개발 환경은 Jdk 1.6& 1.8이며, 제우스 컨테이너로 스프링 서비스를 올린다.암호화 모듈인 매직크립토를 2.0에서 2.3으로 버전업하는 상황이다.native library 호출 경로에 맞춰 dll 파일을 옮겨놓는다.확인해본 결과 테스트 서버에선 라이브러리 경로가 전역에 설정되어있는 PATH가 아닌 제우스 컨테이너가 참조중인 java.library.path에서 dll을 불러오기에 해당 위치에 넣어준다.보통 C:/TmaxSoft/JEUS6.0/lib/system에 위치한다.dll 파일을 우선 옮긴 후 v2.3과 호환되는 배포패키지를 배포한다.매직크립토 구현체와 암호화 변수가 동일한지 확인해줘야한다.
2025.03.19 -
volatile 변수는 원자성을 보장할까?
+) 이펙티브 자바 스터디를하면서 volatile 변수에 대해 공부할일이 있어 짬짬히 적어보았다.java 변수들은 물리적으로 어디에 저장될까?레지스터CPU 내부에 있는 빠른 메모리컴파일러는 최적화를 수행할때 자주 사용되는 변수를 레지스터에 보관스레드마다 CPU 레지스터는 독립적으로 동작, 스레드간의 직접 공유가 안된다. (동기화 문제의 원인)메인 메모리대부분의 변수 여기에 저장모든 스레드가 공유하는 물리적 메모리 공간CPU 캐시와 레지스터는 메인 메모리로부터 데이터를 가져오거나 씀CPU 캐시계산할때 어딘가 값을 넣어야하니까.. 그 용도자바 메모리 모델 JMM자바 메모리 모델에 따르면 한 스레드에서 변경한 값이 다른 스레드에게 보이려면 동기화를 하거나, volatile 메커니즘을 써야한다. -> 레지스터에..
2024.12.29 -
[Flask/APScheduler] 순환 참조로 인한 초기화 오류 해결
주기적으로 요청해야하는 프로그램이 있어 스케쥴러 프로그램을 작성했더니 (flask) from apscheduler.schedulers.background import BackgroundScheduler from flask import Flask from .batch import check_not_answer_question from .database import db from . import config from sqlalchemy import text from .routes import routes_bp global_api_key = config.API_KEY def create_app(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = ..
2024.03.01 -
알고리즘에서 쓰이는 자료구조(데이터타입)
자바 알고리즘에서 주로 쓰이는 데이터 타입들을 한번 정리하고 가기 위해.. 작성한 글이다. Tree나 Map과 HashTable의 경우 서로 겹치는 클래스들이 많다. (단순히 Map의 역할만하지않고 순서를 신경쓰는 Map의 경우 LinkedHashMap을 쓴다던가 서로의 역할이 겹치는 경우가 많음) 배열 (Array): 연속된 메모리 공간에 같은 데이터 타입의 원소를 저장. 인덱스를 통해 원소에 접근할 수 있으며, 원소의 삽입과 삭제가 비효율적인 편. 이전에 정리한 적 있음 https://lets-do-the-odessey.tistory.com/60 리스트 (List): 원소들을 순서대로 저장하는 자료구조로, 주요한 종류로는 ArrayList와 LinkedList. ArrayList는 배열 기반으로 동작..
2023.11.24 -
Java Array Sorting 정리
파이썬과 다르게 자바는 ArrayList같은것을 사용하지않으면 단순array에선 바로 sort하는 기능이 없고 util 라이브러리를 import해서 사용해야한다. 오늘은 내가 알고리즘 테스트를 준비하는 겸.. 기본 자료구조에 대해 정리해보고자한다. 1. int array 정렬 Arrays.sort()를 사용하지 않는 경우 이 경우 선택정렬의 알고리즘이기때문에 시간복잡도 O(n^2)이다. 이렇게 정렬했다가는 알고리즘테스트에서 폭망한다. int[] arr = {5, 3, 8, 2, 1, 4}; int n = arr.length; for (int i = 0; i arr[j + 1]) { //..
2023.11.18 -
지그재그 로그인 오류 왜 발생한걸까?
이번 지그재그에서 다른 사람 계정으로 로그인되는 등 보안이슈가 있었죠. 해당 원인은 Redis문제 였던 걸로 보이는데요. 이미 Chat GPT를 사용하는 OPEN AI에서도 비슷한 문제를 일으킨 적이 있어 관련 분석 기사가 있습니다. https://thehackernews.com/2023/03/openai-reveals-redis-bug-behind-chatgpt.html?m=1 OpenAI Reveals Redis Bug Behind ChatGPT User Data Exposure Incident OpenAI discloses a Redis bug causing certain ChatGPT users' personal info and chat titles to be exposed. thehackerne..
2023.11.10