신규 프로젝트에 들어가게 되었는데 API 통신 내부에서 병렬로 각각 처리를 해야 하는 임무를 받았습니다. 그래서 이번 기회에 열심히 Multi Thread에 대해 공부하게 되었고 나름 스스로 만족할 정도로 공부를 끝냈습니다. 아래 내용은 제가 공부한 Multi Thread에 대한 내용입니다. - Thread 실행 Class Thread를 실행할 Class로 ThreadPoolExecutor를 생성하여 Thread Pool을 관리하는 방식입니다. 중간에 Thread를 Sleep 시키는 이유는 ThreadPoolExecutor가 어떤 방식으로 돌아가는지 Console로 확인하고 싶어서 넣었습니다. ThreadPoolExecutor는 기본적으로 선언한 CorePoolSize 만큼 Thread를 실행하다가 Co..
어디 프로젝트에 들어가냐에 따라 다르겠지만 계정들을 딱 용도에 맞게 분리시켜 생성하여 각 종 Synonym 및 권한을 주는 형식의 프로젝트가 있기 마련입니다. 그러다보니 일반적인 Delete가 아니라 아예 Table을 리셋 시키려 Truncate하고 싶은데 다른 계정에서 실행해보면 권한이 충분하지 않다면서 실행이 되지 않습니다. 다른 계정의 Table을 Truncate하기 위해서는 두 가지 방식이 있습니다. 1. 권한 주기 1 GRANT DROP ANY TABLE TO A cs 이렇게 ANY 권한을 주게 되면 A 계정에서 어떤 Table이든 간에 Truncate 시키는 게 가능합니다. 다만 이렇게 무지막지한 권한을 줬다가는 모든 Table들을 Truncate할 수 있으므로 위험할 수 있습니다. 따라서 아..

길고 길었던 유지보수 생활이 끝나고 서울로 다시 올라와서 프로젝트에 들어갔는데 변명일수도 있겠지만 정말 바쁘고 힘든 시기를 지나 프로젝트 막바지에 이르렀습니다. 이제야 다시 여유를 되 찾아 오랜만에 카페에 예전에 사놨던 책 한 권을 들고 가서 이틀 만에 단숨에 다 읽었습니다. 이번에 읽은 책은 추리 소설가로 유명한 히가시노 게이고의 ‘나미야 잡화점의 기적’입니다. 지금 시국에는 안 맞는 책일지도 모르겠다만 그 전에 산 책이니 상관없겠죠? 나미야 잡화점의 기적은 3명의 좀도둑이 우연히 대피 장소로 물색 된 나미야 잡화점에 들어오게 되면서 시작되는 이야기입니다. 이 밑으로는 소설의 내용과 더불어 제 개인적으로 느낀 해석을 적을 예정으로 책을 읽어보지 않으신 분들이나, 내용을 미리 알고 싶지 않은 분들은 바로..
Spring framework 기반으로 Mybatis 설정 완료 후 프로시져를 통해서 리스트 값을 받아올 때 종종 Cursor is closed라는 에러가 발생하는 것을 확인할 수 있습니다. exception으로 throw하기 때문에 난감한 상황이 됩니다. 그렇다고 DB툴을 켜서 프로시져를 실행해보면 정상적으로 응답이 나오는 것을 확인할 수 있습니다. Mybatis에서는 해당 상황이 발생할 때SqlException으로 던지기 때문인 듯 한데, 이를 해결해 주려면 Cursor를 프로시져 도입부에서 무조건 Select 해주면 됩니다. 다만, 값을 내려주면 안되는 상황이고 Select를 태울 필요가 없는데 처음부터 Select가 실행되면 문제가 되기도 하니 아래와 같이 해결하시면 됩니다. 1 2 3 4 5 6..
- Total
- Today
- Yesterday