본문 바로가기

Programing

(391)
[spring] ServletWebRequest 생성 package org.springframework.web.servlet.mvc.method.annotation; public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter implements BeanFactoryAware, InitializingBean { @Nullable protected ModelAndView invokeHandlerMethod(HttpServletRequest request, HttpServletResponse response, HandlerMethod handlerMethod) throws Exception { ServletWebRequest webRequest = new ServletWebRequ..
[Spring] Controller & RequestMapping : RequestMappingInfo AbstractAutowireCapableBeanFactory # createBean → doCreateBean → initializeBean → invokeInitMethods → (InitializingBean) afterPropertiesSet RequestMappingHandlerMapping # afterPropertiesSet AbstractHandlerMethodMapping # afterPropertiesSet → initHandlerMethods → processCandidateBean → if (isHandler(beanType)) → detectHandlerMethods → getMappingForMethod RequestMappingHandlerMapping # getMappingF..
[Java] 지역변수 이름과 죄수번호...? 자바관련 카페에 올라온 질문. 질문 String str = null; 이 상태는 str이 객체를 참조하지 않고 스택영역에 str변수 이름으로 null값이 세팅되었다면 String name = ""; 이 상태는 힙영역에 빈 공간으로 객체가 생성되고 주소 번지가 스택영역에 리턴이 되는건지요.. 슬기로운 감빵생활과 자바 자바에서 지역변수의 이름은 런타임시에 어떻게 될까. 첫 코드에서 str 이라는 이름의 변수 이름은 계속 남아 있을까? tvN에서 했던 슬기로운 감빵생활을 보면서 나는 자바의 지역변수와 유사한 점이 많다고 생각했다. 사회에서 '김제혁'이라고 불리던 이름이 형무소에 가면서 '7102'라는 죄수번호라는 신원을 구별하는 번호로 바뀐다. 자바코드에서는 존재하던 변수이름은 컴파일이 되면서 비슷하게 숫자로..
[Spring] org.springframework.dao 예외 클래스 org.springframework.dao 패키지 하위의 예외 클래스를 리스트업 해보았다. 5.2.4 기준이로 일부는 빠져있을 수 있다. 가장 상위가 되는 예외는 DataAccessException 이다. 아래에는 크게 3가지 카테고리로 나눌 수 있다. NonTransientDataAccessException: Root of the hierarchy of data access exceptions that are considered non-transient where a retry of the same operation would fail unless the cause of the Exception is corrected. RecoverableDataAccessException: Data access ex..
[Java] Sonarqube: Modifiers should be declared in the correct order 기본이지만 가끔 헷갈릴때가 있다. java:S1124 Modifiers should be declared in the correct order Code Smell Minor convention Available SinceJul 31, 2018 SonarQube (Java) Constant/issue: 2min The Java Language Specification recommends listing modifiers in the following order: 1. Annotations 2. public 3. protected 4. private 5. abstract 6. static 7. final 8. transient 9. volatile 10. synchronized 11. native 12. st..
[AWS lambda] 데이터 클린징에서 배운 내용 팀 이동을 하면서 이전에 개인정보 정리를 위한 데이터 클린징 작업을 했다. 클린징 메인 로직은 Java로 구성을 하고 트리거는 AWS lambda에서 node.js 스크립트를 구성하여 동작하게 했다. 날짜 자바스크립트 진영에서는 이미 Moment.js 가 표준으로 자리잡은 것 같다. ( 2020-11-04 성준님이 요즘 대새는 Day.js 라고 한다. 참고로 footprint가 moment.js 대비 1/33 이다.) 하지만 아쉽게도 해당 서드파티라이브러리를 이용하려면 해당 패키지를 함수 코드에 추가를 해야한다. 의존성 관리(예. 의존성 모듈 업로드) 등의 부가적인 작업을 해주어야 해서 일단 빠르게 만들어야 해서 Vanilla JS 로만 작성을 하기로 결정했다. 클린징을 위해서는 몇 일전 날짜를 구하는 ..
[JOOQ] MySQL JDBC batch 벤치마킹 batch 처리에 대한 의견 코드리뷰를 하다 jdbc의 batch 처리를 하면 성능 효과를 얻을 수 있을 것 같다는 성준님의 의견이 있었다. executeBatch 를 이용한 방법입니다. (e.g Batch Processing in JDBC atBaeldung) 단일 DELETE N 건 실행 대비, 성능상 이점이 있습니다. 평소 성준님은 최적화에 대해 M.A.Jackson의 말을 인용하시던 분이었다. 최적화를 할 때는 아래의 두 규칙을 따르라. 규칙1: 하지마라 규칙2: (전문가들만 따를 것) 아직은 하지마라 - 완벽히 명료한, 최적화되지 않은 해답을 얻을 때까지는. - M. A. 잭슨(M. A. Jackson) 사실 네트워크 round-time을 생각해본다면 상식적으로 한번에 batch로 보내는 것이 ..
[Contact] v2.1 - 앱 크래시 핫픽스 앱 크래시 현상이 발견되어 핫픽스를 진행해였습니다. (관련 내용은 아래에 적어둡니다.) 이전 버전: namocom.tistory.com/906 (v2.0) 릴리즈 SHA-1: 32b66326e74c883f382c5e3695e209ab3845379a 원인 1. 앱 실행시 종료 문제 전에는 Apple Develop을 유로로 구독하지 않아도 내부적인 용도로 사용을 위해 sigining이 가능했습니다. 그런데 어느 순간부터 정책이 바뀌어서 더 이상 사이닝이 불가능해졌습니다. 정책이 바뀌기 전 프로젝트 설정이 사이닝으로 되어 있는데 실제로는 사이닝이 안되고 있어서 앱이 인증 문제로 바로 종료되는 문제가 있었습니다. 결국 설정에서 코드 사이닝을 제거하는 것으로 일단 해결했습니다. 2. 앱 실행후 종료 문제 한글을 ..