본문 바로가기

Java

LocalDateTime hour step //1. step 1 hour var formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime start = LocalDateTime.parse("2021-10-30 00:00:00", formatter), end = LocalDateTime.parse("2021-10-31 00:00:00",formatter); Stream.iterate(start, dt->dt.plusHours(1)) .limit(ChronoUnit.HOURS.between(start, end) + 1) .forEach(System.out::println); //2. step 1 hour var formatter = DateTimeFormatter.of.. 더보기
ModelMapper 를 사용하여 객체 컨버팅 하기 서로 다른 클래스의 값을 복사 해주는 라이브러리이며, 필드명 일치 혹은 유사 필드 , 값일 없는 필드 복사 스킵 등 을 쉽게 도와 주는 라이브러리이다. 사용을 위한 dependency org.modelmapper modelmapper 2.3.8 ​ 사용 방법 //A 클래스를 B 클래스로 컨버팅 예제 ModelMapper modelMapper = new ModelMapper(); //MatchingStrategies 는 여러가지가 존재하며 상황에 맞게 사용 하도록 한다. //여기서는 필드명 완전일치 할 경우에만 진행 하도록 한다. modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); B b = modelMapper.ma.. 더보기
Java Object Stream group by multiple field and map in map to list java stream 을 사용하여 객체 리스트를 여러개 필드로 그룹핑 후 맵형태로 생성 후 리스트로 출력 해보도록 한다. 원본 리스트를 그룹핑 하여 출력되는 최종 결과는 아래 그림과 같다. List courseList = Arrays.asList( Course.builder() .code("A0001") .subject("Math") .semester("First") .price(10000l) .build(), Course.builder() .code("A0001") .subject("Math") .semester("Second") .price(10000l) .build(), Course.builder() .code("A0005") .subject("OperatingSystem") .semester("S.. 더보기
JPA - Join 커뮤니티 게시판 테이블 쿼리: 특정 직업을 가진 사람들이 쓴 글의 정보와 사용자 정보를 조회하는 SQL 는 다음과 같을 것이다 select t.topic_seq '번호',t.title '제목',m.name '작성자',p.title '직업',t.created_at '작성일' from `member` m join `topic` t on m.member_seq = t.member_seq join `profile` p on p.profile_seq = m.profile_seq where p.profile_seq=1; query 결과는 아래와 같을 것이다. JPA 로 해당 부분을 구현 하는 과정은 아래와 같다. JPAQueryFactory 설.. 더보기
spring controller async request process with executor 스프링에서 컨트롤러에서 요청에 대한 처리를 동기가 아닌 비동기 처리하는 방식을 제공 하고있다. 스프링5 의 webflux 사용한다면 해당 비동기 처리를 사용할 수 있지만 스프링 5 버전 이하의 시스템에서는 해당 처리가 필요할 것이다. 스프링이 제공하는 방식 비동기로 처리하기 위해 스프링에서 여러가지 반환 유형을 제공한다. 요청에 대해 즉각 응답을 주는것이 아닌 요청에 대한 처리를 백그라운드로 처리하여 완료시 사용자에게 반환 함으로써 요청 처리에 대한 병목을 없애도록 한다. 스프링이 제공하는 비동기 응답 > 다른 스레드로 생성된 비동기 결과 > > DefferedResult > > ListenableFuture > > CompletionStage > > CompletableFuture > > 연산 후 생성.. 더보기
usage spring data jpa with query dsl -- dependency com.querydsl querydsl-apt com.querydsl querydsl-jpa org.springframework.boot spring-boot-maven-plugin com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java com.querydsl.apt.jpa.JPAAnnotationProcessor -- created databaseConfig.java @Configuration public class Databaseconfig { @Bean public JPAQueryFactory queryFactory(EntityManager em) { return new JPAQueryFac.. 더보기
java 8 remove duplicate object in List 자바 8으로 객체 리스트의 중복 데이터 제거하기 @Test public void testaa() { List list = Arrays.asList( new test("test1","email1","option1"), new test("test1","email1","option2"), new test("test1","email1","option3"), new test("test1","email1","option3") ); System.out.println(list.size()); List list2 = new ArrayList(); //note: getOption 으로 비교 list2.addAll(list.stream().collect(Collectors.toConcurrentMap(test::getOpt.. 더보기
Java - 두 문자열이 Anagram 관계인가 public static boolean isAnagram(String s1,String s2){ if(s1.length() != s2.length()) return false; HashMap hm = new HashMap(); //s1 for(char c:s1.toCharArray()){ // 이미 글자가 있을때 if(hm.containsKey(c)) hm.put(c,hm.get(c) + 1); else hm.put(c,1); } for(char c:s2.toCharArray()){ // 키가 없을 경우 -> s1 에는 포함되어있지만 s2에는 없다 라는것은 애너그램 관계가 아니다 if(!hm.containsKey(c)) return false; // 글자가 없을 경우 if(hm.get(c) == 0) r.. 더보기