728x90
자바에서의 개행 📃본인은 보통 자바의 문자열 내에서 라인을 개행할 때 아래와 같이 개행하곤 했다.System.out.println("안녕하세요\\n"); 그러던 중, 조원과의 대화를 통해 놓치고 있던 부분에 대한 하나의 인사이트를 얻게 되었다.그건 바로 개행 문자는 OS별로 상이하다는 점이다. 이전에 대학 강의에서 배웠던 것이 어렴풋이 기억이 나긴 하지만 정확히는 기억이 나질 않아 찾아보았고그 결과 개행 문자가 3종류나 존재하고 있으며, OS 별로 상이한 경우도 존재함을 알 수 있었다. 개행문자 종류 CRLF(\r\n), CR(\r), LF(\n)Windows 운영체제: CRLF(\r\n)Unix 계열: LF(\n)Mac: CR(\r)이후 Macintosh: LF(\n) 🧐 그럼 \n 없이 어떻게..
Java 클래스 멤버는 각자의 위치가 존재한다.우테코 미션에 대해 코드리뷰를 받으면서 이런 리뷰를 듣게 되었다.클래스 변수의 선언부를 최상단으로 바꾸는 게 어떨까요? 컨벤션에 맞춰주시면 좋을 거 같아요! 클래스 멤버가 각각의 위치를 가지고 있다는 건 알았지만 내가 컨벤션을 잘못 기억하고 있었나보다 싶었다. 때문에 다시 한 번 찾아보고, 기록으로 남겨두고자 한다.나 외에도 필요한 사람들에게 도움이 되었으면 좋겠다! 클래스 멤버의 선언 순서Oracle의 자바 Code Covention 문서를 보면 클래스 멤버는 각자의 선언 위치를 가지고 있음을 알려준다.Class (static) variables public → protected → default → private 순서Instance variables p..
🧐 캐싱 방식 사용 시에 메모리 사용량을 최소화하는 방법은 무엇일까? @Test @DisplayName("메모리 사용량을 최소화하는 방법은 무엇일까?") void 메모리_사용량을_최소화하는_방법은_무엇일까() { // TODO: 메모리 사용량을 최소화하는 방법을 고민 후 개선해보세요. record Position(int value) { private static final Map CACHE = new ConcurrentHashMap(); public static Position startingPoint() { return valueOf(0); } public..
개발 중 RequestDto를 생성할 때, 값 검증을 위해 @NotBlank, @NotNull, @NotEmpty와 같은 어노테이션을 사용하는 경우가 많다. 해당 어노테이션은 Spring Validation 라이브러리에 포함되어있으며, 아래 코드를 build.gralde에 넣어 추가할 수 있다. build.gralde implementation 'org.springframework.boot:spring-boot-starter-validation' UserRequestDto.java public class UserLoginRequestDto { @Email(message = "이메일 형식에 맞지 않습니다") @NotBlank private String email; /*생략*/ } 위는 DTO에 @NotBl..
자바 Comparable Interface 자바로 개발을 하다보면 Domain 클래스 구현을 위해 primitive 타입 자료형을 감싸는 경우가 있다. primitive 타입이 다음과 같이 Domain클래스로 Wrapping될 경우 외부에서 따로 처리해주어야 하던 값 검증 로직을 클래스 내부에 작성하여 생성자를 통해 객체 생성 시에 값 검증까지 처리할 수 있다는 장점이 생긴다. public class User { private int age; private String name; public User(int age, String name){ this.age = age; this.name = name; } } User user1 = new User(10,'sj'); User user2 = new User(..
서울시 IoT 해커톤 수상작인 B-Map을 리팩터링 하던 도중 비효율적인 코드를 수정하는 과정에서 일반 Dto객체를 Map형식으로 변환해야할 일이 생겼고 바로 이 때! ObjectMapper를 사용했다. ObjectMapper의 convertValue() 메서드를 사용하면 객체를 다른 형식의 객체로 변환할 수 있다. 기억해두면 유용할 것 같아 기록을 남겨본다. toMap() 사용 위와 같이 일반 Dto객체를 Map 객체로 변환하기 위해 ObjectMapper를 사용하였다. AmenityRequestDto - toMap() public Map toMap(){ ObjectMapper objectMapper = new ObjectMapper(); HashMap result = objectMapper.conve..