프로그래밍/Java(11)
-
[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 -
알고리즘에서 쓰이는 자료구조(데이터타입)
자바 알고리즘에서 주로 쓰이는 데이터 타입들을 한번 정리하고 가기 위해.. 작성한 글이다. 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 -
[Error] javax.mail.MessagingException 해결
사이트 프로젝트 진행 중 서버에서 메일이 추가로 안나가는 오류가 있었다. 2023-10-17 14:10:49.102 ERROR 11572 --- [nio-8080-exec-2] c.p.u.email.service.EmailService : Mail server connection failed; nested exception is javax.mail.MessagingException: Could not convert socket to TLS; nested exception is: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unab..
2023.10.18 -
[DDD/Kotlin] DTO와 Command
DTO라는건 뭘까? 개발을 전혀 모르는 사람을 기준으로 설명하자면, 데이터베이스에 데이터가 저장되기 전까지 클라이언트로부터 받은 데이터를 저장하고, 서비스로직을 수행한 뒤 Entity(테이블)에 매핑해줄때까지 해당 데이터를 가지고 있는 역할을 수행하는 객체이다. 그래서 나는 컨트롤러에서(맨처음 데이터를 받아주는 계층) 데이터를 DTO에 저장한 뒤 Entity로 매핑한 뒤 바로 저장해주었으나 최근 사이드 프로젝트를 개발하면서 command라는 개념을 처음 접하게 되었다. command 객체란 컨트롤러에서 데이터를 dto로 받아준 뒤 그 다음 계층으로 갈때 데이터를 매핑해주는 객체를 한 단계 더 생성하여 역할을 분리한다. 예제코드로 설명하자면 DTO 클래스 data class UserDTO(val id: L..
2023.09.21