본문 바로가기

프로그래밍94

[JAVA] Stack Frame이란?.. 오늘의 주제 JAVA의 Stack Frame이란? 목차 0. 개요 1. JVM의 동작 방식 2. Stack Frame에 대한 정리. 0. 개요 이전글 "JAVA는 Call by Value일까요? Call by Reference일까요?" 를 작성하면서 Stack Frame이라는 개념을 접했었어요. 누군가 나에게 "Stack Frame이 무엇인가요?" 라고 질문했을 때 명쾌히 "A는 B야. 왜냐하면~~~" 이라고 설명 할 수 없을 것 같아서 이렇게 글을 작성해요. 이번 글에서는 Stack Frame....(음 자바에서는 primitive한 변수들은 stack이라는 메모리 영역에 저장한다고 하는데...)이 무엇인지를 자바 메모리 구조와 더불어 알아 볼 거에요. 1. JVM(Java Virtual Machine.. 2023. 6. 4.
[JAVA] JAVA는 Call by Value일까요? Call by Reference 일까요? 오늘의 주제 JAVA는 Call by Value일까요? Call by Reference일까요? 결론 부터 말씀드리면 JAVA는 Call by Value방식입니다. 목차 0. 개요 1. Call by Reference는 무엇일까? 2. Call by Value는 무엇일까? 3. Call by Reference와 Call by Value는 뭐가 다르지? 4. JAVA는 Call by Reference일까? Call by Value일까? 5. 요약 및 정리 0. 개요 필자는 오늘 문득 친구에게서 JAVA는 Call by value일까? Call by reference일까? 질문을 받았어요. 질문을 받았을 때에는 JAVA는 두 가지 방법을 다 쓰는게 아닐까? 생각했어요. 그리고 지금까지는 그렇게 믿고 있었구요... 2023. 5. 28.
[Error] @Value Null 오류 0. 개요 qa와 production 테이블을 분리해서 호출하게끔 해달라는 요구사항이 들어왔습니다. 전체적으로는 Spring Batch를 이용하여 코드를 작성하였고, 기존에는 Reader부분에서는 Spring Batch가 제공해주는 jdbcPagingReader를 이용해서 데이터를 읽어오거나, jdbc template을 이용하여 DB에서 데이터를 저장, 조회하는 방식으로 코드가 구성되어 있었습니다. 1. 문제점 현재는 1개의 테이블만을 바라보는 쿼리문을 2개의 테이블을 바라보도록 변경하려고 했을 때 가장 먼저 떠오른 방법은 yml파일을 이용하여 qa와 production 각각 다른 테이블 코드를 넣어주어서, 이 값을 읽어 테이블을 crud하는 것이었어요. (이전에 일부 setting값은 공통적으로 사용하.. 2023. 5. 21.
[Error] Spring NoSuchBeanDefinitionException 문제 오류 메시지 UnsatisfiedDependencyException: Error creating bean with name ' ' : Un satisfied dependency expressed through field ~~ nestied exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ~~ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.bean.factory.annotatins.Autowired(r.. 2023. 5. 19.
[python] python 코드가 실행되는 원리. 회사에서 진행하는 이번 프로젝트는 python을 활용 할 예정이다. 이와 관련하여 이야기를 나누다가 내가 전에는 생각지 못했던 python의 코드가 실행되는 원리에 대한 이슈가 나왔고, 그에 대해 검색 후 깨달음을 얻고 정리 해보고자 한다. 일단 이전까지만 해도 python은 인터프리터 언어, c, java는 컴파일 언어 라는 것을 암기식으로만 알고 있었다. 취업 때문이긴 하지만 내 근본인 java 코드가 java 컴파일러를 통해 .class 파일로 변환되고, jvm을 통해 기계어로 변환 된다는 것만 알고 있을 뿐(운영체제에 종속되지 않는다.) 다른 언어에 대한 것은 그리 관심을 가지지 않고 살아왔었고, 필요할 때만 겉핥기식으로 사용해왔었다. 그런데 그런데 이번에 훅 들어온 좋은 질문으로 인해서 다시 한.. 2023. 4. 6.
[error] 창이 예기치 않게 종료되었습니다(원인: 'killed', 코드: '3') in vscode 회사에서 리액트로 새로운 프로젝트를 진행한다고 해서, 백엔드 개발자인 나는 HTML, CSS, JavaScript부터 다시 공부를 시작할 결심을 하고, 강의를 들으면서 vscode를 세팅하던 중 난관에 봉착했다. 바로 이 글의 제목과 같은 오류가 뜬 것! extension을 깔고 재 시작한후 다른 extension에서 재 시작을 요청하길래 다시 재 시작을 해버렸더니 위와 같은 오류가 발생했다. 그러나! 해결방법은 의외로 간단했다. 터미널에서 open /Applications/Visual\ Studio\ Code.app -n 를 실행하면 vscode창이 제대로 열린다. https://stackoverflow.com/questions/48564668/visual-studio-code-window-has-cr.. 2023. 3. 11.
[JPA] QueryDSL의 DSL이 궁금하다! 갑자기 뜬금포로 DSL이 궁금해서 ChatGPT에게 질문했다. DSL은 Domain-Specific Language의 약어로 특정 도메인에 적합한 언어를 의미한다고 한다. 그럼 QueryDSL은 SQL, Structured Query Language, 즉 데이터베이스라는 도메인에 적합한 언어일 것이다. 특정 도메인에 적합한 언어라... 그럼 JAVA에 적합한 DSL도 있을까? 구글 검색을 시작했다.!!! 그랬더니 자바에도 DSL이 있었다!! (정확히 말하자면 자바와 관련된 DSL!) 평소에도 자주 쓰고 있던~~ 스트림이!!!!! 컬렉션을 조작하는 DSL이었던 것!! 오호~ DSL에 대해서 좀 더 이해되기 시작했다. DSL은 특정 도메인에 국한 되어서 그 도메인을 가지고 놀 수있는 언어랄까? 즉 도메인이 .. 2023. 3. 3.
[Spring] @Retention에 대하여.. 얼마 전 Mapstruct를 사이드 프로젝트를 적용 하면서 삽질을 한 경험이 있다. 삽질을 하면서 코드도 까보고 하다보니 @Retention에 대해서 검색하게 되었고, 지금 까지 @Retention에 대해서 무지했던 나를 반성하면서 이번기회에 정리해보고자 한다. 일단 Retention이라는 영어단어의 뜻은 '보유' 라는 뜻이다. 동의어로는 holding, hold, tenure, supplement, enjoyment 등이 있다. 지금까지 살펴본 바로는 @Retention이라는 어노테이션은 우리가 DI해서 사용하는 어노테이션 안에 설정되어 있다. 설정 값을 보면 RetentionPolicy.SOURCE 라고 적혀 있다. 이 말인 즉슨 이 getter 어노테이션이 소스 단 까지 유지된다는 것이다. 즉, 컴.. 2023. 2. 25.
[Spring] JAVA Reflection API가 궁금하다! 얼마 전에 MapStruct, ModelMapper, ObjectMapper에 대하여 chatGPT에게 질문하였다. ObjectMapper는 런타임 환경에서 JAVA의 Reflection API를 이용해서 작동한다는 것을 알게 되었고, Reflection API가 무엇인지 찾아보기 시작하였다. Reflection에 대해서 chatGPT에게 질문하였고, 답변을 받을 수 있었다. 스프링의 Reflection API는 자바의 리플렉션 기술을 이용하여 객체를 동적으로 생성하거나 객체의 속성 값을 조회하거나 수정 할 수 있도록 하며, 메서드를 호출할 수 있도록 지원한다고 한다. 또한, 스프링에서는 bean생성, 조회, 수정에 Reflection 기술을 이용한다는 것을 알 수 있었다. 즉, BeanFactory에서.. 2023. 2. 25.