문자열 연결은 느리니 주의하라 문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단입니다. 하지만 여러 문자열을 많이 합치게 되는 경우 성능 저하의 문제가 발생할 수 있습니다. 문자열 연결 연산자(+)로 문자열 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..
박싱된 기본 타입보다는 기본 타입을 사용하라 자바의 데이터 타입은 크게 두 가지로 나눌 수 있습니다. 바로 int, double, boolean과 같은 기본 타입과 String, List와 같은 참조 타입입니다. 그리고 기본 타입에는 래퍼 클래스가 있습니다. Primitive Type, Reference Type이란? Wrapper Class란? 💡기본 타입과 박싱된 타입의 차이점 1) 기본 타입은 값만 가지고 있지만, 박싱된 기본 타입은 식별성을 추가적으로 가지고 있습니다. 그렇기 때문에 Wrapper Class로 만들게 되면 같은 값임에도 동등성 비교에서는 다르다고 할 수 있습니다. 그 이유는 객체로 생성되다 보니 힙 영역에 참조값이 다르기 때문입니다. int a = 1; int b = 1; a =..
전통적인 for문보다는 for-each문을 사용하라 💡전통적인 for문 아래 for문은 전통적인 for문 사용법으로 while문보다는 지역변수 i의 유효범위를 제한하기는 좋습니다. 하지만 가장 좋은 방법은 아닙니다. 반복자(i.next())나 인덱스(i)는 모두 내가 원하는 요소의 자원을 사용하기 위한 도구인데 오류를 발생시킬 확률이 높습니다. 이러한 문제는 향상된 for문을 사용하면 해결할 수 있습니다. List number = Arrays.asList(1, 2, 3, 4, 5, 6); // case 1 for (Iterator i = number.iterator(); i.hasNext();) { Integer num = i.next(); System.out.println(num); } // case ..
- Total
- Today
- Yesterday
- 자바 백엔드 개발자 추천 도서
- transactional outbox pattern
- microkernel architecture
- spring boot redis 대기열 구현
- space based architecture
- pipe and filter architecture
- polling publisher spring boot
- redis sorted set
- spring boot excel download paging
- transactional outbox pattern spring boot
- 람다 표현식
- java ThreadLocal
- service based architecture
- @ControllerAdvice
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot excel download oom
- pipeline architecture
- spring boot redisson sorted set
- 레이어드 아키텍처란
- 서비스 기반 아키텍처
- spring boot redisson destributed lock
- redis 대기열 구현
- redis sorted set으로 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot poi excel download
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- java userThread와 DaemonThread
- spring boot redisson 분산락 구현
- spring boot 엑셀 다운로드
- 공간 기반 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |