전체 글(35)
-
[자바] 메모리 관리 - 스택 & 힙 (+가비지컬렉션)
배우고 이해한 내용을 정리하는 글로써 틀린 부분이 있을 수 있습니다. 잘못된 점이 있으면 댓글로 남겨주시면 감사하겠습니다. 데이터를 저장하는 방식은 간단하게 나누면 컴퓨터 메모리에 저장되는 메모리 영역에 저장하는 방식과 외부 데이터베이스와 연결하여 외부 저장소에 저장하는 방식이 있다. 이 글은 자바에서 메모리 관리가 어떻게 이루어지는지에 대한 포스팅이다. 프로그램의 공통된 메모리 사용방식 코드 실행 영역 데이터 저장 영역 프로그램이 메모리를 사용하는 공통된 방식은 크게 코드 실행 영역과 데이터 저장 영역으로 분리해서 사용한다. 객체지향 프로그램의 메모리 사용방식 코드 실행 영역 스태틱(static) 영역 스택(stack) 영역 힙(heap) 영역 객체지향 프로그램에서는 데이터 저장영역을 다시 세개의 영역..
2021.12.08 -
[안드로이드] 스택에 쌓인 Activity 제거(finish()와 FLAG_ACTIVITY_CLAER_TOP)
안드로이드에서 Activity 간의 이동은 startActivity()와 startActivityForResult()로 이루어진다. startActivity는 startActivity(new Intent(현재액티비티, 이동할액티비티))로 사용하는데 이렇게 이동할 때마다 스택에 액티비티가 계속 쌓인다. 예를 들어 A -> B -> C -> D 이런 과정으로 액티비티 이동했을 경우엔 D 액티비티가 가장 후입 되었기 때문에 스택의 가장 위에 위치하며 나머지 A,B,C 액티비티들이 차곡차곡 스택에 쌓이게 된다. 이런식으로 액티비티 이동을 지속하게 되면 스택에 액티비티가 계속해서 쌓이게 된다것이다. 이렇게 쌓인 액티비티는 finish()라는 메소드를 통해서 스택에서 제거할 수 있는데 액티비티를 이동할 때마다 제거..
2021.11.17 -
[컴퓨터 기초] 런타임(Run Time)과 컴파일타임(Compile Time)
컴파일타임(Compile Time) 컴파일 타임(Compile Time) 컴파일이란 프로그램을 생성하기 위해 개발자가 소스코드를 작성하고 이를 컴퓨터가 읽을 수 있는 기계어로 변환해주는 것을 컴파일이라하며, 이렇게 사람이 작성한 소스코드가 컴퓨터가 인식할 수 있는 코드로 변환되어 실행 가능한 프로그램이 되는 과정을 컴파일 타임이라고 한다. 개발자들이 자주 사용하는 이클립스, 비쥬얼스튜디오, 인텔리제이 같은 통합개발환경(IDE)를 컴파일러라고 하며 이를 사용하여 소스코드를 작성하면 컴퓨터가 인식할 수 있는 기계어로 컴파일 해준다. 알기 쉽게 예를 들어보자면 파파고나 구글번역기에 한글 문장을 기입하고 아랍어나 스페인어로 해석 되는 과정과 비슷한 느낌이라고 보면 된다. 여기서 번역기는 컴파일러 역할을 하고 한..
2021.11.16 -
[안드로이드] 안드로이드 파이어베이스 연동시 토큰 검증 에러
클라이언트 : android studio 백엔드 : spring 데이터베이스 : postgresql 인증토큰(구글로그인) : firebase 이렇게 세가지 스택을 가지고 안드로이드 앱을 만드는 과정 중에 파이어베이스에서 생성한 프로젝트의 토큰 값을 받아서 검증시에 에러가 발생하여 이를 해결하는 과정을 기술한다. 인증 토큰 값을 가져오는 방식으로 웹과 앱 상에서 받아오는 두가지 방법으로 진행해봤다. 1) 첫번째 문제 상황 (웹에서 발급 받은 토큰을 통한 권한 인증) letsGetToken.html 을 통해서 firebaseConfig json 데이터로 서버에 등록한 후 발급 받은 키 값을 통해 스웨거에서 확인을 해봤지만.. 토큰 검증중 문제가 발생했습니다. 라고 500에러가 발생했다. 스프링에서 로그를 확..
2021.11.04 -
[Spring StackOverflow Error] Spring xml방식 객체 주입시 스택 오버플로우 에러
에러메시지 : javax.servlet.ServletException: java.lang.StackOverflowError 스프링에서 Scope를 Requst로 설정해둔 빈객체를 xml방식으로 주입 받아서 사용할 경우 발생했던 에러이다. 위의 사진은 root-context.xml로 빈객체를 등록해서 사용하는 역할을 한다. DataBean1과 DataBean2 두 빈객체를 등록해두고 Scope는 request로 설정해 두었다. DataBean2의 경우에는 id 값을 지정해주었는데 xml 방식에서는 특이하게 root-context.xml에서 빈객체를 id값을 설정해서 등록해 두면 request 영역에 자동으로 저장된다. 컨트롤러에 @Resource 어노테이션을 통해 id로 지정한 name 값으로 객체를 주입..
2021.10.21 -
[오라클 에러] ORA-12505 리스너 에러
Cannot create PoolableConnectionFactory (Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 해당 에러가 뜨면 오라클 리스너 에러일 것이다. 오라클 데이터베이스 접근시 사용하고 있는 SID를 확인하면 된다. 예를 들어 이와 같이 데이터베이스 접근 소스를 받아 올경우 setUrl의 값이 sql developer에 설정한 값과 동일한지 확인해야한다. sql developer를 확인해보니 setUrl에서 설정한 orcl과 다른 xe로 작성되어있다. 이처럼 SID가 맞지 않을 경우 ..
2021.10.13