전체 글
-
[TIL] 아스키코드로 대소문자 변환하기알고리즘/코테 2024. 10. 25. 11:40
아스키코드로 대소문자 변환하기 대문자 : 65(A) ~ 90(Z)소문자: 97(a) ~ 122(z) 때문에소문자에서 (-32) 를 하면 대문자가 되고,대문자에서 (+32) 를 하면 소문자가 된다. char타입 자바에서 char타입은 문자를 의미하는 타입이지만 내부적으로는 아스키코드를 통해 숫자로 표현된다예를들어, char타입의 'A'는 65, 'a'는 97의 값을 가진다. 코드)char ch = 'A';int num = ch; // num = 65 저장 코드 문제 예제) 대소문자 변환import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanne..
-
[TIL]자료구조 - 이진트리알고리즘 2024. 10. 20. 13:52
이진트리이진트리는 각 노드가 최대 2개의 자식을 가질 수 있는 트리 를 의미한다 이진트리의 탐색이진트리의 탐색은 재귀를 이용하여 비교적 쉽게 구현할 수 있다. 방문하는 순서에따라 이진트리 탐색은 3가지로 나뉘게되는데 전위 탐색, 중위 탐색, 후위 탐색이다. 전위탐색(preorder) 순서로 탐색하는 방식 위 예제를 탐색한다면 1-2-5-4-3-6-8-7> 순서로 방문하게된다. 중위탐색(inorder) 순서로 탐색하는 방식 위 예제를 탐색한다면 순서로 방문하게된다. 후위탐색(postorder) 순서로 탐색하는 방식 위 예제를 탐색한다면 순서로 방문하게된다. 이진탐색트리 이진트리의 조건중 하나를 추가한 것."부모의 왼쪽 방향에 있는 노드들은 전부 부모 보다 값이 ..
-
[TIL] Refresh Token 을 사용하는 이유와 구현 방식TIL 2024. 10. 14. 12:48
Refresh Token이 필요한 이유:JWT로 발급하는 토큰은 서버에 저장되지않고 발급된 토큰만으로 인증하는 방식이다.하지만 이러한 방식은 보안적인 부분에서 한계가 있다. JWT인증 방식의 한계1. 토큰 탈취 위험JWT는 서버에 저장되지 않기 때문에 만약 토큰이 탈취당한다면 대응할 방법이 없. 2. Access Token의 만료 시간 문제만료 시간을 길게 설정하면 탈취 당했을 때 악용될 가능성이 커진다.만료 시간을 짧게 설정하면 사용자가 로그인 요청을 자주 받아야하기 때문에 불편해진다. 이러한 문제들을 해결하고자 Refresh Token을 함께 이용하는 방식이 생겨났다. Refresh Token의 역할1. Access Token 재발급:Refresh Token을 통해 짧은 만료 시간의 Access..
-
[TIL] Error - git 파일명 대소문자 구분TIL 2024. 10. 13. 16:38
문제상황 개발환경에서 배포환경으로 코드를 옮기던 중 기존 파일명 Email.service.ts -> email.service.ts로 변경했다.개발환경에서는 정상적으로 서버가 실행되었으나 배포환경에서는 서버가 실행되지않는 문제가 발생했다. 그 이유를 찾아보니 git은 파일명에서 대소문자 구분을 하지않아서 변경사항이 전달되지 않았던 것이었고 의존성을 import해오는 과정에서 파일명이 달라서 에러가 났던 것이었다. 해결방법 깃의 파일명 대소문자무시하는 설정을 해제해주고, 캐시를 제거해준다. 그리고 다시 git add. -> git commit -m ""을 통해 정상 커밋해준다. 파일명 대소문자 수정한것도 변경사항으로 인식되어 반영된다.git config core.ignorecase false // 깃..
-
[TIL] postgreSQL - postgres 슈퍼계정 권한 부여하기TIL 2024. 10. 11. 17:51
aws ec2에 psql을 설치하고 이용하는 과정에서 postgres의 슈퍼계정권한을 사용해야했다. 하지만 postgres로 로그인해도 superuser의 권한이 없었고 유일하게 superuser의 권한을 갖고있는 계정인 pgg_superadmins로 로그인을 시도해도 비밀번호 입력 요청이 나왔다. 해당 psql 계정의 비밀번호를 설정한 적이 없었기때문에 접속이 불가능했다. postgres계정에 superuser권한을 부여하고 이를 이용하는 방법이 필요했다. 1. pg_hba.conf 파일 수정 pg_hba.conf파일은 postgresql의 Host-Based Authentication (HBA) 설정 파일로, db에 접근하는 사용자와 인증 방식을 지정하는 파일이다. 인증방식(db 접근시)sha:..
-
[TIL] PSQL-DB 데이터 복원하기 (pg_dumpall VS pg_dump 차이)TIL 2024. 10. 11. 01:18
도커 볼륨 postgresDB (개발환경) -> aws ec2 postgresDB(배포환경)으로 db 하나 전체를 옮기고자 하였다. 현재 개발 환경에서 db 서버를 도커 컨테이너로 이용하고 있었는데, 프론트엔드쪽에서 내가 만든 api를 이용하기 위해서는 배포를 해야했다. 기존의 테스트용 더미데이터와 db 테이블, 제약조건등 모두를 포함해서 today_review db를 옮기는 것이 목적이다. 하지만 today_review db 소유주인 kiju 계정으로 uuid 익스텐션을 설치할 권한이 없었기때문에 복원과정에서 일부데이터가 손실되는 문제가 발생했다. 그래서 postgres계정에 superuser 권한을 부여하고 이 계정으로 복원과 백업을 모두 진행해서 권한 문제가 발생하지 않도록 진행했다. 1...
-
[코테] 자료구조5 - HashMap, HashSet 사용하기알고리즘/코테 2024. 10. 5. 21:08
HashMap순서에 상관없이 key-value형태로 저장되는 자료구조. 삽입, 검색이 모두 O(1)의 시간복잡도를 가지는 특징이 있다. HashMap map = new HashMap(); //해시테이블 생성map.put("Apple", 10); // "Apple" key에 10 추가 (추가, 수정 모두 가능)map.put("Apple", 20); // "Apple" key의 value을 20으로 수정map.put("Apple", 30); // "Apple" key의 value을 30으로 수정map.remove("Apple"); // "Apple" key와 그에 해당하는 value을 제거map.get("Banana"); // "Banana" key에 해당하는 value 검색map.keySet() // ..
-
[코테] 자료구조 - 덱 메서드 정리알고리즘/코테 2024. 10. 2. 22:32
스택과 큐 클래스는 이제 자바에서 레거시가 되었다. 대신 자바에서 스택과 큐를 한번에 사용하기위한 목적으로 덱을 쓴다. Deque deque = new ArrayDeque(); // 덱 생성addFirst() // 맨 앞에 요소를 추가 (스택의 push)addLast() // 맨 뒤에 요소를 추가합니다.offerFirst() // 맨 앞에 요소를 추가(가득 찼을 때 예외 발생 안 함), 안전한 추가 보장offerLast() // 맨 뒤에 요소를 추가합니다 (가득 찼을 때 예외 발생 안 함).removeFirst() // 맨 앞 요소를 제거하고 반환합니다.(없으면 에러반환) (스택의 pop)removeLast() // 맨 뒤 요소를 제거하고 반환합니다.(없으면 에러반환)pollFirst() //..