전체 글

전체 글

    [Java] 변수의 유효 범위와 메모리

    변수의 유효 범위와 메모리 변수의 유효 범위(scope)와 생성과 소멸(life cycle)은 각 변수의 종류마다 다름 지역변수, 멤버 변수, 클래스 변수는 유효범위와 life cycle, 사용하는 메모리도 다름 static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음 멤버 변수가 너무 많으면 인스턴스 생성 시 쓸데없는 메모리가 할당됨 상황에 적절하게 변수를 사용해야 함

    [Java] 자바 메모리 구조

    JVM 구동방식 (0) 컴파일러에 .java -> .class 컴파일 ​(1) 클래스 로더에 의해서 클래스 파일을 메모리 영역에 로드 후 초기화 작업 수행 ​(2) 메모리 영역에 Static(Method)부터 로드가 됩니다 ( 클래스 로드가 끝난 후 JVM은 main 메소드를 찾아 지역변수, 객체변수, 참조변수를 스택에 쌓음 ) (4) 로드 후에 JVM이 힙 영역에 객체를 생성합니다 (5) 마지막으로 실행엔진이 .class 파일(바이트코드)을 다양한 메모리를 참조하여 한줄씩 상황에 맞는 작업 수행(함수 호출, 객체 할당 등) Class Loader: JVM내로 클래스를 로드하고 링크를 통해 배치하는 작업을 수행하는 모듈로써 런타임시 동적으로 클래스를 로드한다. Execution Engine: Class ..

    [Design Pattern] 1. Singleton Pattern

    싱글톤 패턴(Singleton Pattern) " 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체(인스턴스)는 하나이고, 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체(인스턴스)를 리턴한다. " 객체(인스턴스)는 항상 하나만 생성된다. 정의 하나의 객체만 생성하고 사용해야 할 때, 적용할 수 있는 패턴이다. 만들어진 하나의 객체는 전역변수처럼 어디에서든지 참조할 수 있도록 하는 패턴이다. ​ 역할 하나의 객체만을 생성하는 책임이 있으며 getInstance() 메소드를 통해 모든 클라이언트에게 동일한 객체를 반환하는 작업을 수행한다. ​ 결과 오직 하나의 객체만을 보장한다. 전역 객체로써, 어디서든 접근이 가능하다. ​ public final class Singleton { priv..

    [ STAPL ] Android App Project

    github.com/Jaekeun-Lee/android Jaekeun-Lee/android 🏆 2020 Capstone Design. Contribute to Jaekeun-Lee/android development by creating an account on GitHub. github.com Android Project CapstoneDesign2020 STAPL ( See, Take A Picture, Learn ) ! AI를 활용한 물체인식 영어공부 - English study using A.I to use object detection Capstone Design Project : 2020.05 ~ 2020.09 Main development tool : Android Studio 1. Intr..

    [JPA] JPA Auditing

    JPA Auditing이란? Java에서 ORM 기술인 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다. 대표적으로 생성일자, 수정일자, 식별자 같은 필드 및 컬럼이 있습니다. 도메인마다 공통으로 존재한다는 의미는 결국 코드가 중복된다는 말과 일맥상통합니다. 데이터베이스에서 누가, 언제하였는지 기록을 잘 남겨놓아야 합니다. 그렇기 때문에 생성일, 수정일 컬럼은 대단히 중요한 데이터 입니다. 그래서 JPA에서는 Audit이라는 기능을 제공하고 있습니다. Audit은 감시하다, 감사하다라는 뜻으로 Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능입니다. 도메인을 영속성 컨텍스트에 저장하거나 조회를 수행한 ..

    Travis CI .travis.yml 설정 후 build 이슈

    ./gradlew: Permission denied git에 permission을 업데이트 해줘야 travis가 실행할 수 있다. 해결 1. .travis.yml에 before_install을 추가하여 permission을 바꾸는 방법 language: java jdk: - openjdk8 branches: only: - master before_install: - chmod +x gradlew # Travis CI 서버의 Home cache: directories: - '$HOME/.m2/repository' - '$HOME/.gradle' script: "./gradlew clean build" # CI 실행 완료시 메일로 알람 notifications: email: recipients: - mail..

    API 호출 및 페이지 접근 Controller 테스트 오류 해결하기

    이슈 1. CustomOAuth2UserService를 찾을 수 없습니다. - CustomOAuth2UserService 소셜로그인 관련 설정값에 따른 실행 기본적으로 application.properties 파일을 src/main, src/test 모두 읽어서 사용한다. src/test/resources에 application.properties가 없을 경우 src/main/resources에 있는 application.properties를 자동으로 읽는다. src/main/resources/application-oauth.properties는 읽지 못한다. 즉, application-oauth.properties가 test쪽에 파일이 없기때문에 발생하는 오류이다. 해결책은 application.pro..

    [Web Service Project]15. Spring Security 기반의 테스트 코드 작성하기

    Spring Security 기반의 테스트 코드 작성하기 목표 HelloControllerTest (페이지 접근) PostsAPIControllerTest (API 호출 기능) Spring Security로 인한 접근 권한에 연관된 테스트는 Security 옵션이 필요 따라서 작성한 전체 테스트가 정상적으로 수행 Tasks -> verification -> test (전체 테스트) 전체 테스트 확인 기존에 SpringSecurity 설정이 되어 있지 않은 상태에서 작성된 테스트 코드는 Security 적용 시 오류가 발생할 수 있다.

    [Web Service Project]14. OAuth2 Naver Login

    OAuth2 Naver Login Naver API 등록 Naver 오픈 API https://developers.naver.com/ 회원이름, 이메일, 프로필 사진 체크 및 추가 정보가 필요한 경우 선택 서비스 URL http://localhost:8085/ Callback URL 등록 http://localhost:8085/login/oaut2/code/naver 등록 완료 시 ClientID와 ClientSecret이 생성 http://localhost:8085/ 스프링 시큐리티 설정 등록 application-oauth.yml 네이버에서는 스프링 시큐리티를 공식 지원하지 않으므로 설정 추가 CommonOAuth2Provider에서 해주던 값들도 전부 수동으로 입력 user_name_attribut..