네이티브 메서드는 신중히 사용하라 자바 네이티브 인터페이스(Java Native Interface, JNI)는 자바 프로그램이 네이티브 메서드를 호출하는 기술입니다. 여기서 네이티브 메서드란 C나 C++같은 네이티브 프로그래밍 언어로 작성된 메서드를 말합니다. public class Object { @HotSpotIntrinsicCandidate protected native Object clone() throws CloneNotSupportedException; } 💡주요 쓰임 레지스트리 같은 플랫폼 특화 기능에 사용됩니다. 네이티브 코드로 작성된 기존 라이브러리를 사용합니다. 성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성합니다. 💡성능 개선을 목적으로 네이티브 메..
객체는 인터페이스를 사용해 참조하라 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하는게 좋습니다. 💡유연한 프로그램 작성 LinkedHashSet을 사용하는 인터페이스 타입 변수를 선언하면 유연하게 변경할 수 있습니다. //좋은 예 Set sonSet = new LinkedHashSet(); //나쁜 예 LinkedHashSet sonSet = new LinkedHashSet(); 💡다른 타입으로 변경 좋은 예는 Set 인터페이스 타입이기 때문에 다른 구현체로 변경해도 에러가 발생하지 않습니다. 하지만 나쁜 예의 경우 LinkedHashSet 인터페이스 타입이기 때문에 다른 구현체를 받는다면 컴파일 에러가 발생하게 됩니다. //좋은 예 Set sonSe..
문자열 연결은 느리니 주의하라 문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단입니다. 하지만 여러 문자열을 많이 합치게 되는 경우 성능 저하의 문제가 발생할 수 있습니다. 문자열 연결 연산자(+)로 문자열 n개를 잇는 시간은 n2에 비례합니다. 💡연결 연산자를 사용하는 경우 public class Example { public static void main(String[] args) { String str = ""; for (int i = 0; i < 100000; i++) { str += i; } System.out.println(str); // 16 sec, 948ms 소요 } } 💡StringBuilder를 사용하는 경우 상당히 빨라진것을 알 수 있습니다. public cla..
다른 타입이 적절하다면 문자열 사용을 피하라 문자열(String)은 텍스트를 표현하도록 설계되었고, 그 일을 아주 잘해주고 있습니다. 그런데 문자열은 워낙 흔하고 자바가 잘 지원해주고 있어서 의도치 않게 사용하는 경우도 있습니다. 💡문자열은 다른 값 타입을 대신하기에 적합하지 않습니다. 많은 사람들이 파일, 네트워크, 키보드 입력으로부터 데이터를 받을 때 주로 문자열(String)을 사용합니다. 하지만 입력 받는 데이터가 수치형이라면 int, float, double형 또는 Y/N을 입력받는다면 boolean을 사용하는 것이 좋습니다. 💡문자열은 열거 타입을 대신하기에 적합하지 않습니다. // bad public static void typeV1(String fruitName) { if (fruitNam..
- Total
- Today
- Yesterday
- pipeline architecture
- 레이어드 아키텍처란
- 람다 표현식
- spring boot poi excel download
- spring boot redisson sorted set
- spring boot excel download paging
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- pipe and filter architecture
- spring boot redisson 분산락 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- java ThreadLocal
- spring boot excel download oom
- 공간 기반 아키텍처
- java userThread와 DaemonThread
- space based architecture
- spring boot 엑셀 다운로드
- service based architecture
- polling publisher spring boot
- microkernel architecture
- redis sorted set으로 대기열 구현
- redis 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링부트
- transactional outbox pattern
- spring boot redisson destributed lock
- 자바 백엔드 개발자 추천 도서
- spring boot redis 대기열 구현
- transactional outbox pattern spring boot
- redis sorted set
- @ControllerAdvice
- 서비스 기반 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |