Java (20) 썸네일형 리스트형 Spring 인증과 인가 인증로그인과 같이 해당 유저가 맞는지에 대한 확인 인가회원/ 비회원 같이 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인(관리자 권한) 웹 애플리케이션 -> 웹 서버통신을 하고 있다(HTTP)비연결성, 무상태로 이루어져 있다 비연결성서버와 클라이언트가 연결이 되어있지 않다.리소스를 절약하기 위해서버는 하나에 대한 요청을 받고 응답을 해주면 끊어버린다 무상태서버가 클라이언트의 정보를 저장하지 않는다.서버는 클라이언트가 언제 뭘 요청을 했는지 알 수 없다. 쿠키-세션 방식(인증)토큰 저장소(쿠키)인증 정보(세션) 특정유저가 로그인을 했다는 정보를 가지고 있다. 1. 사용자가 로그인을 하게 되면 데이터베이스에서 해당 사용자가 있는지 확인2. 사용자가 있으면 세션 ID를 생성해서 저장소에 저장을 한다.3.. 알고리즘 코딩테스트( 시간 복잡도 ~ 구간 합 ) 시간 복잡도알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 횟수1초당 1억 번의 연산을 진행한다. 시간 복잡도 유형1. 빅-오메가( 최선일 때의 연산 횟수)2. 빅-세타 ( 보통일 때의 연산 횟수)3. 빅-오 ( 최악일 때의 연산 횟수) 실제 문제를 보면 시간제한이 있다시간제한 2초라 하면 2억 번 안에 답이 나와야 한다. 디버깅IDE의 디버깅을 사용하면 된다.문제를 풀 때 오류가 발생하면 그 자리에 로그를 찍어보는 것보단디버깅을 사용하여 어디에 오류가 났는지 확인하는 게 훨씬 빠르다. 배열과 리스트 배열 :메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조인덱스를 통해 참조할 수 있다. 특징:1. 인덱스를 통해서 값에 바로 접근2. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 .. Java 람다 표현식 람다 표현식의 기본 문법람다 표현식의 기본 형식은 다음과 같습니다:(매개변수) -> { 함수 본문 }매개변수 목록과 함수 본문 사이에 -> 연산자가 있습니다.함수 본문이 단일 문장인 경우 중괄호 {}와 return 키워드를 생략할 수 있습니다.매개변수의 타입은 컴파일러가 문맥을 통해 추론할 수 있으므로 생략할 수 있습니다.예제기본 형식의 람다 표현식:(int a, int b) -> { return a + b; } 중괄호와 return 생략:(int a, int b) -> a + b 매개변수 타입 생략:(a, b) -> a + b 함수형 인터페이스람다 표현식은 하나의 추상 메소드를 갖는 함수형 인터페이스와 함께 사용됩니다. 자바 8에서는 @FunctionalInterface 어노테이션을 사용하여 함수형 인.. Java 제네릭 제네릭의 주요 개념제네릭 클래스(Generic Class): 제네릭 클래스를 정의하면 클래스의 인스턴스를 생성할 때 구체적인 타입을 지정할 수 있습니다.public class Box { private T item; public void setItem(T item) { this.item = item; } public T getItem() { return item; }}여기서 T는 타입 매개변수(Type Parameter)로, Box 클래스가 사용될 때 구체적인 타입으로 대체됩니다. 제네릭 메소드(Generic Method): 제네릭 메소드는 메소드의 선언에 타입 매개변수를 사용하여 다양한 타입을 처리할 수 있습니다.public void printArra.. Java Stream(스트림) 1. 스트림(Stream) 개요스트림이란?: 스트림은 컬렉션 데이터를 함수형 스타일로 처리할 수 있는 추상화된 연산의 연속입니다. 데이터가 처리되는 방식에 대해 선언적으로 지정할 수 있습니다.데이터 소스: 스트림은 컬렉션(List, Set), 배열, I/O 채널 등 다양한 데이터 소스에서 생성될 수 있습니다.스트림의 특징:순차적 또는 병렬적 처리: 스트림은 데이터를 순차적 또는 병렬적으로 처리할 수 있습니다.무상태: 스트림 연산은 원본 데이터를 변경하지 않으며, 처리 결과를 새 스트림으로 반환합니다.지연 평가(Lazy Evaluation): 연산은 스트림을 순회할 때까지 수행되지 않습니다. 이로 인해 불필요한 연산을 줄일 수 있습니다.2. 스트림의 주요 연산스트림 API는 주로 두 가지 종류의 연산을 지.. Java 배열 배열은 여러 개의 값을 함께 저장할 수 있다 선언과 생성데이터 타입 [] 변수 이름= new 데이터 타입 [길이];1. int [] arr (선언) = new int [2]; 길이가 2인 정수타입의 배열이 생성됨2. int arr [] (선언) = new int [2]; " 배열의 index는 0부터 시작이다.배열은 생성될 때 각 타입별 초기값으로 초기화된다Ex) int = 0, boolean = false, String = null로 초기값이 정해진다. 배열의 값 하나를 꺼내고 싶을 땐 arr [index] 이렇게 값을 꺼내오면 된다 배열의 값 모두를 꺼내고 싶으면 arr[index] 이걸 배열 모두를 해주면 되는데이건 너무 불편하고 중복이 많.. Java 반복문 for, while, do-while 반복을 수행하고 싶을 때 사용 반복문을 잘못 쓰면 무한루프가 생길 수 있음 for문 for(초기값, 조건, 증가연산){조건이 true면 여기서 초기값부터 조건이 false가 될 때까지 반복} for(int i = 0; i System.out.println("반복") i 가 1씩 증가하면서 10 미만까지 반복 i 가 10이 되면 조건이 false가 되기 때문에 반복 종료} int[] number = {1,2,3}; 이건 배열 // 길이는 3 for문for(int i = 0; i i가 0부터 number의 길이 미만까지 반복 실행 i는 1씩 증가하면서 } 향상된 for문for(int numbers : number) { 배열의 값을 하나씩 가져와서 여기서 반복 실행} while문무한루프에 조심.. Java 조건문 if, switch if문if(조건){조건이 true이면 실행 } if - else문if(조건){조건이 true이면 실행} else {조건이 false면 실행} if - else -if - elseif(조건 1){조건 1이 true면 실행} else if(조건 2) {조건 1이 false이고 조건 2가 true면 여기 실행} else {전부다 false면 여기 실행} switch - case 문if문이랑 같은 문인데 좀 더 가독성이 좋다break를 꼭 넣어야 한다.break를 안 넣어주면 case문의 연산이 아직 안 끝났기 때문에 switch문 블록이 끝날 때까지 전부 실행된다 switch(변수){ case 값 1 :변수의 값이 값1 이면 여기 실행 break; 실행된 값이 중괄호 밖으로 나갈 수 있음... cas.. 이전 1 2 3 다음