전체 글
QueryDSL + multi data source 연동하기
1.QueryDSL + single data source 인 경우 DataSourceConfiguration - entityManagerFactory 생성 메서드 - 데이터소스 클래스를 생성하는 것이 주 내용이 아니기 때문에 entityManagerFactory 생성 메소드만 올린다. @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory( @Qualifier("dataSource") DataSource dataSource) { LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); en..
[프로그래머스] 합승 택시 요금 - JAVA
[문제] 2021 KAKAO BLIND RECRUITMENT 문제 https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr [풀이] 사용 알..
webflux + reactive redis cache 적용하기
webflux + reactive redis cache redis는 캐시로 사용할 수 있음. AOP에서 redis에 원하는 데이터가 있으면 바로 get, 없으면 set하는 로직. 기존 mvc 모델에서는 캐시 어노테이션과 AOP로 캐시를 쉽게 구현할 수 있음. 그런데 webflux 모델에서는 캐시를 구현할 수 가 없었다. mvc 모델 @RedisCacheable(DEAL) public Deal getDeal(final long dealNo, ...) { // 실제 데이터를 리턴 } webflux 모델 webflux는 데이터를 get하면 Mono/Flux 체인이 리턴된다. Mono/Flux는 Reactive Streams에서 데이터를 제공하는 발행자 역할을 하는 Publisher의 구현체이다. 구독자가 su..
[프로그래머스][Level2][JAVA] [1차]뉴스 클러스터링
[문제 설명] programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr [풀이 과정] 1. 매개변수로 주어진 2개의 문자열을 각각 list로 만든다. (메서드를 생성) 1-1) 문자열을 매개변수로 가지고 String 리스트를 반환하는 메서드 생성 (List getStrArray(String str)) 1-2) 문자열 길이 처음 ~ 마지막-1 까지 for문을 돌면서 해당 문자가 영어인지 확인(아스키 코드 이용) ..
[프로그래머스] 무지의 먹방 라이브 - JAVA
[문제] 2019 KAKAO BLIND RECRUITMENT 문제 프로그래머스 level4 https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr [풀이] 처음에 문제를 보면 아마 당연하게 k시간만큼 loop문을 돌면서 매초 순회하는 풀이가 떠오를 것이다. 하지만 1초마다 순회하면 효율성에서 떨어진다. 시간을 한번에 벌크하게 계산할 수 있는 방법을 떠올려야 하는 문제다. 핵심 아이디어는 다음과 같다. 예시로 주어진 food_times = [3, 1, 2], k = 5 을 예시로 들어보자. 가로가 음식 순서, 세로가 먹는 시간으로 하여 왼쪽 그림처럼 표현해보자. 한칸씩 숫자를 세며 위로 올..
IntelliJ 프로젝트 github에 올리기
1. 자신의 github 계정으로 로그인 하여 접속한다. 2. 오른쪽 상단 프로필 사진 옆에 + 버튼을 클릭하여 "New repository"를 클릭하여 원격 저장소를 먼저 생성한다. 3. 원격 레파지토리 기본 정보들을 설정한다. Repository Name, public/private 여부 등등.. 나는 아래 사진과 같이 설정하였다. 이후 "Create Repository" 버튼을 클릭하여 레파지토리를 생성한다. 4. 레파지토리 생성이 완료되었다. Https 또는 SSH 원격 github 레파지토리 주소를 복사해놓는다. 5. git 원격 저장소에 올릴 IntelliJ 프로젝트를 생성한다. 6. 이제 해당 IntelliJ 프로젝트와 원격 저장소를 연결해준다. git init: 해당 프로젝트를 로컬 저장소..
[프로그래머스][Level4] 자동완성 - JAVA
[문제] 2018 KAKAO BLIND RECRUITMENT https://programmers.co.kr/learn/courses/30/lessons/17685 코딩테스트 연습 - [3차] 자동완성 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g programmers.co.kr [풀이] 단어 검색 관련 문제는 Trie 트리 자료구조를 이용하여 풀어야 한다. (단어 검색, 자동 완성 등등 --> 자동으로 "Trie"가 떠올라야함) Trie 구현코드를 처음부터 끝까지 작성하기는 쉽지 않다. 개인적으로 이런 문제를 풀 때는 팀노트나 블로그에 기록해두고 그때 그때 ..
JAVA 버전별 정리
JAVA를 주언어로 사용하는 개발자라면 JAVA 버전별 특징에 대해 꾸준히 업데이트 해놓으면 좋을것 같다. ▶ JAVA 7 2011년 7월 7일 발표 try-with-resource 추가 switch문에서 String 사용 가능 (JAVA6에서는 switch문에서 String 사용할 수 없었다니..충격) 타입추론(Type Inference): Diamond Operator 추가 JAVA 7이전에는 선언시에도 제네릭 타입을 명시해야 했지만 JAVA 7부터는 컴파일러가 알아서 추론하게끔 가능해졌다. // JAVA 7 이전 List stringList1 = new ArrayList(); // JAVA 7 - Diamond Operator 추가 List stringList2 = new ArrayList(); ..
[프로그래머스][LEVEL2] 캐시 - JAVA
[문제] 2018 KAKAO BLIND RECRUITMENT 출제 https://programmers.co.kr/learn/courses/30/lessons/17680