본문 바로가기

반응형

전체 글

(133)
롬복(lombok) 생성자 애너테이션 정리 @NoArgsConstructor 기본 생성자 생성 애너테이션 주의사항 클래스 내, final 멤버가 있으면 컴파일 오류! @RequiredArgsConstructor final 혹은 @NotNull이 붙은 멤버변수를 파라미터로 갖는 생성자를 생성 생성자의 파라미터 순서는 클래스에 선언된 멤버변수 순서를 따름 @AllArgsConstructor 클래스 내 선언된 모든 멤버를 갖는 하나의 생성자를 생성
[개발 기록] 백엔드 Spring Security 리팩토링 시큐리티 Configguration 리팩토링 기존의 WebSecurityConfigurerAdapter 으로 설정했던 스프링 시큐리티를 SecurityFilterChain으로 리팩토링하였다. 컨트롤러 응답 리팩토링 기존에는 요청에 대한 응답을 String 문자열로만 응답했었다. 상태코드, 헤더, 바디를 설정해서 보낼 수 있도록 ResponseEntity으로 응답하도록 리팩토링하였다. (이후, 프론트엔드에도 알맞게 수정해야한다.) JWT Filter 추가 백엔드에서 Jwt를 도입하기 위해, 시큐리티 체인에 추가할 Jwt 필터를 추가하였다. JwtUtil 클래스 추가 사용한 라이브러리 : io.jsonwebtoken:jjwt:0.9.1 Jwt 클래스를 추가하였다. Jwt에 담기는 데이터들은 아래와 같다. u..
Spring Security - 스프링 시큐리티 정리 Spring Security란? Authenitication(인증)과 Authorization(인가)를 제공하는 프레임워크 각 인증, 권한에 대한 부분을 Fiter 흐름에 따라 처리 (필요한 Fiter을 구현하여 사용하는 방식) 인증 절차를 거친 후 인가 절차를 거침 Credential 기반의 인증 방식을 사용 Credential ? Principal을 아이디로 사용 ( Principal : 보호받는 Resource에 접근하는 대상 ) Credential을 비밀번호로 사용 (Credential : Resource에 접근하는 대상의 비밀번호 ) Spring Security의 특징 서블릿 API 통합 Spring Web MVC와의 선택적 통합 인증과 권한 부여를 모두 포괄, 확장 가능한 지원 세션 고정, C..
Help Todo 프로젝트 Help Todo 서비스란? Todo, Doing, Done 3가지로 나누어진 기존의 Todo List를 팀단위로 이용할 수 있도록 제작한 웹 서비스입니다. 기술 스택 1. 프론트엔드 React.js Next.js Bootstrap Styled-component zustand Axios 2. 백엔드 Spring Boot Spring Security Jpa H2(개발용), MySQL(배포용) 3. 인프라 GCP AWS (GCP를 사용 중이지만, 이후 AWS로 옮길 수도 있음) Docker Help Todo의 기능들 로그인 간단한 회원가입 로그인 팀 개설 팀 개설 (비밀번호 설정 가능) 팀 참가 투루리스트 투두리스트 테이블 생성 Todo / Doing / Done 카드 추가 Drag&Drop으로 Todo D..
[JAVA] Primitive(원시형) Type ↔️ Reference(참조형) Type Primitive Type byte ( 연산의 결과가 int형으로 변환) short (잘 사용 안함, C언어와 호환이 필요할 때 사용) (연산의 결과가 int형으로 변환) int long float (실수뒤에 F를 꼭 붙여줘야함. 안그러면 해당 실수를 double 형으로 인식) double (float 보다 정밀, 범위도 더 넓음) (자바 실수의 기본형) char boolean Primitive Type은 비객체 타입이다. 따라서 null값을 가질 수 없다. (래퍼 클래스를 통해서만 null값을 할당 가능) stack 메모리에 쌓인다. (GC의 대상 X) OS에 따라 자료형이 변하지 않음. 항상 고정 Reference Class Interface Array Enum ... Primitive 타입을 제외한..
[JAVA] Call by Value ? Call by Reference ? Call by Value 값만 복사해 가져오는 것. C언어에서 포인터가 없는 파라미터를 떠올리면 된다. 예를 들어, 포인터가 없는 함수의 경우, 인자로 받은 변수를 함수 내에서 변경해도, 함수 밖에서 해당 변수는 변경되지 않는다. Call by Reference 주소값을 가져오는 것. C언어의 포인터를 떠올리면 된다. 예를 들어, 함수의 인자를 포인터로 받도록 해주면, 함수 내에서 인자로 받은 변수를 변경 시, 함수 종료 후 밖에서도 해당 변수의 값은 변경된다. 자바는 항상 Call by Value 자바는 원본 객체의 프로퍼티에 접근할 수 있어도, 원본 객체를 변경할 수 없기 때문에, 항상 Call by Value 이다. 자바는 할당된 값의 위치를 값으로 가지고 있다. C / C++ 처럼 변수의 주소값 ..
[자료구조] 링크드 리스트 Linked List Linked List 선형적인 데이터 구조 노드 1 -> 노드 2 -> 노드 3 -> ... 각 노드 = 자신의 데이터 + 내 앞 노드의 주소 Linked List를 사용하는 이유 (장점 ) 배열의 제한 사항 때문. 배열의 크기가 고정 새로운 요소를 삽입하는 데 비용이 많이 듬 ( 공간을 만들고, 기존 요소를 전부 이동해야 함) 삽입과 삭제가 용이 동적 메모리 할당이 가능 크기가 가변적 Linked List의 단점 임의의 위치로 액세스 불가 ( 첫 번째 노드부터 순차적으로 접근해야함 ➡️ 이진 검색이 불가능 ) 각 노드마다 내 앞의 노드를 가르키는 데이터를 저장할 공간이 필요 코드 파이썬 #파이썬 class Node: def __init__(self, new_data) -> None: self.data ..
[컴퓨터구조] ARM(Advanced RISC Machine) 프로세서 정리 Advanced RISC Machine ? 진보된 RISC 기기 칩의 기본 설계 구조만 만듦 실제 기능 추가 및 최적화 ➡️ 개별 반도체 제조사의 영역 따라서, 물리적 설계는 같아도, 명령어 집합이 가지각색 ➡️ 다양한 제품군 RISC? 등장 배경 : 단순한 명령집합을 가진 프로세서 ➡️ 복잡한 프로세서보다 효율적 (연산 속도가 빠른 것은 아님) Reduced Instruction Set Computing (감소된 명령 집합 컴퓨팅) 작은 명령어 집합을 가짐 명령어의 실행 시간을 최소화하기 위해, 단순하고 일관된 명령어를 사용 단순하고 일관된 명령어 ➡️ 하드웨어 구조를 간단하게 만들 수 있음 ➡️ 높은 처리 속도 복자반 명령어 ➡️ 소프트웨어에서 처리 대표적인 RISC 프로세서 : ARM, MIPS, ..