WIL(23-01-09~11)

allnight5·2023년 1월 11일
1

WIL

목록 보기
11/20

자바 해쉬맵과

HashMap<Character, Integer> map = new HashMap<>();
문자로 자르기
char ch = s.charAt(i);
키값 존재하는지 확인하기
map.containsKey(ch)
맵에 키값과 내용넣기
map.put(ch, i);
맵에서 키값에 따른 내용불러오기
map.get(ch);

자바와 자바스크립트

자바와 자바스크립트는 엄연히 다른언어이다.

자바 스크립트의 사전이 JSON이다.
자바스크립트의 let은 자바와는 다르게 문자, 문자열, 정수형이 다된다
let num = 10;
let isAdult = num > 11; //boolean
console.log(num +name);//무자 +숫자하면 둘 모두 문자로 묶습니다.
console.log(isAdult)//false

예외처리

예외처리 Vaild(정규식) 예외때 발생하는 MethodArgumentNotValidException예외를 @ExceptionHandler(MethodArgumentNotValidException.class)로 실행하고 클래스에
extends ResponseEntityExceptionHandler면 중복오류가 났는데 그이유는 상속받는 ResponseEntityExceptionHandler클래스에서도 @ExceptionHandler로 MethodArgumentNotValidException.class를 잡아주고있기 때문이다 그렇기 때문에 같이 쓰려면 ResponseEntityExceptionHandler클래스에서 만들어둔 handleMethodArgumentNotValid 메소드를 override해서 원하는 대로 바꾸어 사용하면된다.. 참고로 MethodArgumentNotValidException의 메시지만 가져다가 String값에 넣어주고 싶다면 ex.getFieldError().getDefaultMessage()이렇게 해주면된다

스프링 예외처리 원리

  1. JAVA Exception 에러 출력
    e.toString() : 에러의 Exception 내용과 원인을 출력합니다.
    (num이 에러인데 무슨 예외로 인한 것인지 원인 이유를 보여주나 발생위치는 보여주지 않는다)
    e.printStackTrace() : 에러의 발생근원지를 찾아서 단계별로 에러를 출력합니다.
    (이유와 어느 클래스에서 발생했는지를 알려준다)
  2. Exception 의 종류
    Checked Exception(꼭 해야하는 예외) vs Unchecked Exception(지나가는 예외)

예외에 따른 대처방법 3가지
1. 예외복구
예외가 발생하면 그 예외를 잡아서 일정 시간만큼 대기하고 다시 재시도를 반복한다.
그리고 최대 재시도 횟수를 넘기면 예외를 발생시킨다.

2.예외처리 회피
예외가 발생하면 throws를 통해 처리하지 않고 호출한쪽으로 예외를 던지고 그 처리를 회피하는 것이다.

  1. 예외 전환
    SQLException을 중복예외로 바꿔 발생시킬수있다.(호출된 예외를 다른예외로 바꿔서 보낼수있다)

[ Spring의 예외 처리 흐름 ]

  1. ExceptionHandlerExceptionResolver가 동작함
    1. 예외가 발생한 컨트롤러 안에 적합한 @ExceptionHandler가 있는지 검사함
    2. 컨트롤러의 @ExceptionHandler에서 처리가능하다면 처리하고, 그렇지 않으면 ControllerAdvice로 넘어감
    3. ControllerAdvice안에 적합한 @ExceptionHandler가 있는지 검사하고 없으면 다음 처리기로 넘어감
  2. ResponseStatusExceptionResolver가 동작함
    1. @ResponseStatus가 있는지 또는 ResponseStatusException인지 검사함
    2. 맞으면 ServletResponse의 sendError()로 예외를 서블릿까지 전달되고, 서블릿이 BasicErrorController로 요청을 전달함
  3. DefaultHandlerExceptionResolver가 동작함
    1. Spring의 내부 예외인지 검사하여 맞으면 에러를 처리하고 아니면 넘어감
  4. 적합한 ExceptionResolver가 없으므로 예외가 서블릿까지 전달되고, 서블릿은 SpringBoot가 진행한 자동 설정에 맞게 BasicErrorController로 요청을 다시 전달함

LocalDateTime startDateTime=LocalDateTime.now().minusDays(3);//3일전
LocalDateTime endDateTime=LocalDateTime.now().minusDays(1); //1일전
return memoRepository.findAllByModifiedAtBetweenOrderByModifiedAtDesc(startDateTime, endDateTime);

PriorityQueue 우선순위-큐를 사용하여 하는것이며 오름차순으로 정렬되며
맨 앞에 있는 데이터를 우선적으로 꺼냅니다.(오름차순 정렬시 가장 작은수부터 내림차순 정렬시 가장 큰숫자부터)

자바 우선순위 큐

import java.util.*;
class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.length];

        PriorityQueue<Integer> queue = new PriorityQueue<>();
        for(int num=0; num<score.length;num++) {
            queue.add(score[num]);
            if(queue.size()<=k) {
                answer[num]=queue.peek();
            }else {
                queue.remove();
                answer[num]=queue.peek();
            }
        } 
        return answer;
    }
}

등차수열

class Solution {
    public long solution(int price, int money, int count) {
        long answer = -1;
        answer = (long)price*count*(count+1)/2 - money;
        return answer<=0?0:answer;
    }
}

자바 과일장수

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0; 
        Arrays.sort(score); 
        //for(int i = m-1; i <score.length; i *= m){
        //    answer += score[i] * m;
        //} 
        for(int i = score.length; i >= m; i -= m){
            answer += score[i - m] * m;
        } 
        return answer;
    }
}

git 커밋 메시지를 작성하기 위한 7가지 약속

1.제목과 본문을 한 줄 띄워 분리하기
커밋 메시지는 50자 이내의 요약문장과 빈 줄 하나, 그리고 설명문으로 구성하면 좋다는 내용입니다.

Derezz the master control program

MCP turned out to be evil and had become intent on world domination.
This commit throws Tron's disc into MCP (causing its deresolution)
and turns it back into a chess game.

7.본문은 어떻게보다 무엇을, 왜에 맞춰 작성하기
제목을쓰고 한줄을 비운다음에 내용을쓰는데
이 커밋을 하면서 이파일을 왜 생성하였고 이파일에 메소드는 무엇을 위하여 작성하였는지 그런내용을 써줘야 다음에 봤을때 자기가 알거나 다른사람도 이해할수있다.

git에서 내파일 인식 못하게하기(.gitignore.txt)

.gitignore.txt 텍스트 파일안에 tention.txt를 적어준다면
깃에서는 이 파일을 무시하고 지나가 커밋이 되지 않는다.
넣어야한다면 .gitignore.txt에서 삭제해주면된다.

profile
공부기록하기

0개의 댓글