헝D의 일기장
[트러블슈팅] 자바 Properties 파일을 못 읽는 현상
개발공부 2024. 11. 8. 17:39

문제자바 jar 파일을 배포하고 이를 실행하는 스크립트를 만들어서 어떠한 파일을 불러와야 하는 상황.파일은 디렉토리를 명시하지 않았고 파일명으로만 불러오려고 함.파일은 해당 스크립트와 동일한 디렉토리에 존재함. 테스트시 스크립트를 실행했을때 파일을 정상적으로 읽어왔음.해당 스크립트를 자동으로 실행하도록 크론탭에 등록하였고 그 후 크론탭에 의해 자동으로 실행되자 파일을 찾지 못하는 현상 발생 원인작업디렉토리의 문제.Properties.load 메소드를 사용시 경로 없이 파일 이름만 명시했을때 해당 파일을 현재 작업 디렉토리에서 찾게 된다.스크립트를 직접 실행했을때 작업디렉토리는 해당 스크립트가 위치한 경로로 잡혔기 때문에 문제가 없다.그러나 크론탭을 통해 스크립트를 자동 실행하면 작업 디렉토리는 스크립트가..

java PreparedStatement 재사용시 유의점
개발공부 2024. 11. 7. 18:00

내가 맡은 업무의 코드에는 java PreparedStatement를 사용하는 코드들이 아주 많다.근데 여기서 큰 문제점이 있었는데 PreparedStatement 를 재사용하는 방법이 잘못되어 있었다는 것이다.for(int i = 0; i 이런식으로  for문 안에서 객체를 재할당 해주고 마지막에 finally 문에서 pstmt를 close해주는 식이었다.하지만 이런 방식으로 사용한다면 가장 마지막의 pstmt만 close 되고 앞에서 할당한 pstmt는 절대 close 될 수 없는 구조를 가진다. String sql = "select name, aget from testTable where condition = ? ";pstmt = conn.prepareStatement(sql);for(int i =..

[트러블슈팅] 실제 데이터 값과 MyBatis를 통해 select 한 값이 다른 문제 - 오라클 char 타입 유의할점
개발공부 2024. 11. 7. 17:44

문제 오라클 developer에서 어떠한 select 쿼리를 날렸을때 값이 1이 나오는데 자바 프로그램에서 MyBatis 를 통해 파라미터를 넘기고 똑같은 쿼리를 select 했을때는 값이 0이 나온다. 근데 이러한 현상이 where 조건에 다른 값을 줬을때는 정상적으로 나오는 문제가 있었다. 원인 where 조건에 사용된 컬럼이 varchar 타입이 아닌 char 타입이었다. char 타입인 데이터는 지정한 길이보다 문자의 길이가 적을때 나머지 부분을 공백으로 채운다. 그렇기 때문에 MyBatis 로 실행했을때 해당 값이 공백까지 정확히 일치하지 않았기 때문에 developer 상의 결과와 달랐다. 해결 해당 컬럼은 char 8byte 의 데이터 타입을 가지고 있었고, 다른 데이터들도 모두 8byte ..

[트러블슈팅] jsch auth fail
개발공부 2024. 11. 7. 17:31

문제자바 jsch 이용해서 sftp 연동 개발 중 방화벽도 열려있고 터미널에서 sftp 접속도 정상적으로 되는데 자바 프로그램으로 실행할때만 connect 가 안되는 현상.테스트 서버에서는 이상 없었으나 동일한 소스로 스테이징 서버에 올리니 connet 시 auth fail 오류가 발생함. 해결 기존: connect를 시도할때 session.connect(port) 이렇게 포트 정보를 명시했음변경: port 정보를 명시하지 않고 session.connect() 로 소스 코드 변경 원인문법상 connect 시 port 정보를 넘기는게 문제가 되지는 않으나 처음에 jsch 세션 정보를 가져올때 포트 정보를 넘기기 때문에 connect 메소드에 port 정보는 넘기지 않아도 된다. 테스트 서버와 스테이징 서버..

article thumbnail
[프로그래머스] 두 원 사이의 정수 쌍 java (LEVEL2)
코테풀이 2024. 1. 29. 19:34

https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두 원 사이의 정수 쌍 문제 설명 x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요. ※ 각 원 위의 점도 포함하여 셉니다. 제한 사항 1 ≤ r1

[백견불여일타] Spring Data JPA
개발공부 2024. 1. 27. 17:57

ORM(Object Relational Mapping) : 객체와 관계형 데이터베이스 매핑하는 기술. JPA (Java Persistence API): 자바 ORM 기술에 대한 API 표준. 즉 인터페이스 -장점: 특정 데이터베이스에 종속되지 않고, 객체지향적 프로그래밍을 가능하게 해주며, 생산성 향상. -단점: 1.복잡한 쿼리 사용시에는 sql 사용하는게 나을 수 있음. native sql을 통해서 기존 sql 사용할수는 있지만 특정 디비에 종속되는 단점이 생겨서 JPQL을 지원함. 2.성능 저하 위험: 객체간 매핑 설계 잘못했을경우. 자동으로 생성되는 쿼리 많아서. Hibernate: JPA 인터페이스를 구현한 가장 대표적 오픈소스. JPA 동작방식 한개의 Entity Manage Factory --..

article thumbnail
[프로그래머스] 우박수열 정적분 java (LEVEL2)
코테풀이 2024. 1. 27. 16:02

https://school.programmers.co.kr/learn/courses/30/lessons/134239 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 콜라츠 추측이란 로타르 콜라츠(Lothar Collatz)가 1937년에 제기한 추측으로 모든 자연수 k에 대해 다음 작업을 반복하면 항상 1로 만들 수 있다는 추측입니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2.결과로 나온 수가 1보다 크다면 1번 작업을 반복합니다. 예를 들어 주어진 수가 5 라면 5 ⇒ 16 ⇒..

[백견불여일타] 프로젝트 생성
개발공부 2023. 11. 12. 17:05

https://cafe.naver.com/codefirst 백견불여일타 : 네이버 카페 로드북 출판사의 백견불여일타 시리즈의 학습 공간입니다. cafe.naver.com 깃허브: https://github.com/gituserhjlee/springbootShopProject 개발환경: 운영체제 - Window 11 IDE: IntelliJ Community JDK: JDK 11 스프링부트: 2.7.17 빌드툴 : Maven 데이터베이스: MySQL 스프링부트 특징: 톰캣(WAS) 자체 내장 빌드 구성 단순화 위한 'Spring Boot Starter' 의존성 제공 xml 설정없이 단순 자바 수준의 설정 방식 제공 JAR를 이용해 자바 옵션만으로 배포 가능 애플리케이션 모니터링과 관리를 위한 스프링 액추에..

article thumbnail
[프로그래머스] 스티커 모으기(2) java 풀이(LEVEL3)
코테풀이 2023. 9. 14. 20:07

https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다. 예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 ..

article thumbnail
[프로그래머스] 기지국 설치 java 풀이 (LEVEL3)
코테풀이 2023. 9. 6. 20:56

https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다. 예를 들어 11개의 아파트가 쭉 늘어서 있고, [4, 11]..