문제 발생 프로필 사진 업로드 기능을 구현하다가 업로드버튼을 누르면 데이터를 못가져 오는 문제가 발생했다. 그 전에는 업로드 기능이 잘 구현 되다가 세션 유지 안되는 것을 발견했는데 이 문제를 수정하려다가 결국 데이터 못 읽는 상황까지 문제가 커졌다. 발생 원인 & 문제해결 한마디로 안쓰는 코드정리 안함 구현을 하다가 이 코드가 맞나? 저 코드가 맞나? 생각하면서 어떤 코드가 더 나은지 고민하다가 안지우고 냅두는 편이였다. 그러다보니 오류가 발생했을 때 어디서 문제가 일어난 건지 찾기 힘들어 졌는데 이 문제도 이 버릇때문에 생긴 문제였다. 소셜로그인 구현할 때도 안쓰는 코드 정리하면서 구현하라는 충고를 들었는데 결국 이 문제로 프로젝트 기간을 많이 날려먹게 됐다.... 세션에 저장한 userno로 파일이..

풀이 import java.util.Scanner; public class Main05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //바구니 개수 1~N개 int N = sc.nextInt(); int [] array = new int[N]; // 공을 바꾸는 횟수 int M = sc.nextInt(); //임시저장 공간 변수 = temp int temp; // 바구니 공 초기화 for(int i=0; i

처음 DB연동하면서 배울 때 "DTO는 Data Trasfer Object라고 계층간 데이터 전달을 위해 사용한다"라고 해서 DTO를 써서 프로젝트를 진행했었다. DTO를 사용하면서 무엇이 저장되는지 알기 쉬웠던 경험이 있는데 이번에 Map을 다시 공부하다가 dto도 데이터 담고 map도 데이터담고 그러면 뭘 써야 더 효율적일까? 라는 궁금증이 들었다. 1. 컴파일 에러가 안나타난다. Map은 기본적으로 Map 타입이다. 보통 Map은 key-value 쌍으로 저장되는데 value값은 Object 타입이다. Object 클래스는 최상위 클래스기 때문에 모든 타입을 저장할 수 있다. 따로 타입을 확인 하지 않으면 모든 타입이 다 저장되기때문에 런타임때 ClassNotFoundException 에러를 마주친..

List, Set, Map은 자바의 컬렉션 프레임 워크의 핵심 인터페이스이다. 컬렉션 프레임워크는 다수의 객체를 다루기 위한 표준화된 프로그래밍 방식 이라고 생각하면 이해가 편하다! 한마디로 자바에서는 다수의 객체를 다룰 때 List, Set, Map을 사용해서 프로그래밍 한다. 1. List 데이터의 중복을 허용해준다 저장순서가 유지된다. 인덱스로 원소의 주소로 접근을 할 수 있다. ✔ 주요 구현 클래스 1) ArrayList ArrayList arraylist = new ArrayList(); //add = 추가하는 메소드 arraylist.add("첫번째"); arraylist.add("A"); arraylist.add("세번째"); arraylist.add(3,"A"); System.out.pri..
기존 프로젝트에서는 로그인 할 때 평문 문자열을 그대로 DB에 저장을 했다. 프로젝틑가 끝나고 다른 조 발표하는걸 보는데 DB암호화를 쓴 조가 있었다! 저 암호화 어떻게 처리를 하는걸까 궁금했는데 스프링 시큐리티에 비밀번호 암호화를 해주는 클래스가 따로 있었다. 1. BCryptPasswordEncoder? 스프링 시큐리티(Spring Seurity) 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는 데 사용할 수 있는 메서드를 가진 클래스 쉽게말해 비밀번호를 암호화(해시)해주는 클래스 보통 암호화를 위해 사용하는 해시함수에는 SHA, MD5가 있는데 내가 사용한 BCrypt는 해싱을 하고 salt를 부여해 여러번 암호화를 시켜준다고한다. salt를 해주기 때문에 좀 더 안전하게 암호화 할 ..

로그인구현을 스프링 시큐리티로 다시 구현해 보고 싶어서 설정 잡던 중에 나온 오류 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' available 이 오류는 빈이 설정되지 않아서 설정 파일을 찾을 수 없어서 나타나는 에러메세지이다. 분명 필요한 설정 다 했고, 빈 설정도 했는데 왜 빈을 못찾을까 하면서 구글링 하면서 해결법들을 확인했다. 그런데 그 해결법들은 나에게 해당사항 없었다. 설정은 다 잡았으니까! 그러다가 우연하게 눈에 띈 저 태그들 원인 발견! 스프링 설정파일 위치설정하는 코드가 중복 중복코드 지우고 다시 서버 재시작 했더니 정상적으로 화면이 떴다! ..

기존 프로젝트는 로그인 보안은 하나도 안해놨었다. 그래서 스터디를 하면서 알게 된 스프링 시큐리티를 통해 프로젝트 리팩토링을 진행했다. 처음 구현할 때 너무 복잡하다보니까 따라하면서 해보면 알게되겠지 했다가... 개념은 공부하고 가야하할꺼 같아서 정리해보자 한다. 1. Spring Security? Spring Security는 자바 기반의 어플리케이션에서 인증과 인가 및 웹보안을 제공해주는 프레임워크이다. 프레임워크이기 때문에 이미 짜여져 있는 내부 로직을 통해 인증과 권한 확인 등의 기능을 제공해준다. 그래서 개발자가 따로 보안 로직을 따로 구현하지 않아도 되는 편리함이 ++된다. 2. 인증 방식 스프링 시큐리티의 기본적인 인증방식은 credential 방식이다. credential 방식은 princ..

1. 정적배열(Array) 동일한 타입의 데이터를 연속메모리 위치에 저장할 수 있는 자료구조 고정된 저장공간에 같은 타입의 변수들로 이뤄져 있다. 중복을 허용하고 순차적으로 데이터를 저장한다. 시간복잡도 조회 : O(1) → 인덱스를 알면 조회가 빠르다. 삽입, 삭제 : O(n) 마지막에 값 삽입할 때, 크기가 고정되어 변경 불가. 현재보다 긴 배열 선언 후 배열복사하고 마지막에 새로운 값을 삽입한다 2. 동적배열(Vector) 저장공간이 유동적이기 때문에 저장공간이 부족하면 자동적으로 크기를 늘려 데이터 추가/저장가능한 자료구조 데이터의 접근과 할당이 빠르다 필요이상의 메모리 공간을 할당받기때문에 메모리 낭비가 발생한다. 중복을 허용하며 숫자인덱스 기반의 랜덤접근을 한다 시간복잡도 참조 : O(1) 탐..