2024.02.26 0
Spring Boot || Spring[계산기 프로젝트] 스프링 시큐리티 SecurityFilterChain "리디렉션한 횟수가 너무 많습니다" 오류 해결
SecurityConfig.class @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.csrf((x)->x.disable()); http.authorizeHttpRequests(a-> a .requestMatchers("/four-basic-calc/**" ,"/programming-calc","scientific-calc","exchange-rate-calc").permitAll() .requestMatchers("/","/login", "/loginProc", "/j..
2024.02.26 0
BlockChain비트코인과 이더리움의 차이에 대해서 알아보자
비트코인은 화폐 시스템에 특화되어있었기 때문에 다른 서비스에도 활용하려는 시도가 있었는데 대표적인것이 이더리움(범용 블록체인 플랫폼)이다. 이더리움 : 튜링 완전성 & 비트코인 : 튜링 불완전성 튜링 완전성이 지원되는 프로그래밍 언어란 IF 조건문과 For/While 반복문을 지원하여 세상의 모든 문제를 기계적으로 해결할 수 있게 구현하는 것이 가능한 언어이다. 파이썬,자바,자바스크립트 등은 모두 튜링 완전성이 지원되는 언어이다. 비트코인은 트랜잭션을 구현할때 Script라는 언어를 쓰는데 이는 반복문과 흐름제어기능(조건문)을 쓰지 않는다. 비트코인의 script는 튜링 불완전 언어이다. 왜 튜링 불완전 언어를 비트코인에서 사용했냐면 송금 프로세스만 처리하기 때문에 굳이 복잡한 언어를 만들 필요가 없다...

2024.02.26 0
BlockChain블록체인 노드, nonce, 작업증명(Pow)이 뭘까?
노드(in BlockChain) 블록체인에서의 노드는 분산 네트워크 상에 존재하는 컴퓨터를 가리킨다. 노드들은 모두 블록체인 네트워크에 연결되어 있으며, 서로 통신하며 블록체인의 데이터를 공유하고 동기화시킨다. nonce 수학에서의 미지수랑 비슷한 건데, 블록체인에서 목푯값보다 작은 nonce값을 찾는 작업을 채굴작업이라고 한다. 또한 nonce값 자체가 채굴 작업을 수행했다는 증명(작업증명, pow)이다. 왜 “목표값 자체를 찾지”않고 “목표값보다 작은 값을 찾냐”면, 예를 들어 대표적인 블록체인 기반 화폐인 비트코인에서 nonce값을 찾을 때 나올 수 있는 경우의 수는 2^256 가지이다. 이들 중에서 단 하나의 값을 찾는것은 현재 기술로는 슈퍼컴퓨터로도 불가능하다. 또한 범위를 설정해놓으면 과학기술..
2024.02.26 1
CodingTest[Java] 프로그래머스 레벨 2 #H-index
https://school.programmers.co.kr/learn/courses/30/lessons/42747?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; Arrays.sort(citations); int leng = citations.length; for(int i=0; ileng-i) { answer=leng-i; break; } } return answer;..
2024.02.21 0
HTTP캐시와 관련된 HTTP 헤더
검증 헤더 캐시되어 있는 데이터와 서버의 데이터가 똑같은지 검증하는 헤더이다. Last-Modified : 데이터가 최종 수정된 날짜 ETag : 데이터 리소스의 식별자로 사용되는 해시값으로, 클라이언트와 서버 간에 리소스 변경이 일어났는지 확인하기 위해 사용된다. 클라이언트는 ETag를 이용하여 이후 같은 리소스에 대한 요청을 보낼 때, 서버에 해당 리소스가 변경되었는지를 물어본다. 리소스가 변경되지 않았으면 서버는 304(Not Modified)를 반환하여 리소스를 다시 보내지 않고 클라이언트가 가지고 있는 캐시된 버전을 사용하도록 안내한다. 조건부 요청 헤더 Client->Server로 요청이 갈 때, 요청이 특정 조건을 만족하는지 물어보는 헤더이다. 서버에서 리소스를 제공할지 말지 여부를 결정하는..

2024.02.21 0
CodingTest[Java] 프로그래머스 레벨 2 #n^2 배열 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/87390# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int[] solution(int n, long left, long right) { int leng = (int)(right-left+1L); int[] answer = new int[leng]; long nL = (long)n; int lr; if(left==0L) lr=0; else lr = (int)(left/nL); int lc; if(left=..

2024.02.20 0
HTTPHTTP 헤더
HTTP 헤더(HTTP Header)는 HTTP 요청(Request)이나 응답(Response) 메시지에 포함되는 메타데이터 정보이다. 메타데이터는 클라이언트와 서버 간의 통신을 도와주는 여러 가지 정보를 제공한다. HTTP 헤더는 특정 형식을 가지고 있으며, 헤더 이름과 값을 가지고 있다. 각 헤더는 콜론(:)으로 이름과 값을 구분한다. 요청 헤더(Request Header): Client to Server / 요청하는 클라이언트의 정보, 요청하는 리소스의 종류, 캐시 관련 정보 등이 적혀있다. 응답 헤더(Response Header): Server to Client / 서버의 정보, 응답의 상태 코드, 전송하는 데이터의 형식 등이 적혀있다. 표현과 관련된 헤더 Content-Type : 표현 데이터의..
2024.02.20 0
CodingTest[Java] 프로그래머스 레벨2 #괄호 회전하기
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(String s) { int answer = 0; StringBuffer sb = new StringBuffer(s); for(int i=0; i

2024.02.18 1
Spring Boot || Spring스프링 빈 스코프
빈 스코프 : 빈이 존재할 수 있는 범위 스프링은 다양한 스코프를 지원한다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 지원되는 가장 넓은범위의 스코프 프로토타입: 컨테이너가 프로토타입 빈의 생성과 의존관계 주입까지만 관리하는 짧은 범위의 스코프 웹 스코프 request : HTTP 요청 하나가 들어오고 나갈때까지 유지되는 스코프. 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고 관리된다. session : 웹 세션이 생성되고 종료될때까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위(동일한 생명주기)로 유지되는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 프로토타입 스코프 프로토타입 빈은 클라이언트가 스프링 컨테이너에 요청할..
2024.02.17 0
Spring Boot || SpringSpring Boot에서 base64로 이미지 업로드,다운로드 기능 구현하기
Base64 : 이진데이터를 텍스트(ASCII)로 바꾸거나 (인코딩) 반대 과정(디코딩) 을 처리하는 방법 중 하나이다. 이진 데이터는 6비트씩 묶이는 반면에 ASCII 문자는 8비트로 표현되기 때문에 인코딩 과정 후 텍스트 데이터는 원래 데이터보다 크기가 약 33% 증가한다. Board에 byte[] mediaData 엔티티 추가 @Lob @Column(name = "mediaData", columnDefinition="LONGBLOB") private byte[] mediaData; public void setMediaData(MultipartFile file) { try { this.mediaData = file.getBytes(); // 이미지 파일을 byte 배열로 변환하여 저장 } catch ..
2024.02.17 0
CodingTest[Java] 프로그래머스 레벨 2 #연속 부분 수열 합의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int[] elements) { Set s = new HashSet(); int leng = elements.length; for(int i=1; i

2024.02.15 0
Spring Boot || SpringSpring 빈의 생명주기와 생명주기 콜백에 대해 알아보자
스프링 빈의 생명주기란? 빈의 생명주기(라이프사이클)이란 스프링 컨테이너가 빈을 생성하고 관리하는 과정 전반을 의미한다. 빈 정의 → 빈 생성 → 의존관계 주입 → 빈 초기화(초기화 메소드 콜백) → 빈 사용 → 빈 소멸(소멸 전 콜백) 으로 이루어져 있다. Q. 콜백 (콜백 메소드)란? A. 콜백과 콜백 메소드는 같은 말이다. 객체가 특정 상태에 도달했거나 특정 이벤트가 발생했을 때 자동으로 호출되는 메소드이다. (초기화 상태 도달 → 초기화 메소드 콜백, 소멸 상태로 전환 → 종료 메소드 콜백) Q. 빈 초기화와 초기화 메소드란? A. 초기화 메소드는 빈이 생성된 후에 추가 설정과 초기화 작업(외부 서비스와의 연동, 속성 설정, 캐시 초기화 등)을 하기 위해 호출되는 메소드이다. 스프링 컨테이너를 통..