728x90

Programming 275

CodingTest - HashMap, TreeSet (해쉬, 정렬지원 Set)

4.1 map.put(x, map.getOrDefault(x, 0)+1); - map.get()하면 해당 key의 value 값을 가져오는데 getOrDefault를 하면 해당 key의 value가 없으면 defalut로 지정한 값이 입력된다. (위에서는 0에 해당한다.) for (char key : map.keySet()) { // System.out.println(key + " " + map.get(key)); if (map.get(key) > max) { max = map.get(key); answer = key; } } - 향상된 for문을 이용하여 map의 key값을 순회하고 싶아면 keySet() 함수를 사용하면 된다. System.out.println(map.containsKey('A'));..

CodingTest - Two Pointers, Sliding Window

- Two Pointer Algorithm 1. 배열 또는 리스트에서 두 개의 포인터를 사용하여 원하는 조건을 만족하는 요소나 부분 배열을 찾는 데 사용되는 알고리즘이다. 이 알고리즘은 주로 정렬된 배열 또는 리스트에서 사용되며, 시간 복잡도를 개선하기 위한 효율적인 방법 중 하나이다. - Sliding Window 1. 배열 또는 문자열과 같은 순차적인 데이터 구조를 처리하고 여러 데이터 포인트의 부분집합을 검사하거나 연산하는데 사용되는 알고리즘 기법이다. 3_1 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Mai..

Spring - 파일 업로드 Re

- Spring은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다. - 일반적인 파일 업로드 방법 - 아래 파일 업로드 방법은 가장 기본적인 방법이다. input을 통해 전달받은 file을 파일명 그대로 지정된 위치에 파일을 저장하는 방식이다. - upload-form.html 상품 등록 폼 상품 입력 상품명 파일 1. HTML에서 파일을 전송할 때 form에 enctype="multipart/form-data"를 추가해준다 . 그 이유는 첨부파일의 경우 문자가 아닌 바이너리로 전송해야 하기 때문이다. 2. HTML input의 속성을 file로 지정하게 되면 첨부파일을 추가할 수 있게된다. - SpringUploadController.java @Slf4j @Contro..

Programming/Spring 2023.10.17

CodingTest - Array(1, 2차원 배열) / 2

8. N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Main { public int[] solution(int iNum, int[] ints) { int[] answer = new int[iNum]; int tmp = 1; for (int i = 0; i < iNum; i++) { for (int j = 0; j < iNum; j++) { if (ints[i] < in..

CodingTest - Array(1, 2차원 배열) / 1

1. N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. (첫 번째 수는 무조건 출력한다) - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class sec2_1 { public ArrayList solution(int num, int[] arr) { ArrayList answer = new ArrayList(); answer.add(arr[0]); for (int i = 0; i < arr.length - 1; i++) { if (arr[i] < arr[i + 1]) { answer.add(arr[i + 1]); } } return answer; } public static void sec2_..

Spring - Spring Security (Method Security 적용 및 인증 적용 확인)

- Method Security - Method Secuity는 애플리케이션의 메소드 레벨에서 보안 규칙을 정의하고 적용할 수 있게 해주는 기능이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() // .requestMatchers(HttpMethod.POST,"/auth/login").permitAll() // .requestMatchers(HttpMethod.POST,"/auth/signup").permitAll() //위의 방법을 사용하면 무한 페이지 리다이렉트 될 수 있다...? ..

Programming/Spring 2023.10.13

Spring - Spring Security (예외 핸들러 처리, 커스텀 인증 생성)

- Handler - 핸들러(Handler)를 생성하는 이유는 웹 애플리케이션에 특정 이벤트 또는 요청에 대한 사용자 정의 로직을 실행하고 처리하기 위함이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() ..................... .defaultSuccessUrl("/") //성공한 뒤 이동하는 페이지 .failureHandler(new LoginFailHandler(objectMapper)) //로그인 실패시 발생하는 핸들러 .and() .exceptionHandling(..

Programming/Spring 2023.10.12

Spring - Spring Security (기본 설정, 로그인 폼 커스텀, UserDetailService, 역할 및 권한, remeberMe(자동 로그인))

- Spring Security - Spring Security는 Spring Framework 기반의 애플리케이션에서 보안과 관련된 기능을 처리하는 데 사용되는 강력한 보안 프레임워크이다. - Spring Security를 사용하면 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 관련 기능을 구현하고 관리할 수 있다. 1. 인증(Authentication) 1.1. 사용자가 누구인지 확인하기 위한 인증 메커니즘을 제공한다. 1.2. 주요 인증 방식으로는 폼 인증, HTTP 기본 인증, OAuth, LDAP, SSO(Single Sign-On) 등이 있다. 1.3. 사용자 인증 정보는 사용자 이름/암호, 토큰, 인증 서버 등을 통해 확인된다. 2. 권한 부여(Au..

Programming/Spring 2023.10.10

Spring - Signup 비밀번호 암호화 (crypto, SCryptoPasswordEncoder)

- Crypto - 암호화는 정보나 데이터를 안전하게 보호하고 전송하기 위한 기술적인 방법이다. 1. 암호화는 데이터를 암호화(암호키를 사용하여 원본 데이터를 불가독하게 만드는 과정)하고, 필요할 때 이를 복호화(암호화된 데이터를 원래 상태로 복원하는 과정)하는 과정이 있다. 2. 암호화 알고리즘 : AES, RSA, DES, SHA 알고리즘이 대표적이다. 3. 대칭 암호화, 비대칭 암호화 : 대칭 암호화에서는 동일한 키를 암호화와 복호화에 모두 사용한다. 반면, 비대칭 암호화에서는 공개 키와 비밀 키라는 서로 다른 두 키를 사용한다. 4. 해시 함수 :고정된 길이의 해시 코드(또는 해시 값)를 생성하는 함수로, 입력 데이터의 일부나 전체에 대한 고유한 값을 생성한다. - SCryptPasswordEnc..

Programming/Spring 2023.10.09
728x90