전체 글
-
JPA OSIV (open-in-view)JPA 2023. 12. 14. 22:20
spring.jpa.open-in-view : true service 계층에서 transaction 시작하는 시점에서 db connection 가져오는데 -> api 가 끝날 때 까지 반환을 안 함 -> 사유 = 프록시 객체를 가져올 때를 대비해서 db connection 이 살아있어야 함. (member.getName() 처럼) 즉, 영속성 컨텍스트가 끝까지 살아있어야 함 => 실시간 트래픽이 중요한 어플리케이션인 경우에 커넥션이 모자랄 수 있다 = 장애 spring.jpa.open-in-view : false transaction 이 끝날 때 까지만 DB Connection 유지함 -> 모든 지연로딩은 트랜잭션 안에서 처리해야 함 ! 이 복잡성을 관리하는 좋은 방법 : CQRS 기법 (command..
-
로그에서 sql 쿼리 파라미터 확인 하는 법Spring & SpringBoot 2023. 10. 22. 16:21
1. property 설정 - org.hibernate.type: trace 2. ( 출처 https://github.com/gavlyukovskiy/spring-boot-data-source-decorator) implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0") 버전 정보는 맞게 해주면 됨 실행 결과 첫 줄 : 원본 쿼리. 두번째 줄 : 파라미터 명시한 쿼리.
-
Softeer 플레이페어 level 3알고리즘 공부 2023. 5. 22. 13:57
대학교 학부생활을 마치고 현대자동차에 프로그래머로 취직한 사회초년생 현빈이는 팀장님에게 보안에 관련한 지식이 하나도 없음을 들키고 말았다. 그래서 현빈이는 업무시간 틈틈이 보안과 관련된 주제들을 공부하고 있다. 오늘 공부할 주제는 암호화 방식중 하나인 Playfair cipher(플레이페어 암호)다. Playfair cipher는 알파벳으로 이루어진 어떤 문자열(평문; plaintext)을 암호화하는 방법으로, 이를 위해 알파벳으로 이루어진 문자열인 키(key)가 필요하다. Playfair cipher는 빈도분석을 어렵게 하기 위해 한번에 두 글자 단위로 암호화를 진행하며, 5×5크기의 표를 사용하기 때문에 알파벳 26개를 모두 담기에는 칸이 한 개 부족해 I와 J를 동일한 것으로 생각한다. 이 문제에서..
-
Softeer 장애물 인식 level 2카테고리 없음 2023. 5. 22. 13:54
문제 자율주행팀 SW 엔지니어인 당신에게 장애물과 도로를 인식할 수 있는 프로그램을 만들라는 업무가 주어졌다. [그림 1] 지도 예시 우선 [그림 1]과 같이 정사각형 모양의 지도가 있다. 1은 장애물이 있는 곳을, 0은 도로가 있는 곳을 나타낸다. 당신은 이 지도를 가지고 연결된 장애물들의 모임인 블록을 정의하고, 불록에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 장애물이 좌우, 혹은 아래위로 붙어 있는 경우를 말한다. 대각선 상에 장애물이 있는 경우는 연결된 것이 아니다. [그림 2] 블록 별 번호 부여 [그림 2]는 [그림 1]을 블록 별로 번호를 붙인 것이다. 지도를 입력하여 장애물 블록수를 출력하고, 각 블록에 속하는 장애물의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. ..
-
Softeer 전광판 level 2알고리즘 공부 2023. 5. 22. 13:53
https://softeer.ai/practice/info.do?idx=1&eid=624 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현대차그룹에 다니는 당신은 전세계 유가 변동에 대해 실시간으로 파악하기 위해 사무실에 유가를 실시간으로 표시하는 전광판을 설치하였다. 전광판은 최대 다섯 자리의 자연수만을 표시할 수 있도록, 아래와 같이 육각형 모양의 전구 7×5=35개로 구성되어 있다. 8자 모양의 전구 묶음은 0부터 9까지의 숫자를 표현할 수 있으며, 표현 방법은 아래와 같다. 아래 그림에서 전구가 켜졌으면 검정색, 꺼졌으면 옅은 회색으로 표현되었다. 예를 들어, 전광판을 통해 9881를 표현하면 아래와 같다. 만의 자리 수가 없기 때문에, 만의 자리에 해당..
-
프로그래머스 42883 큰 수 만들기 (미해결)카테고리 없음 2023. 5. 15. 22:31
https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 꼬박 하루를 다시 봤는데도 테스트 케이스 10번에 대해선 시간초과를 잡지 못했다. 10번 시간 초과 오답 (stack) import java.util.*; class Solution { public String solution(String number, int k) { String answer = ""; char []ans= new char[number.length()-k]; Stack st = ..
-
프로그래머스 12913 땅따먹기 (DP)알고리즘 공부 2023. 5. 14. 20:56
https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. land 를 1행부터 순차하면서 윗행에서 가장 큰 수를 더한 값으로 치환한다 (같은 열인 경우를 제외해야함) 2. 최대 값을 찾기 위해서는 land의 마지막 행을 순차하면서 제일 큰 수를 찾으면 됨 import java.util.*; class Solution { int solution(int[][] land) { int answer = 0; for(int i=1;i
-
프로그래머스 154538 숫자 변환하기 (DP)카테고리 없음 2023. 5. 14. 20:46
https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. y+1만큼의 크기를 가진 배열에 해당 인덱스에 변환할 수 있는 최소 값을 넣어주면서 y까지 구하는 최소 연산 횟수를 구하면 된다. 2. 탐색 시작 인덱스는 x - 만약 인덱스가 x가 아닌데, "dp 배열 값이 0" 일 때 그 값에 도달할 수 있는 방법이 없다는 뜻이므로 -1 을 넣고 포문 연산 continue. import java.util.*; class Solution { public ..