AOP를 사용하지 않는다면 ?AOP에 대해 설명하기 전에 AOP를 사용하는 이유에 대해 먼저 알아 봅시다. 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있습니다.핵심 기능 : 해당 객체가 제공하는 고유의 기능부가 기능 : 핵심 기능을 보조하기 위해 제공되는 기능 ( ex: 로그 추적 기능, 트랜잭션 기능 )보통 기존 프로젝트에 부가 기능을 추가하게 되면 하나의 클래스가 아닌 여러 클래스에 부가 기능을 추가하게 됩니다.예를 들어서 프로젝트의 모든 클래스에 로그 기능을 추가 한다면 하나의 부가 기능(로그 추적)을 여러 곳에 동일하게 사용하게 됩니다.이러한 부가 기능을 바로 횡단 관심사(cross-cutting concerns) 라고 합니다. 부가 기능 적용시 문제점그런데 이러한 기존 프로젝..
프록시란 ? 우리가 일반적으로 클라이언트가 서버를 호출할 때는 아래와 같은 그림을 떠올립니다. 직접 호출의 경우에는 클라이언트가 서버를 직접 호출하고, 그 결과를 받습니다. 그런데 클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아닌 "대리자"를 통해 대신 간접적으로 서버에 요청을 할 수도 있습니다. 여기서 "대리자"의 역할을 하는 것은 프록시(Proxy)로, 클라이언트는 프록시를 통해 간접적으로 서버에 요청합니다. 이렇게만 보면 굳이 프록시를 중간에 둬서 요청을 해야하나 ? 라는 생각이 들 수 있는데 프록시를 중간에 둘 경우 여러 기능을 추가로 얻을 수 있습니다. 프록시의 주요 기능 접근 제어 권한에 따른 접근 차단 캐싱 지연 로딩 - 접근 제어의 캐싱 예시 철수가 메로나가 먹고 싶어 형한테 올 ..
인텔리제이 실행 시 다음과 같은 오류를 만났습니다. 이 오류는 인텔리제이의 "빌드 및 실행" 환경의 설정이 Gradle로 되어 있을 시 위와 같은 오류가 발생한다고 합니다. 해결 방법은 아주 간단합니다. "빌드 및 실행"환경 설정을 IntelliJ IDEA로 변경해줍시다. 해결 방법 경로 : 파일 -> 설정 -> 빌드, 실행, 배포 -> 빌드 도구 -> Gradle
문제 설명 Solution.java 정답 코드 class Solution { public int solution(String name) { int answer = 0; // 조이스틱 조작 횟수 int len = name.length(); int move = name.length() - 1; // 기본 최소 좌우이동 횟수 (좌, 우 커서) // 해당 커서 알파벳 변경 최솟값 (위, 아래 커서) for (int i = 0; i < len; i++) { answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1); // 연속된 'A'가 끝나는 지점 찾기 int next = i + 1; while(next < len && name.charAt(next)..
ctrl + O 오버라이딩 메서드 생성 alt + insert 생성자 및 여러 컨트롤 자동 생성 ctrl + alt + v 해당 메서드에 대한 반환 타입과 변수 자동 작성 ctrl + shift + T 해당 클래스의 경로와 똑같고 클래스이름 끝에 Test가 붙은 테스트 코드 생성 ctrl + alt + M 해당 부분 메서드 추출 ctrl + shift + Enter ; 자동 입력 작성중인 코드에; 를 붙여서 완성 후 다음 줄 ctrl + p 해당 메서드 파라미터 정보 보기 ctrl + e 최근 이용 파일 보기 ctrl + e 후에 enter를 입력하면 이전 파일로 이동 ctrl + alt + T 다음으로 둘러싸기. shift + F6 변수명 전체 변경. shift + F10 이전 실행 파일 재실행 F2 ..
동시성이란? 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 동시성 문제라고 합니다. 이런 동시성 문제는 여러 쓰레드가 같은 인스턴스의 필드에 접근해야 하기 때문에 트래픽이 많을 때 자주 발생하게 됩니다. 특히 자바의 스프링은 기본적으로 스프링 빈을 싱글톤으로 등록하기 때문에 싱글톤 객체의 필드를 변경하며 사용할 때 이러한 동시성 문제를 조심해야 합니다. ( 동시성 문제는 값을 읽기만 하면 발생하지 않고, 값을 변경하기 때문에 발생 ) 동시성 문제는 쓰레드마다 각각 다른 메모리 영역이 할당 지역 변수에서는 발생하지 않고, 동시성 문제가 주로 발생하는 곳은 같은 인스턴스의 필드(주로 싱글톤에서 자주 발생) 접근, 또는 static 같은 공용 필드에 접근할 때 발생합니다. 동시성 ..