목록전체 글 (45)
ㅇ.ㅇ
상황예전 브랜치에서 작업했던 내용들을 깃 cherry-pick을 사용해서 가장 최신 브랜치를 기준으로 커밋하는 작업을 하고 있었다.에러 내용org.springframework.beans.NotWritablePropertyException: Invalid property 'maxWait' of bean class [org.apache.tomcat.dbcp.dbcp2.BasicDataSource]: Bean property 'maxWait' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?문제 원인이 에러는 BasicDataSource 클..
상황javascript로 작성된 aesUtil 파일을 rust 파일로 변환 후 encrypt 된 값을 받아와 자바에서 decrypt 하는 과정 중에 에러가 발생하였다. 에러 내용org.apache.commons.codec.DecoderException : Illegal hexadecimal character q at index 0문제 원인에러내용 자체를 파악해보자면, 인덱스 0자리에서 16진수 문자열에 맞지 않는 'q'가 들어갔다는 에러이다. 당연하다. 왜냐하면 16진법 문자열은 0부터 9까지의 숫자와 A부터 F까지의 알파벳 대문자로 구성되기 때문에 'q'는 포함되지 않는다. 따라서 코드를 검토하고 유효하지 않은 16진수 문자를 찾아 수정해야지 에러를 수정할 수 있다.결론은 javascript로 작성된 ..
상황톰캣에서 에러는 아니지만 메모리릭 관련 워닝이 발견되어 찾아보았다.에러 내용 The web application registered the JDBC driver [org.postgresql.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.메시지 의미Tomcat은 웹 애플리케이션을 배포할 때 postgresql Driver JDBC 클래스가 등록되었지만, 동일한 애플리케이션을 제거할 때 등록 해제되지 않았다는 것을 알려주고 있다.문제 원인문제의 원인은 JDBC 드라이버의 부적절한 구현이라고 ..
상황이번에 다른 피처 브랜치에서 개발한 기능을 현재 최신 브랜치에 병합하는 작업을 해야한다. 어떻게 해야할지 생각을 해보다가 책임님께서 merge와 rebase, cherry-pick을 힌트로 주셔서 실행으로 옮기기 전에 개념을 정리해보려고 한다. 뭔가 익숙하지만 확실히 알고있는게 없었다.Cherry-pick 이란?다른 브랜치에 있는 커밋을 선택해서 내 브랜치에 적용할 때 사용하는 명령어커밋 자체를 옮기는게 아니고 같은 내용을 가지고 있는 커밋을 하나 더 생성하는 것이므로 전체 히스토리를 보았을때는 커밋이 늘어나는 것이다. 그러므로 꼭 필요할 때만 사용할 것!// 체리픽 명령어git cherry-pick // 여러 커밋을 한꺼번에 하고싶을 때git cherry-pick // 연속적인 커밋일 경우 (..
맨 처음에는 정렬 알고리즘의 퀵 솔트를 사용해보려고 했지만 이론만 알고 사용해 본 적이 없어서 적용이 잘 안 되었다. 그래서 그냥 내가 알고 있는 정렬 해결책인 Arrays.sort를 사용하기로 하였다. 문제 설명0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이 중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.제한 사항numbers의 길이는 1 이상..
HashSetSet자바의 인터페이스의 한 종류 (ADT = abstract data type = 인터페이스)그 인터페이스를 구현한 class = data structure (자료구조)중복을 허용하지 않는다순서를 보장하지 않는다method = add, contains, delete 등Set 종류(1) hashSet - 순서를 보장하지 않는다(2) sortedSet - 순서를 보장한다Hash Set 구현 방법HashSet의 구현은 HashMap을 활용해서 구현이 되어 있다Hash Mapkey : valuekey는 중복이 되지 않는다그러므로 HashSet은 HashMap의 Key부분을 활용한다.참고 : https://www.youtube.com/watch?v=1Hxm6f33VbY
의문화면에서 404 에러가 노출되고, Failed to delete generated class(java) file 에러가 계속 발생하였다. 찾아보니 tomcat의 work에 카탈리나에 지워지지 않은 파일들이 쌓여서 생긴 것이기 때문에, 정말 work를 날리기만 해도 문제는 해결되었다. 그런데 여기서 work 파일이 뭐 하는 애인지 확실히 뭔지 몰라서 정리해보려고 한다. work 디렉토리란,tomcat - work 디렉토리 work 디렉토리 : jsp 페이지와 서블릿 클래스와 같은 동적 콘텐츠 + 세션파일을 저장하는 임시 디렉토리html코드와 java코드로 이루어진 jsp파일이 서버에 도착하면 컴파일이 되고, java servlet으로 변환되어 그 servlet 클래스는 톰캣 work 디렉토리에 저장된다..
의문하나의 톰캣에 두개 이상의 서비스를 구축하기 위해서는 여러 방법이 있지만 그 중에서도 가장 간편한 것은 port를 다르게 하는 것과 context-path를 다르게 하는 것이다. 톰캣의 server.xml 파일에서 설정하면 되는데, 나는 지금껏 port를 같게 하면 context 또한 무조건 설정을 따로 해줘야 한다고 생각했다. 그런데! 따로 context-path 지정을 안해줘도 정상적으로 작동한다는 것을 발견했다..! 답잘 동작하는걸 떠나서 context 지정을 따로 안 해줬는데 그럼 어떤 걸 path로 삼고 나뉘어지는가에 대해 찾아보니 appBase라는 결론에 도달했다. appBase에 지정된 폴더로 찾아가서 리소스를 찾는 것이다. 그리고 그 리소스 명으로 context가 나뉘어지고 있었다. ..