목록전체 글 (99)
한다 공부
이번 글의 키워드 : Spring Security, 회원가입, Form에서 Controller로 데이터 전달이 안됨, Chat GPT 스프링 시큐리티를 사용해서 회원가입 기능을 구현해봅시다. 우선 완성된 디렉토리 구조는 다음과 같습니다. 우선 회원가입을 진행하기 위해, 어떠한 정보가 필요한지 생각해봅시다. 제가 필요한 정보는 사용자 아이디, 비밀번호, 이름, 전화번호, 등급 (vvip, vip .. ), 주소, 관리자인지 확인하는 정보 입니다. 이러한 사용자 정보를 Member라는 엔티티를 만들어 저장해봅시다 Member.java는 다음과 같습니다. package store.unibly.web.member; import lombok.Builder; import lombok.Getter; import lo..
CSR(Client Side Rendering) 은 주로 REST API를 사용하며 JWT 방식으로 로그인을 구현한다 SSR(Server Side Rendering) 은 타임리프와 같은 템플릿엔진을 사용하며 쿠키 세션 방식으로 로그인을 구현한다 그리고 스프링을 사용한다면 Spring Security를 통해 비교적 쉽게 인증과 인가를 구현할 수 있다 이번 기회에 개념에 대해 정리를 하고자 한다. 웹 백엔드 부스트코스 무료 강의 www.boostcourse.org 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 ..
전공을 공부하면서 가장 인상깊게 공부한 과목이 무엇이냐 물으신다면 대답해드리는게 인지상정! 난 네트워크이다옹 네트워크는 학교마다 정보통신공학, 데이터 통신, 컴퓨터 네트워크 등으로 불린다. 해당 과목에서는 각 네트워크 계층들인, Layer 1부터 5까지 데이터들이 어떻게 교환되는지와 통신 프로토콜의 개념과 동작원리 등을 배운다. 왜 이 수업이 가장 인상깊게 남았냐면 우선 수업이 재미있기도 했다. ㅋㅋㅋ 예전 한 교수님께서, "학부생들이 느끼는 전공 적합성은 학점과 교수의 강의력으로 결정되곤 하죠ㅎㅎ" 라고 하셨다. 그만큼, 이해가 쏙쏙되고 성적이 잘 나오는 과목을 보고 "오 나 이 전공이랑 맞는거같은데?" 라는 생각을 많이들 하는데, 나에게는 그 과목이 네트워크 수업이었다. 수업에서 정말 많은 것을 배웠..
SQL 문법을 자꾸 깜빡해서.. 꾸준히 보면서 복습하려고 정리해봤습니다 ..~ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ... 위 코스를 따라가며 문제를 풀었습니다 ..~ 1. SELECT 2. SUM, MAX, MIN 3. GROUP BY 4. IS NULL 5. JOIN 6. String, Date 1. SELECT SELECT 칼럼 FROM 테이블 WHERE 조건 ORDER BY 정렬기준; - 모든 레코드 조회하기 ANIMAL_INS 테이블의 모든 데이터를 ID 순으로 오름차순하며 조회 SELECT * FROM ANIMAL_INS ORDER B..
벌써 5월이네요 3-1학기의 기억이 흐릿해진 시점에서 운영체제를 복습하고자 합니다. 운영체제가 참 중요하다는 것을 여러번 느꼈기 때문.... 그래서... 운영체제란? - 하드웨어 바로 위에 설치되는 소프트웨어 - 컴퓨터 시스템의 자원을 효율적으로 관리 목적 - 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공 : 실제로는 한 대의 컴퓨터를 여려명이 쓰는 거지만, 한 사용자가 각자 한 대의 컴퓨터를 쓰는 것 처럼 느껴지도록 - 컴퓨터 시스템의 자원을 효율적으로 관리 : 효율성 + 형평성 (사용자가 모두 형평성있게 자원을 쓸 수 있도록) 분류 1. 동시 작업 가능 여부 - 단일 작업 : 한 번에 하나의 작업 (옛날) - 다중 작업 : 한 번에 여러 작업 (요새) 2. 사용자 수 - 단일 사용자 : 단일 작..
문제 이름은 버블 소트지만 머지 소트 (병합 정렬)로 풀어야하는 문제. 왜냐하면 1 ≤ N ≤ 500,000 이기 때문에 n^2 으로 풀 수 없기 때문이다.. 헷갈려서 정리를 해봤는데 병합만 늘 O(N*logN) 이고, 기수 정렬이 O(kN), 삽입, 선택, 버블 등 대부분의 정렬은 최악의 경우 O(N^2) 까지 갈 수 있다. 그래서 안정적으로 빠른 병합 정렬을 잘 알아두는 것이 좋다고 한다. 1초의 시간이 주어졌을 때 대부분 1,000,000 정도의 데이터는 O(kN), O(N*logN) 10,000 정도의 데이터는 O(N^2) 500 이하의 데이터는 O(N^3) 인 알고리즘이 사용 가능하다고 한다. 왜냐하면 1초에 주로 1억회의 연산이 가능한데 10,000의 경우 N^2이면 1억이 되기 때문에 위와 ..
https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 1년 6개월 전(?) 이 문제를 푼 적이 있었다, 예전에는 음수, 양수를 따로 우선순위 큐를 이용해서 작은 수를 기준으로 정렬했는데 (greater 사용) 새로이 풀어보면서 우선순위 큐의 정렬 기준을 직접 변경하는 방법이 있길래 사용해봤다. 구조체와 operator 메소드를 사용하면 된다. (저번에 푼 방식) https://sxyzn.tistory.com/38 [C++] 백준..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 벡터를 사용하면 시간초과가 나올 것이다. 그래서 셋을 사용했다. 셋은 중복없이 정렬된 상태로 저장이 되고, 셋의 find 함수를 사용할 경우 시간복잡도는 O(logN) 를 가진다. 왜냐하면 셋은 BST(Binary Search Tree, 이진 탐색 트리) 자료구조를 갖고 있기 때문이다. 셋의 find 함수의 경우, 해당 원소가 있으면 해당 위치의 iteratior를 ..
스프링은 초기 설정이 아주 어려운데, 스프링부트의 출시로 손 쉽게 (?) 설정을 할 수 있게 되었다. 이러한 스프링 부트의 초기 설정을 해보자! 우선 프로그래밍 코드를 작성할 수 있는 IDE인 IntelliJ를 설치하자 https://www.jetbrains.com/ko-kr/idea/download/#section=windows 다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE www.jetbrains.com 여기서 다운받을 수 있으며, 학생 인증을 통해 Ultimate 버전을 무료로 사용할 수 있다. 그리고 JDK를 설치하자. 아무생각없이 JDK 19가 최신 버전이라 다운받았는데, 이후 Gradle과 버전 충돌이 났다. (Gradle이란? 일종의 빌드 자..
https://www.acmicpc.net/problem/1235 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net 반례를 찾지 못해서 시간이 오래걸린 문제.. 정작 반례를 찾은 다음에는 금세 구현할 수 있었다.. 잘못된 접근) 처음에는 어떻게 접근을 했냐면, 첫번째 문자열이 12345이고 두번째 문자열이 56789 세번째 문자열이 00000 이라면 첫번째 문자열을 잘라내어 (12345를 1, 또는 12, 또는 123... 과 같이 잘랐었음) 두번째 문자열의 부분 문자열과 같은지.. 세번째 문자열의 부..