일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스프링부트와AWS로혼자구현하는웹서비스
- 알고리즘
- 네트워크
- react
- aop
- 자료구조
- 기술면접
- 인프런백기선
- 자바예외
- jpa
- 클린코드
- 인프런김영한
- AWS
- 도메인 주도 개발 시작하기
- 이펙티브자바
- 혼공SQL
- CleanCode
- 이팩티브 자바
- mysql
- DDD
- 인덱스
- AWS RDS
- MariaDB
- 이펙티브 자바
- vue.js
- 자바
- 알고리즘분석
- java
- 자바스터디
- SQL쿡북
- Today
- Total
목록JAVA (53)
기록이 힘이다.
리플렉션은 클래스나 메서드의 메타정보를 사용해서 동적으로 호출하는 메서드를 변경할 수 있다. 리플렉션을 사용하면 클래스와 메서드의 메타정보를 사용해서 애플리케이션을 동적으로 유연하게 만들 수 있다. 하지만 리플렉션 기술은 런타임에 동작하기 때문에 컴파일 시점에 오류를 잡을 수 없다. 리플렉션은 프레임워크 개발이나 또는 매우 일반적인 공통 처리가 필요할 때 부분적으로 주의해서 사용해야 한다. 이펙티브 자바 참고하기 리플렉션보다 인터페이스를 사용하라. 리플렉션은 코어단에서 많이 사용을 한다. 객체를 사용할 때 사용해야 한다. 주의해서 사용하라는 것 같다. 리플랙션을 사용하면 임의의 클래스에 접근가능. 클래스의 Constructor, Method, Field 인스 dev22.tistory.com
-접근 제어 권한에 따른 접근 차단 캐싱 지연 로딩 -부가기능 추가 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행한다. 예) 요청 값이나, 응답 값을 중간에 변형한다. 예) 실행 시간을 측정해서 추가 로그를 남긴다. 둘다 프록시를 사용하는 방법이지만 GOF 디자인 패턴에서는 이 둘을 의도(intent)에 따라서 프록시 패턴과 데코레이터 패턴으로 구분한다. 프록시 패턴: 접근 제어가 목적 데코레이터 패턴: 새로운 기능 추가가 목적, 체이닝이 가능하다
인터프리터 방식과 컴파일 방식의 차이점을 서술해 주세요. 인터프리터 방식(Interpreter)과 컴파일 방식(Compiler)은 프로그래밍 언어 코드를 실행 가능한 형태로 변환하는 데 사용되는 두 가지 주요한 접근 방식입니다. 인터프리터 방식: 인터프리터는 프로그래밍 언어 코드를 한 줄씩 읽고 해석하여 실행합니다. 코드를 실행하기 전에 매번 번역 과정이 필요하므로 실시간으로 코드를 해석하고 실행할 수 있습니다. 인터프리터는 프로그래밍 언어의 문장을 해석하고 즉시 실행하기 때문에 개발과 디버깅이 빠르고 간편하며, 플랫폼에 종속되지 않고 어디에서나 실행할 수 있습니다. 그러나 실행 시간에 코드를 해석하므로 실행 속도가 컴파일 방식보다 상대적으로 느릴 수 있습니다. 대표적인 인터프리터 언어로는 Python,..
동기화하는 부분을 작게 만들어라 자바에서 synchronized 키워드를 사용하면 락을 설정한다. 같은 락으로 감싼 모든 코드 영역은 한 번에 한 스레드만 실행이 가능하다. 락은 스레드를 지연시키고 부하를 가중시킨다. 반면, 임계영역은 반드시 보호해야 한다. 따라서, 코드를 짤 때는 임계영역 수를 최대한 줄여야 한다. 올바른 종료 코드는 구현하기 어렵다 깔끔하게 종료하는 코드는 올바로 구현하기 어렵다. 가장 흔히 발생하는 문제가 데드락이다. 즉, 스레드가 절대 오지 않을 시그널을 기다린다. 깔끔하게 종료하는 다중 스레드 코드를 짜야 한다면 시간을 투자해 올바로 구현하기 바란다. 스레드 코드 테스트하기 코드가 올바르다고 증명하기는 현실적으로 불가능하다. 테스트가 정확성을 보장하지 않는다. 그럼에도 충분한 ..
클래스 체계 (자바의 경우) 가장 먼저 변수 목록을 작성 정적(static), 공개(public) 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개(private)변수가 나오며, 비공개 인스턴스 변수가 나온다. 변수 목록 다음에는 함수가 나온다. 공개 함수를 먼저 쓴다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. ⇒ 추상화 단계가 순차적으로 내려간다. 캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 좋다. (반드시는 아니다) 때로는 protected로 선언해 테스트 코드에 접근을 허용하기도 한다. → 하지만 캡슐화를 풀어주는 결정은 언제나 최후의 수단이다. 클래스는 작아야한다 클래스를 만들 때 제일 중요한 것은 **“크기가 작아야 한다”**이다. → 여기서 작아야하는 것은 물..
CSRF 토큰 오류는 주로 CSRF(Cross-Site Request Forgery) 보호 메커니즘을 사용하는 웹 애플리케이션에서 발생합니다. CSRF는 사용자가 동의하지 않은 채로 웹 사이트에서 동작을 수행하도록 공격자가 사용자를 속이는 유형의 공격입니다. CSRF 공격을 방지하기 위해 웹 애플리케이션은 CSRF 토큰을 사용합니다. 이 토큰은 각 사용자 세션마다 생성되는 고유한 값으로, 요청에 포함되어 해당 요청이 정당한 출처에서 시작된 것인지 확인하는 데 사용됩니다. CSRF 토큰 오류가 발생하면 요청에 포함된 CSRF 토큰이 누락되거나 잘못된 것이거나 만료된 것을 의미합니다. 이 때 서버는 요청을 잠재적으로 악성적으로 간주하고 오류로 응답합니다. 다음은 CSRF 토큰 오류를 해결하기 위해 수행할 수..
Pojo와 DTO는 모두 객체 지향 프로그래밍에서 데이터를 전달하거나 저장하기 위한 클래스입니다. 그러나 둘 사이에는 몇 가지 차이점이 있습니다. POJO (Plain Old Java Object): POJO는 단순히 데이터를 저장하고 접근하기 위한 클래스입니다. POJO는 Java의 기본적인 객체 지향 원칙을 따르며, 일반적으로 getter와 setter 메서드를 사용하여 데이터에 접근합니다. POJO는 특정 프레임워크나 라이브러리에 종속되지 않으며, 순수하게 데이터를 표현하기 위한 목적으로 사용됩니다. 비즈니스 로직을 갖지 않고 데이터만 담고 있는 단순한 구조를 가지고 있습니다. DTO (Data Transfer Object): DTO는 데이터의 전송을 목적으로 사용되는 객체입니다. 주로 여러 개의 ..
//catch 블록을 비워두면 예외가 무시된다. 아주 의심스러운 코드다! try{ ... }catch(SomeException e){ } 예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두면 예외가 존재할 이유가 없어진다. 비유하자면 화재경보를 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 알지 못하게 하는 것과 같다. 물론 예외를 무시해야 할 때도 있다. EX) FileInputStream --> 로그 예외를 무시하기로 했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자. Future f = exec.submit(planarMap:..