본문 바로가기

프로그래밍/Java9

알고리즘에서 쓰이는 자료구조(데이터타입) 자바 알고리즘에서 주로 쓰이는 데이터 타입들을 한번 정리하고 가기 위해.. 작성한 글이다. 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. 9. 21.
[Spring/Redis] spring에서 redisTemplate을 쓰는 것과 CRUDRepository를 상속받아 사용하는 것은 어떤 차이가 있을까? Spring에서 redis에 데이터를 저장하는 방법 중 두가지와 두가지를 섞어쓰면서 내가 겪은 상황도 같이 설명하고자 한다. 일단 redisTemplate이란 뭘까? redisTemplate은 Spring에서 따로 관리하지 않고 직접 Redis명령어를 사용한다고 보면된다. 예를 들어 우리가 아는 Redis의 CRUD 명령어나 key값을 조회하는 명령어등을 Spring에서 제공하는 메소드를 통해 직접 요청을 날린다고 보면 된다. SQL로 따지면 mybatis로 쿼리를 직접 작성하는것과 비슷하다고 볼 수 있다. CRUDRepository를 사용하는 것은 Spring에서 제공하는 JPA를 활용해 우리가 아는 익숙한 JpaRepository를 활용하는 것과 비슷하다 다만 SQL, 테이블의 형식을 갖지 않은 DB.. 2023. 9. 14.
[Java] ArrayList안에 HashMap 저장 특정 데이터를 ArrayList안에 HashMap 저장하려고 한다. data: { categories: [ 0:{ "ko_name": "책", "code": "book" }, 1:{ "ko_name": "슬픔", "code": "sadness" } ] } 데이터를 이런식으로 뽑아줘야 하는 경우가 있다고 쳐보자. ArrayList안에 hash맵이 들어가는 데이터 형식을 선언하고 이를 ko_name따로, code 따로 분리해서 저장하려 했다. (이후 이를 categories라는 Dto에 매핑해준다.) public static final ArrayList categoryCodeResponse= new ArrayList(); @PostConstruct public static void categoryMap(){.. 2023. 3. 25.