2023.01.27.FRI

ronglong·2023년 1월 27일
0
  1. 프로그래머스 0단계 문제
  • 소인수분해
    - 소수 판별을 따로 할까 하다가, 생각해보니 '저렇게 하면 되겠다!' 해서 풀었는데 맞았다. ㅎㅎ
    처음에 mapToInt 안의 람다식에도 i 변수 썼다가, 이미 사용된 변수라고 오류나서 k로 바꿈.
import java.util.*;

class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>();
        int i = 2;

        while(i<=n){
            if(n%i==0) {
                list.add(i);
                n /=i;
            }
            else i++;
        }
        return list.stream().distinct().mapToInt(k->k).toArray();
    }
}
  • 컨트롤 제트
    - 오늘도 if와 for밖에 모르는 바보는 열심히 명령형 프로그래밍으로 코드를 짰습니다,, ★ 그래도 풀긴 했음! 숫자 변환에서 "-"가 계속 걸리길래 따로 조건문을 짜줬다. 중복되는 부분이 있어서 좋은 코드라고는 생각이 안 됨.
    • 다른 사람들 풀이를 보니까 stack을 많이 썼다. 문제 보고 스택 먼저 떠올렸어야했구나, 하는 생각이 들었다.
class Solution {
    public int solution(String s) {
        int sum = 0;
        String[] arr = s.split(" ");

        for(int i=0; i<arr.length; i++){
            if(!arr[i].equals("Z")) {
                if(!arr[i].contains("-")) sum+= Integer.parseInt(arr[i]);
                else sum -= Integer.parseInt(arr[i].substring(1));
            }

            else if(arr[i].equals("Z")) {
                if(!arr[i].contains("-")) sum -= Integer.parseInt(arr[i-1]);
                else sum += Integer.parseInt(arr[i].substring(1));
            }
        }
        return sum;
    }
}
  1. Project Reactor
  • 리액티브 스트림즈의 구현체
  • Publisher type [emit할 수 있는 데이터 수] : Mono[0|1], Flux[N]
  • reactor-extra 모듈의 MathFlux 퍼블리셔는 수학 계산 Operator 가짐.
  • 완전 Non-Blocking 통신 -> 서비스 간의 통신이 잦은 MSA(Microservice Architecture) 구조 어플리케이션에 적합
  • Backpressure : Subscriber의 처리 속도가 Publihser의 emit 속도를 따라가지 못할 때의 제어 전략
  • 마블 다이어그램 : 데이터 흐름 표현. Operator의 내부 동작 확인 가능
  • 스케줄러(Scheduler) : 멀티 쓰레드 관리자. 비동기 프로그래밍 가능. 응답 지연 방지.
    • subscribeOn() : 구독 직후 쓰레드 지정. 한 번 적용.
    • publishOn() : 해당 Operator 이후 Downstream의 쓰레드 지정. 여러 번 추가 가능.
  • Operator
    - 종류 짱 많음.
  1. Spring MVC
  • 같은 스터디원 동기님께서 MVC의 흐름을 처음부터 끝까지 약 5시간에 걸쳐 강의해주셨다. 감동 그 자체ㅠㅠ 이를 바탕으로 주말에 꼭 혼자서 게시판 만들어봐야겠다.
    이렇게까지 해주셨는데 안 해보면 나는 사람이 아님.. ㅋㅋㅋㅋ
  • 전체적인 흐름을 다시 되짚어볼 수 있었고, 중간 중간 내가 미흡하게 알았던 부분들을 여쭤볼 수 있어 좋았다.
    - 들으면서 메모한 것들
    • @EnableJpaAuditing 의 사용
    • @Id. sequence 타입은 전체에서 번호 매기고, Identity는 엔티티마다 번호 매김 관리.
    • mappedby 표시된 필드는 테이블에 표시 안 됨.
    • @joincolumn 표시한 필드는 테이블에 표시 됨.
    • cascade는 종속 관계에서 사용하는데, 상위에서 사용.
    • 엔티티는 기본생성자(@NoArgsConstructor)가 필요한데, 이유는 매퍼, JSON 변환 등에 쓰이기 때문.
    • it takes two 라는 게임 재밌다는 정보.
    • spring Hateoas 나중에 공부해보기
      https://joomn11.tistory.com/26
    • 로직이 완료된 엔티티를 dto로 매퍼 변환 없이 response로 보내면, 참조하고 있는 객체때문에 순환참조가 발생함. 꼭 객체가 아닌 필드, dto로 반환해야 한다.
    • .builder() 는 쉽게 말하면, 생성자를 대체하는 녀석인데, 생성자의 파라미터 값을 원하는 것만 자유자재로 넣을 수 있다. 생성자 오버로딩을 여러 번 할 수고를 덜어줌.
    • 유용한 단축키 : cmd+shift+T, shift+F6

<느낀 점>
흐지부지 넘어갈 수도 있는 날이었는데, 동기님께서 먼저 손 내밀어 열정적으로 알려주신 덕분에 동기부여도 되고, 많이 배웠다.

주말에 꼭 게시판 만들기 시작한다🔥🔥🔥🔥🔥

0개의 댓글